Skip to content

Commit

Permalink
Start on config setting, version string
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryhon0 committed Oct 7, 2024
1 parent 31404f3 commit 7c81a56
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 42 deletions.
70 changes: 37 additions & 33 deletions Injector/Main.gd
Original file line number Diff line number Diff line change
@@ -1,18 +1,45 @@
extends Control

@export var VersionLabel : Label
@export var StatusLabel: Label
@export var Progress: ProgressBar

@export var LoadingScreen : Control
@export var ConfigScreen : Control

@export var CustomModDirLine : LineEdit
@export var SettingsPage : Control

const configPath = "user://ModConfig.json"
class ModLoaderConfig:
var customModDir : String = ""
var startOnConfigScreen : bool = false
var config : ModLoaderConfig = ModLoaderConfig.new()

func loadConfig():
if !FileAccess.file_exists(configPath):
return

var f = FileAccess.open(configPath, FileAccess.READ)
var obj = JSON.parse_string(f.get_as_text())
config = ModLoaderConfig.new()
if "customModDir" in obj:
config.customModDir = obj["customModDir"]
if "startOnConfigScreen" in obj:
config.startOnConfigScreen = obj["startOnConfigScreen"]

SettingsPage.onLoaded()

func saveConfig():
var jarr = {
"customModDir": config.customModDir,
"startOnConfigScreen": config.startOnConfigScreen
}
var jstr = JSON.stringify(jarr)
var f = FileAccess.open(configPath, FileAccess.WRITE)
f.store_string(jstr)
f.flush()
f.close()

const githubAPIBaseURL = "https://api.github.com/"

@onready var isWindows = OS.get_name() == "Windows"
Expand Down Expand Up @@ -56,43 +83,20 @@ func showConfigScreen():
ConfigScreen.show()
LoadingScreen.hide()

func loadConfig():
if !FileAccess.file_exists(configPath):
return

var f = FileAccess.open(configPath, FileAccess.READ)
var obj = JSON.parse_string(f.get_as_text())
config = ModLoaderConfig.new()
config.customModDir = obj["customModDir"]

CustomModDirLine.text = config.customModDir
func _ready() -> void:
loadConfig()

func saveConfig():
var jarr = {
"customModDir": config.customModDir
}
var jstr = JSON.stringify(jarr)
var f = FileAccess.open(configPath, FileAccess.WRITE)
f.store_string(jstr)
f.flush()
var f = FileAccess.open("res://VM_VERSION", FileAccess.READ)
VersionLabel.text = "Version " + f.get_as_text()
f.close()

func openModDirDialog():
var fd = FileDialog.new()
fd.access = FileDialog.ACCESS_FILESYSTEM
fd.file_mode = FileDialog.FILE_MODE_OPEN_DIR
fd.show_hidden_files = true
fd.dir_selected.connect(func(dir): CustomModDirLine.text = dir; config.customModDir = dir)
add_child(fd)
fd.popup_centered_ratio()

func _ready() -> void:
loadConfig()
CustomModDirLine.text_changed.connect(func(val): config.customModDir = val)
if config.startOnConfigScreen:
showConfigScreen()
else:
showLoadingScreen()
launch()

showLoadingScreen()
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED, 0)
launch()

func getModsDir() -> String:
if config.customModDir:
Expand Down
23 changes: 15 additions & 8 deletions Injector/Main.tscn
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
[gd_scene load_steps=3 format=3 uid="uid://b6nywv6aqxm3r"]
[gd_scene load_steps=4 format=3 uid="uid://b6nywv6aqxm3r"]

[ext_resource type="Script" path="res://Main.gd" id="1_x5slr"]
[ext_resource type="Texture2D" uid="uid://wbaqykif8euy" path="res://icon.svg" id="2_74yqq"]
[ext_resource type="Script" path="res://Settings.gd" id="2_b0jil"]

[node name="Main" type="Control" node_paths=PackedStringArray("StatusLabel", "Progress", "LoadingScreen", "ConfigScreen", "CustomModDirLine")]
[node name="Main" type="Control" node_paths=PackedStringArray("VersionLabel", "StatusLabel", "Progress", "LoadingScreen", "ConfigScreen", "SettingsPage")]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_x5slr")
VersionLabel = NodePath("ConfigScreen/VBoxContainer2/CenterContainer/VBoxContainer/VersionLabel")
StatusLabel = NodePath("LoadingScreen/VBoxContainer/StatusLabel")
Progress = NodePath("LoadingScreen/VBoxContainer/Progress")
LoadingScreen = NodePath("LoadingScreen")
ConfigScreen = NodePath("ConfigScreen")
CustomModDirLine = NodePath("ConfigScreen/TabContainer/Settings/VBoxContainer/GridContainer/HBoxContainer/CustomModDirLine")
SettingsPage = NodePath("ConfigScreen/TabContainer/Settings")

[node name="LoadingScreen" type="CenterContainer" parent="."]
visible = false
Expand Down Expand Up @@ -51,12 +53,15 @@ grow_vertical = 2
[node name="TabContainer" type="TabContainer" parent="ConfigScreen"]
layout_mode = 2
size_flags_horizontal = 3
current_tab = 1
current_tab = 0

[node name="Settings" type="ScrollContainer" parent="ConfigScreen/TabContainer"]
visible = false
[node name="Settings" type="ScrollContainer" parent="ConfigScreen/TabContainer" node_paths=PackedStringArray("Main", "CustomModDirLine", "StartOnConfigCheckBox")]
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("2_b0jil")
Main = NodePath("../../..")
CustomModDirLine = NodePath("VBoxContainer/GridContainer/HBoxContainer/CustomModDirLine")
StartOnConfigCheckBox = NodePath("VBoxContainer/GridContainer/CheckBox")
metadata/_tab_index = 0

[node name="VBoxContainer" type="VBoxContainer" parent="ConfigScreen/TabContainer/Settings"]
Expand Down Expand Up @@ -92,8 +97,10 @@ text = "Start on config screen"

[node name="CheckBox" type="CheckBox" parent="ConfigScreen/TabContainer/Settings/VBoxContainer/GridContainer"]
layout_mode = 2
size_flags_horizontal = 0

[node name="Mods" type="ScrollContainer" parent="ConfigScreen/TabContainer"]
visible = false
layout_mode = 2
metadata/_tab_index = 1

Expand Down Expand Up @@ -126,7 +133,7 @@ layout_mode = 2
text = "VostokMods Injector"
horizontal_alignment = 1

[node name="Label2" type="Label" parent="ConfigScreen/VBoxContainer2/CenterContainer/VBoxContainer"]
[node name="VersionLabel" type="Label" parent="ConfigScreen/VBoxContainer2/CenterContainer/VBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(1, 1, 1, 0.5)
text = "Version x.x.x"
Expand Down Expand Up @@ -159,7 +166,7 @@ layout_mode = 2
theme_override_font_sizes/font_size = 24
text = "Launch"

[connection signal="pressed" from="ConfigScreen/TabContainer/Settings/VBoxContainer/GridContainer/HBoxContainer/Button" to="." method="openModDirDialog"]
[connection signal="pressed" from="ConfigScreen/TabContainer/Settings/VBoxContainer/GridContainer/HBoxContainer/Button" to="ConfigScreen/TabContainer/Settings" method="openModDirDialog"]
[connection signal="pressed" from="ConfigScreen/VBoxContainer2/HBoxContainer/Button" to="." method="openMods"]
[connection signal="pressed" from="ConfigScreen/VBoxContainer2/HBoxContainer/Button2" to="." method="openUser"]
[connection signal="pressed" from="ConfigScreen/VBoxContainer2/Button3" to="." method="injectAndLaunch" binds= [false]]
Expand Down
22 changes: 22 additions & 0 deletions Injector/Settings.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
extends Control

@export var Main : Control
@export var CustomModDirLine : LineEdit
@export var StartOnConfigCheckBox : CheckBox

func _ready() -> void:
CustomModDirLine.text_changed.connect(func(val): Main.config.customModDir = val)
StartOnConfigCheckBox.toggled.connect(func(val): Main.config.startOnConfigScreen = val)

func openModDirDialog():
var fd = FileDialog.new()
fd.access = FileDialog.ACCESS_FILESYSTEM
fd.file_mode = FileDialog.FILE_MODE_OPEN_DIR
fd.show_hidden_files = true
fd.dir_selected.connect(func(dir): CustomModDirLine.text = dir; Main.config.customModDir = dir)
add_child(fd)
fd.popup_centered_ratio()

func onLoaded():
CustomModDirLine.text = Main.config.customModDir
StartOnConfigCheckBox.button_pressed = Main.config.startOnConfigScreen
1 change: 1 addition & 0 deletions Injector/VM_VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.0.1
2 changes: 1 addition & 1 deletion Injector/export_presets.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
include_filter="VM_VERSION"
exclude_filter=""
export_path=""
encryption_include_filters=""
Expand Down

0 comments on commit 7c81a56

Please sign in to comment.