Skip to content

Commit 56d34fb

Browse files
committed
wip: replace PuzzleTheme with PuzzleThemeData
Also enforcing static types everywhere.
1 parent d922e53 commit 56d34fb

23 files changed

+263
-93
lines changed

data.pandora

+4
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,10 @@
423423
"puzzle_scene": {
424424
"type": "resource",
425425
"value": "res://src/themes/winter/WinterPuzzle.tscn"
426+
},
427+
"puzzle_theme_data": {
428+
"type": "resource",
429+
"value": "res://src/themes/winter/WinterThemeData.tres"
426430
}
427431
}
428432
},

project.godot

+8
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ GodotSteam="*res://src/GodotSteam.gd"
3333
Debug="*res://addons/bones/Debug.gd"
3434
Juice="*res://addons/bones/Juice.gd"
3535

36+
[debug]
37+
38+
gdscript/warnings/untyped_declaration=1
39+
gdscript/warnings/inferred_declaration=1
40+
gdscript/warnings/unsafe_property_access=1
41+
gdscript/warnings/unsafe_method_access=1
42+
gdscript/warnings/unsafe_call_argument=1
43+
3644
[display]
3745

3846
window/size/viewport_width=1280

src/PuzzleSet.gd

+6-5
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,23 @@ func data():
5757
var game_def: GameDef
5858

5959
# returns a cached game_def, or parses a new one
60-
func get_game_def():
60+
func get_game_def() -> GameDef:
6161
if game_def != null:
6262
return game_def
6363

6464
game_def = Puzz.parse_game_def(get_puzzle_script_path())
6565
return game_def
6666

67-
func get_puzzles():
68-
return get_game_def().puzzles.filter(func(puzz): return puzz.shape)
67+
func get_puzzles() -> Array[PuzzleDef]:
68+
return get_game_def().puzzles.filter(func(puzz: PuzzleDef) -> bool: return puzz.shape != null)
6969

70-
func get_puzzle(idx: int):
71-
var puzzs = get_puzzles()
70+
func get_puzzle(idx: int) -> PuzzleDef:
71+
var puzzs: Array[PuzzleDef] = get_puzzles()
7272
if idx < len(puzzs):
7373
return puzzs[idx]
7474
else:
7575
Log.warn("Requested out of range puzzle index", idx, self)
76+
return
7677

7778
# Attach an "analysis" to each level_def (game_def.puzzles[])
7879
# returns the game_def

src/hud/HUD.gd

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
extends CanvasLayer
2+
class_name HUD
23

34
## vars ########################################################
45

src/menus/jumbotrons/PuzzleComplete.gd

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
@tool
22
extends Jumbotron
3+
class_name PuzzleComplete
34

45
## vars ############################################################
56

6-
@onready var puzzle_progress_panel = $%PuzzleProgressPanel
7+
@onready var puzzle_progress_panel: PuzzleProgressPanel = $%PuzzleProgressPanel
78
var puzzle_set: PuzzleSet
89
var start_puzzle_num: int
910
var end_puzzle_num: int
1011

1112
## ready ############################################################
1213

13-
func _ready():
14+
func _ready() -> void:
1415
render()
1516

1617
## build puzzle list ############################################################
1718

18-
func render():
19+
func render() -> void:
1920
if not puzzle_set:
2021
# puzzle_set = Store.get_puzzle_sets()[0]
2122
Log.warn("No puzzle set found on PuzzleComplete scene")

src/menus/jumbotrons/PuzzleSetUnlocked.gd

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
@tool
22
extends Jumbotron
3+
class_name PuzzleUnlocked
34

45
## vars ############################################################
56

src/puzzle/GameDef.gd

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@ class_name GameDef
44

55
## vars ########################################3333
66

7-
var puzzles = []
7+
var puzzles: Array[PuzzleDef] = []
88
var legend: Dictionary
99
var meta: Dictionary
1010
var raw: Dictionary
1111
var path: String
1212

1313
## init ########################################3333
1414

15-
func _init(_path, parsed: Dictionary):
15+
func _init(_path: String, parsed: Dictionary) -> void:
1616
if _path:
1717
path = _path
1818
raw = parsed
1919
legend = parsed.legend
20-
puzzles = parsed.puzzles.map(func(puzzle): return PuzzleDef.new(puzzle))
20+
puzzles.assign(parsed.puzzles.map(func(puzzle: Dictionary) -> PuzzleDef: return PuzzleDef.new(puzzle)))
2121

22-
## log.data() ########################################3333
22+
## to_pretty ########################################3333
2323

24-
func data():
24+
func to_pretty() -> Dictionary:
2525
return {path=path, obj=str(self), puzzles=len(puzzles)}
2626

2727
## helpers ########################################3333

0 commit comments

Comments
 (0)