33extends Node2D
44class_name GameBoard
55# SIGNALS
6- signal gem_swapped ()
6+ signal props_updated_moves (moves :int )
7+ signal props_updated_score (score :int )
78# SCENES
89@onready var grid_container :GridContainer = $ GridContainer
910@onready var hbox_container :HBoxContainer = $ HBoxContainer
@@ -13,7 +14,9 @@ var selected_cell_1:GemCell = null
1314var selected_cell_2 :GemCell = null
1415var undo_cell_1 :GemCell = null
1516var undo_cell_2 :GemCell = null
16- var tweens_running :int = 0
17+ var tweens_running_cnt :int = 0
18+ var board_props_moves :int = 0
19+ var board_props_score :int = 0
1720
1821# Called when the node enters the scene tree for the first time.
1922func _ready ():
@@ -55,16 +58,15 @@ func fill_hbox():
5558 for row_idx in range (8 ):
5659 # A: random gem
5760 var gem_type = GEM_COLOR_NAMES [randi () % GEM_COLOR_NAMES .size ()]
58- # var gem_type = Enums.GemColor.WHITE
5961 # B: create/add
6062 var gem_cell_scene = load ("res://game_board/gem_cell.tscn" )
6163 var gem_cell :GemCell = gem_cell_scene .instantiate ()
6264 hbox_container .get_child (col_idx ).add_child (gem_cell )
6365 gem_cell .initialize (gem_type )
6466 var control_node = gem_cell .get_node ("GemControl" )
65- # control_node.connect("drag_start", self._on_cell_click)
6667 control_node .connect ("cell_click" , self ._on_cell_click )
67- # control_node.connect("drag_ended", self._on_cell_click)
68+ # control_node.connect("drag_start", self._on_cell_click) # TODO:
69+ # control_node.connect("drag_ended", self._on_cell_click) # TODO:
6870
6971# =========================================================
7072
@@ -217,7 +219,10 @@ func swap_gem_cells(swap_cell_1:GemCell, swap_cell_2:GemCell):
217219 return
218220
219221 # A: signal game controller
220- emit_signal ("gem_swapped" ) # notify controller (play sound, increase moves counter, etc.)
222+ swap_cell_1 .play_audio_gem_move ()
223+ swap_cell_2 .play_audio_gem_move ()
224+ board_props_moves += 1
225+ emit_signal ("props_updated_moves" , board_props_moves )
221226
222227 # B: turn off anim/effects before moving
223228 swap_cell_1 .play_selected_anim (false )
@@ -240,17 +245,17 @@ func swap_gem_cells(swap_cell_1:GemCell, swap_cell_2:GemCell):
240245
241246func setup_tween (gem_cell :GemCell , start_pos :Vector2 , end_pos :Vector2 ):
242247 gem_cell .sprite .global_position = start_pos # NOTE: Set initial position right before tweening
243- tweens_running += 1
248+ tweens_running_cnt += 1
244249 var tween = get_tree ().create_tween ()
245250 tween .tween_property (gem_cell .sprite , "global_position" , end_pos , Enums .TWEEN_TIME )
246251 tween .tween_callback (tween_completed )
247252
248253# STEP 3: Tween complete: clear vars/scan board
249254
250255func tween_completed ():
251- Enums .debug_print ("[tween_completed]: (counter=" + str (tweens_running )+ ")" , Enums .DEBUG_LEVEL .INFO )
256+ Enums .debug_print ("[tween_completed]: (counter=" + str (tweens_running_cnt )+ ")" , Enums .DEBUG_LEVEL .INFO )
252257 # A: update counter
253- tweens_running -= 1
258+ tweens_running_cnt -= 1
254259
255260 # B: clear selections
256261 if selected_cell_1 :
@@ -261,7 +266,7 @@ func tween_completed():
261266 selected_cell_2 = null
262267
263268 # C: once all tweens complete, check board
264- if tweens_running == 0 :
269+ if tweens_running_cnt == 0 :
265270 check_board_explode_matches ()
266271
267272# STEP 4: Check board, then explode first match found... (repeat until exhausted)
@@ -271,6 +276,10 @@ func check_board_explode_matches():
271276 Enums .debug_print ("[check_board_explode_matches]: CHECKING BOARD... " , Enums .DEBUG_LEVEL .INFO )
272277 Enums .debug_print ("[check_board_explode_matches]: =====================================" , Enums .DEBUG_LEVEL .INFO )
273278
279+ # TDDO: WIP: this will change once we start exploding all at once
280+ board_props_score += 10
281+ emit_signal ("props_updated_score" , board_props_score )
282+
274283 var gem_matches = get_first_match_gems ()
275284 if gem_matches .size () > 0 :
276285 debug_print_ascii_table (gem_matches )
0 commit comments