Skip to content

Commit f16de04

Browse files
committed
wip: drop actionInputIcon in favor of bones's icon comp
1 parent 3582209 commit f16de04

File tree

10 files changed

+196
-493
lines changed

10 files changed

+196
-493
lines changed

addons/bones/actions/ActionInputIcon.tscn

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
[ext_resource type="Script" path="res://addons/bones/actions/ActionInputIcon.gd" id="1_ui3le"]
55

66
[node name="ActionInputIcon" type="TextureRect"]
7-
visible = false
87
custom_minimum_size = Vector2(30, 0)
98
offset_right = 30.0
109
offset_bottom = 48.0

src/Store.gd

+31-30
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ extends Node
33

44
## _ready ###########################################
55

6-
func _enter_tree():
6+
func _enter_tree() -> void:
77
load_game()
88

99
## data store ###########################################
@@ -12,25 +12,25 @@ var state: GameState
1212

1313
var events: Array[Event] = []
1414

15-
func save_game():
16-
events.map(func(ev):
15+
func save_game() -> void:
16+
events.map(func(ev: Event) -> void:
1717
if ev == null: Log.warn("Cannot save null event!", ev)
1818
)
1919
SaveGame.save_game(get_tree(), {
20-
events=events.filter(func(ev): return ev != null)\
20+
events=events.filter(func(ev: Event) -> bool: return ev != null)\
2121
.map(Pandora.serialize),
2222
})
2323

2424
# validation and basic recovery from crashes on loaded data?
2525
# i.e. missing puzzle_sets, at least set the initial ones and get to playable state
26-
func load_game():
27-
var data = SaveGame.load_game(get_tree())
26+
func load_game() -> void:
27+
var data: Dictionary = SaveGame.load_game(get_tree())
2828

2929
if not "events" in data or len(data.events) == 0:
3030
events = initial_events()
3131
else:
32-
events.assign(data.events\
33-
.filter(func(ev): return ev != null)\
32+
events.assign((data.events as Array)\
33+
.filter(func(ev: Event) -> bool: return ev != null)\
3434
# TODO handle crashes when events can't deserialize
3535
.map(Pandora.deserialize))
3636

@@ -40,7 +40,7 @@ func load_game():
4040
events=len(events), puzzle_sets=len(state.puzzle_sets), themes=len(state.themes)
4141
})
4242

43-
func reset_game_data():
43+
func reset_game_data() -> void:
4444
SaveGame.delete_save()
4545
load_game()
4646

@@ -54,7 +54,7 @@ func initial_events() -> Array[Event]:
5454
func get_puzzle_sets() -> Array[PuzzleSet]:
5555
return state.puzzle_sets
5656

57-
func find_puzzle_set(ps: PuzzleSet):
57+
func find_puzzle_set(ps: PuzzleSet) -> PuzzleSet:
5858
return state.find_puzzle_set(ps)
5959

6060
func get_themes() -> Array[PuzzleTheme]:
@@ -63,20 +63,20 @@ func get_themes() -> Array[PuzzleTheme]:
6363
func get_events() -> Array[Event]:
6464
return events
6565

66-
func find_events(filter_fn) -> Array[Event]:
66+
func find_events(filter_fn: Callable) -> Array[Event]:
6767
return events.filter(filter_fn)
6868

69-
func find_event(filter_fn) -> Event:
70-
var evs = find_events(filter_fn)
69+
func find_event(filter_fn: Callable) -> Event:
70+
var evs: Array = find_events(filter_fn)
7171
if len(evs) > 0:
7272
return evs[0]
7373
else:
7474
return null
7575

7676
## events ###########################################
7777

78-
func complete_puzzle_set(puz: PuzzleSet):
79-
var event = find_event(func(ev): return PuzzleSetCompleted.is_matching_event(ev, puz))
78+
func complete_puzzle_set(puz: PuzzleSet) -> void:
79+
var event: PuzzleSetCompleted = find_event(func(ev: Event) -> bool: return PuzzleSetCompleted.is_matching_event(ev, puz))
8080
if event:
8181
event.inc_count()
8282
elif not event:
@@ -85,29 +85,30 @@ func complete_puzzle_set(puz: PuzzleSet):
8585
events.append(event)
8686
save_game()
8787

88-
func complete_puzzle_index(puz: PuzzleSet, idx: int):
89-
var event = find_event(func(ev): return PuzzleCompleted.is_matching_event(ev, puz, idx))
88+
func complete_puzzle_index(puz: PuzzleSet, idx: int) -> void:
89+
var event: PuzzleCompleted = find_event(func(ev: Event) -> bool: return PuzzleCompleted.is_matching_event(ev, puz, idx))
9090
if event:
9191
event.inc_count()
9292
elif not event:
9393
event = PuzzleCompleted.new_event(puz, idx)
9494
state.apply_event(event)
9595
events.append(event)
9696

97-
var skip_event = find_event(func(ev):
98-
return PuzzleSkipped.is_matching_event(ev, puz, idx) and ev.is_active())
97+
var skip_event: Event = find_event(func(ev: Event) -> bool:
98+
return PuzzleSkipped.is_matching_event(ev, puz, idx) and (ev as PuzzleSkipped).is_active())
9999
if skip_event:
100-
skip_event.mark_inactive()
100+
(skip_event as PuzzleSkipped).mark_inactive()
101101
# NOTE the in-place (passed) puzzle set is not updated
102102
state.apply_event(skip_event)
103103

104-
var p = state.find_puzzle_set(event.get_puzzle_set())
104+
@warning_ignore("unsafe_method_access")
105+
var p: PuzzleSet = state.find_puzzle_set(event.get_puzzle_set() as PuzzleSet)
105106
p.attach_game_def_stats()
106107

107108
save_game()
108109

109-
func skip_puzzle(puz: PuzzleSet, idx: int):
110-
var event = find_event(func(ev): return PuzzleSkipped.is_matching_event(ev, puz, idx))
110+
func skip_puzzle(puz: PuzzleSet, idx: int) -> void:
111+
var event: PuzzleSkipped = find_event(func(ev: Event) -> bool: return PuzzleSkipped.is_matching_event(ev, puz, idx))
111112
if event:
112113
event.inc_count()
113114
elif not event:
@@ -120,8 +121,8 @@ func skip_puzzle(puz: PuzzleSet, idx: int):
120121

121122
save_game()
122123

123-
func unlock_puzzle_set(puz: PuzzleSet):
124-
var event = find_event(func(ev): return PuzzleSetUnlocked.is_matching_event(ev, puz))
124+
func unlock_puzzle_set(puz: PuzzleSet) -> void:
125+
var event: Event = find_event(func(ev: Event) -> bool: return PuzzleSetUnlocked.is_matching_event(ev, puz))
125126
if event:
126127
event.inc_count()
127128
elif not event:
@@ -133,17 +134,17 @@ func unlock_puzzle_set(puz: PuzzleSet):
133134
save_game()
134135

135136
# Deprecated
136-
func unlock_next_puzzle_set(puz: PuzzleSet):
137-
var next = puz.get_next_puzzle_set()
137+
func unlock_next_puzzle_set(puz: PuzzleSet) -> void:
138+
var next: PuzzleSet = puz.get_next_puzzle_set()
138139
if next:
139140
unlock_puzzle_set(next)
140141
else:
141142
Log.warn("No next puzzle to unlock!", puz)
142143

143-
func unlock_all_puzzle_sets():
144+
func unlock_all_puzzle_sets() -> void:
144145
Log.warn("Unlocking all puzzle sets!")
145-
for ps in state.puzzle_sets:
146-
var event = find_event(func(ev): return PuzzleSetUnlocked.is_matching_event(ev, ps))
146+
for ps: PuzzleSet in state.puzzle_sets:
147+
var event: PuzzleSetUnlocked = find_event(func(ev: Event) -> bool: return PuzzleSetUnlocked.is_matching_event(ev, ps))
147148
if event:
148149
continue
149150
event = PuzzleSetUnlocked.new_event(ps)

src/events/PuzzleCompleted.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ static func new_event(puzzle_set: PuzzleSet, puzzle_idx: int) -> PuzzleCompleted
2929
})
3030
return event
3131

32-
static func is_matching_event(event: PuzzleCompleted, puzzle_set: PuzzleSet, idx: int) -> bool:
32+
static func is_matching_event(event: Event, puzzle_set: PuzzleSet, idx: int) -> bool:
3333
if not event is PuzzleCompleted:
3434
return false
3535
return (event as PuzzleCompleted).get_puzzle_set_id() == puzzle_set.get_entity_id() and \

src/hud/HUD.gd

+49-48
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,20 @@ class_name HUD
33

44
## vars ########################################################
55

6-
@onready var puzzle_num_label = $%LevelNum
7-
@onready var puzzle_message_label = $%LevelMessage
8-
@onready var dots_remaining_label = $%DotsRemaining
6+
@onready var puzzle_num_label: RichTextLabel = $%LevelNum
7+
@onready var puzzle_message_label: RichTextLabel = $%LevelMessage
8+
@onready var dots_remaining_label: RichTextLabel = $%DotsRemaining
99

10-
@onready var undo_control_hint = $%UndoControlHint
11-
@onready var reset_control_hint = $%ResetControlHint
12-
@onready var undo_label = $%UndoLabel
13-
@onready var reset_label = $%ResetLabel
14-
@onready var undo_input_icon = $%UndoInputIcon
15-
@onready var reset_input_icon = $%ResetInputIcon
10+
@onready var undo_control_hint: BoxContainer = $%UndoControlHint
11+
@onready var reset_control_hint: BoxContainer = $%ResetControlHint
12+
@onready var undo_label: RichTextLabel = $%UndoLabel
13+
@onready var reset_label: RichTextLabel = $%ResetLabel
1614

17-
@onready var undo_button = $%UndoButton
18-
@onready var reset_button = $%ResetButton
15+
@onready var undo_input_icon: ActionInputIcon = $%UndoInputIcon
16+
@onready var reset_input_icon: ActionInputIcon = $%ResetInputIcon
17+
18+
@onready var undo_button: Button = $%UndoButton
19+
@onready var reset_button: Button = $%ResetButton
1920

2021
signal undo_pressed
2122
signal reset_pressed
@@ -24,25 +25,25 @@ var puzzle_def: PuzzleDef
2425

2526
## ready ########################################################
2627

27-
func _ready():
28+
func _ready() -> void:
2829
set_control_icons()
29-
InputHelper.device_changed.connect(func(_device, _di): set_control_icons())
30-
InputHelper.joypad_changed.connect(func(_di, _connected): set_control_icons())
31-
InputHelper.keyboard_input_changed.connect(func(_action, _event): set_control_icons())
32-
InputHelper.joypad_input_changed.connect(func(_action, _event): set_control_icons())
30+
InputHelper.device_changed.connect(func(_device: String, _di: int) -> void: set_control_icons())
31+
InputHelper.joypad_changed.connect(func(_di: int, _connected: bool) -> void: set_control_icons())
32+
InputHelper.keyboard_input_changed.connect(func(_action: String, _event: InputEvent) -> void: set_control_icons())
33+
InputHelper.joypad_input_changed.connect(func(_action: String, _event: InputEvent) -> void: set_control_icons())
3334

34-
reset_button.pressed.connect(func(): reset_pressed.emit())
35-
undo_button.pressed.connect(func(): undo_pressed.emit())
35+
reset_button.pressed.connect(func() -> void: reset_pressed.emit())
36+
undo_button.pressed.connect(func() -> void: undo_pressed.emit())
3637

37-
func set_control_icons():
38+
func set_control_icons() -> void:
3839
undo_input_icon.set_icon_for_action("ui_undo")
3940
reset_input_icon.set_icon_for_action("restart")
4041

4142
## unhandled_input ########################################################
4243

43-
func _unhandled_input(event):
44-
var is_restart_held = Trolls.is_restart_held(event)
45-
var is_restart_released = Trolls.is_restart_released(event)
44+
func _unhandled_input(event: InputEvent) -> void:
45+
var is_restart_held: bool = Trolls.is_restart_held(event)
46+
var is_restart_released: bool = Trolls.is_restart_released(event)
4647

4748
if is_restart_held:
4849
show_resetting()
@@ -51,9 +52,9 @@ func _unhandled_input(event):
5152

5253
## update ########################################################
5354

54-
var last_puzzle_update
55+
var last_puzzle_update: Dictionary
5556

56-
func update_state(data):
57+
func update_state(data: Dictionary) -> void:
5758
last_puzzle_update = data
5859

5960
puzzle_def = data.puzzle_def
@@ -63,9 +64,9 @@ func update_state(data):
6364

6465
## puzzle number ########################################################
6566

66-
func update_puzzle_number(entry):
67+
func update_puzzle_number(entry: Dictionary) -> void:
6768
if "puzzles_remaining" in entry:
68-
var rem = entry.puzzles_remaining
69+
var rem: int = entry.puzzles_remaining
6970
if rem == 0:
7071
puzzle_num_label.text = "[center]Puzzle set complete![/center]"
7172
elif rem == 1:
@@ -75,50 +76,50 @@ func update_puzzle_number(entry):
7576

7677
## message ########################################################
7778

78-
func update_puzzle_message():
79+
func update_puzzle_message() -> void:
7980
if puzzle_def.get_message():
8081
puzzle_message_label.text = "[center]%s[/center]" % puzzle_def.get_message()
8182

8283
## dots remaining ########################################################
8384

84-
func update_dots_remaining(entry):
85+
func update_dots_remaining(entry: Dictionary) -> void:
8586
if "dots_total" in entry:
8687
dots_remaining_label.text = "[center]%s dots left[/center]" % entry.dots_remaining
8788

8889
## controls ########################################################
8990

90-
func controls():
91-
var cts = []
91+
func controls() -> Array:
92+
var cts: Array = []
9293
if not resetting:
9394
cts.append(reset_control_hint)
9495
if not undoing:
9596
cts.append(undo_control_hint)
9697
return cts
9798

98-
var fade_controls_tween
99-
func fade_controls():
99+
var fade_controls_tween: Tween
100+
func fade_controls() -> void:
100101
if fade_controls_tween != null and fade_controls_tween.is_running():
101102
return
102103
fade_controls_tween = create_tween()
103104
# wait a bit before fading
104105
fade_controls_tween.tween_interval(0.8)
105-
controls().map(func(c):
106+
controls().map(func(c: CanvasItem) -> void:
106107
fade_controls_tween.parallel().tween_property(c, "modulate:a", 0.5, 0.8))
107108

108-
var show_controls_tween
109-
func show_controls(force=false):
109+
var show_controls_tween: Tween
110+
func show_controls(force: bool = false) -> void:
110111
Log.pr("showing controls (force: ", force, ")")
111112
if show_controls_tween != null and show_controls_tween.is_running():
112113
show_controls_tween.kill()
113114
if not force:
114115
return
115116
show_controls_tween = create_tween()
116-
controls().map(func(c):
117+
controls().map(func(c: CanvasItem) -> void:
117118
show_controls_tween.parallel().tween_property(c, "modulate:a", 1.0, 0.6))
118119

119120
# could probably just use a timer, but meh
120-
var controls_tween
121-
func restart_fade_in_controls_tween():
121+
var controls_tween: Tween
122+
func restart_fade_in_controls_tween() -> void:
122123
fade_controls()
123124
if controls_tween != null:
124125
controls_tween.kill()
@@ -127,10 +128,10 @@ func restart_fade_in_controls_tween():
127128

128129
## undoing ########################################################
129130

130-
var undoing
131-
var undo_tween
132-
var undo_t = 0.3
133-
func animate_undo():
131+
var undoing: bool
132+
var undo_tween: Tween
133+
var undo_t: float = 0.3
134+
func animate_undo() -> void:
134135
undoing = true
135136

136137
undo_control_hint.set_pivot_offset(undo_control_hint.size/2)
@@ -142,14 +143,14 @@ func animate_undo():
142143
undo_tween.tween_property(undo_control_hint, "modulate:a", 1.0, undo_t/4)
143144
undo_tween.parallel().tween_property(undo_control_hint, "scale", Vector2.ONE*1.4, undo_t/2)
144145
undo_tween.tween_property(undo_control_hint, "scale", Vector2.ONE, undo_t/2)
145-
undo_tween.tween_callback(func(): undoing = false)
146+
undo_tween.tween_callback(func() -> void: undoing = false)
146147

147148
## restarting ########################################################
148149

149-
var resetting
150-
var reset_tween
151-
func show_resetting():
152-
var hold_t = DHData.reset_hold_t
150+
var resetting: bool
151+
var reset_tween: Tween
152+
func show_resetting() -> void:
153+
var hold_t: float = DHData.reset_hold_t
153154
resetting = true
154155
reset_label.text = "Hold..."
155156

@@ -163,7 +164,7 @@ func show_resetting():
163164
# presumably we're back at the beginning
164165
reset_tween.tween_callback(hide_resetting)
165166

166-
func hide_resetting():
167+
func hide_resetting() -> void:
167168
resetting = false
168169
if reset_tween != null:
169170
reset_tween.kill()

0 commit comments

Comments
 (0)