diff --git a/BuildingLevel.gd b/BuildingLevel.gd new file mode 100644 index 0000000..32ed5bc --- /dev/null +++ b/BuildingLevel.gd @@ -0,0 +1,45 @@ +extends TileMapLayer + +@export var building_spots: Array[Vector2i] + +var building_data = {} + + +func _process(delta: float) -> void: + var tile = local_to_map(get_global_mouse_position()) + var building_mode = Persister.get_value("building_mode") + + if Input.is_action_just_pressed("lclick"): + if building_mode: + place_building() + else: + show_info_building() + + + + for spot in building_spots: + if not building_data.has(spot): + erase_cell(spot) + + if not building_mode: + return + + if building_spots.has(tile): + set_cell(tile, 1, Vector2i(0,0), 0) + + +func place_building(): + var tile = local_to_map(get_global_mouse_position()) + if building_spots.has(tile): + Persister.persist_data("building_mode", false) + building_data[tile] = { + "key": Persister.get_value("building_key"), + } + + Persister.persist_data("drag_mode", false) + + +func show_info_building(): + var tile = local_to_map(get_global_mouse_position()) + if building_data.has(tile): + Triggerer.trigger("show_info", building_data[tile]) diff --git a/Main.tscn b/Main.tscn index 659d3a2..b883d04 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1,19 +1,17 @@ -[gd_scene load_steps=11 format=4 uid="uid://5ske2hm55rce"] +[gd_scene load_steps=10 format=4 uid="uid://5ske2hm55rce"] [ext_resource type="PackedScene" uid="uid://n2lpy72tkyc8" path="res://storm/StormManager.tscn" id="1_gcxt1"] +[ext_resource type="Script" path="res://main.gd" id="1_pg2kh"] [ext_resource type="PackedScene" uid="uid://bxctpr0tfqidf" path="res://ui/UI.tscn" id="1_ve2mn"] [ext_resource type="Theme" uid="uid://d035h7upxrw3h" path="res://theme.tres" id="1_xbn5h"] [ext_resource type="TileSet" uid="uid://dhy53lakrlutm" path="res://TIleSet.tres" id="2_68wnv"] [ext_resource type="Script" path="res://water_level.gd" id="4_vc41k"] -[ext_resource type="PackedScene" uid="uid://dykc1mgg5uopw" path="res://components/Cursor/MouseHandler.tscn" id="5_6lpdu"] -[ext_resource type="Script" path="res://tile_map.gd" id="5_v47eg"] +[ext_resource type="Script" path="res://BuildingLevel.gd" id="5_3vufn"] [ext_resource type="PackedScene" uid="uid://byyyhq3x8t2d8" path="res://InfoWindow.tscn" id="7_f4xfy"] [ext_resource type="PackedScene" uid="uid://b22pr3istdhcv" path="res://ui/BuildingMenu.tscn" id="7_hnxcf"] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_57goo"] -size = Vector2(324, 314) - [node name="Main" type="Node2D"] +script = ExtResource("1_pg2kh") [node name="StormManager" parent="." instance=ExtResource("1_gcxt1")] @@ -47,6 +45,12 @@ y_sort_enabled = true tile_map_data = PackedByteArray("AAAhAP7/AwAFAAEAAAAiAP7/AwAFAAEAAAAiAP3/AwAFAAEAAAAiAPz/AwAFAAEAAAAhAP3/AwAFAAEAAAAhAPz/AwAFAAEAAAAhAP//AwAFAAEAAAAiAP//AwAFAAEAAAAjAP//AwAFAAEAAAAjAP7/AwAFAAEAAAAjAP3/AwAFAAEAAAAjAPz/AwAFAAEAAAAkAPz/AwAFAAMAAAAkAP3/AwAFAAMAAAAkAP7/AwAFAAMAAAAkAP//AwAFAAMAAAAjAAAAAwAFAAMAAAAiAAAAAwAFAAMAAAAhAAAAAwAFAAMAAAAkAAAAAwAFAAMAAAAkAPv/AwAFAAEAAAAjAPv/AwAFAAEAAAAiAPv/AwAFAAEAAAAhAPv/AwAFAAEAAAAhAAEAAwAFAAMAAAAhAAIAAwAFAAMAAAAkAAEAAwAFAAMAAAAjAAEAAwAFAAMAAAAlAAAAAwAFAAMAAAAlAAEAAwAFAAMAAAAmAAEAAwAFAAEAAAAmAAIAAwAFAAEAAAAnAAIAAwAFAAEAAAAnAAEAAwAFAAEAAAAmAAAAAwAFAAMAAAAlAP//AwAFAAMAAAAlAP3/AwAFAAEAAAAlAP7/AwAFAAEAAAAmAP7/AwAFAAEAAAAmAP//AwAFAAEAAAAnAP//AwAFAAEAAAAoAP//AwAFAAEAAAAoAAAAAwAFAAEAAAAnAAAAAwAFAAEAAAAnAP7/AwAFAAEAAAAmAP3/AwAFAAEAAAAoAP7/AwAFAAEAAAApAP7/AwAFAAEAAAApAP3/AwAFAAEAAAAoAPv/AwAFAAEAAAAoAPz/AwAFAAEAAAAnAPz/AwAFAAEAAAAnAPv/AwAFAAEAAAAmAPv/AwAFAAMAAAAmAPz/AwAFAAMAAAAlAPv/AwAFAAMAAAAlAPz/AwAFAAMAAAAnAP3/AwAFAAEAAAAoAP3/AwAFAAEAAAAlAAIAAwAFAAMAAAA=") tile_set = ExtResource("2_68wnv") +[node name="BuildingLevel2" type="TileMapLayer" parent="Level2"] +y_sort_enabled = true +tile_set = ExtResource("2_68wnv") +script = ExtResource("5_3vufn") +building_spots = Array[Vector2i]([Vector2i(33, 5), Vector2i(33, 4), Vector2i(33, 3), Vector2i(34, 4), Vector2i(34, 3), Vector2i(34, 2), Vector2i(34, 1), Vector2i(35, 3), Vector2i(35, 2), Vector2i(36, 3), Vector2i(36, 2), Vector2i(37, 3), Vector2i(38, 4), Vector2i(38, 3), Vector2i(39, 4), Vector2i(39, 3), Vector2i(39, 5), Vector2i(40, 5), Vector2i(40, 4), Vector2i(40, 3), Vector2i(40, 2), Vector2i(40, 1), Vector2i(41, 4), Vector2i(41, 3), Vector2i(41, 2), Vector2i(41, 1), Vector2i(41, 0), Vector2i(42, 4), Vector2i(42, 3), Vector2i(42, 2), Vector2i(42, 1), Vector2i(43, 2), Vector2i(43, 3), Vector2i(44, 3), Vector2i(41, -4), Vector2i(41, -5), Vector2i(42, -3), Vector2i(42, -4), Vector2i(42, -5), Vector2i(43, -5)]) + [node name="WaterLevel2" type="TileMapLayer" parent="Level2"] visible = false y_sort_enabled = true @@ -60,6 +64,12 @@ y_sort_enabled = true tile_map_data = PackedByteArray("AAAgAP3/AwAHAAEAAAAhAP3/AwAHAAEAAAAhAPz/AwAHAAEAAAAhAPv/AwAHAAEAAAAgAP7/AwAHAAEAAAAhAP7/AwAHAAEAAAAiAP7/AwAHAAEAAAAiAP3/AwAHAAEAAAAiAPz/AwAHAAEAAAAiAPv/AwAHAAEAAAAgAPv/AwAHAAEAAAAgAPz/AwAHAAEAAAAgAPr/AwAHAAEAAAAhAPr/AwAHAAEAAAAjAPv/AwAHAAEAAAAiAPr/AwAHAAEAAAAjAP//AwAHAAEAAAAkAP//AwAHAAEAAAAjAP7/AwAHAAEAAAAjAP3/AwAHAAEAAAAjAPz/AwAHAAEAAAAkAP7/AwAHAAEAAAAlAPv/AwAHAAEAAAAkAPv/AwAHAAEAAAAlAPr/AwAHAAEAAAAkAPr/AwAHAAEAAAAjAPr/AwAHAAEAAAAlAP//AwAHAAEAAAAmAPr/AwAHAAEAAAAiAP//AwAHAAEAAAAhAP//AwAHAAEAAAAgAP//AwAHAAEAAAAgAAAAAwAHAAEAAAAkAAAAAwAHAAEAAAAjAAAAAwAHAAEAAAAkAAEAAwAHAAEAAAAiAAAAAwAHAAEAAAAgAAEAAwAHAAEAAAA=") tile_set = ExtResource("2_68wnv") +[node name="BuildingLevel3" type="TileMapLayer" parent="Level3"] +y_sort_enabled = true +tile_set = ExtResource("2_68wnv") +script = ExtResource("5_3vufn") +building_spots = Array[Vector2i]([Vector2i(37, 1), Vector2i(37, 0), Vector2i(38, 1), Vector2i(38, 0), Vector2i(36, -3), Vector2i(36, -4), Vector2i(37, -2), Vector2i(37, -3), Vector2i(37, -4), Vector2i(38, -1), Vector2i(38, -2), Vector2i(38, -3), Vector2i(38, -4), Vector2i(38, -5), Vector2i(39, -2), Vector2i(39, -1), Vector2i(39, -3), Vector2i(39, -4), Vector2i(39, -5), Vector2i(39, -6), Vector2i(40, -3), Vector2i(40, -4)]) + [node name="WaterLevel3" type="TileMapLayer" parent="Level3"] visible = false y_sort_enabled = true @@ -73,6 +83,12 @@ y_sort_enabled = true tile_map_data = PackedByteArray("AAAgAPv/AwAJAAEAAAAfAPr/AwAJAAEAAAAfAPv/AwAJAAEAAAAfAPn/AwAJAAEAAAAgAPn/AwAJAAEAAAAgAPr/AwAJAAEAAAAhAPr/AwAJAAEAAAAhAPn/AwAJAAEAAAAfAPz/AwAJAAEAAAAiAPn/AwAJAAEAAAAiAPr/AwAJAAEAAAAjAPn/AwAJAAEAAAA=") tile_set = ExtResource("2_68wnv") +[node name="BuildingLevel4" type="TileMapLayer" parent="Level4"] +y_sort_enabled = true +tile_set = ExtResource("2_68wnv") +script = ExtResource("5_3vufn") +building_spots = Array[Vector2i]([Vector2i(31, -3), Vector2i(31, -2), Vector2i(31, -1), Vector2i(31, 0), Vector2i(32, -2), Vector2i(32, -3), Vector2i(32, -4), Vector2i(33, -3), Vector2i(33, -4), Vector2i(33, -5), Vector2i(33, -2), Vector2i(33, -1), Vector2i(34, -2), Vector2i(34, -3), Vector2i(34, -1), Vector2i(34, -4), Vector2i(34, -5), Vector2i(35, -6), Vector2i(35, -3), Vector2i(35, -2), Vector2i(35, -1), Vector2i(35, 0), Vector2i(36, -2), Vector2i(36, -6), Vector2i(36, -7), Vector2i(37, -7)]) + [node name="WaterLevel4" type="TileMapLayer" parent="Level4"] visible = false y_sort_enabled = true @@ -86,6 +102,12 @@ y_sort_enabled = true tile_map_data = PackedByteArray("AAAeAPj/AwALAAEAAAAeAPn/AwALAAEAAAAfAPj/AwALAAEAAAA=") tile_set = ExtResource("2_68wnv") +[node name="BuildingLevel5" type="TileMapLayer" parent="Level5"] +y_sort_enabled = true +tile_set = ExtResource("2_68wnv") +script = ExtResource("5_3vufn") +building_spots = Array[Vector2i]([Vector2i(30, -6), Vector2i(30, -5), Vector2i(31, -6), Vector2i(31, -7), Vector2i(32, -7), Vector2i(32, -8), Vector2i(33, -7), Vector2i(33, -8), Vector2i(34, -8)]) + [node name="WaterLevel5" type="TileMapLayer" parent="Level5"] visible = false y_sort_enabled = true @@ -94,28 +116,13 @@ tile_set = ExtResource("2_68wnv") script = ExtResource("4_vc41k") level = 5 -[node name="TileMap" type="TileMap" parent="."] -visible = false +[node name="BuildingLevel6" type="TileMapLayer" parent="."] +y_sort_enabled = true tile_set = ExtResource("2_68wnv") -rendering_quadrant_size = 128 -format = 2 -layer_0/tile_data = PackedInt32Array(65535, 327683, 1, 131071, 327683, 1, 0, 327683, 1, 65536, 327683, 1) -layer_1/name = "Layer1" -layer_2/name = "Layer2" -layer_3/name = "Layer3" -layer_4/name = "Layer4" -layer_5/name = "Layer5" -script = ExtResource("5_v47eg") - -[node name="MouseHandler" parent="TileMap" instance=ExtResource("5_6lpdu")] -position = Vector2(319, 177) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="TileMap/MouseHandler"] -rotation = 0.750492 -shape = SubResource("RectangleShape2D_57goo") +script = ExtResource("5_3vufn") +building_spots = Array[Vector2i]([Vector2i(29, -8), Vector2i(29, -9), Vector2i(30, -9)]) [node name="CanvasLayer" type="CanvasLayer" parent="."] -visible = false [node name="UI" parent="CanvasLayer" instance=ExtResource("1_ve2mn")] anchors_preset = 15 @@ -127,6 +134,3 @@ grow_vertical = 2 pivot_offset = Vector2(114, 128) [node name="BuildingMenu" parent="CanvasLayer" instance=ExtResource("7_hnxcf")] - -[connection signal="clicked" from="TileMap/MouseHandler" to="TileMap" method="_on_mouse_handler_clicked"] -[connection signal="rclicked" from="TileMap/MouseHandler" to="TileMap" method="_on_mouse_handler_rclicked"] diff --git a/TIleSet.tres b/TIleSet.tres index 7dbb2ec..b5d9a2d 100644 --- a/TIleSet.tres +++ b/TIleSet.tres @@ -17,6 +17,7 @@ margins = Vector2i(15, 14) texture_region_size = Vector2i(18, 20) 1:1/0 = 0 0:0/0 = 0 +0:0/0/texture_origin = Vector2i(0, 6) [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w6tof"] texture = ExtResource("3_rchy6") diff --git a/info_window.gd b/info_window.gd index ef1ec61..facc3e4 100644 --- a/info_window.gd +++ b/info_window.gd @@ -17,7 +17,7 @@ func _ready() -> void: func _show_info_window(data): visible = true - var building_data = Data.data.buildings[data.Key] + var building_data = Data.data.buildings[data.key] if window_tween: diff --git a/main.gd b/main.gd index e251cf8..09d4282 100644 --- a/main.gd +++ b/main.gd @@ -1 +1,16 @@ extends Node2D + +@onready var building_levels = [ + $Level2/BuildingLevel2, + $Level3/BuildingLevel3, + $Level4/BuildingLevel4, + $Level5/BuildingLevel5, + $BuildingLevel6 +] + +func _process(delta: float) -> void: + if Input.is_action_just_released("lclick"): + if Persister.get_value("drag_mode") and Persister.get_value("building_mode"): + for build_level in building_levels: + build_level.place_building() + Persister.persist_data("building_mode", false) diff --git a/parts/globals.txt b/parts/globals.txt index c31d553..1488cf1 100644 --- a/parts/globals.txt +++ b/parts/globals.txt @@ -1,4 +1,4 @@ -time_to_flood_change: 3 +time_to_flood_change: 250 flood_levels[] 0 2 diff --git a/ui/building_icon.gd b/ui/building_icon.gd index 46b524b..db120d8 100644 --- a/ui/building_icon.gd +++ b/ui/building_icon.gd @@ -17,11 +17,17 @@ func _on_mouse_handler_hovered() -> void: func _on_mouse_handler_unhovered() -> void: if clicked: - Triggerer.trigger("drag_building", { "key": key }) + #Triggerer.trigger("drag_building", { "key": key }) + Persister.persist_data("drag_mode", true) + Persister.persist_data("building_mode", true) + Persister.persist_data("building_key", key) clicked = false func _on_mouse_handler_released() -> void: if clicked: - Triggerer.trigger("select_building", { "key": key }) + #Triggerer.trigger("select_building", { "key": key }) + Persister.persist_data("drag_mode", false) + Persister.persist_data("building_mode", true) + Persister.persist_data("building_key", key) clicked = false