From f2cff37a22a4773221dc1cc21a295bf4732d3caa Mon Sep 17 00:00:00 2001 From: 2ndbeam <166764593+2ndbeam@users.noreply.github.com> Date: Wed, 15 May 2024 07:48:03 +0300 Subject: [PATCH] New base menu template --- scenes/Base/base_menu.tscn | 104 ++++++++++++++++++ scenes/Base/base_template.tscn | 4 +- scenes/Ships/Modules/Hulls/shooter_hull.tscn | 1 + scenes/Star System/star_system_debug.tscn | 4 +- scenes/Star System/star_system_template.tscn | 1 + scripts/Base/base.gd | 33 ++++-- scripts/Base/base_menu.gd | 4 + scripts/Base/close_button.gd | 7 ++ scripts/Ship/player_input_controller.gd | 7 +- scripts/Ship/player_ship.gd | 2 + sprites/Bases/Menu/end_communications.png | Bin 0 -> 1739 bytes .../Bases/Menu/end_communications.png.import | 34 ++++++ 12 files changed, 185 insertions(+), 16 deletions(-) create mode 100644 scenes/Base/base_menu.tscn create mode 100644 scripts/Base/base_menu.gd create mode 100644 scripts/Base/close_button.gd create mode 100644 sprites/Bases/Menu/end_communications.png create mode 100644 sprites/Bases/Menu/end_communications.png.import diff --git a/scenes/Base/base_menu.tscn b/scenes/Base/base_menu.tscn new file mode 100644 index 0000000..53e3a8a --- /dev/null +++ b/scenes/Base/base_menu.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=5 format=3 uid="uid://crq284yed2if5"] + +[ext_resource type="Script" path="res://scripts/Base/base_menu.gd" id="1_3hgu4"] +[ext_resource type="Texture2D" uid="uid://db4euprxhape0" path="res://sprites/9s.png" id="1_uf5rv"] +[ext_resource type="Texture2D" uid="uid://hxrx87gda3uf" path="res://sprites/Bases/Menu/end_communications.png" id="2_ceeiv"] +[ext_resource type="Script" path="res://scripts/Base/close_button.gd" id="4_68ool"] + +[node name="BaseMenu" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_3hgu4") + +[node name="MenuBackground" type="NinePatchRect" parent="."] +layout_mode = 0 +offset_left = 40.0 +offset_top = 40.0 +offset_right = 1240.0 +offset_bottom = 640.0 +texture = ExtResource("1_uf5rv") +region_rect = Rect2(0, 0, 5, 5) +patch_margin_left = 2 +patch_margin_top = 2 +patch_margin_right = 2 +patch_margin_bottom = 2 + +[node name="HeaderBackground" type="NinePatchRect" parent="MenuBackground"] +layout_mode = 0 +offset_left = 2.0 +offset_top = 2.0 +offset_right = 1198.0 +offset_bottom = 76.0 +texture = ExtResource("1_uf5rv") +region_rect = Rect2(0, 0, 5, 5) +patch_margin_left = 2 +patch_margin_top = 2 +patch_margin_right = 2 +patch_margin_bottom = 2 + +[node name="PortraitBackground" type="NinePatchRect" parent="MenuBackground"] +layout_mode = 0 +offset_left = 2.0 +offset_top = 77.0 +offset_right = 324.0 +offset_bottom = 598.0 +texture = ExtResource("1_uf5rv") +region_rect = Rect2(0, 0, 5, 5) +patch_margin_left = 2 +patch_margin_top = 2 +patch_margin_right = 2 +patch_margin_bottom = 2 + +[node name="DialogueBackground" type="NinePatchRect" parent="MenuBackground"] +layout_mode = 0 +offset_left = 325.0 +offset_top = 77.0 +offset_right = 1198.0 +offset_bottom = 399.0 +texture = ExtResource("1_uf5rv") +region_rect = Rect2(0, 0, 5, 5) +patch_margin_left = 2 +patch_margin_top = 2 +patch_margin_right = 2 +patch_margin_bottom = 2 + +[node name="ActionsBackground" type="NinePatchRect" parent="MenuBackground"] +layout_mode = 0 +offset_left = 325.0 +offset_top = 400.0 +offset_right = 1198.0 +offset_bottom = 598.0 +texture = ExtResource("1_uf5rv") +region_rect = Rect2(0, 0, 5, 5) +patch_margin_left = 2 +patch_margin_top = 2 +patch_margin_right = 2 +patch_margin_bottom = 2 + +[node name="CloseButtonBackground" type="NinePatchRect" parent="MenuBackground"] +layout_mode = 0 +offset_left = 1124.0 +offset_top = 2.0 +offset_right = 1198.0 +offset_bottom = 76.0 +texture = ExtResource("1_uf5rv") +region_rect = Rect2(0, 0, 5, 5) +patch_margin_left = 2 +patch_margin_top = 2 +patch_margin_right = 2 +patch_margin_bottom = 2 + +[node name="CloseButton" type="Button" parent="MenuBackground/CloseButtonBackground"] +layout_mode = 0 +offset_left = 1.0 +offset_top = 1.0 +offset_right = 73.0 +offset_bottom = 73.0 +icon = ExtResource("2_ceeiv") +script = ExtResource("4_68ool") + +[connection signal="button_up" from="MenuBackground/CloseButtonBackground/CloseButton" to="MenuBackground/CloseButtonBackground/CloseButton" method="_on_button_up"] diff --git a/scenes/Base/base_template.tscn b/scenes/Base/base_template.tscn index 1a0fd38..37ef5a9 100644 --- a/scenes/Base/base_template.tscn +++ b/scenes/Base/base_template.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://dk3nvl8f0v24e"] +[gd_scene load_steps=6 format=3 uid="uid://dk3nvl8f0v24e"] [ext_resource type="Script" path="res://scripts/Base/base.gd" id="1_dr4wr"] [ext_resource type="Texture2D" uid="uid://3x77t3kd6v0x" path="res://sprites/Bases/triangle_base.png" id="1_nrkxw"] +[ext_resource type="PackedScene" uid="uid://crq284yed2if5" path="res://scenes/Base/base_menu.tscn" id="2_n6qqo"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_4e5h0"] size = Vector2(357, 4) @@ -15,6 +16,7 @@ collision_layer = 2 collision_mask = 7 input_pickable = true script = ExtResource("1_dr4wr") +menu = ExtResource("2_n6qqo") [node name="Sprite" type="Sprite2D" parent="."] position = Vector2(0.5, 0.5) diff --git a/scenes/Ships/Modules/Hulls/shooter_hull.tscn b/scenes/Ships/Modules/Hulls/shooter_hull.tscn index ce9751f..45d7a74 100644 --- a/scenes/Ships/Modules/Hulls/shooter_hull.tscn +++ b/scenes/Ships/Modules/Hulls/shooter_hull.tscn @@ -4,6 +4,7 @@ [ext_resource type="Texture2D" uid="uid://bxtd2ij1dc1d3" path="res://sprites/Ships/shooter.png" id="2_gvwov"] [node name="Hull" instance=ExtResource("1_7i1ve")] +collision_mask = 11 max_hp = 10.0 [node name="Sprite" parent="." index="0"] diff --git a/scenes/Star System/star_system_debug.tscn b/scenes/Star System/star_system_debug.tscn index ad6ca3d..f4d305c 100644 --- a/scenes/Star System/star_system_debug.tscn +++ b/scenes/Star System/star_system_debug.tscn @@ -26,7 +26,7 @@ position = Vector2(19, 10) position = Vector2(1706, -5) [node name="KamikazeShip" parent="FactionAggressive" index="0" instance=ExtResource("4_i6rbg")] -position = Vector2(-244, -914) +position = Vector2(-1712, -608) [node name="ShooterShip" parent="FactionAggressive" index="1" instance=ExtResource("5_o3ny8")] -position = Vector2(-833, 1073) +position = Vector2(-1852, 618) diff --git a/scenes/Star System/star_system_template.tscn b/scenes/Star System/star_system_template.tscn index c1f8eab..b462f95 100644 --- a/scenes/Star System/star_system_template.tscn +++ b/scenes/Star System/star_system_template.tscn @@ -44,6 +44,7 @@ script = ExtResource("1_xx8w2") pause_controller_scene = ExtResource("6_61vq5") [node name="Stars" parent="." instance=ExtResource("2_iqrn0")] +stars_amount = 400 [node name="ProjectileContainer" type="Node" parent="."] process_mode = 1 diff --git a/scripts/Base/base.gd b/scripts/Base/base.gd index b21b4d9..5bbcb36 100644 --- a/scripts/Base/base.gd +++ b/scripts/Base/base.gd @@ -2,21 +2,25 @@ extends StaticBody2D class_name Base -enum DockState { Ready, Process, Busy } +enum DockState { Ready, Process, Busy, Leave } signal dock_requested ## Reference to star system @onready var star_system: StarSystem = get_tree().current_scene - +## Physical gate @onready var gate_static = $Gate - +## Logical gate for docking @onready var gate_area = $GateArea - +## Docking area @onready var dock_area = $DockingArea +## Menu which will instantiate on docking +@export var menu: PackedScene + @export var faction: Game.Faction +## Decides whether ship is docked or in process var dock_state: DockState = DockState.Ready var touching_gate = false @@ -66,6 +70,9 @@ func _process(_delta): dock_busy() if !touching_dock and !touching_gate and distance_to_player > 2048: dock_ready() + if dock_state == DockState.Leave: + if !touching_dock and !touching_gate: + dock_ready() ## Sets dock state to Ready func dock_ready(): @@ -74,8 +81,6 @@ func dock_ready(): gate_static.process_mode = Node.PROCESS_MODE_INHERIT gate_area.visible = false dock_area.visible = false - touching_gate = false - touching_dock = false ## Sets dock state to Process func dock_process(): dock_state = DockState.Process @@ -83,8 +88,6 @@ func dock_process(): gate_static.process_mode = Node.PROCESS_MODE_DISABLED gate_area.visible = true dock_area.visible = true - touching_gate = false - touching_dock = false ## Sets dock state to Busy func dock_busy(): dock_state = DockState.Busy @@ -92,6 +95,14 @@ func dock_busy(): gate_static.process_mode = Node.PROCESS_MODE_INHERIT gate_area.visible = false dock_area.visible = false - touching_gate = false - touching_dock = true - # TODO: implement opening the base menu + # opening base menu + var menu_instance = menu.instantiate() + menu_instance.base = self + player_ship.non_colorable_gui.add_child(menu_instance) + +func dock_leave(): + dock_state = DockState.Leave + gate_static.visible = false + gate_static.process_mode = Node.PROCESS_MODE_DISABLED + gate_area.visible = true + dock_area.visible = true diff --git a/scripts/Base/base_menu.gd b/scripts/Base/base_menu.gd new file mode 100644 index 0000000..717f41b --- /dev/null +++ b/scripts/Base/base_menu.gd @@ -0,0 +1,4 @@ +extends Control + +## Base which provided this menu +var base: Base diff --git a/scripts/Base/close_button.gd b/scripts/Base/close_button.gd new file mode 100644 index 0000000..50a6069 --- /dev/null +++ b/scripts/Base/close_button.gd @@ -0,0 +1,7 @@ +extends Button + +@onready var menu = $"../../.." + +func _on_button_up(): + menu.base.dock_leave() + menu.queue_free() diff --git a/scripts/Ship/player_input_controller.gd b/scripts/Ship/player_input_controller.gd index 9b8371d..3b20056 100644 --- a/scripts/Ship/player_input_controller.gd +++ b/scripts/Ship/player_input_controller.gd @@ -15,6 +15,11 @@ var expected_rotation: float = 0.0: expected_rotation = value func _physics_process(_delta) -> void: + if ship.selected_node is Base: + if Input.is_action_just_released("dock"): + ship.selected_node.dock_requested.emit() + if ship.selected_node.dock_state == Base.DockState.Busy: + return ship.engine.acceleration_axis = Input.get_axis("deccelerate", "accelerate") ship.engine.rotation_axis = Input.get_axis("rotateleft", "rotateright") for weapon in ship.weapons.list: @@ -29,5 +34,3 @@ func _physics_process(_delta) -> void: weapon.gun_rotation = expected_rotation if Input.is_action_just_released("select_target"): ship.selected_node = star_system.targeted_node - if ship.selected_node is Base and Input.is_action_just_released("dock"): - ship.selected_node.dock_requested.emit() diff --git a/scripts/Ship/player_ship.gd b/scripts/Ship/player_ship.gd index 1d3bed3..8205d9d 100644 --- a/scripts/Ship/player_ship.gd +++ b/scripts/Ship/player_ship.gd @@ -6,6 +6,8 @@ class_name PlayerShip @onready var camera = $Camera ## Player colorable GUI reference @onready var colorable_gui = $ColorableGUI +## Player non-colorable GUI reference +@onready var non_colorable_gui = $NonColorableGUI ## Node which was selected by input var selected_node: Node2D = null ## Currency variable diff --git a/sprites/Bases/Menu/end_communications.png b/sprites/Bases/Menu/end_communications.png new file mode 100644 index 0000000000000000000000000000000000000000..963c5155f9aa0d33e259b954e517a86d343205f1 GIT binary patch literal 1739 zcmV;+1~mDJP)N z000>N0SU%}p8x;=8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H123Sc% zK~#90<(q%(Rb?H=U-t_ENsRbWViC*W4~7Ui7g{c}pkfP2OeV8t
kbFBVwI{kxm ztG4(fU9zREjb^Qtlcv)_kxtY^MPQMxV5p-66d8zs2)_K|IoEr6zUSV1o^#K=w~hC9 zcJKY%`#hh|`+c70+|Tnl @LMVJKK2P^_!0G8LzA^|1=e*@+=*|wZ50_2egI5x6E zC+7nbv-hWg*MPSw?7u8pkq6k=%?KC)ECyBpUj#m$^P5A!HsJ5TCg2(1{jv^ApdI<` zz}HaA9JAGb8L&rPtG;b#>{WlBwJ+d;|9NDidMY(~pXFkTgZDOxP0MtJi)NURHHTA_L$_-RSUPH~|8wGik7GRcP z6kHwIznle-f^LU>9`+gvBs~)V_4n!y8`Yuu@#};@t32~De$yuQN(7i@D1|SN>=V`f z1p@3P`8vMUBKArIz)%)Hs7{IO-|G-qKgesCUZY#YUWouB)E5jD-T1q8ZG!4F=jW*Z zDMfiWZfX&GB?6#+GjkNDqvLGcJ*uN$XTBNx)UhpM?@EC2>Q8Ol65FSKGWyM|rtb$q zzK&b1Sb!z!e{&o??(mxaG6zduL;6163IrIX-rd33-8t>1IXLol+?*3vk^p1XjRl?k zps8J_J2rFdJ$Vh+qj>#NSb%fX%?ZvwyP>=?VRIi>1RXu_8Ig?TIQEx!}#Vzh}OVmra}k^Gqvu6(K*_kexk{9)Be`qng!@ z{E%VuLQxbYU+=%B{wzKIuCc^|0$i8SY0>}rIXQlAR8OU{=mNJ{P=IX(J4{J(-d4Yz z<7>Y9dODX4prs$JJiqT#4y{m#482Avx5LLJ9JR>!setQ*BBYaF{G|k-zwNo zQLMIu0PU{+y~2IH zF}iV*CqUkPzJ9IeHyG|M998c$e+@rIy;gnH^!#B>++UsmJEKPZEM}}W%>C~gHenyk zg3g;77%EUp)n6Kfi>Jvc^>FrnuVFfM6yR`E2mP+(+|d-rX!VCS60*&PI>V%#n2Fj= zRX?ZxIOB6f{X*XFW5d{{UT8J2((bWI6J9>U`~#U6!;6q)K^tGAc5J6pXt;t}u;VQ+4~&wL&6 zR@|PW`Jt&!+fRE<{up5>_w%8u4~wFMCJ*oueI^eulCTwh6RjUD>sR%5XOH{O#Smc= z;-JX`JlO{y!%$O?GJF^Kc3?hXoBFgq#quz4yidM9L`{7LxU|VuC*QAU0S1a8U^(y) h;61`$;8{Z+-~+|fcC1xC0p|b!002ovPDHLkV1hzjKMeo? literal 0 HcmV?d00001 diff --git a/sprites/Bases/Menu/end_communications.png.import b/sprites/Bases/Menu/end_communications.png.import new file mode 100644 index 0000000..b84eeff --- /dev/null +++ b/sprites/Bases/Menu/end_communications.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hxrx87gda3uf" +path="res://.godot/imported/end_communications.png-c197820e4b93073e795d9c65af448f6a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Bases/Menu/end_communications.png" +dest_files=["res://.godot/imported/end_communications.png-c197820e4b93073e795d9c65af448f6a.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