From 2f4159ebbe89af6d727f2606de185701712f3d27 Mon Sep 17 00:00:00 2001 From: Lexi Quinn Date: Tue, 4 Nov 2025 12:52:27 +1100 Subject: [PATCH] added new health bar and new energy pip bar --- Locales/en.mo | Bin 9769 -> 9865 bytes Locales/en.po | 8 +- Locales/translation_template.pot | 6 + PCs/FSM/fighting_state.gd | 2 + PCs/hero.gd | 35 +---- PCs/hero.tscn | 155 +++++++++---------- PCs/hud.gd | 22 ++- Scenes/Menus/MainMenu/main_menu.tscn | 59 ++------ Scenes/Menus/PauseMenu/pause_menu.tscn | 4 +- Scripts/Weapons/weapon.gd | 4 + Scripts/data.gd | 1 + Scripts/game.gd | 22 +-- ShieldUI.gd | 62 ++++++++ ShieldUI.gd.uid | 1 + UI/psx_ui.tres | 38 ++++- button_patch.png | Bin 0 -> 133 bytes button_patch.png.import | 40 +++++ button_style_box_normal.tres | 10 ++ card_description_ui.tscn | 1 + energy_pips.gd | 24 +++ energy_pips.gd.uid | 1 + energy_pips.tscn | 24 +++ energy_sheet.png | Bin 0 -> 1393 bytes energy_sheet.png.import | 40 +++++ health-Sheet.png | Bin 0 -> 8678 bytes health-Sheet.png.import | 40 +++++ health_border.png | Bin 0 -> 779 bytes health_border.png.import | 40 +++++ health_hit-Sheet.png | Bin 0 -> 1983 bytes health_hit-Sheet.png.import | 40 +++++ main.gd | 18 +++ main.tscn | 25 ++- pane_style_box.tres | 10 ++ panel_patch.png | Bin 0 -> 136 bytes panel_patch.png.import | 40 +++++ panel_tex.png | Bin 0 -> 914 bytes panel_tex.png.import | 40 +++++ remix_table.gd | 1 + shield_ui.tscn | 201 +++++++++++++++++++++++++ shield_ui_test.gd | 24 +++ shield_ui_test.gd.uid | 1 + shield_ui_test.tscn | 61 ++++++++ sidea_patch.png | Bin 0 -> 215 bytes sidea_patch.png.import | 40 +++++ sideb_patch.png | Bin 0 -> 212 bytes sideb_patch.png.import | 40 +++++ switch_side_a_style_box.tres | 10 ++ switch_side_b_style_box.tres | 10 ++ track_editor.gd | 44 ++++-- track_editor.tscn | 123 ++++++++++----- track_one_patch.png | Bin 0 -> 104 bytes track_one_patch.png.import | 40 +++++ track_two_patch.png | Bin 0 -> 101 bytes track_two_patch.png.import | 40 +++++ 54 files changed, 1193 insertions(+), 254 deletions(-) create mode 100644 ShieldUI.gd create mode 100644 ShieldUI.gd.uid create mode 100644 button_patch.png create mode 100644 button_patch.png.import create mode 100644 button_style_box_normal.tres create mode 100644 energy_pips.gd create mode 100644 energy_pips.gd.uid create mode 100644 energy_pips.tscn create mode 100644 energy_sheet.png create mode 100644 energy_sheet.png.import create mode 100644 health-Sheet.png create mode 100644 health-Sheet.png.import create mode 100644 health_border.png create mode 100644 health_border.png.import create mode 100644 health_hit-Sheet.png create mode 100644 health_hit-Sheet.png.import create mode 100644 pane_style_box.tres create mode 100644 panel_patch.png create mode 100644 panel_patch.png.import create mode 100644 panel_tex.png create mode 100644 panel_tex.png.import create mode 100644 shield_ui.tscn create mode 100644 shield_ui_test.gd create mode 100644 shield_ui_test.gd.uid create mode 100644 shield_ui_test.tscn create mode 100644 sidea_patch.png create mode 100644 sidea_patch.png.import create mode 100644 sideb_patch.png create mode 100644 sideb_patch.png.import create mode 100644 switch_side_a_style_box.tres create mode 100644 switch_side_b_style_box.tres create mode 100644 track_one_patch.png create mode 100644 track_one_patch.png.import create mode 100644 track_two_patch.png create mode 100644 track_two_patch.png.import diff --git a/Locales/en.mo b/Locales/en.mo index 07c9b9ed7265b739a787321726963d64498e9dea..6de698d68d1bbecb340acae9e63d76c6dc1c4f26 100644 GIT binary patch delta 3202 zcmZ4K)9G7(Pl#nI0|NuY1O^5M83qQ1IV=ne2SIF3kSGI#0uKX&A_D`1A`b(DJOcxR zGY>>vG7kfTFarZa0}lfOHv>v$L#L>L$t_VO?=h%qoQ zT!N~9$-}@P&A`C$7s9V+kmO}x5MW?n(B*{~WCx|acp(Ob@iH**GcYiuLd8pYAr?16 z#iv5WmqOKVU+u9`iCV2r@7*{N!a|5Mp3p;N}CFThG8C#|JS` zj}Ky@6CXrDARol#DSQx()lm6fsQNj43=HB73=A9iARagY6~77PzlGBO_!t-@85kJ& z`62db@`Eg9V6f$9U=XNhU|{g&hqyEjDp3qo*vt>HU^+j}1|krP97Grx6c`v7fwwBn7J)cysR$(KH$v&-B9IWeD*}nak0KBUa*0Cp%ZfrQ)DVTJGZKZ!*Sm>A;y6+i zVqq3kLp_w=1=TQL6cRFrjK9L(TaG73UU%I8Yi&8;U_Z=q?7aI8qF( zzn&pS4C2BXF^JFF#UMdCSq$Q^g<=d0w;321HiRVf&l{lPlR-2n z|IdP2un?+or354dwm>aBB*6eqy{Dn{4XFH6kO2$~44agA_;LYuO!4nqLL7Y z$V2&Rk`Rv=NHQ?ggM!Rbl7ZnE0|SGdBm+Yj0|NuA6a#}Z0|P^h6azyJs7#k)V9;b> zVBnQzU{GaXU@(_vVDMsKV2G7wV8~)%U|0ba7nWgQ@MBsbYeg^v^%7)%%#7z`B|7-|_97}69W9(kh3zyPYcJ6I1j=pt0&7S!TL%8-)m1(eUC0&y{y3dBHB z6-c5|g7VE&Ao<=|1>*1+sQM%*KUW3f@M0)k1EuR*RUj_!g9^-n8oX2ml3#a1|3=ygjhr~hE<*7n^R;mh#qB>Ou27LwwhAveG25klghFz+V z67`uXq>f=%gM_T28Ym>|85nHUAovuR31wFXNIMdwEDuyXfLbtW3=9k<43IqA!T>2`KnfB-4Nee) zfq_8@20bXhi-Cbb2g(K&MlK8t48~A?DFY<&B{48Clrbi>Lr@FVh5?fBnxUFNB^jvL zOl4qT=wV=B$bgCmFfcHfF)%QsGcYi?GcYiuFhB|+L#TW)1Eg%Q1+{V+7#Na4Z9fJE zhByWW273kuhEAxudKxIAy14ARI=w)DFXoD&M^$DO%aGM=e7x;kk@aC`F zf7ld)Tzx$w;+;c-f?WNaBN==gom_q5A%X!xp3bhDUkL@VFq&?*6?f$kaL&)nE4ETl SVQ|hbF0oQj+1#kSf(Zb9st-W` delta 3112 zcmeD5UFlPQPl#nI0|Ns?9|Hq}3N|NM4w=CValkTO1_n_E28P|d3=Dz{3=9`}85o2Z7#JRd_17~ne1jUu z#s{%biVvbdlMmu@8$O7}V5od5AH)GAd<+cY3=9k%d=L*TfQoN~@{dC4YkUk0k_-$C z&!O^+{16X`@-r|9)H5(JsPaQxY6g|?=7(4i%@464pC96&cBuR;sQOj>3=9$s3=I4E zAr8C&6@LZg|A*3o0t^gN3=9m)0uXg}0+0|15MW@a2L*ka0K@_10uTdx1RxGrDgg1> zPN;@c0uY}(5P&%77gU^A5W-i6(q@8?IQA4|VBln6U`Q2&_&8q>VoyC(-4sEFdT^p! zE(kIB2vp*pAS5b23PPd)6k(vmCN2aC5p5xePn?Ay7KaKkFvu}5Fk}cpEN&Nqq@~3| z5dG_g7#MgM7#NO0^2GK7o2C+|9 z4D7Lb1`9Drkh+LL3=9%uV7Se|z>q8kae%!zL}QpZ#9?XT5C>I>Gcd3)Ffg=>Gcd4$ z3NCR526hGphRNa#46FP<0QX4t^!Uz;KL# zf#JOb14Dfn0|Uc0Nd^XI1_lORDF%id1_p*eDFy~j1_p+GQVa~L3=9k}q!<{y7#JA% zq!}2p7#J8Lr6J-+q!}3e7#J8{Nkill7dsPF7%GFkxU|c%;C4&hOT7^J8SDX8?Jd^=@`c|OXJ zL>8$GaY&Xj#KIzFh&@fpkb7?>Ft7*47%FfcJNFr0;oUx1o(4Jv;ds{cNOU(fIi>VQ{J4L_g` z`3F_VrwZ|zs465%sY2?I<*JaNJ*Wzaio2?iZ1_qQ z;-SB)5T7%tfugRSfk8wK5`@ZX3=E763=Hm&h7Z^h5VM^DQV?Y_FfimXFfdqxT00;K z1_lNvD6Ij?9So2V^Z?}$sJH`^2DP9-ISEvWrGau90|P?{NDh=;Ksf-E{aitf2?j{k zi(+74XklPr@MM7G2vGg)2CCs07#K_$7#O-hni(Lu092EKasfyP)Z~(7fJ99+s1#*j zV2B4vfN}`~q}%}Iv{(iPhFk^)hI$}M!pU|=W!i9&HDlm=0CpwbV-U|?WKWPqexbtvB-N`so;HlP}ifq|izfq}sr)Sh5~ z6u~u6HK3+FsI92Qz`$S+6$3T-K}~jWwb=#|+$_uUhi$Wiur~{%+2$T`SDwv}l$SFB E0K!@Y!T void: + hero.hud.set_currencies_visible(false) if hero.weapons[hero.equipped_weapon]: hero.hud.set_energy_visible(true) var offhand_weapon: Weapon = hero.weapons[0] if hero.equipped_weapon == 1 else hero.weapons[1] @@ -21,6 +22,7 @@ func enter_state() -> void: func exit_state() -> void: + hero.hud.set_currencies_visible(true) if hero.weapons[hero.equipped_weapon]: hero.weapons[hero.equipped_weapon].release_trigger() hero.weapons[hero.equipped_weapon].release_second_trigger() diff --git a/PCs/hero.gd b/PCs/hero.gd index 34308db..cd33614 100644 --- a/PCs/hero.gd +++ b/PCs/hero.gd @@ -325,46 +325,23 @@ func equip_weapon(slot: int = 0) -> void: weapons[slot].visible = false right_hand.add_child(weapons[slot]) if slot == 0: - weapons[slot].energy_spent.connect(hud.new_energy_bar.use_energy) - weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_energy) - hud.new_energy_bar.max_energy = weapons[slot].max_energy - if weapons[slot].stats.energy_type == Data.EnergyType.CONTINUOUS: - hud.new_energy_bar.enable_progress_bar() - if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE: - hud.new_energy_bar.create_discrete_icons(int(weapons[slot].max_energy)) - else: - weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_secondary_energy) - hud.new_energy_bar.secondary_max_energy = weapons[slot].max_energy - hud.new_energy_bar.secondary_energy = weapons[slot].current_energy + weapons[slot].energy_changed.connect(hud.set_energy_pips) + hud.energy_pips.max_energy = weapons[slot].max_energy func stow_weapon(slot: int = 0) -> void: weapons[slot].release_trigger() weapons[slot].release_second_trigger() weapons[slot].visible = false - weapons[slot].energy_spent.disconnect(hud.new_energy_bar.use_energy) - weapons[slot].energy_recharged.disconnect(hud.new_energy_bar.gain_energy) - weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_secondary_energy) - hud.new_energy_bar.secondary_max_energy = weapons[slot].max_energy - hud.new_energy_bar.secondary_energy = weapons[slot].current_energy + weapons[slot].energy_changed.disconnect(hud.set_energy_pips) func show_weapon(slot: int = 0) -> void: weapons[slot].release_trigger() weapons[slot].release_second_trigger() - weapons[slot].energy_recharged.disconnect(hud.new_energy_bar.gain_secondary_energy) - weapons[slot].energy_spent.connect(hud.new_energy_bar.use_energy) - weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_energy) + weapons[slot].energy_changed.connect(hud.set_energy_pips) hud.set_weapon_energy(int(weapons[slot].current_energy), weapons[slot].stats.energy_type) - hud.new_energy_bar.max_energy = weapons[slot].max_energy - if weapons[slot].stats.energy_type == Data.EnergyType.CONTINUOUS: - hud.new_energy_bar.enable_progress_bar() - if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE: - hud.new_energy_bar.create_discrete_icons(int(weapons[slot].max_energy)) - hud.new_energy_bar.use_energy(weapons[slot].max_energy - weapons[slot].current_energy, weapons[slot].stats.energy_type) - var offhand: int = 0 if equipped_weapon == 1 else 1 - if !weapons[offhand]: - hud.new_energy_bar.disable_secondary_energy() + hud.energy_pips.max_energy = weapons[slot].max_energy func swap_weapons() -> void: @@ -390,10 +367,8 @@ func unequip_weapon(slot: int = 0) -> void: gauntlet_cards[slot].visible = false if slot == 0: hud.place_icon.visible = true - hud.new_energy_bar.blank() else: hud.swap_icon.visible = true - hud.new_energy_bar.disable_secondary_energy() weapons[slot].queue_free() weapons[slot] = null if !game_manager.card_gameplay: diff --git a/PCs/hero.tscn b/PCs/hero.tscn index 26ffbf8..0d6941d 100644 --- a/PCs/hero.tscn +++ b/PCs/hero.tscn @@ -17,7 +17,6 @@ [ext_resource type="Script" uid="uid://hy51bq7x0fy8" path="res://Scripts/on_top_camera.gd" id="11_4sdwe"] [ext_resource type="PackedScene" uid="uid://ckl5tw5rmewhp" path="res://left_hand/card_hand_model.glb" id="11_h82f6"] [ext_resource type="Script" uid="uid://ckkioruqgbs8p" path="res://Scripts/minimap_cam.gd" id="12_3hpi3"] -[ext_resource type="PackedScene" uid="uid://24x18qxqhy0i" path="res://Scenes/UI/lives_bar.tscn" id="15_cqpib"] [ext_resource type="Texture2D" uid="uid://c60fh34ttgcvh" path="res://Assets/Textures/minimap_player.png" id="15_nhlam"] [ext_resource type="Texture2D" uid="uid://chhmkmlfrobhu" path="res://Assets/Textures/bubble.png" id="15_q3yot"] [ext_resource type="Texture2D" uid="uid://cqnapc8cscl7i" path="res://Assets/Textures/border.png" id="16_x1xjr"] @@ -31,7 +30,6 @@ [ext_resource type="Texture2D" uid="uid://biwol65o5rwc7" path="res://Assets/Textures/enemy_frame.png" id="25_rim6q"] [ext_resource type="AudioStream" uid="uid://bxripx3suub1v" path="res://Audio/cardPlace3.ogg" id="26_7tm07"] [ext_resource type="Texture2D" uid="uid://0x80ptif1diq" path="res://Assets/Textures/hand_small_point.png" id="26_dfkac"] -[ext_resource type="PackedScene" uid="uid://c2id8hjico4w8" path="res://UI/EnergyBar/energy_bar.tscn" id="27_14ugt"] [ext_resource type="AudioStream" uid="uid://k1lsqkvohjpa" path="res://Audio/cardPlace4.ogg" id="27_xvxs8"] [ext_resource type="AudioStream" uid="uid://bn8lkvy5wibvo" path="res://Audio/cardSlide1.ogg" id="28_1thk8"] [ext_resource type="AudioStream" uid="uid://d32gpcu8w1yvn" path="res://Audio/cardSlide2.ogg" id="29_s0a0l"] @@ -39,6 +37,8 @@ [ext_resource type="Texture2D" uid="uid://up7omskwg0yx" path="res://Assets/Textures/battery.png" id="30_rim6q"] [ext_resource type="AudioStream" uid="uid://ck6g061w7i6ro" path="res://Audio/cardSlide4.ogg" id="31_546e6"] [ext_resource type="PackedScene" uid="uid://ga21hoa8fxmm" path="res://hot_wheel.tscn" id="31_h1yfy"] +[ext_resource type="PackedScene" uid="uid://cqslp83lf0ku0" path="res://shield_ui.tscn" id="31_o55s8"] +[ext_resource type="PackedScene" uid="uid://q73cllewm7pj" path="res://energy_pips.tscn" id="32_o55s8"] [ext_resource type="AudioStream" uid="uid://bj8eitlsjdotb" path="res://Audio/cardSlide5.ogg" id="32_tg7y0"] [ext_resource type="AudioStream" uid="uid://d0620p56ad34a" path="res://Audio/cardSlide6.ogg" id="33_2v5co"] [ext_resource type="AudioStream" uid="uid://uvoxbl1fbtu0" path="res://Audio/cardSlide7.ogg" id="34_6acmc"] @@ -321,11 +321,10 @@ max_look_up_angle = 80.0 enable_jumping = true weapon_holder = NodePath("../FirstPersonViewport/Head2/RightHand") -[node name="HUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player", "wave_count", "lives_count", "currency_count", "minimap_outline", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "wave_start_label", "place_icon", "swap_icon", "place_text", "swap_text", "new_energy_bar", "energy_label", "blank_cassette_label", "feature_preview", "hot_wheel")] +[node name="HUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player", "wave_count", "currency_count", "minimap_outline", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "wave_start_label", "place_icon", "swap_icon", "place_text", "swap_text", "energy_label", "blank_cassette_label", "feature_preview", "hot_wheel", "shield_ui", "currencies", "energy_pips")] script = ExtResource("8_yl6ka") player = NodePath("..") wave_count = NodePath("EnemyTracker/WaveCount") -lives_count = NodePath("LivesBar/LivesCount") currency_count = NodePath("Currencies/CoinCounter/CurrencyCount") minimap_outline = NodePath("Minimap/MinimapBorder") minimap = NodePath("Minimap") @@ -342,11 +341,13 @@ swap_icon = NodePath("SwapIcon") place_text = NodePath("PlaceIcon/RichTextLabel") swap_text = NodePath("SwapIcon/RichTextLabel") enemy_card_scene = ExtResource("18_dfkac") -new_energy_bar = NodePath("EnergyBar") energy_label = NodePath("Currencies/HBoxContainer/EnergyLabel") blank_cassette_label = NodePath("Currencies/BlankCassetteLabel") feature_preview = NodePath("FeaturePreview") hot_wheel = NodePath("HotWheel") +shield_ui = NodePath("ShieldUI") +currencies = NodePath("Currencies") +energy_pips = NodePath("EnergyPips") [node name="FirstPersonCam" type="TextureRect" parent="HUD"] anchors_preset = 15 @@ -450,30 +451,6 @@ text = "FPS: " horizontal_alignment = 2 vertical_alignment = 1 -[node name="LivesBar" parent="HUD" instance=ExtResource("15_cqpib")] -anchors_preset = 0 -anchor_right = 0.0 -anchor_bottom = 0.0 -offset_left = 10.0 -offset_top = 10.0 -offset_right = 214.0 -offset_bottom = 32.0 -grow_horizontal = 1 -grow_vertical = 1 -scale = Vector2(0.32, 0.32) -mouse_filter = 2 - -[node name="LivesCount" type="Label" parent="HUD/LivesBar"] -layout_mode = 0 -offset_right = 79.0 -offset_bottom = 70.0 -scale = Vector2(0.33, 0.33) -theme_override_colors/font_color = Color(0.65098, 0.227451, 0.243137, 1) -theme_override_font_sizes/font_size = 37 -text = "120" -horizontal_alignment = 1 -vertical_alignment = 1 - [node name="EnemyTracker" type="TextureRect" parent="HUD"] texture_filter = 1 anchors_preset = -1 @@ -489,115 +466,101 @@ stretch_mode = 4 [node name="TextureRect" type="TextureRect" parent="HUD/EnemyTracker"] visible = false layout_mode = 0 -offset_right = 64.0 +offset_left = 0.5 +offset_right = 64.5 offset_bottom = 64.0 scale = Vector2(0.5, 0.5) texture = ExtResource("15_q3yot") [node name="Label" type="Label" parent="HUD/EnemyTracker/TextureRect"] layout_mode = 0 -offset_left = 28.01 -offset_top = 41.81 -offset_right = 68.01 -offset_bottom = 66.8101 -theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 5 -theme_override_font_sizes/font_size = 15 +offset_left = 28.000006 +offset_top = 46.000004 +offset_right = 43.000008 +offset_bottom = 54.000004 +scale = Vector2(2, 2) text = "999" -horizontal_alignment = 1 +horizontal_alignment = 2 vertical_alignment = 1 [node name="TextureRect2" type="TextureRect" parent="HUD/EnemyTracker"] visible = false layout_mode = 0 -offset_left = 32.0 -offset_right = 96.0 +offset_left = 32.5 +offset_right = 96.5 offset_bottom = 64.0 scale = Vector2(0.5, 0.5) texture = ExtResource("15_q3yot") [node name="Label2" type="Label" parent="HUD/EnemyTracker/TextureRect2"] layout_mode = 0 -offset_left = 28.745 -offset_top = 41.81 -offset_right = 68.7451 -offset_bottom = 66.8101 -theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 5 -theme_override_font_sizes/font_size = 15 +offset_left = 28.000006 +offset_top = 46.000004 +offset_right = 43.000008 +offset_bottom = 54.000004 +scale = Vector2(2, 2) text = "999" -horizontal_alignment = 1 +horizontal_alignment = 2 vertical_alignment = 1 [node name="TextureRect3" type="TextureRect" parent="HUD/EnemyTracker"] visible = false layout_mode = 0 -offset_left = 64.0 -offset_right = 128.0 +offset_left = 62.5 +offset_right = 126.5 offset_bottom = 64.0 scale = Vector2(0.5, 0.5) texture = ExtResource("15_q3yot") [node name="Label3" type="Label" parent="HUD/EnemyTracker/TextureRect3"] layout_mode = 0 -offset_left = 29.29 -offset_top = 41.81 -offset_right = 69.2901 -offset_bottom = 66.8101 -theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 5 -theme_override_font_sizes/font_size = 15 +offset_left = 29.999992 +offset_top = 46.000004 +offset_right = 44.999992 +offset_bottom = 54.000004 +scale = Vector2(2, 2) text = "999" -horizontal_alignment = 1 +horizontal_alignment = 2 vertical_alignment = 1 [node name="TextureRect4" type="TextureRect" parent="HUD/EnemyTracker"] visible = false layout_mode = 0 -offset_left = 96.0 -offset_right = 160.0 +offset_left = 94.5 +offset_right = 158.5 offset_bottom = 64.0 scale = Vector2(0.5, 0.5) texture = ExtResource("15_q3yot") [node name="Label4" type="Label" parent="HUD/EnemyTracker/TextureRect4"] layout_mode = 0 -offset_left = 29.0 -offset_top = 41.81 -offset_right = 69.0 -offset_bottom = 66.8101 -theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 5 -theme_override_font_sizes/font_size = 15 +offset_left = 30.0 +offset_top = 46.000004 +offset_right = 45.0 +offset_bottom = 54.000004 +scale = Vector2(2, 2) text = "999" -horizontal_alignment = 1 +horizontal_alignment = 2 vertical_alignment = 1 [node name="TextureRect5" type="TextureRect" parent="HUD/EnemyTracker"] visible = false layout_mode = 0 -offset_left = 128.0 -offset_right = 192.0 +offset_left = 127.5 +offset_right = 191.5 offset_bottom = 64.0 scale = Vector2(0.5, 0.5) texture = ExtResource("15_q3yot") [node name="Label5" type="Label" parent="HUD/EnemyTracker/TextureRect5"] layout_mode = 0 -offset_left = 29.0 -offset_top = 41.81 -offset_right = 69.0 -offset_bottom = 66.8101 -theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 5 -theme_override_font_sizes/font_size = 15 +offset_left = 26.0 +offset_top = 46.000004 +offset_right = 41.0 +offset_bottom = 54.000004 +scale = Vector2(2, 2) text = "999" -horizontal_alignment = 1 +horizontal_alignment = 2 vertical_alignment = 1 [node name="WaveCount" type="Label" parent="HUD/EnemyTracker"] @@ -607,6 +570,10 @@ anchor_left = 0.5 anchor_top = 1.0 anchor_right = 0.5 anchor_bottom = 1.0 +offset_left = -2.0 +offset_top = -12.0 +offset_right = 1.0 +offset_bottom = -4.0 grow_horizontal = 2 grow_vertical = 0 text = "1" @@ -677,11 +644,6 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="EnergyBar" parent="HUD" instance=ExtResource("27_14ugt")] -visible = false -scale = Vector2(0.235, 0.235) -mouse_filter = 2 - [node name="TextureRect" type="TextureRect" parent="HUD"] modulate = Color(0.54324, 0.193653, 0.15885, 0.9) anchors_preset = 8 @@ -783,6 +745,23 @@ grow_vertical = 2 mouse_filter = 2 alignment = 1 +[node name="ShieldUI" parent="HUD" instance=ExtResource("31_o55s8")] +anchors_preset = -1 +anchor_left = 0.025 +anchor_top = 0.025 +anchor_right = 0.035 +anchor_bottom = 0.035 + +[node name="EnergyPips" parent="HUD" instance=ExtResource("32_o55s8")] +visible = false +anchors_preset = -1 +anchor_left = 0.97 +anchor_top = 0.97 +anchor_right = 0.97 +anchor_bottom = 0.97 +grow_horizontal = 0 +grow_vertical = 0 + [node name="WeaponSwapTimer" type="Timer" parent="."] wait_time = 0.4 one_shot = true diff --git a/PCs/hud.gd b/PCs/hud.gd index 22f30d0..e570b93 100644 --- a/PCs/hud.gd +++ b/PCs/hud.gd @@ -3,7 +3,6 @@ extends CanvasLayer @export var player: Hero @export var wave_count: Label -@export var lives_count: Label @export var currency_count: Label @export var minimap_outline: TextureRect @export var crosshair: Control @@ -21,15 +20,17 @@ extends CanvasLayer @export var place_text: RichTextLabel @export var swap_text: RichTextLabel @export var enemy_card_scene: PackedScene -@export var new_energy_bar: EnergyBar @export var energy_label: Label @export var primary_duration: Label @export var secondary_duration: Label @export var blank_cassette_label: Label @export var feature_preview: HBoxContainer @export var hot_wheel: HotWheel +@export var shield_ui: ShieldUI +@export var currencies: VBoxContainer +@export var energy_pips: EnergyPips -var last_lives_count: int = 120 +var last_lives_count: int = Data.starting_lives var enemy_names: Array[String] var map_anchor: Node3D var cards: Array[EnemyCardUI] = [] @@ -88,7 +89,7 @@ func show_wave_generation_anim(wave: Wave) -> void: func set_energy_visible(value: bool) -> void: - new_energy_bar.visible = value + energy_pips.visible = value func _process(_delta: float) -> void: @@ -163,12 +164,19 @@ func set_wave_count(value: int) -> void: func set_lives_count(value: int) -> void: - lives_count.text = str(value) - for x: int in last_lives_count - value: - $LivesBar.take_life() + var damage: int = last_lives_count - value + shield_ui.take_damage(damage) last_lives_count = value +func set_currencies_visible(value: bool) -> void: + currencies.visible = value + + +func set_energy_pips(value: int) -> void: + energy_pips.energy = value + + func enemy_count_down(enemy: Enemy) -> void: var index: int = enemy_names.find(enemy.title) var num: int = enemy_counts[index].text.to_int() - 1 diff --git a/Scenes/Menus/MainMenu/main_menu.tscn b/Scenes/Menus/MainMenu/main_menu.tscn index 516e6c3..1593a60 100644 --- a/Scenes/Menus/MainMenu/main_menu.tscn +++ b/Scenes/Menus/MainMenu/main_menu.tscn @@ -1,42 +1,13 @@ -[gd_scene load_steps=25 format=3 uid="uid://8yv7excojcg0"] +[gd_scene load_steps=12 format=3 uid="uid://8yv7excojcg0"] [ext_resource type="Script" uid="uid://ci8vq73u23viy" path="res://Scenes/Menus/MainMenu/main_menu.gd" id="2_ivytu"] -[ext_resource type="PackedScene" uid="uid://y1qa1g3ic8sp" path="res://Worlds/GreenPlanet/Levels/Bridge/bridge.tscn" id="3_l8r4a"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="5_cwn2i"] -[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="5_u514r"] -[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="6_rsxwm"] -[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="7_2sylv"] -[ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="8_1vnym"] -[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="9_hdp0s"] -[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="10_day26"] -[ext_resource type="Resource" uid="uid://boik1gnpl4v0a" path="res://Resources/Enemies/dog_boss.tres" id="11_1mes0"] -[ext_resource type="Resource" uid="uid://dsgkwh3opyqtx" path="res://Resources/Enemies/airenemy.tres" id="12_5vny5"] -[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="13_xb7gj"] [ext_resource type="Texture2D" uid="uid://cr1ucbuw3iotp" path="res://Assets/Textures/first_win_achievements.png" id="15_74epv"] [ext_resource type="Script" uid="uid://cjr0pbqisd51v" path="res://Scenes/Menus/MainMenu/achievements_menu.gd" id="15_sv1gy"] [ext_resource type="Texture2D" uid="uid://cpa1hl36xfplg" path="res://Assets/Textures/first_scroll_seen.png" id="16_sv1gy"] [ext_resource type="Texture2D" uid="uid://ctbi3gm1me1t5" path="res://Assets/Textures/unlock_mage_achievement.png" id="17_6t4jd"] [ext_resource type="Script" uid="uid://cxrm2naq75jo1" path="res://Scripts/mod_menu.gd" id="19_6t4jd"] -[sub_resource type="ViewportTexture" id="ViewportTexture_5u75i"] -viewport_path = NodePath("SubViewport") - -[sub_resource type="AtlasTexture" id="AtlasTexture_74epv"] -resource_local_to_scene = true -atlas = ExtResource("8_1vnym") -region = Rect2(0, 0, 32, 32) - -[sub_resource type="Resource" id="Resource_sv1gy"] -resource_local_to_scene = true -script = ExtResource("5_u514r") -target_type = 1 -icon = ExtResource("7_2sylv") -death_sprite = ExtResource("6_rsxwm") -sprite = SubResource("AtlasTexture_74epv") -health = 180 -movement_speed = 1.2 -spawn_cooldown = 1.2 - [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2jyua"] random_pitch = 1.1 streams_count = 1 @@ -62,22 +33,21 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("2_ivytu") -bg_level = NodePath("SubViewport/GridMap") +bg_level = NodePath("") game_select_menu = NodePath("GameSelectMenu") main_controls = NodePath("MainControls") seed_entry = NodePath("GameSelectMenu/VBoxContainer/HBoxContainer2/LineEdit") profile_controls = NodePath("ProfileManager") mods_controls = NodePath("ModsMenu") -[node name="TextureRect" type="TextureRect" parent="."] -visible = false +[node name="ColorRect" type="ColorRect" parent="."] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -texture = SubResource("ViewportTexture_5u75i") +color = Color(0.5176471, 0.60784316, 0.89411765, 1) [node name="TitleLabel" type="Label" parent="."] layout_mode = 1 @@ -90,12 +60,15 @@ horizontal_alignment = 1 vertical_alignment = 1 [node name="MainControls" type="VBoxContainer" parent="."] +custom_minimum_size = Vector2(80, 0) layout_mode = 1 anchors_preset = -1 -anchor_left = 0.1 -anchor_top = 0.4 -anchor_right = 0.9 -anchor_bottom = 0.9 +anchor_left = 0.5 +anchor_top = 0.938 +anchor_right = 0.5 +anchor_bottom = 0.95 +grow_horizontal = 2 +grow_vertical = 0 alignment = 2 [node name="PlayButton" type="Button" parent="MainControls"] @@ -119,20 +92,10 @@ text = "BUTTON_OPTIONS layout_mode = 2 text = "BUTTON_QUIT" -[node name="SubViewport" type="SubViewport" parent="."] -size = Vector2i(1920, 1080) - -[node name="GridMap" parent="SubViewport" instance=ExtResource("3_l8r4a")] -enemy_pool = Array[ExtResource("5_u514r")]([SubResource("Resource_sv1gy"), ExtResource("9_hdp0s"), ExtResource("10_day26"), ExtResource("11_1mes0"), ExtResource("12_5vny5"), ExtResource("13_xb7gj")]) - [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = SubResource("AudioStreamRandomizer_2jyua") bus = &"SFX" -[node name="AudioListener3D" type="AudioListener3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 100, 0) -current = true - [node name="GameSelectMenu" type="PanelContainer" parent="."] visible = false layout_mode = 1 diff --git a/Scenes/Menus/PauseMenu/pause_menu.tscn b/Scenes/Menus/PauseMenu/pause_menu.tscn index 7e1bf7b..d700b5d 100644 --- a/Scenes/Menus/PauseMenu/pause_menu.tscn +++ b/Scenes/Menus/PauseMenu/pause_menu.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=5 format=3 uid="uid://buvgdem68wtev"] +[gd_scene load_steps=4 format=3 uid="uid://buvgdem68wtev"] -[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_gaupv"] [ext_resource type="Script" uid="uid://cjyyepxaf4xl8" path="res://Scenes/Menus/PauseMenu/pause_menu.gd" id="2_4pn2l"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="3_0bid7"] @@ -16,7 +15,6 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -theme = ExtResource("1_gaupv") script = ExtResource("2_4pn2l") [node name="ColorRect" type="ColorRect" parent="."] diff --git a/Scripts/Weapons/weapon.gd b/Scripts/Weapons/weapon.gd index c025b9b..1090105 100644 --- a/Scripts/Weapons/weapon.gd +++ b/Scripts/Weapons/weapon.gd @@ -3,6 +3,7 @@ extends Node3D signal energy_spent(energy: int, type: Data.EnergyType) signal energy_recharged(energy: int, type: Data.EnergyType) +signal energy_changed(energy: float) @export var stats: CardText @export var animator: AnimationPlayer @@ -50,11 +51,13 @@ func _process(delta: float) -> void: current_energy = max_energy recharging = false energy_recharged.emit(recharge_speed * delta, stats.energy_type) + energy_changed.emit(current_energy) if time_since_firing < time_between_shots: time_since_firing += delta if trigger_held and stats.energy_type == Data.EnergyType.CONTINUOUS: current_energy -= delta energy_spent.emit(delta, stats.energy_type) + energy_changed.emit(current_energy) @warning_ignore("unused_parameter") @@ -64,6 +67,7 @@ func _physics_process(delta: float) -> void: current_energy -= 1 current_energy = floorf(current_energy) energy_spent.emit(1, stats.energy_type) + energy_changed.emit(current_energy) time_since_firing -= time_between_shots shoot() networked_shoot.rpc() diff --git a/Scripts/data.gd b/Scripts/data.gd index 3a9abcd..3e53428 100644 --- a/Scripts/data.gd +++ b/Scripts/data.gd @@ -26,6 +26,7 @@ static var target_type_names: Dictionary[TargetType, String] = { static var weapon_recharge_delay: float = 0.5 static var starting_cash: int = 10 +static var starting_lives: int = 144 static var player_energy: int = 6 static var wall_cost: int = 1 static var rarity_weights: Dictionary = { diff --git a/Scripts/game.gd b/Scripts/game.gd index 8e465db..2d716dd 100644 --- a/Scripts/game.gd +++ b/Scripts/game.gd @@ -22,7 +22,7 @@ var game_active: bool = false var gamemode: GameMode = null var level: Level var enemies: int = 0 -var objective_health: int = 120 +var objective_health: int = Data.starting_lives var wave: int var pot: float var UILayer: CanvasLayer @@ -38,24 +38,6 @@ var starting_blanks: int = 0 var connected_player_profiles: Dictionary = {} -func _ready() -> void: - UILayer = CanvasLayer.new() - UILayer.layer = 2 - root_scene.add_child.call_deferred(UILayer) - var version_label: Label = Label.new() - var version: String = ProjectSettings.get_setting("application/config/version") - version_label.text = "WORK IN PROGRESS | ALPHA - VERSION " + version + " | PLAYTEST" - version_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER - version_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER - version_label.theme_type_variation = "VersionLabel" - #version_label.add_theme_font_size_override("font_size", 18) - #version_label.add_theme_color_override("font_color", Color(0.85, 0.85, 0.85, 0.7)) - version_label.set_anchors_preset(Control.PRESET_TOP_WIDE) - UILayer.add_child(version_label) - Input.set_custom_mouse_cursor(load("res://Assets/Textures/cursor_none.png"), Input.CURSOR_ARROW, Vector2(9, 6)) - Input.set_custom_mouse_cursor(load("res://Assets/Textures/bracket_b_vertical.png"), Input.CURSOR_IBEAM, Vector2(16, 16)) - - func parse_command(text: String, peer_id: int) -> void: if text.substr(1, 4) == "give": var gift_name: String = text.substr(6) as String @@ -295,7 +277,7 @@ func setup() -> void: #Set starting parameters game_active = false enemies = 0 - objective_health = 120 + objective_health = Data.starting_lives wave = 1 stats = RoundStats.new() game_setup.emit() diff --git a/ShieldUI.gd b/ShieldUI.gd new file mode 100644 index 0000000..5d88bf5 --- /dev/null +++ b/ShieldUI.gd @@ -0,0 +1,62 @@ +class_name ShieldUI +extends Control + +@export var cells: Array[TextureRect] = [] +@export var hit_glow: TextureRect +@export var fade_timer: Timer + +const CELL_HEALTH: int = 9 + +var health: int = 144 +var current_cell_health: int = CELL_HEALTH +var fade_tween: Tween + + +func take_damage(damage: int) -> void: + if fade_tween: + fade_tween.kill() + fade_tween = null + modulate = Color.WHITE + var damage_to_deal_with: int = min(damage, current_cell_health) + var remaining_damage: int = damage - damage_to_deal_with + var current_cell: int = ceili(float(health) / CELL_HEALTH) + health -= damage_to_deal_with + current_cell_health -= damage_to_deal_with + var cell_level: int = health % 9 + if remaining_damage > 0: ## This cell should be empty because the damage overran the cell + cell_level = 3 + current_cell_health = CELL_HEALTH + change_cell_color(current_cell - 1, cell_level) + take_damage(remaining_damage) + return + elif current_cell_health == 0: + cell_level = 3 + current_cell_health = CELL_HEALTH + elif cell_level > 0 and cell_level <= 3: ## This cell should be low health + cell_level = 2 + elif cell_level > 3 and cell_level <= 6: ## This cell should be half health + cell_level = 1 + else: ## This cell should be full health + cell_level = 0 + hit_glow.texture.region.position.x = 66.0 * (16 - current_cell) + var tween: Tween = create_tween() + tween.tween_callback(func() -> void: hit_glow.visible = true) + tween.tween_interval(0.07) + tween.tween_callback(func() -> void: hit_glow.visible = false) + tween.tween_interval(0.07) + tween.tween_callback(func() -> void: hit_glow.visible = true) + tween.tween_callback(change_cell_color.bind(current_cell - 1, cell_level)) + tween.tween_interval(0.07) + tween.tween_callback(func() -> void: hit_glow.visible = false) + fade_timer.start() + + +func change_cell_color(cell: int, color: int) -> void: + cells[15 - cell].texture.region.position.x = 66.0 * color + + +func fade_out() -> void: + if fade_tween: + fade_tween.kill() + fade_tween = create_tween() + fade_tween.tween_property(self, "modulate", Color8(255, 255, 255, 0), 1.0) diff --git a/ShieldUI.gd.uid b/ShieldUI.gd.uid new file mode 100644 index 0000000..debc1b0 --- /dev/null +++ b/ShieldUI.gd.uid @@ -0,0 +1 @@ +uid://kiivev1q63p0 diff --git a/UI/psx_ui.tres b/UI/psx_ui.tres index 2508377..7feebad 100644 --- a/UI/psx_ui.tres +++ b/UI/psx_ui.tres @@ -1,17 +1,49 @@ -[gd_resource type="Theme" load_steps=2 format=3 uid="uid://jn4qqx5hxc5i"] +[gd_resource type="Theme" load_steps=9 format=3 uid="uid://jn4qqx5hxc5i"] +[ext_resource type="StyleBox" uid="uid://bgxt37xw4tma6" path="res://button_style_box_normal.tres" id="1_b02pe"] [ext_resource type="FontFile" uid="uid://bqy8dm2o3piqm" path="res://Assets/Fonts/Quaver v1.0/quaver.ttf" id="1_u5gny"] +[ext_resource type="StyleBox" uid="uid://bfuea1sjymo8g" path="res://pane_style_box.tres" id="3_inyly"] +[ext_resource type="StyleBox" uid="uid://cm3wsvk3woory" path="res://switch_side_a_style_box.tres" id="4_u1sfq"] +[ext_resource type="StyleBox" uid="uid://jnnnhb3i2265" path="res://switch_side_b_style_box.tres" id="5_78ak8"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_u1sfq"] + +[sub_resource type="FontVariation" id="FontVariation_b02pe"] +base_font = ExtResource("1_u5gny") +baseline_offset = 0.15 + +[sub_resource type="FontVariation" id="FontVariation_inyly"] +base_font = ExtResource("1_u5gny") [resource] -Button/font_sizes/font_size = 8 -Button/fonts/font = ExtResource("1_u5gny") +Button/colors/font_color = Color(0.8388973, 0.838897, 0.838897, 1) +Button/colors/font_hover_color = Color(0.95, 0.95, 0.95, 1) +Button/styles/focus = SubResource("StyleBoxEmpty_u1sfq") +Button/styles/hover = ExtResource("1_b02pe") +Button/styles/normal = ExtResource("1_b02pe") +Control/constants/outline_size = 4 +Control/font_sizes/font_size = 8 +Control/fonts/font = SubResource("FontVariation_b02pe") InteractLabel/base_type = &"Label" Label/font_sizes/font_size = 8 Label/fonts/font = ExtResource("1_u5gny") LineEdit/font_sizes/font_size = 8 LineEdit/fonts/font = ExtResource("1_u5gny") +PanelContainer/styles/panel = ExtResource("3_inyly") +PopupMenu/constants/outline_size = 4 +PopupMenu/font_sizes/font_size = 8 +PopupMenu/fonts/font = SubResource("FontVariation_inyly") RichTextLabel/font_sizes/normal_font_size = 8 RichTextLabel/fonts/normal_font = ExtResource("1_u5gny") +SideCheckButton/base_type = &"Button" +SideCheckButton/colors/font_color = Color(0.8392157, 0.8392157, 0.8392157, 1) +SideCheckButton/colors/font_hover_color = Color(1, 1, 1, 1) +SideCheckButton/colors/font_hover_pressed_color = Color(1, 1, 1, 1) +SideCheckButton/colors/font_pressed_color = Color(0.8392157, 0.8392157, 0.8392157, 1) +SideCheckButton/styles/hover = ExtResource("5_78ak8") +SideCheckButton/styles/hover_pressed = ExtResource("4_u1sfq") +SideCheckButton/styles/normal = ExtResource("5_78ak8") +SideCheckButton/styles/pressed = ExtResource("4_u1sfq") StartWaveLabel/base_type = &"Label" VersionLabel/base_type = &"Label" VersionLabel/colors/font_color = Color(0.85, 0.85, 0.85, 0.7) diff --git a/button_patch.png b/button_patch.png new file mode 100644 index 0000000000000000000000000000000000000000..b9124dfb46dd426ec35789ea0926cf83dc002e02 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?7>k44ofy`glX=O&z+ms` z;us<^H8~|AAwi>L%fIst%wOKypE}Xu&&adkfJB^{jl`te=V}rYKtL(w6oW>Swahb* ioQ8>wjRh8r3_H&Amxaph+rz-Xz~JfX=d#Wzp$PyvqA6?u literal 0 HcmV?d00001 diff --git a/button_patch.png.import b/button_patch.png.import new file mode 100644 index 0000000..f0c7941 --- /dev/null +++ b/button_patch.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://broabvnrwp73t" +path="res://.godot/imported/button_patch.png-22aba966b297663456907901b6cbce38.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://button_patch.png" +dest_files=["res://.godot/imported/button_patch.png-22aba966b297663456907901b6cbce38.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/button_style_box_normal.tres b/button_style_box_normal.tres new file mode 100644 index 0000000..90fae39 --- /dev/null +++ b/button_style_box_normal.tres @@ -0,0 +1,10 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://bgxt37xw4tma6"] + +[ext_resource type="Texture2D" uid="uid://broabvnrwp73t" path="res://button_patch.png" id="1_iolpp"] + +[resource] +texture = ExtResource("1_iolpp") +texture_margin_left = 4.0 +texture_margin_top = 4.0 +texture_margin_right = 4.0 +texture_margin_bottom = 4.0 diff --git a/card_description_ui.tscn b/card_description_ui.tscn index 16b7df1..9bb7ac7 100644 --- a/card_description_ui.tscn +++ b/card_description_ui.tscn @@ -24,6 +24,7 @@ text = "LABEL_CARD_DESCRIPTION" [node name="DescriptionText" type="RichTextLabel" parent="."] auto_translate_mode = 2 +clip_contents = false layout_mode = 2 size_flags_vertical = 3 bbcode_enabled = true diff --git a/energy_pips.gd b/energy_pips.gd new file mode 100644 index 0000000..5515903 --- /dev/null +++ b/energy_pips.gd @@ -0,0 +1,24 @@ +class_name EnergyPips +extends Control + +@export var tex: TextureRect + +var energy: int : + get(): + return energy + set(value): + energy = value + if energy == max_energy: + tex.texture.region.position.x = 0.0 + elif energy > 0: + tex.texture.region.position.x = 21.0 * floori(lerp(11, 1, float(energy) / max_energy)) + else: + tex.texture.region.position.x = 21.0 * 12 + + +var max_energy: int : + get(): + return max_energy + set(value): + max_energy = value + energy = max_energy diff --git a/energy_pips.gd.uid b/energy_pips.gd.uid new file mode 100644 index 0000000..1a4687a --- /dev/null +++ b/energy_pips.gd.uid @@ -0,0 +1 @@ +uid://cvdb5y5wmkvmm diff --git a/energy_pips.tscn b/energy_pips.tscn new file mode 100644 index 0000000..986f736 --- /dev/null +++ b/energy_pips.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=3 uid="uid://q73cllewm7pj"] + +[ext_resource type="Script" uid="uid://cvdb5y5wmkvmm" path="res://energy_pips.gd" id="1_6l017"] +[ext_resource type="Texture2D" uid="uid://h1m3ss2ln5hq" path="res://energy_sheet.png" id="2_q2m70"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_46jyx"] +atlas = ExtResource("2_q2m70") +region = Rect2(0, 0, 21, 149) + +[node name="EnergyBar" type="Control" node_paths=PackedStringArray("tex")] +custom_minimum_size = Vector2(149, 21) +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_6l017") +tex = NodePath("TextureRect") + +[node name="TextureRect" type="TextureRect" parent="."] +layout_mode = 0 +offset_top = 21.0 +offset_right = 21.0 +offset_bottom = 170.0 +rotation = -1.5707964 +texture = SubResource("AtlasTexture_46jyx") +stretch_mode = 5 diff --git a/energy_sheet.png b/energy_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..959476202fbe2a9112ac7f4fe4fed21c3a06d0a0 GIT binary patch literal 1393 zcmeAS@N?(olHy`uVBq!ia0y~yU=(CvV3^9m#=yW(f9Tv71_lPk;vjb?hIQv;UNSJS zYJ0jkhE&XXd;4sqw7E!IU_gI$5#z;cqARBB-09XnaZS@9R8#tLnoE&|GlTJWrsr?| ze4ix!@Zg0%eorgq=hxM)%3$=Yt$cL9W=hbh>+<&X|BwB?oxS=yv&!ag0zYeC@3669 zkh5)yxoh?AXQ}i@59Y}`%Y}DVSN!?=c72eS=KcRax8I)4^l68Ui{`BwLuiZa-Fb7v^rru_JB*qkDH8sfYT1~;OZ-vL$*BDHn9(3yE z#qTyXa!hwVe|n*xW9e|mDZ#Eg-Yoj}{hi|GlI$El&px%+T}@X`HP6 ze%_jAw;O-6Fj#Q!wq&)8M9g}Stk0s`Wyj>$pIykd-u$XLxLW4K`s*M8wZao1>e$BL zVCqt}b#gy*GxtW2m3yl4)87;(6jbMcs01h_2{K&3V;RU)mMK{v^&eAioxAba!C~e$ z<8KxM7Yso5S{xGqQ+~(53XR@?%>OpA5Tw2_$NKKGx^wBQ^ta}#r&7vgT+BjkJjmI05Z_kW5tNP7C=1`eh{O4DuRwjw2w`bOzHLjL%+A#NG zi`F*d&t?lbZ_n(UeWB^?nLWPS1!rxTJ99gy?~QXAPNKIZeODw|FWx!TmhXSE_2Qk= zZ28P@p3BhNc>JN_ZOOCIZwe#MmbrbNWXm`E=DCbpj{}aDxou9J%z5)%hFPwW{B6mz z(|os21aY_J7=d)$oz-))%&mC3+T%@gFK#)$uoAIn!-z-4RF@0?Aym{`$D?PV;4wktE8y6TegEZ|pE3#b>$^bcH zvf1Jdb1z=;xzTe3q^hoXb?kQwkSWb3ryU{o{5Y%H{=N{TxY%TU++yd?njm@0S?LeI zfmIfp%?7!5&gz?UK<-UBdkv)ad6wD!-W%sKvd&%20XaN)Gbp5%rA-aHJ+nGLAUN1K zZS&0K+l`k#oPGJqm7be1$se=dr%zR%y=+<9nKa>U^NBjkmo8iOtT3;yUGC3MV-r); eWV6+O*{9cdNjLsfx*+&&t;ucLK6TbwYMYy literal 0 HcmV?d00001 diff --git a/energy_sheet.png.import b/energy_sheet.png.import new file mode 100644 index 0000000..512a03a --- /dev/null +++ b/energy_sheet.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://h1m3ss2ln5hq" +path="res://.godot/imported/energy_sheet.png-cce4e01dae5f3c3cc83f0e4b096ce208.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://energy_sheet.png" +dest_files=["res://.godot/imported/energy_sheet.png-cce4e01dae5f3c3cc83f0e4b096ce208.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/health-Sheet.png b/health-Sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..0222e3478b0f9c09d808813e61b6b2ca12f776d1 GIT binary patch literal 8678 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 i{hSq=AsHALqCT1T1zq6SJHJ*9B void: @@ -25,6 +42,7 @@ func load_main_menu() -> void: game_manager = GameManager.new() game_manager.name = "GameManager" game_manager.root_scene = scene + game_manager.UILayer = UILayer add_child(game_manager) game_manager.switch_to_main_menu.connect(load_main_menu) game_manager.switch_to_single_player.connect(load_singleplayer) diff --git a/main.tscn b/main.tscn index cd78db3..d4fa243 100644 --- a/main.tscn +++ b/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=3 uid="uid://d2k8y13qfvch0"] +[gd_scene load_steps=8 format=3 uid="uid://d2k8y13qfvch0"] [ext_resource type="Script" uid="uid://cx1xj7esl03ui" path="res://main.gd" id="2_h2yge"] [ext_resource type="Texture2D" uid="uid://6frn8lcwwehv" path="res://Assets/TextureAtlases/puppyfruit.png" id="2_lquwl"] @@ -9,15 +9,19 @@ atlas = ExtResource("2_lquwl") region = Rect2(0, 0, 256, 256) +[sub_resource type="ViewportTexture" id="ViewportTexture_1bvp3"] +viewport_path = NodePath("UI") + [sub_resource type="ShaderMaterial" id="ShaderMaterial_272bh"] shader = ExtResource("6_7mycd") shader_parameter/color_depth = 5 shader_parameter/dithering = true shader_parameter/resolution_scale = 1 -[node name="Main" type="Node" node_paths=PackedStringArray("scene", "movies")] +[node name="Main" type="Node" node_paths=PackedStringArray("scene", "ui_viewport", "movies")] script = ExtResource("2_h2yge") scene = NodePath("Scene") +ui_viewport = NodePath("UI") movies = NodePath("Movies") metadata/_custom_type_script = "uid://cx1xj7esl03ui" @@ -76,8 +80,23 @@ color = Color(0.192157, 0.415686, 0.223529, 1) [node name="Scene" type="Node" parent="."] +[node name="UI" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(320, 240) + [node name="CanvasLayer" type="CanvasLayer" parent="."] -layer = 2 +layer = 3 + +[node name="TextureRect" type="TextureRect" parent="CanvasLayer"] +texture_filter = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = SubResource("ViewportTexture_1bvp3") +expand_mode = 1 [node name="ColorRect2" type="ColorRect" parent="CanvasLayer"] material = SubResource("ShaderMaterial_272bh") diff --git a/pane_style_box.tres b/pane_style_box.tres new file mode 100644 index 0000000..ecaa7d3 --- /dev/null +++ b/pane_style_box.tres @@ -0,0 +1,10 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://bfuea1sjymo8g"] + +[ext_resource type="Texture2D" uid="uid://b0d2fesjkbawy" path="res://panel_patch.png" id="1_o1mxl"] + +[resource] +texture = ExtResource("1_o1mxl") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 diff --git a/panel_patch.png b/panel_patch.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a43146a7912b8cd7232d389247afab0003c7c0 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4wWz`#)S`biA~0|R4mkh>GZx^prw85kIxJY5_^ zG$tmeBqSuSV jTO=_kGc&);?E0wzT|tZYHnqEnS}ua zKD3*im-BD`oBKte!QX10KL6g^b;%qD^k>|cot|o*#eTqj&FimE&+-eL5OPrPW@yx5 zWZA?r${7uVVUrGK-Iu-o)hdhqKtWvtC`T|bF#LbQH|;gI;Ms56D?uWju6{1-oD!M< D*Wu_m literal 0 HcmV?d00001 diff --git a/panel_tex.png.import b/panel_tex.png.import new file mode 100644 index 0000000..5987267 --- /dev/null +++ b/panel_tex.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5626mx5het1y" +path="res://.godot/imported/panel_tex.png-00e53fe522b0b0e4a7be462402eb65cf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://panel_tex.png" +dest_files=["res://.godot/imported/panel_tex.png-00e53fe522b0b0e4a7be462402eb65cf.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/remix_table.gd b/remix_table.gd index 628bf3e..7591324 100644 --- a/remix_table.gd +++ b/remix_table.gd @@ -18,6 +18,7 @@ func _on_static_body_3d_button_interacted(_value: int, callback: Hero) -> void: for card: Card in callback.hand.contents: card_array.append(card) menu.hero = reply_player + menu.set_money(reply_player.currency) menu.populate_feature_slots() menu.add_option(card_array) menu.cards_remixed.connect(output) diff --git a/shield_ui.tscn b/shield_ui.tscn new file mode 100644 index 0000000..ff1f676 --- /dev/null +++ b/shield_ui.tscn @@ -0,0 +1,201 @@ +[gd_scene load_steps=22 format=3 uid="uid://cqslp83lf0ku0"] + +[ext_resource type="Script" uid="uid://kiivev1q63p0" path="res://ShieldUI.gd" id="1_aa64g"] +[ext_resource type="Texture2D" uid="uid://bv3alwpq8esky" path="res://health_border.png" id="2_lvnxo"] +[ext_resource type="Texture2D" uid="uid://d0yfidlyfyxff" path="res://health-Sheet.png" id="3_uoync"] +[ext_resource type="Texture2D" uid="uid://bifqfvhsu4c2f" path="res://health_hit-Sheet.png" id="4_yanml"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_5gv4u"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 0, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ye2cs"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 66, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gmtb0"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 132, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ylmjw"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 198, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ulao6"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 264, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_usluy"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 330, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kgv6k"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 396, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ymret"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 462, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d35xv"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 528, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yyjyl"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 594, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_p3fdm"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 660, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2xxhe"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 726, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8cwn3"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 792, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_q14re"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 858, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nmmm8"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 924, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vp71v"] +atlas = ExtResource("3_uoync") +region = Rect2(0, 990, 66, 66) + +[sub_resource type="AtlasTexture" id="AtlasTexture_slxus"] +atlas = ExtResource("4_yanml") +region = Rect2(0, 0, 66, 66) + +[node name="ShieldUI" type="Control" node_paths=PackedStringArray("cells", "hit_glow", "fade_timer")] +modulate = Color(1, 1, 1, 0) +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_aa64g") +cells = [NodePath("Border/Cell1"), NodePath("Border/Cell2"), NodePath("Border/Cell3"), NodePath("Border/Cell4"), NodePath("Border/Cell5"), NodePath("Border/Cell6"), NodePath("Border/Cell7"), NodePath("Border/Cell8"), NodePath("Border/Cell9"), NodePath("Border/Cell10"), NodePath("Border/Cell11"), NodePath("Border/Cell12"), NodePath("Border/Cell13"), NodePath("Border/Cell14"), NodePath("Border/Cell15"), NodePath("Border/Cell16")] +hit_glow = NodePath("HitGlow") +fade_timer = NodePath("Timer") + +[node name="Border" type="TextureRect" parent="."] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("2_lvnxo") +stretch_mode = 5 + +[node name="Cell1" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_5gv4u") + +[node name="Cell2" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_ye2cs") + +[node name="Cell3" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_gmtb0") + +[node name="Cell4" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_ylmjw") + +[node name="Cell5" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_ulao6") + +[node name="Cell6" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_usluy") + +[node name="Cell7" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_kgv6k") + +[node name="Cell8" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_ymret") + +[node name="Cell9" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_d35xv") + +[node name="Cell10" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_yyjyl") + +[node name="Cell11" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_p3fdm") + +[node name="Cell12" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_2xxhe") + +[node name="Cell13" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_8cwn3") + +[node name="Cell14" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_q14re") + +[node name="Cell15" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_nmmm8") + +[node name="Cell16" type="TextureRect" parent="Border"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_vp71v") + +[node name="HitGlow" type="TextureRect" parent="."] +visible = false +modulate = Color(1, 1, 1, 0.8) +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_slxus") +stretch_mode = 5 + +[node name="Timer" type="Timer" parent="."] +wait_time = 2.0 +one_shot = true + +[connection signal="timeout" from="Timer" to="." method="fade_out"] diff --git a/shield_ui_test.gd b/shield_ui_test.gd new file mode 100644 index 0000000..628850f --- /dev/null +++ b/shield_ui_test.gd @@ -0,0 +1,24 @@ +extends Control + +@export var shield: ShieldUI +@export var lives_bar: LivesBar +@export var damage_label: Label + +var damage: int = 1 + +func increase_damage() -> void: + damage += 1 + damage_label.text = str(damage) + + +func decrease_damage() -> void: + damage -= 1 + if damage < 1: + damage = 1 + damage_label.text = str(damage) + + +func hit() -> void: + shield.take_damage(damage) + for x: int in damage: + lives_bar.take_life() diff --git a/shield_ui_test.gd.uid b/shield_ui_test.gd.uid new file mode 100644 index 0000000..38fcbe3 --- /dev/null +++ b/shield_ui_test.gd.uid @@ -0,0 +1 @@ +uid://biuqlk7ulx83 diff --git a/shield_ui_test.tscn b/shield_ui_test.tscn new file mode 100644 index 0000000..a4e7392 --- /dev/null +++ b/shield_ui_test.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=4 format=3 uid="uid://3t3kdhagmayy"] + +[ext_resource type="Script" uid="uid://biuqlk7ulx83" path="res://shield_ui_test.gd" id="1_uywwg"] +[ext_resource type="PackedScene" uid="uid://cqslp83lf0ku0" path="res://shield_ui.tscn" id="2_iketu"] +[ext_resource type="PackedScene" uid="uid://24x18qxqhy0i" path="res://Scenes/UI/lives_bar.tscn" id="3_eamca"] + +[node name="Control" type="Control" node_paths=PackedStringArray("shield", "lives_bar", "damage_label")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_uywwg") +shield = NodePath("ShieldUI") +lives_bar = NodePath("LivesBar") +damage_label = NodePath("Controls/Label") + +[node name="Controls" type="HBoxContainer" parent="."] +layout_mode = 0 +offset_left = 251.0 +offset_top = 13.0 +offset_right = 311.00003 +offset_bottom = 29.0 + +[node name="Label" type="Label" parent="Controls"] +layout_mode = 2 +text = "1" + +[node name="VBoxContainer" type="HBoxContainer" parent="Controls"] +layout_mode = 2 + +[node name="Button" type="Button" parent="Controls/VBoxContainer"] +layout_mode = 2 +text = "<" + +[node name="Button2" type="Button" parent="Controls/VBoxContainer"] +layout_mode = 2 +text = ">" + +[node name="Button" type="Button" parent="Controls"] +layout_mode = 2 +text = "hit" + +[node name="ShieldUI" parent="." instance=ExtResource("2_iketu")] +layout_mode = 0 +offset_left = 130.0 +offset_top = 31.0 +offset_right = 130.0 +offset_bottom = 31.0 + +[node name="LivesBar" parent="." instance=ExtResource("3_eamca")] +layout_mode = 1 +offset_left = 69.0 +offset_top = 115.0 +offset_right = 69.0 +offset_bottom = 115.0 + +[connection signal="pressed" from="Controls/VBoxContainer/Button" to="." method="decrease_damage"] +[connection signal="pressed" from="Controls/VBoxContainer/Button2" to="." method="increase_damage"] +[connection signal="pressed" from="Controls/Button" to="." method="hit"] diff --git a/sidea_patch.png b/sidea_patch.png new file mode 100644 index 0000000000000000000000000000000000000000..571de49e25c3a0fe652d62520c3bda438924a679 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0y~yU~phyU=ZbCV_;zTruAYL0|NtNage(c!@6@aFBupZ zCVIL!hD5Z!ow1SkfC3Loa*M_#Lq6?Pg|H+Ut1gozN=BEQXL@W~zv-g*kBh-G_*m~; zzga0?v^Y>$C`0jy+mgf|^B!FZUYY;4+==r;qF|ngQ2X#?n~G%T*J`YU}lt;o#n#7z`)??>gTe~ HDWM4f5Asea literal 0 HcmV?d00001 diff --git a/sidea_patch.png.import b/sidea_patch.png.import new file mode 100644 index 0000000..0bbfde4 --- /dev/null +++ b/sidea_patch.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cp3yr2676jkjx" +path="res://.godot/imported/sidea_patch.png-6cae89542c56b09a27871bf910466490.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sidea_patch.png" +dest_files=["res://.godot/imported/sidea_patch.png-6cae89542c56b09a27871bf910466490.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/sideb_patch.png b/sideb_patch.png new file mode 100644 index 0000000000000000000000000000000000000000..25d6f29b780270fde82f9b16344e6494ccf066df GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0y~yU~phyU=ZbCV_;zTruAYL0|NtNage(c!@6@aFBupZ z`aE46Ln2y}QyiF-xWD{U{(N60CMiYYS;NFe#>7UKoM3^_xQ_q z1HZ88w1_NVKUKhRLhy8pZ_$q9HbqO4mNYz+c>IIGjY}dk!6l6`#b6dI+bu?BUboE* zyAEWCNhBtia4+EQNoy2j0}FYaU^*e_v%%WtPVnIu9RiyUc*qE|Ff5p5&N?aZQU(J9 O1B0ilpUXO@geCyK-%1Mr literal 0 HcmV?d00001 diff --git a/sideb_patch.png.import b/sideb_patch.png.import new file mode 100644 index 0000000..42116dc --- /dev/null +++ b/sideb_patch.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bm3a5gkj0spil" +path="res://.godot/imported/sideb_patch.png-c386755922b23d48adc52790a1e6ca6d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sideb_patch.png" +dest_files=["res://.godot/imported/sideb_patch.png-c386755922b23d48adc52790a1e6ca6d.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/switch_side_a_style_box.tres b/switch_side_a_style_box.tres new file mode 100644 index 0000000..aaf05cd --- /dev/null +++ b/switch_side_a_style_box.tres @@ -0,0 +1,10 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://cm3wsvk3woory"] + +[ext_resource type="Texture2D" uid="uid://cp3yr2676jkjx" path="res://sidea_patch.png" id="1_bunl1"] + +[resource] +texture = ExtResource("1_bunl1") +texture_margin_left = 5.0 +texture_margin_top = 5.0 +texture_margin_right = 10.0 +texture_margin_bottom = 5.0 diff --git a/switch_side_b_style_box.tres b/switch_side_b_style_box.tres new file mode 100644 index 0000000..68953c6 --- /dev/null +++ b/switch_side_b_style_box.tres @@ -0,0 +1,10 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://jnnnhb3i2265"] + +[ext_resource type="Texture2D" uid="uid://bm3a5gkj0spil" path="res://sideb_patch.png" id="1_f68ef"] + +[resource] +texture = ExtResource("1_f68ef") +texture_margin_left = 10.0 +texture_margin_top = 5.0 +texture_margin_right = 5.0 +texture_margin_bottom = 5.0 diff --git a/track_editor.gd b/track_editor.gd index b5b5d52..589d12a 100644 --- a/track_editor.gd +++ b/track_editor.gd @@ -10,11 +10,17 @@ signal cards_remixed(cards_consumed: Array[Card], cards_created: Array[Card], am @export var weapon_parts: HBoxContainer @export var drop_down: OptionButton @export var card_desc: CardDescriptionUI -@export var check_button: CheckButton @export var price_panel_scene: PackedScene @export var price_label: Label +@export var money_label: Label +@export var confirm_button: Button +@export var switch_button: Button const FEATURE_SLOTS: int = 6 +const PRICE_STR: String = "LABEL_REMIX_PRICE" +const MONEY_STR: String = "LABEL_REMIX_CURRENCY" +const SIDE_A_STR: String = "BUTTON_VIEW_TOWER" +const SIDE_B_STR: String = "BUTTON_VIEW_WEAPON" var hero: Hero var dragging: bool = false @@ -32,6 +38,7 @@ var cards: Array[Card] var card_selected: Card var temp_card: Card var cost: int = 0 +var check_button_pressed: bool = false func _ready() -> void: @@ -42,7 +49,20 @@ func _ready() -> void: weapon_parts.mouse_entered.connect(set_hovered_drop_slot.bind(-1, 1)) tower_parts.mouse_exited.connect(unset_hovered_drop_slot) weapon_parts.mouse_exited.connect(unset_hovered_drop_slot) - price_label.text = "$" + str(cost) + price_label.text = tr(PRICE_STR) + str(cost) + + +func set_money(money: int) -> void: + money_label.text = tr(MONEY_STR) + str(money) + + +func press_check_button(value: bool) -> void: + check_button_pressed = value + if check_button_pressed: + switch_button.text = tr(SIDE_B_STR) + else: + switch_button.text = tr(SIDE_A_STR) + card_desc.set_card(temp_card, check_button_pressed) func _process(_delta: float) -> void: @@ -71,7 +91,7 @@ func select_card(option: int) -> void: temp_card = card_selected.duplicate() temp_card.tower_stats = temp_card.tower_stats.get_duplicate() temp_card.weapon_stats = temp_card.weapon_stats.get_duplicate() - card_desc.set_card(temp_card, check_button.button_pressed) + card_desc.set_card(temp_card, check_button_pressed) for feature: Feature in temp_card.tower_stats.features: add_feature(feature, 0, false) for feature: Feature in temp_card.weapon_stats.features: @@ -158,10 +178,10 @@ func add_feature(feature: Feature, track: int, modify_resource: bool = true) -> temp_card.tower_stats.features.append(feature) tower_prices[tower_feature_uis.size() - 2].visible = false cost += Data.slot_prices[tower_feature_uis.size() - 2] - price_label.text = "$" + str(cost) - card_desc.set_card(temp_card, check_button.button_pressed) + price_label.text = tr(PRICE_STR) + str(cost) + card_desc.set_card(temp_card, check_button_pressed) if cost > hero.currency: - $PanelContainer/VBoxContainer/InfoPanel/VBoxContainer2/Controls/ConfirmButton.disabled = true + confirm_button.disabled = true elif track == 1: if hovered_drop_slot > 0 and hovered_drop_slot < weapon_feature_uis.size(): change_feature(weapon_feature_uis[hovered_drop_slot], feature, 1) @@ -174,10 +194,10 @@ func add_feature(feature: Feature, track: int, modify_resource: bool = true) -> temp_card.weapon_stats.features.append(feature) weapon_prices[weapon_feature_uis.size() - 2].visible = false cost += Data.slot_prices[weapon_feature_uis.size() - 2] - price_label.text = "$" + str(cost) - card_desc.set_card(temp_card, check_button.button_pressed) + price_label.text = tr(PRICE_STR) + str(cost) + card_desc.set_card(temp_card, check_button_pressed) if cost > hero.currency: - $PanelContainer/VBoxContainer/InfoPanel/VBoxContainer2/Controls/ConfirmButton.disabled = true + confirm_button.disabled = true func change_feature(existing_feature: FeatureUI, new_feature: Feature, track: int) -> void: @@ -188,7 +208,7 @@ func change_feature(existing_feature: FeatureUI, new_feature: Feature, track: in elif track == 1: var i: int = weapon_feature_uis.find(existing_feature) temp_card.weapon_stats.features[i] = new_feature - card_desc.set_card(temp_card, check_button.button_pressed) + card_desc.set_card(temp_card, check_button_pressed) func attach_feat_to_mouse(feature: Feature) -> void: @@ -236,7 +256,3 @@ func _on_confirm_button_pressed() -> void: cards_to_add.append(temp_card) cards_remixed.emit(cards_to_remove, cards_to_add, cost) queue_free() - - -func _on_check_button_toggled(toggled_on: bool) -> void: - card_desc.set_card(temp_card, toggled_on) diff --git a/track_editor.tscn b/track_editor.tscn index 14ef9a3..8960094 100644 --- a/track_editor.tscn +++ b/track_editor.tscn @@ -1,11 +1,13 @@ -[gd_scene load_steps=5 format=3 uid="uid://bajli4d3nqwll"] +[gd_scene load_steps=7 format=3 uid="uid://bajli4d3nqwll"] [ext_resource type="PackedScene" uid="uid://c8xdsg6gtwvh3" path="res://feature_ui.tscn" id="1_y6tpq"] [ext_resource type="Script" uid="uid://mrv5vrlxfc13" path="res://track_editor.gd" id="1_yrnbk"] [ext_resource type="PackedScene" uid="uid://dekexkjl37dvh" path="res://price_panel.tscn" id="3_48m6c"] [ext_resource type="PackedScene" uid="uid://cmlpmr78tmo6p" path="res://card_description_ui.tscn" id="3_q6wwl"] +[ext_resource type="Texture2D" uid="uid://cll2vlvf1h454" path="res://track_one_patch.png" id="4_dya4i"] +[ext_resource type="Texture2D" uid="uid://cvhkk22pxxuqj" path="res://track_two_patch.png" id="5_4gmyw"] -[node name="Control" type="Control" node_paths=PackedStringArray("drag_feature", "sample_library", "tower_parts", "weapon_parts", "drop_down", "card_desc", "check_button", "price_label")] +[node name="TrackEditor" type="Control" node_paths=PackedStringArray("drag_feature", "sample_library", "tower_parts", "weapon_parts", "drop_down", "card_desc", "price_label", "money_label", "confirm_button", "switch_button")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -16,21 +18,23 @@ script = ExtResource("1_yrnbk") drag_feature = NodePath("FeatureUI") sample_library = NodePath("PanelContainer/VBoxContainer/InfoPanel/VBoxContainer2/SamplePanel/ScrollContainer/SampleLibrary") feature_scene = ExtResource("1_y6tpq") -tower_parts = NodePath("PanelContainer/VBoxContainer/VBoxContainer/TowerTrack/TowerParts") -weapon_parts = NodePath("PanelContainer/VBoxContainer/VBoxContainer/WeaponTrack/WeaponParts") -drop_down = NodePath("PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge/CassetteSelector/OptionButton") +tower_parts = NodePath("PanelContainer/VBoxContainer/Tracks/TowerTrack/MarginContainer/MarginContainer/TowerParts") +weapon_parts = NodePath("PanelContainer/VBoxContainer/Tracks/WeaponTrack/MarginContainer/MarginContainer/WeaponParts") +drop_down = NodePath("PanelContainer/VBoxContainer/Tracks/SourceCartridge/CassetteSelector/OptionButton") card_desc = NodePath("PanelContainer/VBoxContainer/InfoPanel/VBoxContainer/DescriptionVBox") -check_button = NodePath("PanelContainer/VBoxContainer/InfoPanel/VBoxContainer/CheckButton") price_panel_scene = ExtResource("3_48m6c") -price_label = NodePath("PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge/MarginContainer/Label") +price_label = NodePath("PanelContainer/VBoxContainer/Tracks/SourceCartridge/MarginContainer/VBoxContainer/PriceLabel") +money_label = NodePath("PanelContainer/VBoxContainer/Tracks/SourceCartridge/MarginContainer/VBoxContainer/MoneyLabel") +confirm_button = NodePath("PanelContainer/VBoxContainer/InfoPanel/VBoxContainer2/Controls/ConfirmButton") +switch_button = NodePath("PanelContainer/VBoxContainer/InfoPanel/VBoxContainer/Button") [node name="PanelContainer" type="PanelContainer" parent="."] layout_mode = 1 anchors_preset = -1 -anchor_left = 0.04 -anchor_top = 0.04 -anchor_right = 0.96 -anchor_bottom = 0.96 +anchor_left = 0.02 +anchor_top = 0.02 +anchor_right = 0.98 +anchor_bottom = 0.98 grow_horizontal = 2 grow_vertical = 2 @@ -43,81 +47,124 @@ text = "TITLE_REMIX" horizontal_alignment = 1 vertical_alignment = 1 -[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer"] +[node name="Tracks" type="VBoxContainer" parent="PanelContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 -[node name="SourceCartridge" type="HBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer"] +[node name="SourceCartridge" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks"] layout_mode = 2 size_flags_vertical = 3 -[node name="MarginContainer2" type="MarginContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge"] +[node name="MarginContainer2" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/SourceCartridge"] layout_mode = 2 size_flags_horizontal = 3 -[node name="CassetteSelector" type="VBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge"] +[node name="CassetteSelector" type="VBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/SourceCartridge"] layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge/CassetteSelector"] -layout_mode = 2 -text = "LABEL_CASSETTE_SELECTOR" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="OptionButton" type="OptionButton" parent="PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge/CassetteSelector"] +[node name="OptionButton" type="OptionButton" parent="PanelContainer/VBoxContainer/Tracks/SourceCartridge/CassetteSelector"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 alignment = 1 -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge"] +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/SourceCartridge"] layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge/MarginContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/SourceCartridge/MarginContainer"] +layout_mode = 2 + +[node name="MoneyLabel" type="Label" parent="PanelContainer/VBoxContainer/Tracks/SourceCartridge/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 1 +text = "Coins: $0" horizontal_alignment = 1 vertical_alignment = 1 -[node name="TowerTrack" type="HBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer"] +[node name="PriceLabel" type="Label" parent="PanelContainer/VBoxContainer/Tracks/SourceCartridge/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 1 +text = "Price: $0" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="TowerTrack" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks"] layout_mode = 2 size_flags_vertical = 3 -[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/TowerTrack"] +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack"] layout_mode = 2 size_flags_horizontal = 3 text = "LABEL_TOWER_TRACK" horizontal_alignment = 1 vertical_alignment = 1 -[node name="TowerParts" type="HBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/TowerTrack"] +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 4.0 + +[node name="NinePatchRect" type="NinePatchRect" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack/MarginContainer"] +layout_mode = 2 +texture = ExtResource("5_4gmyw") +patch_margin_left = 1 +patch_margin_top = 1 +patch_margin_right = 1 +patch_margin_bottom = 1 + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack/MarginContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="TowerParts" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack/MarginContainer/MarginContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -size_flags_stretch_ratio = 4.0 -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/VBoxContainer"] +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks"] layout_mode = 2 theme_override_constants/margin_top = 10 -[node name="WeaponTrack" type="HBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer"] +[node name="WeaponTrack" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks"] layout_mode = 2 size_flags_vertical = 3 -[node name="Label2" type="Label" parent="PanelContainer/VBoxContainer/VBoxContainer/WeaponTrack"] +[node name="Label2" type="Label" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack"] layout_mode = 2 size_flags_horizontal = 3 text = "LABEL_WEAPON_TRACK" horizontal_alignment = 1 vertical_alignment = 1 -[node name="WeaponParts" type="HBoxContainer" parent="PanelContainer/VBoxContainer/VBoxContainer/WeaponTrack"] +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 4.0 + +[node name="NinePatchRect" type="NinePatchRect" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack/MarginContainer"] +layout_mode = 2 +texture = ExtResource("4_dya4i") +patch_margin_left = 1 +patch_margin_top = 1 +patch_margin_right = 1 +patch_margin_bottom = 1 + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack/MarginContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="WeaponParts" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack/MarginContainer/MarginContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -size_flags_stretch_ratio = 4.0 [node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer"] layout_mode = 2 @@ -133,10 +180,12 @@ size_flags_stretch_ratio = 2.0 layout_mode = 2 size_flags_horizontal = 3 -[node name="CheckButton" type="CheckButton" parent="PanelContainer/VBoxContainer/InfoPanel/VBoxContainer"] +[node name="Button" type="Button" parent="PanelContainer/VBoxContainer/InfoPanel/VBoxContainer"] layout_mode = 2 size_flags_horizontal = 4 -button_pressed = true +theme_type_variation = &"SideCheckButton" +toggle_mode = true +text = "Side A" [node name="DescriptionVBox" parent="PanelContainer/VBoxContainer/InfoPanel/VBoxContainer" instance=ExtResource("3_q6wwl")] layout_mode = 2 @@ -192,7 +241,7 @@ grow_horizontal = 1 grow_vertical = 1 mouse_filter = 2 -[connection signal="item_selected" from="PanelContainer/VBoxContainer/VBoxContainer/SourceCartridge/CassetteSelector/OptionButton" to="." method="select_card"] -[connection signal="toggled" from="PanelContainer/VBoxContainer/InfoPanel/VBoxContainer/CheckButton" to="." method="_on_check_button_toggled"] +[connection signal="item_selected" from="PanelContainer/VBoxContainer/Tracks/SourceCartridge/CassetteSelector/OptionButton" to="." method="select_card"] +[connection signal="toggled" from="PanelContainer/VBoxContainer/InfoPanel/VBoxContainer/Button" to="." method="press_check_button"] [connection signal="pressed" from="PanelContainer/VBoxContainer/InfoPanel/VBoxContainer2/Controls/CancelButton" to="." method="_on_cancel_button_pressed"] [connection signal="pressed" from="PanelContainer/VBoxContainer/InfoPanel/VBoxContainer2/Controls/ConfirmButton" to="." method="_on_confirm_button_pressed"] diff --git a/track_one_patch.png b/track_one_patch.png new file mode 100644 index 0000000000000000000000000000000000000000..6fc3dc3465df691b613b08de673616b6d7e5ca78 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0y~yU|k44ofy`glX=O&z@X&m z;uyj)Gx^WdqhIGUa?OyCkdXKn&81|~bNs%sfq{Vm14BIvYq9gq|KAuG7#KWV{an^L HB{Ts5!7Lle literal 0 HcmV?d00001 diff --git a/track_one_patch.png.import b/track_one_patch.png.import new file mode 100644 index 0000000..831a2ce --- /dev/null +++ b/track_one_patch.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cll2vlvf1h454" +path="res://.godot/imported/track_one_patch.png-5a380010e299cd637294c2754d938c6c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://track_one_patch.png" +dest_files=["res://.godot/imported/track_one_patch.png-5a380010e299cd637294c2754d938c6c.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/track_two_patch.png b/track_two_patch.png new file mode 100644 index 0000000000000000000000000000000000000000..06a7879ec8d7b2fecd1f4b31d483a8ef74ccf77c GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0y~yU|k44ofy`glX=O&z##AG z;uyj)Gg%~Z!T0%$Tr(sjBqXfXxJrU(iHWHU>5o|E2i#!NVqjok@O1TaS?83{1ON%n B7lQx* literal 0 HcmV?d00001 diff --git a/track_two_patch.png.import b/track_two_patch.png.import new file mode 100644 index 0000000..41bf975 --- /dev/null +++ b/track_two_patch.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvhkk22pxxuqj" +path="res://.godot/imported/track_two_patch.png-c2aa8b915c0063c9cb99d93fc0c36ee4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://track_two_patch.png" +dest_files=["res://.godot/imported/track_two_patch.png-c2aa8b915c0063c9cb99d93fc0c36ee4.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