From d5455ef493fcef5b0be2223621be4c93fe8411f6 Mon Sep 17 00:00:00 2001 From: Tabby <41929769+tabby-cat-nya@users.noreply.github.com> Date: Fri, 4 Jul 2025 15:14:59 +1000 Subject: [PATCH] meow --- 2dWorld.tscn | 147 +++++++++++++++++++++++++------ Prefabs/cyclone.tscn | 43 +++++---- Sprites/captains_flat.png | Bin 0 -> 19660 bytes Sprites/captains_flat.png.import | 34 +++++++ cyclone.gd | 1 + readme.md | 6 +- worldManager.gd | 61 +++++++++++-- 7 files changed, 239 insertions(+), 53 deletions(-) create mode 100644 Sprites/captains_flat.png create mode 100644 Sprites/captains_flat.png.import diff --git a/2dWorld.tscn b/2dWorld.tscn index c8ac6a1..4644ab8 100644 --- a/2dWorld.tscn +++ b/2dWorld.tscn @@ -1,23 +1,27 @@ [gd_scene load_steps=6 format=3 uid="uid://biu528mgexdyp"] -[ext_resource type="Texture2D" uid="uid://b48ofysofsffi" path="res://icon.svg" id="1_2uw02"] [ext_resource type="Script" uid="uid://bdc53dgnhonif" path="res://worldManager.gd" id="1_gy87s"] +[ext_resource type="Texture2D" uid="uid://c4auuun5q0gjy" path="res://Sprites/captains_flat.png" id="2_u230a"] [ext_resource type="PackedScene" uid="uid://vv75ycmtipn7" path="res://Prefabs/cyclone.tscn" id="3_u230a"] [ext_resource type="Script" uid="uid://b1w10iwwhm5bj" path="res://addons/Fantail-Interactive.top_down_camera/td_camera_2d.gd" id="4_u230a"] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_xr6w1"] -size = Vector2(674, 28) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_u230a"] +size = Vector2(1292, 34) -[node name="2dWorld" type="Node2D" node_paths=PackedStringArray("camera", "map")] +[node name="2dWorld" type="Node2D" node_paths=PackedStringArray("camera", "map", "cyclone_holder", "speed_slider", "speed_label", "file_picker")] script = ExtResource("1_gy87s") camera = NodePath("TDCamera2D") map = NodePath("WorldMap") +cyclone_holder = NodePath("Cyclones") +speed_slider = NodePath("UI/Control/VBoxContainer/TheControls/HSlider") +speed_label = NodePath("UI/Control/VBoxContainer/TheControls/Speed label") +file_picker = NodePath("FileDialog") [node name="WorldMap" type="Sprite2D" parent="."] -modulate = Color(1.8049e-07, 0.391665, 0.150329, 1) +texture_filter = 1 position = Vector2(589, 319) -scale = Vector2(5, 5) -texture = ExtResource("1_2uw02") +scale = Vector2(2.5, 2.5) +texture = ExtResource("2_u230a") [node name="Cyclones" type="Node2D" parent="."] @@ -30,36 +34,125 @@ position = Vector2(746, 473) [node name="Cyclone3" parent="Cyclones" instance=ExtResource("3_u230a")] position = Vector2(463, 494) -[node name="Background" type="CanvasLayer" parent="."] -layer = -1 +[node name="UI" type="CanvasLayer" parent="."] -[node name="wall" type="StaticBody2D" parent="."] -position = Vector2(581, -12) +[node name="Control" type="Control" parent="UI"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 -[node name="CollisionShape2D" type="CollisionShape2D" parent="wall"] -shape = SubResource("RectangleShape2D_xr6w1") +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Control"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_right = 128.0 +grow_vertical = 2 -[node name="wall2" type="StaticBody2D" parent="."] -position = Vector2(592, 647) +[node name="Button" type="Button" parent="UI/Control/VBoxContainer"] +layout_mode = 2 +text = "Toggle Controls" -[node name="CollisionShape2D" type="CollisionShape2D" parent="wall2"] -shape = SubResource("RectangleShape2D_xr6w1") +[node name="TheControls" type="VBoxContainer" parent="UI/Control/VBoxContainer"] +layout_mode = 2 -[node name="wall3" type="StaticBody2D" parent="."] -position = Vector2(259, 317) -rotation = 1.5708 +[node name="Speed label" type="Label" parent="UI/Control/VBoxContainer/TheControls"] +layout_mode = 2 +text = "Speed: 1.0x" -[node name="CollisionShape2D" type="CollisionShape2D" parent="wall3"] -shape = SubResource("RectangleShape2D_xr6w1") +[node name="HSlider" type="HSlider" parent="UI/Control/VBoxContainer/TheControls"] +layout_mode = 2 +max_value = 6.0 +value = 3.0 +tick_count = 7 +ticks_on_borders = true -[node name="wall4" type="StaticBody2D" parent="."] -position = Vector2(909, 326) -rotation = 1.5708 +[node name="TabContainer" type="TabContainer" parent="UI/Control/VBoxContainer"] +layout_mode = 2 +current_tab = 0 -[node name="CollisionShape2D" type="CollisionShape2D" parent="wall4"] -shape = SubResource("RectangleShape2D_xr6w1") +[node name="Tools" type="VBoxContainer" parent="UI/Control/VBoxContainer/TabContainer"] +layout_mode = 2 +metadata/_tab_index = 0 + +[node name="meow" type="Label" parent="UI/Control/VBoxContainer/TabContainer/Tools"] +layout_mode = 2 +text = "meow" + +[node name="LoadImage" type="Button" parent="UI/Control/VBoxContainer/TabContainer/Tools"] +layout_mode = 2 +text = "Change Image" + +[node name="Spawn" type="Button" parent="UI/Control/VBoxContainer/TabContainer/Tools"] +layout_mode = 2 +text = "Spawn Cyclone" + +[node name="Spawn2" type="Button" parent="UI/Control/VBoxContainer/TabContainer/Tools"] +layout_mode = 2 +text = "Toggle Walls" + +[node name="Exit" type="Button" parent="UI/Control/VBoxContainer/TabContainer/Tools"] +layout_mode = 2 +text = "Close Program" + +[node name="Settings" type="VBoxContainer" parent="UI/Control/VBoxContainer/TabContainer"] +visible = false +layout_mode = 2 +metadata/_tab_index = 1 + +[node name="meow" type="Label" parent="UI/Control/VBoxContainer/TabContainer/Settings"] +layout_mode = 2 +text = "meow" [node name="TDCamera2D" type="Camera2D" parent="."] position = Vector2(579, 330) script = ExtResource("4_u230a") +min_zoom = 6.0 metadata/_custom_type_script = "uid://b1w10iwwhm5bj" + +[node name="Walls" type="Node2D" parent="."] + +[node name="StaticBody2D" type="StaticBody2D" parent="Walls"] +position = Vector2(-46, -343) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Walls/StaticBody2D"] +position = Vector2(636, 7) +shape = SubResource("RectangleShape2D_u230a") + +[node name="StaticBody2D2" type="StaticBody2D" parent="Walls"] +position = Vector2(268, 968) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Walls/StaticBody2D2"] +position = Vector2(319, 7) +shape = SubResource("RectangleShape2D_u230a") + +[node name="StaticBody2D3" type="StaticBody2D" parent="Walls"] +position = Vector2(-57, 1) +rotation = 1.57079 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Walls/StaticBody2D3"] +position = Vector2(319, 7) +shape = SubResource("RectangleShape2D_u230a") + +[node name="StaticBody2D4" type="StaticBody2D" parent="Walls"] +position = Vector2(1251, 4) +rotation = 1.57079 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Walls/StaticBody2D4"] +position = Vector2(319, 7) +shape = SubResource("RectangleShape2D_u230a") + +[node name="FileDialog" type="FileDialog" parent="."] +title = "Open a File" +ok_button_text = "Open" +file_mode = 0 +access = 2 +filters = PackedStringArray("*.png") +use_native_dialog = true + +[connection signal="pressed" from="UI/Control/VBoxContainer/TabContainer/Tools/LoadImage" to="." method="_on_load_image_pressed"] +[connection signal="file_selected" from="FileDialog" to="." method="_on_file_dialog_file_selected"] diff --git a/Prefabs/cyclone.tscn b/Prefabs/cyclone.tscn index ca5bfc8..322326a 100644 --- a/Prefabs/cyclone.tscn +++ b/Prefabs/cyclone.tscn @@ -1,50 +1,61 @@ -[gd_scene load_steps=4 format=3 uid="uid://vv75ycmtipn7"] +[gd_scene load_steps=6 format=3 uid="uid://vv75ycmtipn7"] [ext_resource type="Script" uid="uid://u353j4q7l26d" path="res://cyclone.gd" id="1_khbba"] [ext_resource type="Texture2D" uid="uid://cdw1vlidvg2yt" path="res://Sprites/Cyclone.png" id="2_7e2hf"] -[sub_resource type="CircleShape2D" id="CircleShape2D_xr6w1"] -radius = 32.0 +[sub_resource type="LabelSettings" id="LabelSettings_khbba"] +font_color = Color(0, 0, 0, 1) -[node name="Cyclone" type="RigidBody2D" node_paths=PackedStringArray("sprite", "label", "wind_speed_label", "line")] +[sub_resource type="LabelSettings" id="LabelSettings_7e2hf"] +font_color = Color(0, 0, 0, 1) + +[sub_resource type="CircleShape2D" id="CircleShape2D_xr6w1"] +radius = 4.0 + +[node name="Cyclone" type="RigidBody2D" node_paths=PackedStringArray("sprite", "label", "wind_speed_label", "line", "visuals")] gravity_scale = 0.0 lock_rotation = true script = ExtResource("1_khbba") -sprite = NodePath("Sprite2D") -label = NodePath("cLabel") -wind_speed_label = NodePath("wsLabel") +sprite = NodePath("Visuals/Sprite2D") +label = NodePath("Visuals/cLabel") +wind_speed_label = NodePath("Visuals/wsLabel") line = NodePath("Line2D") +visuals = NodePath("Visuals") -[node name="Sprite2D" type="Sprite2D" parent="."] +[node name="Visuals" type="Node2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="Visuals"] scale = Vector2(0.2, 0.2) texture = ExtResource("2_7e2hf") -[node name="Line2D" type="Line2D" parent="."] -position = Vector2(-572, -229) -width = 2.0 -default_color = Color(0.656747, 0, 0.0830602, 1) -joint_mode = 2 - -[node name="cLabel" type="Label" parent="."] +[node name="cLabel" type="Label" parent="Visuals"] offset_left = -21.0 offset_top = -11.0 offset_right = 19.0 offset_bottom = 12.0 size_flags_horizontal = 4 text = "1" +label_settings = SubResource("LabelSettings_khbba") horizontal_alignment = 1 vertical_alignment = 1 -[node name="wsLabel" type="Label" parent="."] +[node name="wsLabel" type="Label" parent="Visuals"] offset_left = -21.0 offset_top = -66.0 offset_right = 19.0 offset_bottom = -43.0 size_flags_horizontal = 4 text = "1" +label_settings = SubResource("LabelSettings_7e2hf") horizontal_alignment = 1 vertical_alignment = 1 +[node name="Line2D" type="Line2D" parent="."] +position = Vector2(-572, -229) +width = 2.0 +default_color = Color(0.654902, 0, 0.0823529, 0.572549) +joint_mode = 2 + [node name="changeTimer" type="Timer" parent="."] wait_time = 5.0 autostart = true diff --git a/Sprites/captains_flat.png b/Sprites/captains_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..15e6a76e8888e440a9b6c89dd0d256e427422e28 GIT binary patch literal 19660 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 void: @@ -11,7 +15,9 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: - check_edges() + #check_edges() + update_zoom() + update_ui() func check_edges(): #var right_center = map.global_position + Vector2(map.texture.get_width(), 0) @@ -20,12 +26,51 @@ func check_edges(): var map_bottom : float = map.global_position.y - map.texture.get_height() var map_right : float = map.global_position.x + map.texture.get_width() var map_left : float = map.global_position.x - map.texture.get_width() - print("Top: " + str(map_top)) - print("Bottom: " + str(map_top)) - print("Left: " + str(map_top)) - print("Right: " + str(map_top)) + #print("Top: " + str(map_top)) + #print("Bottom: " + str(map_top)) + #print("Left: " + str(map_top)) + #print("Right: " + str(map_top)) - for cyclone in cyclones: - pass + #for cyclone in cyclones: + #pass pass + +func update_zoom(): + #print(1/camera.zoom.x) + var scale_level : float = clampf(1/camera.zoom.x,0,1) + for cyclone in cyclone_holder.get_children(): + cyclone.visuals.scale = Vector2(scale_level,scale_level) + +func update_ui(): + var selected_speed : float = speed_slider.value + var actual_speed : float + # 3=1.0x, 2=0.5x, 1=0.25x, 0=0.0x, 4=2x 5=3x 6=4x + match int(selected_speed): + 0: + actual_speed = 0.0001 + 1: + actual_speed = 0.25 + 2: + actual_speed = 0.5 + 3: + actual_speed = 1 + 4: + actual_speed = 2 + 5: + actual_speed = 4 + 6: + actual_speed = 8 + speed_label.text = "Speed: " + str(round(actual_speed*100)/100) + "x" + Engine.time_scale = actual_speed + + + +func _on_load_image_pressed() -> void: + file_picker.show() + + +func _on_file_dialog_file_selected(path: String) -> void: + var new_image : Image = Image.load_from_file(path) + var image_texture : ImageTexture = ImageTexture.create_from_image(new_image) + map.texture = image_texture