Skip to content

Commit 7c81a56

Browse files
committed
Start on config setting, version string
1 parent 31404f3 commit 7c81a56

File tree

5 files changed

+76
-42
lines changed

5 files changed

+76
-42
lines changed

Injector/Main.gd

+37-33
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,45 @@
11
extends Control
22

3+
@export var VersionLabel : Label
34
@export var StatusLabel: Label
45
@export var Progress: ProgressBar
56

67
@export var LoadingScreen : Control
78
@export var ConfigScreen : Control
89

9-
@export var CustomModDirLine : LineEdit
10+
@export var SettingsPage : Control
1011

1112
const configPath = "user://ModConfig.json"
1213
class ModLoaderConfig:
1314
var customModDir : String = ""
15+
var startOnConfigScreen : bool = false
1416
var config : ModLoaderConfig = ModLoaderConfig.new()
1517

18+
func loadConfig():
19+
if !FileAccess.file_exists(configPath):
20+
return
21+
22+
var f = FileAccess.open(configPath, FileAccess.READ)
23+
var obj = JSON.parse_string(f.get_as_text())
24+
config = ModLoaderConfig.new()
25+
if "customModDir" in obj:
26+
config.customModDir = obj["customModDir"]
27+
if "startOnConfigScreen" in obj:
28+
config.startOnConfigScreen = obj["startOnConfigScreen"]
29+
30+
SettingsPage.onLoaded()
31+
32+
func saveConfig():
33+
var jarr = {
34+
"customModDir": config.customModDir,
35+
"startOnConfigScreen": config.startOnConfigScreen
36+
}
37+
var jstr = JSON.stringify(jarr)
38+
var f = FileAccess.open(configPath, FileAccess.WRITE)
39+
f.store_string(jstr)
40+
f.flush()
41+
f.close()
42+
1643
const githubAPIBaseURL = "https://api.github.com/"
1744

1845
@onready var isWindows = OS.get_name() == "Windows"
@@ -56,43 +83,20 @@ func showConfigScreen():
5683
ConfigScreen.show()
5784
LoadingScreen.hide()
5885

59-
func loadConfig():
60-
if !FileAccess.file_exists(configPath):
61-
return
62-
63-
var f = FileAccess.open(configPath, FileAccess.READ)
64-
var obj = JSON.parse_string(f.get_as_text())
65-
config = ModLoaderConfig.new()
66-
config.customModDir = obj["customModDir"]
67-
68-
CustomModDirLine.text = config.customModDir
86+
func _ready() -> void:
87+
loadConfig()
6988

70-
func saveConfig():
71-
var jarr = {
72-
"customModDir": config.customModDir
73-
}
74-
var jstr = JSON.stringify(jarr)
75-
var f = FileAccess.open(configPath, FileAccess.WRITE)
76-
f.store_string(jstr)
77-
f.flush()
89+
var f = FileAccess.open("res://VM_VERSION", FileAccess.READ)
90+
VersionLabel.text = "Version " + f.get_as_text()
7891
f.close()
7992

80-
func openModDirDialog():
81-
var fd = FileDialog.new()
82-
fd.access = FileDialog.ACCESS_FILESYSTEM
83-
fd.file_mode = FileDialog.FILE_MODE_OPEN_DIR
84-
fd.show_hidden_files = true
85-
fd.dir_selected.connect(func(dir): CustomModDirLine.text = dir; config.customModDir = dir)
86-
add_child(fd)
87-
fd.popup_centered_ratio()
88-
89-
func _ready() -> void:
90-
loadConfig()
91-
CustomModDirLine.text_changed.connect(func(val): config.customModDir = val)
93+
if config.startOnConfigScreen:
94+
showConfigScreen()
95+
else:
96+
showLoadingScreen()
97+
launch()
9298

93-
showLoadingScreen()
9499
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED, 0)
95-
launch()
96100

97101
func getModsDir() -> String:
98102
if config.customModDir:

Injector/Main.tscn

+15-8
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
1-
[gd_scene load_steps=3 format=3 uid="uid://b6nywv6aqxm3r"]
1+
[gd_scene load_steps=4 format=3 uid="uid://b6nywv6aqxm3r"]
22

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

6-
[node name="Main" type="Control" node_paths=PackedStringArray("StatusLabel", "Progress", "LoadingScreen", "ConfigScreen", "CustomModDirLine")]
7+
[node name="Main" type="Control" node_paths=PackedStringArray("VersionLabel", "StatusLabel", "Progress", "LoadingScreen", "ConfigScreen", "SettingsPage")]
78
layout_mode = 3
89
anchors_preset = 15
910
anchor_right = 1.0
1011
anchor_bottom = 1.0
1112
grow_horizontal = 2
1213
grow_vertical = 2
1314
script = ExtResource("1_x5slr")
15+
VersionLabel = NodePath("ConfigScreen/VBoxContainer2/CenterContainer/VBoxContainer/VersionLabel")
1416
StatusLabel = NodePath("LoadingScreen/VBoxContainer/StatusLabel")
1517
Progress = NodePath("LoadingScreen/VBoxContainer/Progress")
1618
LoadingScreen = NodePath("LoadingScreen")
1719
ConfigScreen = NodePath("ConfigScreen")
18-
CustomModDirLine = NodePath("ConfigScreen/TabContainer/Settings/VBoxContainer/GridContainer/HBoxContainer/CustomModDirLine")
20+
SettingsPage = NodePath("ConfigScreen/TabContainer/Settings")
1921

2022
[node name="LoadingScreen" type="CenterContainer" parent="."]
2123
visible = false
@@ -51,12 +53,15 @@ grow_vertical = 2
5153
[node name="TabContainer" type="TabContainer" parent="ConfigScreen"]
5254
layout_mode = 2
5355
size_flags_horizontal = 3
54-
current_tab = 1
56+
current_tab = 0
5557

56-
[node name="Settings" type="ScrollContainer" parent="ConfigScreen/TabContainer"]
57-
visible = false
58+
[node name="Settings" type="ScrollContainer" parent="ConfigScreen/TabContainer" node_paths=PackedStringArray("Main", "CustomModDirLine", "StartOnConfigCheckBox")]
5859
layout_mode = 2
5960
size_flags_horizontal = 3
61+
script = ExtResource("2_b0jil")
62+
Main = NodePath("../../..")
63+
CustomModDirLine = NodePath("VBoxContainer/GridContainer/HBoxContainer/CustomModDirLine")
64+
StartOnConfigCheckBox = NodePath("VBoxContainer/GridContainer/CheckBox")
6065
metadata/_tab_index = 0
6166

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

9398
[node name="CheckBox" type="CheckBox" parent="ConfigScreen/TabContainer/Settings/VBoxContainer/GridContainer"]
9499
layout_mode = 2
100+
size_flags_horizontal = 0
95101

96102
[node name="Mods" type="ScrollContainer" parent="ConfigScreen/TabContainer"]
103+
visible = false
97104
layout_mode = 2
98105
metadata/_tab_index = 1
99106

@@ -126,7 +133,7 @@ layout_mode = 2
126133
text = "VostokMods Injector"
127134
horizontal_alignment = 1
128135

129-
[node name="Label2" type="Label" parent="ConfigScreen/VBoxContainer2/CenterContainer/VBoxContainer"]
136+
[node name="VersionLabel" type="Label" parent="ConfigScreen/VBoxContainer2/CenterContainer/VBoxContainer"]
130137
layout_mode = 2
131138
theme_override_colors/font_color = Color(1, 1, 1, 0.5)
132139
text = "Version x.x.x"
@@ -159,7 +166,7 @@ layout_mode = 2
159166
theme_override_font_sizes/font_size = 24
160167
text = "Launch"
161168

162-
[connection signal="pressed" from="ConfigScreen/TabContainer/Settings/VBoxContainer/GridContainer/HBoxContainer/Button" to="." method="openModDirDialog"]
169+
[connection signal="pressed" from="ConfigScreen/TabContainer/Settings/VBoxContainer/GridContainer/HBoxContainer/Button" to="ConfigScreen/TabContainer/Settings" method="openModDirDialog"]
163170
[connection signal="pressed" from="ConfigScreen/VBoxContainer2/HBoxContainer/Button" to="." method="openMods"]
164171
[connection signal="pressed" from="ConfigScreen/VBoxContainer2/HBoxContainer/Button2" to="." method="openUser"]
165172
[connection signal="pressed" from="ConfigScreen/VBoxContainer2/Button3" to="." method="injectAndLaunch" binds= [false]]

Injector/Settings.gd

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
extends Control
2+
3+
@export var Main : Control
4+
@export var CustomModDirLine : LineEdit
5+
@export var StartOnConfigCheckBox : CheckBox
6+
7+
func _ready() -> void:
8+
CustomModDirLine.text_changed.connect(func(val): Main.config.customModDir = val)
9+
StartOnConfigCheckBox.toggled.connect(func(val): Main.config.startOnConfigScreen = val)
10+
11+
func openModDirDialog():
12+
var fd = FileDialog.new()
13+
fd.access = FileDialog.ACCESS_FILESYSTEM
14+
fd.file_mode = FileDialog.FILE_MODE_OPEN_DIR
15+
fd.show_hidden_files = true
16+
fd.dir_selected.connect(func(dir): CustomModDirLine.text = dir; Main.config.customModDir = dir)
17+
add_child(fd)
18+
fd.popup_centered_ratio()
19+
20+
func onLoaded():
21+
CustomModDirLine.text = Main.config.customModDir
22+
StartOnConfigCheckBox.button_pressed = Main.config.startOnConfigScreen

Injector/VM_VERSION

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0.0.1

Injector/export_presets.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ advanced_options=false
77
dedicated_server=false
88
custom_features=""
99
export_filter="all_resources"
10-
include_filter=""
10+
include_filter="VM_VERSION"
1111
exclude_filter=""
1212
export_path=""
1313
encryption_include_filters=""

0 commit comments

Comments
 (0)