diff --git a/Samera.tres b/Samera.tres new file mode 100644 index 0000000..fa030e3 --- /dev/null +++ b/Samera.tres @@ -0,0 +1,37 @@ +[gd_resource type="Theme" load_steps=6 format=3 uid="uid://csh7en7c4otv6"] + +[ext_resource type="Texture2D" uid="uid://3h6y6jxhf1qp" path="res://sprites/Uitto.png" id="1_cpeo0"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_cpeo0"] +atlas = ExtResource("1_cpeo0") +region = Rect2(16, 0, 16, 16) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rknw5"] +texture = SubResource("AtlasTexture_cpeo0") +texture_margin_left = 6.0 +texture_margin_top = 5.0 +texture_margin_right = 6.0 +texture_margin_bottom = 4.0 + +[sub_resource type="AtlasTexture" id="AtlasTexture_rknw5"] +atlas = ExtResource("1_cpeo0") +region = Rect2(0, 0, 16, 16) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_jukqe"] +texture = SubResource("AtlasTexture_rknw5") +texture_margin_left = 2.0 +texture_margin_top = 2.0 +texture_margin_right = 2.0 +texture_margin_bottom = 2.0 +axis_stretch_horizontal = 1 +axis_stretch_vertical = 1 + +[resource] +CRT/base_type = &"Button" +CRT/styles/disabled = SubResource("StyleBoxTexture_rknw5") +CRT/styles/focus = SubResource("StyleBoxTexture_rknw5") +CRT/styles/hover = SubResource("StyleBoxTexture_rknw5") +CRT/styles/hover_pressed = SubResource("StyleBoxTexture_rknw5") +CRT/styles/normal = SubResource("StyleBoxTexture_rknw5") +CRT/styles/pressed = SubResource("StyleBoxTexture_rknw5") +Panel/styles/panel = SubResource("StyleBoxTexture_jukqe") diff --git a/generic/constructibles/conveyor.tres b/generic/constructibles/conveyor.tres new file mode 100644 index 0000000..cf8b491 --- /dev/null +++ b/generic/constructibles/conveyor.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" script_class="Constructible" load_steps=5 format=3 uid="uid://dj524jjal1f0n"] + +[ext_resource type="Script" uid="uid://c80sp6f77l5ha" path="res://scripts/constructible.gd" id="1_53h7j"] +[ext_resource type="Texture2D" uid="uid://cbtre16ilxte0" path="res://sprites/atlasses/Popekko.png" id="1_x27pp"] +[ext_resource type="PackedScene" uid="uid://b0h8dd82b3ox5" path="res://scenes/conveyor.tscn" id="2_hinjf"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_uvy8r"] +atlas = ExtResource("1_x27pp") +region = Rect2(16, 0, 16, 16) + +[resource] +script = ExtResource("1_53h7j") +scene = ExtResource("2_hinjf") +preview = SubResource("AtlasTexture_uvy8r") +metadata/_custom_type_script = "uid://c80sp6f77l5ha" diff --git a/node_2d.gd b/node_2d.gd deleted file mode 100644 index e251cf8..0000000 --- a/node_2d.gd +++ /dev/null @@ -1 +0,0 @@ -extends Node2D diff --git a/node_2d.gd.uid b/node_2d.gd.uid deleted file mode 100644 index cbbc17e..0000000 --- a/node_2d.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://6q6yvdigdloo diff --git a/project.godot b/project.godot index ab11115..b6648e2 100644 --- a/project.godot +++ b/project.godot @@ -15,12 +15,35 @@ run/main_scene="uid://u7thalwj5742" config/features=PackedStringArray("4.5", "GL Compatibility") config/icon="res://icon.svg" +[autoload] + +GuiEventBus="*res://scripts/gui/gui_event_bus.gd" +RuntimePlayerData="*res://scripts/runtime_player_data.gd" +Registry="*res://scripts/registry.gd" + [display] window/size/viewport_width=512 window/size/viewport_height=288 window/stretch/mode="canvas_items" +[gui] + +theme/custom="uid://csh7en7c4otv6" + +[input] + +plc_place={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(176.91797, 7.2773438),"global_position":Vector2(180.91797, 44.277344),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +plc_cancel={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(441.39453, 21.890625),"global_position":Vector2(445.39453, 58.890625),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} + [layer_names] 2d_physics/layer_1="Platform" diff --git a/scenes/2d_world.tscn b/scenes/2d_world.tscn index 9836907..5e93434 100644 --- a/scenes/2d_world.tscn +++ b/scenes/2d_world.tscn @@ -1,10 +1,91 @@ -[gd_scene load_steps=2 format=3 uid="uid://u7thalwj5742"] +[gd_scene load_steps=9 format=3 uid="uid://u7thalwj5742"] [ext_resource type="PackedScene" uid="uid://b7du4vul4bmpq" path="res://scenes/player_platform.tscn" id="1_4ia00"] +[ext_resource type="Script" uid="uid://db37xmo8ygwhg" path="res://scripts/gui/construction_button.gd" id="2_27lod"] +[ext_resource type="Resource" uid="uid://dj524jjal1f0n" path="res://generic/constructibles/conveyor.tres" id="3_2crwe"] +[ext_resource type="Script" uid="uid://b4nkk0ndqcto" path="res://scripts/construction_placer.gd" id="4_i7yte"] +[ext_resource type="PackedScene" uid="uid://bac552xgua68e" path="res://scenes/other_platform.tscn" id="5_mnxrb"] + +[sub_resource type="Animation" id="Animation_bq5r8"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("OtherPlatform:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(309, 15)] +} + +[sub_resource type="Animation" id="Animation_ymyc2"] +resource_name = "main" +length = 10.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("OtherPlatform:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 5), +"transitions": PackedFloat32Array(-2, -2), +"update": 0, +"values": [Vector2(309, 15), Vector2(309, 131)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_mogn5"] +_data = { +&"RESET": SubResource("Animation_bq5r8"), +&"main": SubResource("Animation_ymyc2") +} [node name="2D World" type="Node2D"] [node name="PlayerPlatform" parent="." instance=ExtResource("1_4ia00")] position = Vector2(17, 17) -use_kinematic_bodies = true -navigation_enabled = false + +[node name="OtherPlatform" parent="." instance=ExtResource("5_mnxrb")] +position = Vector2(309, 15) + +[node name="GUI" type="CanvasLayer" parent="."] + +[node name="Panel" type="Panel" parent="GUI"] +anchors_preset = -1 +anchor_top = 0.757 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -0.01600647 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="ConveyorButton" type="Button" parent="GUI/Panel"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.008 +anchor_top = 0.086 +anchor_right = 0.1 +anchor_bottom = 0.88600004 +offset_left = -0.096000195 +offset_top = -0.01999998 +offset_right = -0.20000076 +offset_bottom = -0.020004272 +size_flags_horizontal = 3 +theme_type_variation = &"CRT" +icon_alignment = 1 +expand_icon = true +script = ExtResource("2_27lod") +constructible = ExtResource("3_2crwe") + +[node name="Placer" type="Node2D" parent="."] +script = ExtResource("4_i7yte") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_mogn5") +} +autoplay = "main" diff --git a/scenes/conveyor.tscn b/scenes/conveyor.tscn new file mode 100644 index 0000000..dbf0273 --- /dev/null +++ b/scenes/conveyor.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=4 format=3 uid="uid://b0h8dd82b3ox5"] + +[ext_resource type="Texture2D" uid="uid://cbtre16ilxte0" path="res://sprites/atlasses/Popekko.png" id="1_kqxj7"] +[ext_resource type="Script" uid="uid://bbd7o2st8kmgl" path="res://scripts/construction.gd" id="1_y326v"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_uvy8r"] +atlas = ExtResource("1_kqxj7") +region = Rect2(16, 0, 16, 16) + +[node name="Conveyor" type="Node2D" groups=["buildings"]] +script = ExtResource("1_y326v") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_uvy8r") diff --git a/scenes/other_platform.tscn b/scenes/other_platform.tscn new file mode 100644 index 0000000..125ccab --- /dev/null +++ b/scenes/other_platform.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=4 uid="uid://bac552xgua68e"] + +[ext_resource type="TileSet" uid="uid://bv75bu0af04vs" path="res://generic/platform.tres" id="1_fs1oy"] +[ext_resource type="Script" uid="uid://lw1ya3iu14uf" path="res://scripts/build_zone.gd" id="2_bwire"] + +[node name="OtherPlatform" type="TileMapLayer"] +tile_map_data = PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAIAAAAAAAEAAAAAAAMAAAAAAAEAAAAAAAQAAAAAAAEAAAABAAAAAAAAAAEAAAABAAEAAAAAAAEAAAABAAIAAAAAAAEAAAABAAMAAAAAAAAAAAABAAQAAAAAAAEAAAACAAAAAAAAAAAAAAACAAEAAAAAAAEAAAACAAIAAAAAAAEAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAD/////AAACAAEAAAD//wAAAAAEAAIAAAD//wEAAAAEAAIAAAD//wIAAAAEAAIAAAD//wMAAAAEAAIAAAD//wQAAAAEAAIAAAAAAP//AAABAAIAAAABAP//AAABAAIAAAACAP//AAABAAIAAAADAP//AAADAAEAAAD//wUAAAAEAAEAAAADAAUAAAAFAAEAAAAAAAUAAAAGAAEAAAABAAUAAAAGAAEAAAACAAUAAAAGAAEAAAADAAAAAAAFAAIAAAADAAEAAAAFAAIAAAADAAIAAAAFAAIAAAADAAMAAAAFAAIAAAADAAQAAAAFAAIAAAA=") +tile_set = ExtResource("1_fs1oy") + +[node name="BuildZone" type="Marker2D" parent="."] +script = ExtResource("2_bwire") +building_rect = Rect2(0, 0, 48, 80) +metadata/_custom_type_script = "uid://lw1ya3iu14uf" diff --git a/scenes/player_platform.tscn b/scenes/player_platform.tscn index 15970ff..c23ecc3 100644 --- a/scenes/player_platform.tscn +++ b/scenes/player_platform.tscn @@ -1,12 +1,20 @@ -[gd_scene load_steps=3 format=4 uid="uid://b7du4vul4bmpq"] +[gd_scene load_steps=4 format=4 uid="uid://b7du4vul4bmpq"] [ext_resource type="TileSet" uid="uid://bv75bu0af04vs" path="res://generic/platform.tres" id="1_khkq2"] [ext_resource type="Script" uid="uid://lw1ya3iu14uf" path="res://scripts/build_zone.gd" id="2_wpmwa"] +[ext_resource type="Script" uid="uid://x5edy155eg0s" path="res://scripts/entity_holder.gd" id="3_6hjoe"] -[node name="PlayerPlatform" type="TileMapLayer"] -tile_map_data = PackedByteArray("AAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAADAAAAAAAAAAEAAAAEAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAGAAEAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAIAAAAAAAAAAAAGAAIAAAAAAAEAAAAFAAIAAAAAAAEAAAAEAAIAAAAAAAAAAAADAAIAAAAAAAAAAAACAAIAAAAAAAAAAAACAAEAAAAAAAEAAAABAAEAAAAAAAEAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAEAAAABAAMAAAAAAAEAAAABAAQAAAAAAAEAAAACAAQAAAAAAAAAAAADAAQAAAAAAAAAAAADAAMAAAAAAAAAAAAEAAMAAAAAAAEAAAAAAAQAAAAAAAEAAAAAAAUAAAAAAAAAAAABAAIAAAAAAAEAAAABAAUAAAAAAAAAAAACAAMAAAAAAAAAAAACAAUAAAAAAAEAAAADAAEAAAAAAAEAAAADAAUAAAAAAAEAAAAEAAEAAAAAAAAAAAAEAAQAAAAAAAEAAAAEAAUAAAAAAAAAAAAFAAEAAAAAAAEAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAEAAAAFAAUAAAAAAAAAAAAGAAMAAAAAAAEAAAAGAAQAAAAAAAEAAAAGAAUAAAAAAAEAAAAHAAAAAAAAAAEAAAAHAAMAAAAAAAEAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAIAAAAAAAAAAEAAAAIAAEAAAAAAAEAAAAIAAIAAAAAAAAAAAAIAAMAAAAAAAEAAAAIAAQAAAAAAAAAAAAIAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAABAAYAAAAAAAEAAAABAAcAAAAAAAEAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAADAAYAAAAAAAEAAAADAAcAAAAAAAEAAAAEAAYAAAAAAAEAAAAEAAcAAAAAAAEAAAAFAAYAAAAAAAEAAAAFAAcAAAAAAAAAAAAGAAYAAAAAAAEAAAAGAAcAAAAAAAEAAAAHAAYAAAAAAAEAAAAHAAcAAAAAAAAAAAAIAAYAAAAAAAAAAAAIAAcAAAAAAAEAAAAJAAAAAAAAAAEAAAAJAAEAAAAAAAEAAAAJAAIAAAAAAAEAAAAJAAMAAAAAAAAAAAAJAAQAAAAAAAEAAAAJAAUAAAAAAAAAAAAJAAYAAAAAAAEAAAAJAAcAAAAAAAAAAAAKAAAAAAAAAAEAAAAKAAEAAAAAAAAAAAAKAAIAAAAAAAAAAAAKAAMAAAAAAAEAAAAKAAQAAAAAAAAAAAAKAAUAAAAAAAEAAAAKAAYAAAAAAAAAAAAKAAcAAAAAAAEAAAALAAAAAAAAAAEAAAALAAEAAAAAAAAAAAALAAIAAAAAAAEAAAALAAMAAAAAAAEAAAALAAQAAAAAAAAAAAALAAUAAAAAAAAAAAALAAYAAAAAAAAAAAALAAcAAAAAAAAAAAAMAAAAAAAAAAEAAAAMAAEAAAAAAAAAAAAMAAIAAAAAAAEAAAAMAAMAAAAAAAAAAAAMAAQAAAAAAAAAAAAMAAUAAAAAAAEAAAAMAAYAAAAAAAEAAAAMAAcAAAAAAAAAAAANAAAAAAABAAEAAAANAAEAAAABAAEAAAANAAIAAAABAAEAAAANAAMAAAABAAEAAAANAAQAAAABAAEAAAANAAUAAAABAAEAAAANAAYAAAABAAEAAAANAAcAAAABAAEAAAD//wAAAAABAAAAAAD//wEAAAABAAAAAAD//wIAAAABAAAAAAD//wMAAAABAAAAAAD//wQAAAABAAAAAAD//wUAAAABAAAAAAD//wYAAAABAAAAAAD//wcAAAABAAAAAAD//wgAAAADAAAAAAANAAgAAAAEAAAAAAAAAAgAAAACAAAAAAABAAgAAAACAAAAAAACAAgAAAACAAAAAAADAAgAAAACAAAAAAAEAAgAAAACAAAAAAAFAAgAAAACAAAAAAAGAAgAAAACAAAAAAAHAAgAAAACAAAAAAAIAAgAAAACAAAAAAAJAAgAAAACAAAAAAAKAAgAAAACAAAAAAALAAgAAAACAAAAAAAMAAgAAAACAAAAAAAAAP//AAAAAAIAAAABAP//AAAAAAIAAAACAP//AAAAAAIAAAADAP//AAAAAAIAAAAEAP//AAAAAAIAAAAFAP//AAAAAAIAAAAGAP//AAAAAAIAAAAHAP//AAAAAAIAAAAIAP//AAAAAAIAAAAJAP//AAAAAAIAAAAKAP//AAAAAAIAAAALAP//AAAAAAIAAAAMAP//AAAAAAIAAAD/////AAACAAIAAAANAP//AAADAAIAAAA=") +[node name="PlayerPlatform" type="Node2D"] + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +tile_map_data = PackedByteArray("AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAACAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAGAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAIAAAAAAAAAAEAAAAJAAAAAAAAAAEAAAAKAAAAAAAAAAEAAAALAAAAAAAAAAAAAAAMAAAAAAAAAAEAAAANAAAAAAAAAAEAAAAOAAAAAAAAAAEAAAAPAAAAAAAAAAAAAAAQAAAAAAAAAAEAAAAQAAEAAAAAAAAAAAAPAAEAAAAAAAAAAAAOAAEAAAAAAAEAAAANAAEAAAAAAAAAAAAMAAEAAAAAAAAAAAALAAEAAAAAAAEAAAAKAAEAAAAAAAEAAAAJAAEAAAAAAAEAAAAIAAEAAAAAAAEAAAAHAAEAAAAAAAAAAAAGAAEAAAAAAAEAAAAFAAEAAAAAAAEAAAAEAAEAAAAAAAAAAAADAAEAAAAAAAAAAAACAAEAAAAAAAEAAAABAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAABAAIAAAAAAAEAAAACAAIAAAAAAAEAAAACAAMAAAAAAAEAAAADAAMAAAAAAAAAAAADAAIAAAAAAAAAAAAEAAIAAAAAAAAAAAAFAAIAAAAAAAEAAAAGAAIAAAAAAAEAAAAHAAIAAAAAAAEAAAAIAAIAAAAAAAEAAAAJAAIAAAAAAAEAAAAKAAIAAAAAAAEAAAALAAIAAAAAAAAAAAAMAAIAAAAAAAEAAAANAAIAAAAAAAEAAAAOAAIAAAAAAAAAAAAPAAIAAAAAAAEAAAAQAAIAAAAAAAEAAAAQAAMAAAAAAAEAAAAPAAMAAAAAAAEAAAAOAAMAAAAAAAEAAAANAAMAAAAAAAAAAAANAAQAAAAAAAAAAAAMAAQAAAAAAAEAAAALAAQAAAAAAAEAAAAKAAQAAAAAAAEAAAAJAAQAAAAAAAAAAAAJAAMAAAAAAAAAAAAIAAMAAAAAAAAAAAAHAAMAAAAAAAEAAAAGAAMAAAAAAAAAAAAFAAMAAAAAAAEAAAAEAAMAAAAAAAEAAAABAAMAAAAAAAEAAAAAAAMAAAAAAAEAAAAAAAQAAAAAAAAAAAABAAQAAAAAAAEAAAACAAQAAAAAAAAAAAADAAQAAAAAAAAAAAAEAAQAAAAAAAEAAAAFAAQAAAAAAAAAAAAGAAQAAAAAAAAAAAAHAAQAAAAAAAAAAAAIAAQAAAAAAAEAAAAOAAQAAAAAAAEAAAAPAAQAAAAAAAEAAAAQAAQAAAAAAAEAAAAMAAMAAAAAAAAAAAALAAMAAAAAAAEAAAAKAAMAAAAAAAEAAAABAAUAAAAAAAEAAAAAAAUAAAAAAAAAAAACAAUAAAAAAAEAAAADAAUAAAAAAAEAAAAEAAUAAAAAAAEAAAAFAAUAAAAAAAEAAAAGAAUAAAAAAAEAAAAHAAUAAAAAAAEAAAAIAAUAAAAAAAEAAAAJAAUAAAAAAAEAAAAKAAUAAAAAAAAAAAALAAUAAAAAAAAAAAAMAAUAAAAAAAAAAAANAAUAAAAAAAAAAAAOAAUAAAAAAAEAAAAPAAUAAAAAAAAAAAAQAAUAAAAAAAAAAAAQAAYAAAAAAAEAAAAPAAYAAAAAAAAAAAAPAAcAAAAAAAAAAAAOAAcAAAAAAAAAAAAOAAYAAAAAAAAAAAANAAYAAAAAAAAAAAAMAAYAAAAAAAAAAAALAAYAAAAAAAEAAAAKAAYAAAAAAAEAAAAJAAYAAAAAAAEAAAAIAAYAAAAAAAEAAAAHAAYAAAAAAAAAAAAGAAYAAAAAAAEAAAAFAAYAAAAAAAAAAAAEAAYAAAAAAAEAAAADAAYAAAAAAAEAAAACAAYAAAAAAAEAAAABAAYAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAABAAcAAAAAAAAAAAACAAcAAAAAAAAAAAADAAcAAAAAAAAAAAAEAAcAAAAAAAEAAAAFAAcAAAAAAAAAAAAGAAcAAAAAAAAAAAAHAAcAAAAAAAAAAAAIAAcAAAAAAAEAAAAJAAcAAAAAAAAAAAAKAAcAAAAAAAEAAAALAAcAAAAAAAAAAAAMAAcAAAAAAAAAAAANAAcAAAAAAAEAAAAQAAcAAAAAAAAAAAARAAAAAAABAAEAAAARAAEAAAABAAEAAAARAAIAAAABAAEAAAARAAMAAAABAAEAAAARAAQAAAABAAEAAAARAAUAAAABAAEAAAARAAYAAAABAAEAAAARAAcAAAABAAEAAAD//wAAAAABAAAAAAD//wEAAAABAAAAAAD//wIAAAABAAAAAAD//wMAAAABAAAAAAD//wQAAAABAAAAAAD//wUAAAABAAAAAAD//wYAAAABAAAAAAD//wcAAAABAAAAAAAAAP//AAAAAAIAAAABAP//AAAAAAIAAAACAP//AAAAAAIAAAADAP//AAAAAAIAAAAEAP//AAAAAAIAAAAFAP//AAAAAAIAAAAGAP//AAAAAAIAAAAHAP//AAAAAAIAAAAIAP//AAAAAAIAAAAJAP//AAAAAAIAAAAKAP//AAAAAAIAAAALAP//AAAAAAIAAAAMAP//AAAAAAIAAAANAP//AAAAAAIAAAAOAP//AAAAAAIAAAAPAP//AAAAAAIAAAAQAP//AAAAAAIAAAD/////AAACAAIAAAARAP//AAADAAIAAAD//wgAAAADAAAAAAARAAgAAAAEAAAAAAAQAAgAAAACAAAAAAAPAAgAAAACAAAAAAAOAAgAAAACAAAAAAANAAgAAAACAAAAAAAMAAgAAAACAAAAAAALAAgAAAACAAAAAAAKAAgAAAACAAAAAAAJAAgAAAACAAAAAAAIAAgAAAACAAAAAAAHAAgAAAACAAAAAAAGAAgAAAACAAAAAAAFAAgAAAACAAAAAAAEAAgAAAACAAAAAAADAAgAAAACAAAAAAACAAgAAAACAAAAAAABAAgAAAACAAAAAAAAAAgAAAACAAAAAAA=") tile_set = ExtResource("1_khkq2") [node name="BuildRect" type="Marker2D" parent="."] script = ExtResource("2_wpmwa") -building_rect = Rect2(0, 0, 208, 128) +building_rect = Rect2(0, 0, 272, 128) + +[node name="EntityHolder" type="Node2D" parent="." node_paths=PackedStringArray("building_zone")] +script = ExtResource("3_6hjoe") +building_zone = NodePath("../BuildRect") +metadata/_custom_type_script = "uid://x5edy155eg0s" diff --git a/scripts/build_zone.gd b/scripts/build_zone.gd index 334ebac..23a16f8 100644 --- a/scripts/build_zone.gd +++ b/scripts/build_zone.gd @@ -17,6 +17,10 @@ const GRID_SIZE : Vector2 = Vector2(16,16) get: return building_rect +func _ready() -> void: + if not Engine.is_editor_hint(): + Registry.build_zones.append(self) + func _draw() -> void: if Engine.is_editor_hint() and EditorInterface.get_inspector().get_edited_object() == self: draw_rect(building_rect,Color.CYAN,false,1) diff --git a/scripts/constructible.gd b/scripts/constructible.gd new file mode 100644 index 0000000..5fbd326 --- /dev/null +++ b/scripts/constructible.gd @@ -0,0 +1,6 @@ +extends Resource + +class_name Constructible + +@export var scene : PackedScene +@export var preview : Texture2D diff --git a/scripts/constructible.gd.uid b/scripts/constructible.gd.uid new file mode 100644 index 0000000..01c18e4 --- /dev/null +++ b/scripts/constructible.gd.uid @@ -0,0 +1 @@ +uid://c80sp6f77l5ha diff --git a/scripts/construction.gd b/scripts/construction.gd new file mode 100644 index 0000000..7d86f32 --- /dev/null +++ b/scripts/construction.gd @@ -0,0 +1,6 @@ +extends Node2D + +class_name Construction + +func get_relative(dv : Vector2) -> Construction: + return get_parent().get_at(global_position+dv) diff --git a/scripts/construction.gd.uid b/scripts/construction.gd.uid new file mode 100644 index 0000000..ae15e42 --- /dev/null +++ b/scripts/construction.gd.uid @@ -0,0 +1 @@ +uid://bbd7o2st8kmgl diff --git a/scripts/construction_placer.gd b/scripts/construction_placer.gd new file mode 100644 index 0000000..bbbdb82 --- /dev/null +++ b/scripts/construction_placer.gd @@ -0,0 +1,42 @@ +extends Node2D + +var held_construction : Construction + +func _ready() -> void: + GuiEventBus.construction_selected.connect(on_construction_selected) + +func _input(event: InputEvent) -> void: + if held_construction == null: + return + if event.is_action_pressed("plc_place"): + var zone = try_get_zone(held_construction.global_position) + if zone == null: + held_construction.queue_free() + else: + if zone.get_parent().get_node("EntityHolder").add_construction(held_construction): + held_construction = null + + if event.is_action_pressed("plc_cancel"): + held_construction.queue_free() + +func on_construction_selected(constructible : Constructible): + if held_construction: + held_construction.queue_free() + held_construction = constructible.scene.instantiate() + add_child(held_construction) + + +func _process(_delta: float) -> void: + if held_construction != null: + var mouse_pos = get_global_mouse_position() + var zone = try_get_zone(mouse_pos) + if zone: + global_position = zone.get_placement_position(mouse_pos) + else: + global_position = mouse_pos + +func try_get_zone(point : Vector2) -> BuildZone: + for zone in Registry.build_zones: + if zone.is_global_point_in_zone(point): + return zone + return null diff --git a/scripts/construction_placer.gd.uid b/scripts/construction_placer.gd.uid new file mode 100644 index 0000000..c3447b2 --- /dev/null +++ b/scripts/construction_placer.gd.uid @@ -0,0 +1 @@ +uid://b4nkk0ndqcto diff --git a/scripts/entity_holder.gd b/scripts/entity_holder.gd new file mode 100644 index 0000000..6b6b129 --- /dev/null +++ b/scripts/entity_holder.gd @@ -0,0 +1,22 @@ +extends Node2D + +class_name EntityHolder + +const GRID_SIZE : Vector2 = Vector2(16,16) + +@export var building_zone : BuildZone +var constructions : Array[Construction] + +func _ready() -> void: + constructions.resize(building_zone.get_capacity()) + +func add_construction(construction : Construction) -> bool: + if constructions[building_zone.indexify_global_point(construction.global_position)]: + return false + construction.reparent(self) + construction.global_position = building_zone.get_placement_position(construction.global_position) + constructions[building_zone.indexify_global_point(construction.global_position)] = construction + return true + +func get_at(point : Vector2): + return constructions[building_zone.indexify_global_point(point)] diff --git a/scripts/entity_holder.gd.uid b/scripts/entity_holder.gd.uid new file mode 100644 index 0000000..bdbbaf2 --- /dev/null +++ b/scripts/entity_holder.gd.uid @@ -0,0 +1 @@ +uid://x5edy155eg0s diff --git a/scripts/gui/construction_button.gd b/scripts/gui/construction_button.gd new file mode 100644 index 0000000..b56e8c8 --- /dev/null +++ b/scripts/gui/construction_button.gd @@ -0,0 +1,9 @@ +extends Button + +@export var constructible : Constructible + +func _ready() -> void: + icon = constructible.preview + +func _pressed() -> void: + GuiEventBus.construction_selected.emit(constructible) diff --git a/scripts/gui/construction_button.gd.uid b/scripts/gui/construction_button.gd.uid new file mode 100644 index 0000000..9a1f1fd --- /dev/null +++ b/scripts/gui/construction_button.gd.uid @@ -0,0 +1 @@ +uid://db37xmo8ygwhg diff --git a/scripts/gui/gui_event_bus.gd b/scripts/gui/gui_event_bus.gd new file mode 100644 index 0000000..a5ab2b0 --- /dev/null +++ b/scripts/gui/gui_event_bus.gd @@ -0,0 +1,6 @@ +extends Node + +@warning_ignore_start("unused_signal") + +signal construction_selected(constructible : Constructible) +signal construction_placed(constructible : Constructible) diff --git a/scripts/gui/gui_event_bus.gd.uid b/scripts/gui/gui_event_bus.gd.uid new file mode 100644 index 0000000..6d15cfc --- /dev/null +++ b/scripts/gui/gui_event_bus.gd.uid @@ -0,0 +1 @@ +uid://x5eghpenp777 diff --git a/scripts/player_state.gd.uid b/scripts/player_state.gd.uid deleted file mode 100644 index 8cdbccd..0000000 --- a/scripts/player_state.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b004eslxx7ylv diff --git a/scripts/registry.gd b/scripts/registry.gd new file mode 100644 index 0000000..e408bfa --- /dev/null +++ b/scripts/registry.gd @@ -0,0 +1,9 @@ +extends Node + +func _ready() -> void: + get_tree().scene_changed.connect(cleanup_runtime_cache) + +func cleanup_runtime_cache(): + build_zones.clear() + +var build_zones : Array[BuildZone] diff --git a/scripts/registry.gd.uid b/scripts/registry.gd.uid new file mode 100644 index 0000000..7622181 --- /dev/null +++ b/scripts/registry.gd.uid @@ -0,0 +1 @@ +uid://coqgbea1uchn4 diff --git a/scripts/player_state.gd b/scripts/runtime_player_data.gd similarity index 100% rename from scripts/player_state.gd rename to scripts/runtime_player_data.gd diff --git a/scripts/runtime_player_data.gd.uid b/scripts/runtime_player_data.gd.uid new file mode 100644 index 0000000..932a60a --- /dev/null +++ b/scripts/runtime_player_data.gd.uid @@ -0,0 +1 @@ +uid://bmowwtsy0f8mf diff --git a/sprites/Uitto.png b/sprites/Uitto.png new file mode 100644 index 0000000..27d300f Binary files /dev/null and b/sprites/Uitto.png differ diff --git a/sprites/Uitto.png.import b/sprites/Uitto.png.import new file mode 100644 index 0000000..631f04e --- /dev/null +++ b/sprites/Uitto.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3h6y6jxhf1qp" +path="res://.godot/imported/Uitto.png-aa56f94032c469259c3a25656653a91a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Uitto.png" +dest_files=["res://.godot/imported/Uitto.png-aa56f94032c469259c3a25656653a91a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/atlasses/Popekko.png b/sprites/atlasses/Popekko.png index f319e01..48fd6af 100644 Binary files a/sprites/atlasses/Popekko.png and b/sprites/atlasses/Popekko.png differ diff --git a/sprites/atlasses/Popekko.png.import b/sprites/atlasses/Popekko.png.import index b8d9bec..e1cba67 100644 --- a/sprites/atlasses/Popekko.png.import +++ b/sprites/atlasses/Popekko.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://416h8gs1f7x0" +uid="uid://cbtre16ilxte0" path="res://.godot/imported/Popekko.png-5c34a5f2a8c85fcf59453310fa6553d9.ctex" metadata={ "vram_texture": false