Add models, globals, persistent config, move secrets
This commit is contained in:
parent
8749e11fd0
commit
01908fbcb6
14 changed files with 129 additions and 20 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -8,7 +8,7 @@
|
||||||
addons/
|
addons/
|
||||||
|
|
||||||
# Don't push our secrets
|
# Don't push our secrets
|
||||||
src/secrets.gd
|
src/model/secrets.gd
|
||||||
|
|
||||||
# Imported translations (automatically generated from CSV files)
|
# Imported translations (automatically generated from CSV files)
|
||||||
*.translation
|
*.translation
|
||||||
|
|
|
@ -18,6 +18,7 @@ config/icon="res://icon.svg"
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
GlobalWorldEnvironment="*res://src/world_environment.tscn"
|
GlobalWorldEnvironment="*res://src/world_environment.tscn"
|
||||||
|
Globals="*res://src/globals.gd"
|
||||||
|
|
||||||
[dotnet]
|
[dotnet]
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
extends Node
|
|
||||||
|
|
||||||
class_name Config
|
|
||||||
|
|
||||||
var secrets = preload("secrets.gd")
|
|
||||||
|
|
||||||
var HighscoreServerAddr: String
|
|
||||||
var ApiToken: String
|
|
||||||
var ValKey: String
|
|
||||||
|
|
3
src/globals.gd
Normal file
3
src/globals.gd
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
var config = Config.new()
|
|
@ -6,7 +6,7 @@ extends Control
|
||||||
@export var distance: Label
|
@export var distance: Label
|
||||||
|
|
||||||
func _on_player_speed_changed(speed_float:float):
|
func _on_player_speed_changed(speed_float:float):
|
||||||
var speed_string = "%.f" % speed_float
|
var speed_string = "%.f" % (speed_float / 10)
|
||||||
# print_debug("changing speed display to ", speed_string)
|
# print_debug("changing speed display to ", speed_string)
|
||||||
speed.set_text(speed_string)
|
speed.set_text(speed_string)
|
||||||
|
|
||||||
|
|
|
@ -6,3 +6,4 @@ func _ready():
|
||||||
func _on_value_changed(value):
|
func _on_value_changed(value):
|
||||||
print_debug("setting brightness to ", value)
|
print_debug("setting brightness to ", value)
|
||||||
GlobalWorldEnvironment.environment.adjustment_brightness = value
|
GlobalWorldEnvironment.environment.adjustment_brightness = value
|
||||||
|
Globals.config.Brightness = value
|
||||||
|
|
|
@ -9,7 +9,12 @@ extends Control
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
first_selection.grab_focus()
|
first_selection.grab_focus()
|
||||||
|
var err = Globals.config.load()
|
||||||
|
if err:
|
||||||
|
print("Config does not yet exist, skipping load")
|
||||||
|
else:
|
||||||
|
print("Config loaded successfully")
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
|
|
|
@ -9,5 +9,6 @@ func _ready():
|
||||||
first_selection.grab_focus()
|
first_selection.grab_focus()
|
||||||
|
|
||||||
func _on_back_button_pressed():
|
func _on_back_button_pressed():
|
||||||
|
Globals.config.save()
|
||||||
last_menu.show()
|
last_menu.show()
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
|
@ -12,3 +12,4 @@ func _ready() -> void:
|
||||||
|
|
||||||
func _on_value_changed(value: float) -> void:
|
func _on_value_changed(value: float) -> void:
|
||||||
AudioServer.set_bus_volume_db(bus_index, linear_to_db(value))
|
AudioServer.set_bus_volume_db(bus_index, linear_to_db(value))
|
||||||
|
#Globals.config.setVolume(bus_index, linear_to_db(value))
|
||||||
|
|
24
src/model/apirequest.gd
Normal file
24
src/model/apirequest.gd
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
class_name ApiRequest
|
||||||
|
extends HTTPRequest
|
||||||
|
|
||||||
|
var url: String
|
||||||
|
var headers: PackedStringArray
|
||||||
|
var body: String
|
||||||
|
var method: HTTPClient.Method
|
||||||
|
var callback: Callable
|
||||||
|
|
||||||
|
func _init(u: String, h: PackedStringArray, m: HTTPClient.Method, b: String = ""):
|
||||||
|
super()
|
||||||
|
self.url = u
|
||||||
|
self.headers = h
|
||||||
|
self.method = m
|
||||||
|
self.body = b
|
||||||
|
|
||||||
|
func resolve(f: Callable) -> Error:
|
||||||
|
self.request_completed.connect(f)
|
||||||
|
var error = super.request(self.url, self.headers, self.method, self.body)
|
||||||
|
if error != OK:
|
||||||
|
return error
|
||||||
|
|
||||||
|
return OK
|
||||||
|
|
57
src/model/config.gd
Normal file
57
src/model/config.gd
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
class_name Config
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
const Secrets = preload("secrets.gd")
|
||||||
|
const Path = "config.cfg"
|
||||||
|
const ProjectName = "Distanz"
|
||||||
|
|
||||||
|
var Username: String
|
||||||
|
var HighscoreServerAddr: String
|
||||||
|
var VolumeMain: int
|
||||||
|
var VolumeMusic: int
|
||||||
|
var VolumeSFX: int
|
||||||
|
var Brightness: float
|
||||||
|
|
||||||
|
const _defHighscoreServerAddr = "https://grg.snrd.eu"
|
||||||
|
const _defVolumeMain = 100
|
||||||
|
const _defVolumeMusic = 75
|
||||||
|
const _defVolumeSFX = 100
|
||||||
|
const _defBrightness = 1.0
|
||||||
|
|
||||||
|
func _init():
|
||||||
|
self.HighscoreServerAddr = _defHighscoreServerAddr
|
||||||
|
self.VolumeMain = _defVolumeMain
|
||||||
|
self.VolumeMusic = _defVolumeMusic
|
||||||
|
self.VolumeSFX = _defVolumeSFX
|
||||||
|
self.Brightness = _defBrightness
|
||||||
|
|
||||||
|
func save() -> Error:
|
||||||
|
var config = ConfigFile.new()
|
||||||
|
config.set_value("Settings", "Username", self.HighscoreServerAddr)
|
||||||
|
config.set_value("Settings", "HighscoreServerAddr", self.HighscoreServerAddr)
|
||||||
|
config.set_value("Settings", "VolumeMain", self.VolumeMain)
|
||||||
|
config.set_value("Settings", "VolumeMusic", self.VolumeMusic)
|
||||||
|
config.set_value("Settings", "VolumeSFX", self.VolumeSFX)
|
||||||
|
config.set_value("Settings", "Brightness", self.VolumeSFX)
|
||||||
|
|
||||||
|
config.save("user://" + Path)
|
||||||
|
|
||||||
|
return OK
|
||||||
|
|
||||||
|
func exists() -> bool:
|
||||||
|
return FileAccess.file_exists("user://" + Path)
|
||||||
|
|
||||||
|
func load() -> Error:
|
||||||
|
var config = ConfigFile.new()
|
||||||
|
var err = config.load("user://" + Path)
|
||||||
|
|
||||||
|
if err:
|
||||||
|
return err
|
||||||
|
|
||||||
|
self.HighscoreServerAddr = config.get_value("Settings", "HighscoreServerAddr", self._defHighscoreServerAddr)
|
||||||
|
self.VolumeMain = config.get_value("Settings", "VolumeMain", self._defVolumeMain)
|
||||||
|
self.VolumeMusic = config.get_value("Settings", "VolumeMusic", self._defVolumeMusic)
|
||||||
|
self.VolumeSFX = config.get_value("Settings", "VolumeSFX", self._defVolumeSFX)
|
||||||
|
self.VolumeSFX = config.get_value("Settings", "Brightness", self._defBrightness)
|
||||||
|
|
||||||
|
return OK
|
23
src/model/requestfactory.gd
Normal file
23
src/model/requestfactory.gd
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
class_name RequestFactory
|
||||||
|
extends Object
|
||||||
|
|
||||||
|
const headers = [
|
||||||
|
"Content-Type: application/json",
|
||||||
|
"Authentication: Bearer " + Config.Secrets.ApiToken
|
||||||
|
]
|
||||||
|
const api_base_path = "/api/v2"
|
||||||
|
var base_uri: String
|
||||||
|
|
||||||
|
func _init(base_uri: String):
|
||||||
|
self.base_uri = base_uri + api_base_path
|
||||||
|
|
||||||
|
func new_submit_request(score: Score) -> ApiRequest:
|
||||||
|
score.ValKey = score.valKey()
|
||||||
|
var body = JSON.stringify(score)
|
||||||
|
print(body)
|
||||||
|
return ApiRequest.new(self.base_uri + "/score/submit/" + Config.ProjectName.to_lower(), self.headers, HTTPClient.METHOD_POST, body)
|
||||||
|
|
||||||
|
func new_list_request(key: String, offset: int = 0, limit: int = -1) -> ApiRequest:
|
||||||
|
return ApiRequest.new(
|
||||||
|
self.base_uri + "/score/list/" + Config.ProjectName.to_lower() + "?key=" + key + "&offset=" + str(offset) + "&limit=" + str(limit),
|
||||||
|
self.headers, HTTPClient.METHOD_GET)
|
10
src/model/score.gd
Normal file
10
src/model/score.gd
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
class_name Score
|
||||||
|
|
||||||
|
var Name: String
|
||||||
|
var Scores: Dictionary
|
||||||
|
|
||||||
|
func valKey() -> String:
|
||||||
|
var scorestr = ""
|
||||||
|
for i in self.Scores:
|
||||||
|
scorestr += i + self.Scores[i]
|
||||||
|
return String(Config.ProjectName.to_lower() + self.Name + scorestr + Secrets.ValKey).sha256_text()
|
|
@ -1,7 +0,0 @@
|
||||||
extends Node
|
|
||||||
|
|
||||||
class_name Score
|
|
||||||
|
|
||||||
var Name: String
|
|
||||||
var Score: int
|
|
||||||
var Game: String
|
|
Loading…
Reference in a new issue