diff --git a/Main.tscn b/Main.tscn index 008eb3e..442f401 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=35 format=4 uid="uid://5ske2hm55rce"] +[gd_scene load_steps=36 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"] @@ -28,6 +28,118 @@ [ext_resource type="Texture2D" uid="uid://cqmbbg06vdb2r" path="res://meter.png" id="23_a1lb7"] [ext_resource type="Script" path="res://meter.gd" id="24_p0q5k"] [ext_resource type="Texture2D" uid="uid://bcj5syslhrfsx" path="res://mask.png" id="24_ygd3p"] +[ext_resource type="Script" path="res://camera.gd" id="29_cfuj5"] + +[sub_resource type="Animation" id="Animation_gcod0"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("CanvasLayer/Start/RichTextLabel:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("CanvasLayer/Start/RichTextLabel2:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("CanvasLayer/Start:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("CanvasLayer/StartOverlay:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("CanvasLayer/UI/Background/Control:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, -28)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("CanvasLayer/UI/Background/Control2:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, -28)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("CanvasLayer/UI/Background/Control3:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(41, -28)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("CanvasLayer/BuildingMenu:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 363.755)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("CanvasLayer/Control:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, -28.285)] +} [sub_resource type="Animation" id="Animation_ycb31"] resource_name = "start" @@ -153,117 +265,6 @@ tracks/9/keys = { "values": [Vector2(0, -28.285), Vector2(0, -20.6623), Vector2(0, -14.3426), Vector2(0, -9.21402), Vector2(0, -5.16457), Vector2(0, -2.08232), Vector2(0, 0.144659), Vector2(0, 1.62829), Vector2(0, 2.48052), Vector2(0, 2.81329), Vector2(0, 2.73851), Vector2(0, 2.36814), Vector2(0, 1.8141), Vector2(0, 1.18834), Vector2(0, 0.602774), Vector2(0, 0.169348), Vector2(0, 0)] } -[sub_resource type="Animation" id="Animation_gcod0"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("CanvasLayer/Start/RichTextLabel:scale") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(1, 1)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("CanvasLayer/Start/RichTextLabel2:scale") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(1, 1)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("CanvasLayer/Start:modulate") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("CanvasLayer/StartOverlay:modulate") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("CanvasLayer/UI/Background/Control:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, -28)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("CanvasLayer/UI/Background/Control2:position") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, -28)] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("CanvasLayer/UI/Background/Control3:position") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(41, -28)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("CanvasLayer/BuildingMenu:position") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, 363.755)] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("CanvasLayer/Control:position") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, -28.285)] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_8mn2x"] _data = { "RESET": SubResource("Animation_gcod0"), @@ -1026,3 +1027,7 @@ texture = ExtResource("7_bnuu0") stream = SubResource("AudioStreamRandomizer_f4v2y") volume_db = -10.0 autoplay = true + +[node name="Camera2D" type="Camera2D" parent="."] +offset = Vector2(320, 180) +script = ExtResource("29_cfuj5") diff --git a/camera.gd b/camera.gd new file mode 100644 index 0000000..5dc9753 --- /dev/null +++ b/camera.gd @@ -0,0 +1,37 @@ +extends Camera2D + +# Variables to control zoom limits and speed +var zoom_min = 0.5 +var zoom_max = 2.0 +var zoom_speed = 0.1 + +# Variables for panning +var is_panning = false +var last_mouse_position = Vector2() + +func _input(event): + if event is InputEventMouseButton: + # Zoom in (scroll up) + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + zoom -= Vector2(zoom_speed, zoom_speed) + # Zoom out (scroll down) + elif event.button_index == MOUSE_BUTTON_WHEEL_UP: + zoom += Vector2(zoom_speed, zoom_speed) + + # Clamp the zoom value to stay within zoom_min and zoom_max + zoom.x = clamp(zoom.x, zoom_min, zoom_max) + zoom.y = clamp(zoom.y, zoom_min, zoom_max) + + # Handle panning with right click + if event.button_index == MOUSE_BUTTON_RIGHT: + if event.pressed: + is_panning = true + last_mouse_position = get_global_mouse_position() + else: + is_panning = false + + # Handle panning movement + if is_panning and event is InputEventMouseMotion: + var mouse_movement = last_mouse_position - get_global_mouse_position() + global_position += mouse_movement * zoom.x # Adjust movement based on zoom level + last_mouse_position = get_global_mouse_position() diff --git a/cover Copy.aseprite b/cover Copy.aseprite new file mode 100644 index 0000000..4b1a43d Binary files /dev/null and b/cover Copy.aseprite differ diff --git a/cover.aseprite b/cover.aseprite new file mode 100644 index 0000000..253884f Binary files /dev/null and b/cover.aseprite differ diff --git a/cover.gif b/cover.gif new file mode 100644 index 0000000..ef60744 Binary files /dev/null and b/cover.gif differ diff --git a/cover.png b/cover.png new file mode 100644 index 0000000..8af338e Binary files /dev/null and b/cover.png differ diff --git a/cover.png.import b/cover.png.import new file mode 100644 index 0000000..c725b8b --- /dev/null +++ b/cover.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://oosowfc5qql6" +path="res://.godot/imported/cover.png-7415a2400197f69905d305dff229e3ab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cover.png" +dest_files=["res://.godot/imported/cover.png-7415a2400197f69905d305dff229e3ab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/cover2.png b/cover2.png new file mode 100644 index 0000000..82f9d29 Binary files /dev/null and b/cover2.png differ diff --git a/cover2.png.import b/cover2.png.import new file mode 100644 index 0000000..50ab4cb --- /dev/null +++ b/cover2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7ko742xcklsn" +path="res://.godot/imported/cover2.png-2ef2bf54704d9d001b82b1ad156dc4f6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cover2.png" +dest_files=["res://.godot/imported/cover2.png-2ef2bf54704d9d001b82b1ad156dc4f6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/cover4.png b/cover4.png new file mode 100644 index 0000000..ac79f39 Binary files /dev/null and b/cover4.png differ diff --git a/cover4.png.import b/cover4.png.import new file mode 100644 index 0000000..41bd793 --- /dev/null +++ b/cover4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://daol7g1lylsmt" +path="res://.godot/imported/cover4.png-19fae104c6b0976f56a020466ca17034.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cover4.png" +dest_files=["res://.godot/imported/cover4.png-19fae104c6b0976f56a020466ca17034.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/cover5.png b/cover5.png new file mode 100644 index 0000000..a67cea6 Binary files /dev/null and b/cover5.png differ diff --git a/cover5.png.import b/cover5.png.import new file mode 100644 index 0000000..06140e3 --- /dev/null +++ b/cover5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2c4geob4lf3q" +path="res://.godot/imported/cover5.png-0c496ad1d8b7fd577db0c14a195a8435.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cover5.png" +dest_files=["res://.godot/imported/cover5.png-0c496ad1d8b7fd577db0c14a195a8435.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/cover6.png b/cover6.png new file mode 100644 index 0000000..3774373 Binary files /dev/null and b/cover6.png differ diff --git a/cover6.png.import b/cover6.png.import new file mode 100644 index 0000000..84f8980 --- /dev/null +++ b/cover6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b516bcl3xf6eg" +path="res://.godot/imported/cover6.png-e6099f9f4c556f35ef81470604604e2b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://cover6.png" +dest_files=["res://.godot/imported/cover6.png-e6099f9f4c556f35ef81470604604e2b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..07925db --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,3 @@ +[gd_resource type="AudioBusLayout" format=3 uid="uid://dnndw0lm0ddb5"] + +[resource] diff --git a/text.aseprite b/text.aseprite new file mode 100644 index 0000000..18a7f66 Binary files /dev/null and b/text.aseprite differ diff --git a/text.png b/text.png new file mode 100644 index 0000000..5431d57 Binary files /dev/null and b/text.png differ diff --git a/text.png.import b/text.png.import new file mode 100644 index 0000000..c06674c --- /dev/null +++ b/text.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0b1wjjlnrcak" +path="res://.godot/imported/text.png-3d72e54e4b30a381dfa6ca6c8743057b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://text.png" +dest_files=["res://.godot/imported/text.png-3d72e54e4b30a381dfa6ca6c8743057b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/ui/building_icon.gd b/ui/building_icon.gd index c18bfab..7b48c11 100644 --- a/ui/building_icon.gd +++ b/ui/building_icon.gd @@ -42,7 +42,10 @@ func _on_mouse_handler_clicked() -> void: if Persister.get_value("win") or Persister.get_value("lose"): return - clicked = true + var data = Data.data.buildings[key] + + if (not data.cost.has("wood") or int(data.cost.wood) <= Persister.get_value("wood")) and (not data.cost.has("stone") or int(data.cost.stone) <= Persister.get_value("stone")): + clicked = true if hover_tween: hover_tween.kill()