From 55decffc902031130ca913a4135b3e770cb9f620 Mon Sep 17 00:00:00 2001 From: Sch1nken Date: Mon, 5 Aug 2024 15:51:26 +0200 Subject: [PATCH] Current Version --- Game.tscn | 15 ++++++++++ GameEndChecker.gd | 2 ++ HexGrid3D/HexGrid3D.gd | 68 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) diff --git a/Game.tscn b/Game.tscn index 5ae99d4..9bcae4d 100644 --- a/Game.tscn +++ b/Game.tscn @@ -107,6 +107,7 @@ shadow_enabled = true script = ExtResource("6_41m5i") [node name="BuildMenu" type="Control" parent="."] +visible = false layout_mode = 3 anchors_preset = 12 anchor_top = 1.0 @@ -235,6 +236,7 @@ layout_mode = 2 mouse_filter = 0 [node name="CurrentTurnDisplay" type="Control" parent="."] +visible = false layout_mode = 3 anchors_preset = 5 anchor_left = 0.5 @@ -247,6 +249,7 @@ size_flags_vertical = 0 mouse_filter = 2 [node name="InputInfo" type="Control" parent="."] +visible = false layout_mode = 3 anchors_preset = 1 anchor_left = 1.0 @@ -425,6 +428,7 @@ text = "Show/Hide controls" horizontal_alignment = 2 [node name="MenuButtons" type="Control" parent="."] +visible = false layout_mode = 3 anchors_preset = 0 offset_right = 40.0 @@ -581,6 +585,7 @@ layout_mode = 2 text = "Back to menu" [node name="CanvasLayer" type="CanvasLayer" parent="."] +visible = false [node name="ActionMoveMenu" type="Control" parent="CanvasLayer"] visible = false @@ -715,6 +720,14 @@ layout_mode = 2 layout_mode = 2 text = "Start" +[node name="Timer" type="Timer" parent="."] +wait_time = 2.0 +autostart = true + +[node name="Timer2" type="Timer" parent="."] +wait_time = 2.0 +autostart = true + [connection signal="pressed" from="MenuButtons/VBoxContainer/MenuButton" to="MenuButtons" method="_on_menu_button_pressed"] [connection signal="pressed" from="MenuButtons/VBoxContainer/PassRoundButton" to="MenuButtons" method="_on_pass_round_button_pressed"] [connection signal="pressed" from="MenuButtons/VBoxContainer/SurrenderButton" to="MenuButtons" method="_on_surrender_button_pressed"] @@ -731,3 +744,5 @@ text = "Start" [connection signal="toggled" from="GameSettings/GameSettings/PanelContainer/VBoxContainer/HBoxContainer3/MosquitoCheckbutton" to="GameSettings/GameSettings" method="_on_mosquito_checkbutton_toggled"] [connection signal="toggled" from="GameSettings/GameSettings/PanelContainer/VBoxContainer/HBoxContainer4/PillbugCheckbutton" to="GameSettings/GameSettings" method="_on_pillbug_checkbutton_toggled"] [connection signal="pressed" from="GameSettings/GameSettings/PanelContainer/VBoxContainer/StartGameButton" to="GameSettings/GameSettings" method="_on_start_game_button_pressed"] +[connection signal="timeout" from="Timer" to="HexGrid" method="_on_timer_timeout"] +[connection signal="timeout" from="Timer2" to="HexGrid" method="_on_timer_2_timeout"] diff --git a/GameEndChecker.gd b/GameEndChecker.gd index 6170ab7..8643b3a 100644 --- a/GameEndChecker.gd +++ b/GameEndChecker.gd @@ -22,6 +22,8 @@ func _on_turn_ended(turn_num: int, map: HexGrid) -> void: var black_lost: bool = false var white_lost: bool = false + return + for b in bees: if map.get_empty_neighbours(b.coordinates).size() == 0: if b.is_black: diff --git a/HexGrid3D/HexGrid3D.gd b/HexGrid3D/HexGrid3D.gd index 76c058b..d48394b 100644 --- a/HexGrid3D/HexGrid3D.gd +++ b/HexGrid3D/HexGrid3D.gd @@ -283,7 +283,30 @@ func place_insect_tile(resource_path: String, is_black: bool, pos: Vector4i) -> var tween = get_tree().create_tween() tween.tween_property(tile_copy, "position", target_pos, 1.0).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_EXPO) +var cell_to_be_removed: Vector4i = Vector4i.ZERO +func _force_remove_tile(cell: Vector4i) -> void: + if not used_cells.has(cell): + return + + var tile = used_cells[cell] + + cell_to_be_removed = cell + + var tween = get_tree().create_tween() + + var sky_pos = Vector3(tile.position.x, 20.0, tile.position.z) + + tween.tween_property(tile, "position", sky_pos, 1.0).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_EXPO) + tween.tween_callback(_remove_tile) + +func _remove_tile() -> void: + if not used_cells.has(cell_to_be_removed): + return + + used_cells[cell_to_be_removed].queue_free() + used_cells.erase(cell_to_be_removed) + func _on_insect_placed(resource: TileResource, is_black: bool, pos: Vector4i) -> void: var resource_path = resource.resource_path @@ -600,3 +623,48 @@ func _ready() -> void: GameEvents.insect_tile_moved.connect(_on_insect_tile_moved) GameEvents.insect_tile_action_started.connect(_on_insect_tile_action_started) GameEvents.insect_tile_move_started.connect(_on_insect_tile_move_started) + +const pieces = [ + "res://Tile/Prefabs/Ant.tres", + "res://Tile/Prefabs/Bee.tres", + "res://Tile/Prefabs/Beetle.tres", + "res://Tile/Prefabs/Grasshopper.tres", + "res://Tile/Prefabs/Ladybug.tres", + "res://Tile/Prefabs/Mosquito.tres", + "res://Tile/Prefabs/Pillbug.tres", + "res://Tile/Prefabs/Spider.tres", +] + +var last_cell: Vector4i = Vector4i.ZERO + +func _on_timer_timeout() -> void: + # spawn random tile + # get random position q, r, s + var q = randi_range(-5, 5) + var r = randi_range(-5, 5) + #var s = randi_range(-5, 5) + + + var cell: Vector4i = axial_to_cube(AxialCoordinates.new(q, r)) + if not is_cell_empty(cell): + return + + if used_cells.has(cell): + return + + print(cell) + + last_cell = cell + place_insect_tile(pieces.pick_random(), randi_range(0, 1) == 0, cell) + +func _on_timer_2_timeout() -> void: + if used_cells.size() > 25: + # remove random cell + var cell_idx = used_cells.keys().pick_random() + if cell_idx == last_cell: + return + #var cell = used_cells[cell_idx] + _force_remove_tile(cell_idx) + pass + # lift and remove random tile (but not the last one) + pass