added wave viewer which required adding determinism to wave generation
This commit is contained in:
@@ -18,7 +18,6 @@ spawn_power = 6
|
|||||||
health = 120
|
health = 120
|
||||||
penalty = 7
|
penalty = 7
|
||||||
movement_speed = 1.0
|
movement_speed = 1.0
|
||||||
spawn_cooldown = 1.0
|
|
||||||
common_group = 5
|
common_group = 5
|
||||||
common_cost = 2
|
common_cost = 2
|
||||||
uncommon_group = 10
|
uncommon_group = 10
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ extends CharacterBody3D
|
|||||||
|
|
||||||
signal ready_state_changed(state: bool)
|
signal ready_state_changed(state: bool)
|
||||||
|
|
||||||
|
@export var wave_preview_scene: PackedScene
|
||||||
@export var hero_class: HeroClass
|
@export var hero_class: HeroClass
|
||||||
@export var camera: Camera3D
|
@export var camera: Camera3D
|
||||||
@export var gun_camera: Camera3D
|
@export var gun_camera: Camera3D
|
||||||
@@ -184,6 +185,7 @@ func increment_selected() -> void:
|
|||||||
if hand_selected_index >= hand.size:
|
if hand_selected_index >= hand.size:
|
||||||
hand_selected_index = 0
|
hand_selected_index = 0
|
||||||
hud.hot_wheel.update_cassettes(get_wheel_cards())
|
hud.hot_wheel.update_cassettes(get_wheel_cards())
|
||||||
|
hud.show_features(selected_card)
|
||||||
|
|
||||||
|
|
||||||
func decrement_selected() -> void:
|
func decrement_selected() -> void:
|
||||||
@@ -194,6 +196,7 @@ func decrement_selected() -> void:
|
|||||||
if hand_selected_index < 0:
|
if hand_selected_index < 0:
|
||||||
hand_selected_index = hand.size - 1
|
hand_selected_index = hand.size - 1
|
||||||
hud.hot_wheel.update_cassettes(get_wheel_cards())
|
hud.hot_wheel.update_cassettes(get_wheel_cards())
|
||||||
|
hud.show_features(selected_card)
|
||||||
|
|
||||||
|
|
||||||
func get_wheel_cards() -> Array[Card]:
|
func get_wheel_cards() -> Array[Card]:
|
||||||
@@ -243,6 +246,12 @@ func _unhandled_input(event: InputEvent) -> void:
|
|||||||
menu.quit_to_main_menu_pressed.connect(game_manager.scene_switch_main_menu)
|
menu.quit_to_main_menu_pressed.connect(game_manager.scene_switch_main_menu)
|
||||||
menu.closed.connect(unpause)
|
menu.closed.connect(unpause)
|
||||||
hud.add_child(menu)
|
hud.add_child(menu)
|
||||||
|
if event.is_action_pressed("Show Wave Preview"):
|
||||||
|
var wave_preview: WaveViewer = wave_preview_scene.instantiate() as WaveViewer
|
||||||
|
pause()
|
||||||
|
hud.add_child(wave_preview)
|
||||||
|
wave_preview.set_waves(game_manager.pre_generate_waves(), game_manager.wave)
|
||||||
|
wave_preview.closed.connect(unpause)
|
||||||
|
|
||||||
|
|
||||||
func ready_self() -> void:
|
func ready_self() -> void:
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
[gd_scene load_steps=67 format=3 uid="uid://dxgxbtf68lcv5"]
|
[gd_scene load_steps=68 format=3 uid="uid://dxgxbtf68lcv5"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://1fqpoegbdm6n" path="res://PCs/hero.gd" id="1_pihpe"]
|
[ext_resource type="Script" uid="uid://1fqpoegbdm6n" path="res://PCs/hero.gd" id="1_pihpe"]
|
||||||
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="2_dbyo0"]
|
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="2_dbyo0"]
|
||||||
[ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="2_ib0t5"]
|
[ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="2_ib0t5"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://ct6gic4shy5qw" path="res://wave_viewer.tscn" id="2_o55s8"]
|
||||||
[ext_resource type="PackedScene" uid="uid://buvgdem68wtev" path="res://UI/Menus/PauseMenu/pause_menu.tscn" id="3_avnsx"]
|
[ext_resource type="PackedScene" uid="uid://buvgdem68wtev" path="res://UI/Menus/PauseMenu/pause_menu.tscn" id="3_avnsx"]
|
||||||
[ext_resource type="PackedScene" uid="uid://n8ab1cy7ordc" path="res://card_model/3d_card.tscn" id="4_2mqvj"]
|
[ext_resource type="PackedScene" uid="uid://n8ab1cy7ordc" path="res://card_model/3d_card.tscn" id="4_2mqvj"]
|
||||||
[ext_resource type="Script" uid="uid://cij76at0nbs1v" path="res://PCs/view_movement.gd" id="4_mhexa"]
|
[ext_resource type="Script" uid="uid://cij76at0nbs1v" path="res://PCs/view_movement.gd" id="4_mhexa"]
|
||||||
@@ -118,6 +119,7 @@ stream_0/stream = ExtResource("37_kv1mg")
|
|||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
collision_mask = 37
|
collision_mask = 37
|
||||||
script = ExtResource("1_pihpe")
|
script = ExtResource("1_pihpe")
|
||||||
|
wave_preview_scene = ExtResource("2_o55s8")
|
||||||
hero_class = ExtResource("2_dbyo0")
|
hero_class = ExtResource("2_dbyo0")
|
||||||
camera = NodePath("ViewMovement/Head")
|
camera = NodePath("ViewMovement/Head")
|
||||||
gun_camera = NodePath("FirstPersonViewport/Head2")
|
gun_camera = NodePath("FirstPersonViewport/Head2")
|
||||||
|
|||||||
@@ -126,7 +126,6 @@ func _process(_delta: float) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func show_features(cassette: Card) -> void:
|
func show_features(cassette: Card) -> void:
|
||||||
print("shown features")
|
|
||||||
for child: Node in feature_preview.get_children():
|
for child: Node in feature_preview.get_children():
|
||||||
child.queue_free()
|
child.queue_free()
|
||||||
var cols: int = max(cassette.tower_stats.features.size(), cassette.weapon_stats.features.size())
|
var cols: int = max(cassette.tower_stats.features.size(), cassette.weapon_stats.features.size())
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ random_pitch = 1.1
|
|||||||
streams_count = 1
|
streams_count = 1
|
||||||
stream_0/stream = ExtResource("6_6nu57")
|
stream_0/stream = ExtResource("6_6nu57")
|
||||||
|
|
||||||
[node name="singleplayer_lobby" type="Control" node_paths=PackedStringArray("chatbox", "audio_player")]
|
[node name="singleplayer_lobby" type="Control" node_paths=PackedStringArray("audio_player")]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -20,18 +20,8 @@ grow_vertical = 2
|
|||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
script = ExtResource("1_nd17k")
|
script = ExtResource("1_nd17k")
|
||||||
character_select_screen = ExtResource("6_ltm04")
|
character_select_screen = ExtResource("6_ltm04")
|
||||||
chatbox = NodePath("Chatbox")
|
|
||||||
audio_player = NodePath("AudioStreamPlayer")
|
audio_player = NodePath("AudioStreamPlayer")
|
||||||
|
chatbox_scene = ExtResource("3_l8xy3")
|
||||||
[node name="Chatbox" parent="." instance=ExtResource("3_l8xy3")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
anchor_left = 0.02
|
|
||||||
anchor_top = 0.65
|
|
||||||
anchor_right = 0.4
|
|
||||||
anchor_bottom = 0.98
|
|
||||||
grow_horizontal = 1
|
|
||||||
grow_vertical = 1
|
|
||||||
|
|
||||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||||
stream = SubResource("AudioStreamRandomizer_g5har")
|
stream = SubResource("AudioStreamRandomizer_g5har")
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ func _on_static_body_3d_button_interacted(_value: int, callback: Hero) -> void:
|
|||||||
func output(cards_to_remove: Array[Card], cards_to_add: Array[Card], amount_spent: int) -> void:
|
func output(cards_to_remove: Array[Card], cards_to_add: Array[Card], amount_spent: int) -> void:
|
||||||
for card: Card in cards_to_remove:
|
for card: Card in cards_to_remove:
|
||||||
reply_player.hand.contents.erase(card)
|
reply_player.hand.contents.erase(card)
|
||||||
reply_player.check_removal()
|
reply_player.hud.hot_wheel.update_cassettes(reply_player.get_wheel_cards())
|
||||||
for card: Card in cards_to_add:
|
for card: Card in cards_to_add:
|
||||||
reply_player.add_card(card)
|
reply_player.add_card(card)
|
||||||
reply_player.currency -= amount_spent
|
reply_player.currency -= amount_spent
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ signal switch_to_main_menu
|
|||||||
var root_scene: Node
|
var root_scene: Node
|
||||||
var level_scene: PackedScene = load("res://Worlds/GreenPlanet/Levels/Bridge/bridge.tscn")
|
var level_scene: PackedScene = load("res://Worlds/GreenPlanet/Levels/Bridge/bridge.tscn")
|
||||||
var player_scene: PackedScene = load("res://PCs/hero.tscn")
|
var player_scene: PackedScene = load("res://PCs/hero.tscn")
|
||||||
var game_end_scene: PackedScene = load("res://Scenes/Menus/GameEndScreen/game_end_screen.tscn")
|
var game_end_scene: PackedScene = load("res://UI/Menus/GameEndScreen/game_end_screen.tscn")
|
||||||
var connected_players_nodes: Dictionary = {}
|
var connected_players_nodes: Dictionary = {}
|
||||||
var game_active: bool = false
|
var game_active: bool = false
|
||||||
var gamemode: GameMode = null
|
var gamemode: GameMode = null
|
||||||
@@ -157,11 +157,37 @@ func spawn_enemy_wave() -> void:
|
|||||||
wave_started.emit()
|
wave_started.emit()
|
||||||
|
|
||||||
|
|
||||||
|
func pre_generate_waves() -> Array[Wave]:
|
||||||
|
var wave_list: Array[Wave] = []
|
||||||
|
for i: int in range(wave, wave_limit + 1):
|
||||||
|
var spawn_power: int = WaveManager.calculate_spawn_power(i, connected_players_nodes.size())
|
||||||
|
var generated_wave: Wave = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
||||||
|
wave_list.append(generated_wave)
|
||||||
|
return wave_list
|
||||||
|
|
||||||
|
|
||||||
|
func set_wave_to_spawners(wave_thing: Wave, wave_number: int) -> void:
|
||||||
|
var spawners: Array[EnemySpawner] = level.enemy_spawns
|
||||||
|
var ground_spawners: Array[EnemySpawner] = []
|
||||||
|
var air_spawners: Array[EnemySpawner] = []
|
||||||
|
for spawner: EnemySpawner in spawners:
|
||||||
|
if spawner.type == Data.EnemyType.LAND:
|
||||||
|
ground_spawners.append(spawner)
|
||||||
|
else:
|
||||||
|
air_spawners.append(spawner)
|
||||||
|
for card: EnemyCard in wave_thing.enemy_groups:
|
||||||
|
if card.enemy.target_type == Data.EnemyType.LAND:
|
||||||
|
ground_spawners[NoiseRandom.randi_in_range(wave_number, 0, ground_spawners.size() - 1)].add_card(card)
|
||||||
|
else:
|
||||||
|
air_spawners[NoiseRandom.randi_in_range(wave_number, 0, air_spawners.size() - 1)].add_card(card)
|
||||||
|
|
||||||
|
|
||||||
func set_upcoming_wave() -> void:
|
func set_upcoming_wave() -> void:
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
var spawn_power: int = WaveManager.calculate_spawn_power(wave, connected_players_nodes.size())
|
var spawn_power: int = WaveManager.calculate_spawn_power(wave, connected_players_nodes.size())
|
||||||
#var new_wave: Dictionary = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
#var new_wave: Dictionary = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
||||||
var new_wave: Wave = WaveManager.generate_wave(spawn_power, level.enemy_pool, level.enemy_spawns)
|
var new_wave: Wave = WaveManager.generate_wave(spawn_power, level.enemy_pool)
|
||||||
|
set_wave_to_spawners(new_wave, wave)
|
||||||
temp_set_upcoming_wave(new_wave, WaveManager.calculate_pot(wave, connected_players_nodes.size()))
|
temp_set_upcoming_wave(new_wave, WaveManager.calculate_pot(wave, connected_players_nodes.size()))
|
||||||
#networked_set_upcoming_wave.rpc(new_wave, 6 + floori(spawn_power / 70.0))
|
#networked_set_upcoming_wave.rpc(new_wave, 6 + floori(spawn_power / 70.0))
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,9 @@ class_name Lobby
|
|||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
@export var character_select_screen: PackedScene
|
@export var character_select_screen: PackedScene
|
||||||
#@export var scoreboard: Scoreboard
|
|
||||||
@export var chatbox: Chatbox
|
@export var chatbox: Chatbox
|
||||||
#@export var ready_button: Button
|
|
||||||
@export var audio_player: AudioStreamPlayer
|
@export var audio_player: AudioStreamPlayer
|
||||||
|
@export var chatbox_scene: PackedScene
|
||||||
|
|
||||||
var game_manager: GameManager
|
var game_manager: GameManager
|
||||||
var gamemode: GameMode = null
|
var gamemode: GameMode = null
|
||||||
@@ -14,19 +13,19 @@ var connected_players_profiles: Dictionary = {}
|
|||||||
var enet_peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new()
|
var enet_peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new()
|
||||||
|
|
||||||
func setup_the_ui() -> void:
|
func setup_the_ui() -> void:
|
||||||
#scoreboard.unready_all_players()
|
chatbox = chatbox_scene.instantiate()
|
||||||
#scoreboard.set_visible(true)
|
game_manager.UILayer.add_child(chatbox)
|
||||||
loadout_editor.set_visible(true)
|
|
||||||
chatbox.set_visible(true)
|
chatbox.set_visible(true)
|
||||||
chatbox.game_manager = game_manager
|
chatbox.game_manager = game_manager
|
||||||
#ready_button.set_visible(true)
|
chatbox.anchor_bottom = 0.98
|
||||||
|
chatbox.anchor_left = 0.02
|
||||||
|
chatbox.anchor_top = 0.7
|
||||||
|
chatbox.anchor_right = 0.4
|
||||||
|
|
||||||
|
|
||||||
func start_game() -> void:
|
func start_game() -> void:
|
||||||
game_manager.setup()
|
game_manager.setup()
|
||||||
#scoreboard.set_visible(false)
|
|
||||||
loadout_editor.queue_free()
|
loadout_editor.queue_free()
|
||||||
#ready_button.set_visible(false)
|
|
||||||
game_manager.connected_player_profiles = connected_players_profiles
|
game_manager.connected_player_profiles = connected_players_profiles
|
||||||
game_manager.start()
|
game_manager.start()
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ static func set_seed(value: int) -> void:
|
|||||||
noise.fractal_gain = 0.1
|
noise.fractal_gain = 0.1
|
||||||
noise.seed = value
|
noise.seed = value
|
||||||
|
|
||||||
|
## output_end is inclusive
|
||||||
static func randi_in_range(sample: float, output_start: int, output_end: int) -> int:
|
static func randi_in_range(sample: float, output_start: int, output_end: int) -> int:
|
||||||
return floori(remap(noise.get_noise_1d(sample), -1.0, 1.0, float(output_start), float(output_end + 1)))
|
return floori(remap(noise.get_noise_1d(sample), -1.0, 1.0, float(output_start), float(output_end + 1)))
|
||||||
|
|
||||||
|
|||||||
@@ -17,4 +17,3 @@ func setup_game() -> void:
|
|||||||
Data.player_profile.display_name_changed.connect(chatbox.change_username)
|
Data.player_profile.display_name_changed.connect(chatbox.change_username)
|
||||||
loadout_editor.hero_selected.connect(Data.player_profile.set_preferred_class)
|
loadout_editor.hero_selected.connect(Data.player_profile.set_preferred_class)
|
||||||
connected_players_profiles[1] = Data.player_profile
|
connected_players_profiles[1] = Data.player_profile
|
||||||
setup_the_ui()
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ static func calculate_pot(wave_number: int, number_of_players: int) -> int:
|
|||||||
## Uses a spawn power budget to "buy" cards of enemies at random selection from
|
## Uses a spawn power budget to "buy" cards of enemies at random selection from
|
||||||
## the given spawn pool, returns the resulting wave but also assigns the cards
|
## the given spawn pool, returns the resulting wave but also assigns the cards
|
||||||
## among the given set of enemy spawners
|
## among the given set of enemy spawners
|
||||||
static func generate_wave(spawn_power: int, spawn_pool: Array[Enemy], spawners: Array[EnemySpawner]) -> Wave:
|
static func generate_wave(spawn_power: int, spawn_pool: Array[Enemy]) -> Wave:
|
||||||
var wave: Wave = Wave.new()
|
var wave: Wave = Wave.new()
|
||||||
|
|
||||||
var points: int = int(spawn_power / 10.0)
|
var points: int = int(spawn_power / 10.0)
|
||||||
@@ -34,8 +34,7 @@ static func generate_wave(spawn_power: int, spawn_pool: Array[Enemy], spawners:
|
|||||||
var new_card: EnemyCard = EnemyCard.new()
|
var new_card: EnemyCard = EnemyCard.new()
|
||||||
|
|
||||||
#First, choose an enemy at random
|
#First, choose an enemy at random
|
||||||
#TODO: Use seeded random
|
new_card.enemy = spawn_pool[NoiseRandom.randi_in_range(spawn_power, 0, spawn_pool.size() - 1)]
|
||||||
new_card.enemy = spawn_pool.pick_random()
|
|
||||||
|
|
||||||
#Next, we have to figure out if we can actually buy that enemy
|
#Next, we have to figure out if we can actually buy that enemy
|
||||||
#and, if not, then we have to pick a different enemy, repeat until
|
#and, if not, then we have to pick a different enemy, repeat until
|
||||||
@@ -71,7 +70,7 @@ static func generate_wave(spawn_power: int, spawn_pool: Array[Enemy], spawners:
|
|||||||
|
|
||||||
#Now that we know which rarities we could afford, lets just choose a
|
#Now that we know which rarities we could afford, lets just choose a
|
||||||
#random one
|
#random one
|
||||||
var chosen_rarity: int = randi_range(0, highest_rarity)
|
var chosen_rarity: int = NoiseRandom.randi_in_range(spawn_power, 0, highest_rarity)
|
||||||
new_card.rarity = chosen_rarity as Data.Rarity
|
new_card.rarity = chosen_rarity as Data.Rarity
|
||||||
|
|
||||||
#Add that new enemy to the wave and spend the points!
|
#Add that new enemy to the wave and spend the points!
|
||||||
@@ -86,18 +85,4 @@ static func generate_wave(spawn_power: int, spawn_pool: Array[Enemy], spawners:
|
|||||||
points -= new_card.enemy.epic_cost
|
points -= new_card.enemy.epic_cost
|
||||||
elif chosen_rarity == Data.Rarity.LEGENDARY:
|
elif chosen_rarity == Data.Rarity.LEGENDARY:
|
||||||
points -= new_card.enemy.legendary_cost
|
points -= new_card.enemy.legendary_cost
|
||||||
|
|
||||||
var ground_spawners: Array[EnemySpawner] = []
|
|
||||||
var air_spawners: Array[EnemySpawner] = []
|
|
||||||
for spawner: EnemySpawner in spawners:
|
|
||||||
if spawner.type == Data.EnemyType.LAND:
|
|
||||||
ground_spawners.append(spawner)
|
|
||||||
else:
|
|
||||||
air_spawners.append(spawner)
|
|
||||||
for card: EnemyCard in wave.enemy_groups:
|
|
||||||
if card.enemy.target_type == Data.EnemyType.LAND:
|
|
||||||
#TODO: make this use determinisic noise rng
|
|
||||||
ground_spawners.pick_random().add_card(card)
|
|
||||||
else:
|
|
||||||
air_spawners.pick_random().add_card(card)
|
|
||||||
return wave
|
return wave
|
||||||
|
|||||||
@@ -1,20 +1,27 @@
|
|||||||
class_name EnemyBox
|
class_name EnemyRow
|
||||||
extends HBoxContainer
|
extends VBoxContainer
|
||||||
|
|
||||||
|
@export var wave_label: Label
|
||||||
|
@export var enemy_hbox: HBoxContainer
|
||||||
|
|
||||||
|
|
||||||
func set_wave(wave: int) -> void:
|
func set_wave(wave: int) -> void:
|
||||||
$WaveLabel.text = tr("LABEL_WAVE").format({Wave_Number = str(wave)})
|
wave_label.text = tr("LABEL_WAVE").format({Wave_Number = str(wave)})
|
||||||
|
|
||||||
|
|
||||||
func add_enemy_tag(enemy: Enemy, num: int) -> void:
|
func add_enemy_tag(enemy: Enemy, num: int) -> void:
|
||||||
for x: int in num:
|
var container: MarginContainer = MarginContainer.new()
|
||||||
|
enemy_hbox.add_child(container)
|
||||||
var enemy_tex: TextureRect = TextureRect.new()
|
var enemy_tex: TextureRect = TextureRect.new()
|
||||||
enemy_tex.texture = enemy.sprite
|
enemy_tex.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
|
||||||
enemy_tex.custom_minimum_size = Vector2(80, 80)
|
enemy_tex.texture = enemy.icon
|
||||||
add_child(enemy_tex)
|
enemy_tex.custom_minimum_size = Vector2(32, 32)
|
||||||
#var name_label: Label = Label.new()
|
enemy_tex.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
||||||
#name_label.text = enemy.title
|
container.add_child(enemy_tex)
|
||||||
#var num_label: Label = Label.new()
|
var amount_label: Label = Label.new()
|
||||||
#num_label.text = str(num)
|
amount_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||||
#add_child(name_label)
|
amount_label.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||||
#add_child(num_label)
|
amount_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT
|
||||||
|
amount_label.vertical_alignment = VERTICAL_ALIGNMENT_BOTTOM
|
||||||
|
amount_label.text = str(num)
|
||||||
|
container.add_child(amount_label)
|
||||||
|
|||||||
@@ -2,9 +2,19 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b0h5oewxd48lv" path="res://UI/Menus/GameEndScreen/enemy_row.gd" id="1_th4b3"]
|
[ext_resource type="Script" uid="uid://b0h5oewxd48lv" path="res://UI/Menus/GameEndScreen/enemy_row.gd" id="1_th4b3"]
|
||||||
|
|
||||||
[node name="EnemyRow" type="HBoxContainer"]
|
[node name="EnemyRow" type="VBoxContainer" node_paths=PackedStringArray("wave_label", "enemy_hbox")]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
script = ExtResource("1_th4b3")
|
script = ExtResource("1_th4b3")
|
||||||
|
wave_label = NodePath("WaveLabel")
|
||||||
|
enemy_hbox = NodePath("Enemies")
|
||||||
|
|
||||||
[node name="WaveLabel" type="Label" parent="."]
|
[node name="WaveLabel" type="Label" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "LABEL_WAVE"
|
text = "LABEL_WAVE"
|
||||||
|
|
||||||
|
[node name="Enemies" type="HBoxContainer" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ func _ready() -> void:
|
|||||||
|
|
||||||
func set_wave() -> void:
|
func set_wave() -> void:
|
||||||
for wave_key: int in game_manager.stats.enemies_undefeated:
|
for wave_key: int in game_manager.stats.enemies_undefeated:
|
||||||
var spawned_box: EnemyBox = box.instantiate() as EnemyBox
|
var spawned_box: EnemyRow = box.instantiate() as EnemyRow
|
||||||
undefeated_enemies.add_child(spawned_box)
|
undefeated_enemies.add_child(spawned_box)
|
||||||
spawned_box.set_wave(wave_key)
|
spawned_box.set_wave(wave_key)
|
||||||
for enemy_key: Enemy in game_manager.stats.enemies_undefeated[wave_key]:
|
for enemy_key: Enemy in game_manager.stats.enemies_undefeated[wave_key]:
|
||||||
|
|||||||
@@ -10,13 +10,11 @@ streams_count = 1
|
|||||||
stream_0/stream = ExtResource("3_ro1yg")
|
stream_0/stream = ExtResource("3_ro1yg")
|
||||||
|
|
||||||
[node name="GameEndScreen" type="PanelContainer" node_paths=PackedStringArray("outcome_label", "winrate_label", "total_games_label", "total_wins_label", "total_losses_label", "undefeated_enemies")]
|
[node name="GameEndScreen" type="PanelContainer" node_paths=PackedStringArray("outcome_label", "winrate_label", "total_games_label", "total_wins_label", "total_losses_label", "undefeated_enemies")]
|
||||||
anchors_preset = 15
|
anchors_preset = -1
|
||||||
anchor_right = 1.0
|
anchor_left = 0.05
|
||||||
anchor_bottom = 1.0
|
anchor_top = 0.05
|
||||||
offset_left = 150.0
|
anchor_right = 0.95
|
||||||
offset_top = 100.0
|
anchor_bottom = 0.95
|
||||||
offset_right = -150.0
|
|
||||||
offset_bottom = -100.0
|
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("1_oa7nq")
|
script = ExtResource("1_oa7nq")
|
||||||
@@ -26,14 +24,13 @@ winrate_label = NodePath("VBoxContainer/Labels/VBoxContainer/HBoxContainer/WinRa
|
|||||||
total_games_label = NodePath("VBoxContainer/Labels/VBoxContainer/HBoxContainer2/WinRateLabel3")
|
total_games_label = NodePath("VBoxContainer/Labels/VBoxContainer/HBoxContainer2/WinRateLabel3")
|
||||||
total_wins_label = NodePath("VBoxContainer/Labels/VBoxContainer/HBoxContainer3/WinRateLabel4")
|
total_wins_label = NodePath("VBoxContainer/Labels/VBoxContainer/HBoxContainer3/WinRateLabel4")
|
||||||
total_losses_label = NodePath("VBoxContainer/Labels/VBoxContainer/HBoxContainer4/WinRateLabel5")
|
total_losses_label = NodePath("VBoxContainer/Labels/VBoxContainer/HBoxContainer4/WinRateLabel5")
|
||||||
undefeated_enemies = NodePath("VBoxContainer/UndefeatedEnemies")
|
undefeated_enemies = NodePath("VBoxContainer/ScrollContainer/UndefeatedEnemies")
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Labels" type="VBoxContainer" parent="VBoxContainer"]
|
[node name="Labels" type="VBoxContainer" parent="VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
|
||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
[node name="OutcomeLabel" type="Label" parent="VBoxContainer/Labels"]
|
[node name="OutcomeLabel" type="Label" parent="VBoxContainer/Labels"]
|
||||||
@@ -114,7 +111,11 @@ text = "0"
|
|||||||
horizontal_alignment = 2
|
horizontal_alignment = 2
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="UndefeatedEnemies" type="VBoxContainer" parent="VBoxContainer"]
|
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="UndefeatedEnemies" type="VBoxContainer" parent="VBoxContainer/ScrollContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,17 @@ extends Control
|
|||||||
|
|
||||||
const CELL_HEALTH: int = 9
|
const CELL_HEALTH: int = 9
|
||||||
|
|
||||||
|
var fading_enabled: bool = true
|
||||||
var health: int = 144
|
var health: int = 144
|
||||||
var current_cell_health: int = CELL_HEALTH
|
var current_cell_health: int = CELL_HEALTH
|
||||||
var fade_tween: Tween
|
var fade_tween: Tween
|
||||||
|
var cell_tweens: Array[Tween] = []
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
for x: int in cells.size():
|
||||||
|
cell_tweens.append(null)
|
||||||
|
fade_timer.start()
|
||||||
|
|
||||||
|
|
||||||
func take_damage(damage: int) -> void:
|
func take_damage(damage: int) -> void:
|
||||||
@@ -24,6 +32,8 @@ func take_damage(damage: int) -> void:
|
|||||||
current_cell_health -= damage_to_deal_with
|
current_cell_health -= damage_to_deal_with
|
||||||
var cell_level: int = health % 9
|
var cell_level: int = health % 9
|
||||||
if remaining_damage > 0: ## This cell should be empty because the damage overran the cell
|
if remaining_damage > 0: ## This cell should be empty because the damage overran the cell
|
||||||
|
if cell_tweens[current_cell - 1]:
|
||||||
|
cell_tweens[current_cell - 1].kill()
|
||||||
cell_level = 3
|
cell_level = 3
|
||||||
current_cell_health = CELL_HEALTH
|
current_cell_health = CELL_HEALTH
|
||||||
change_cell_color(current_cell - 1, cell_level)
|
change_cell_color(current_cell - 1, cell_level)
|
||||||
@@ -39,24 +49,29 @@ func take_damage(damage: int) -> void:
|
|||||||
else: ## This cell should be full health
|
else: ## This cell should be full health
|
||||||
cell_level = 0
|
cell_level = 0
|
||||||
hit_glow.texture.region.position.x = 66.0 * (16 - current_cell)
|
hit_glow.texture.region.position.x = 66.0 * (16 - current_cell)
|
||||||
var tween: Tween = create_tween()
|
if cell_tweens[current_cell - 1]:
|
||||||
tween.tween_callback(func() -> void: hit_glow.visible = true)
|
cell_tweens[current_cell - 1].kill()
|
||||||
tween.tween_interval(0.07)
|
cell_tweens[current_cell - 1] = create_tween()
|
||||||
tween.tween_callback(func() -> void: hit_glow.visible = false)
|
cell_tweens[current_cell - 1].tween_callback(func() -> void: hit_glow.visible = true)
|
||||||
tween.tween_interval(0.07)
|
cell_tweens[current_cell - 1].tween_interval(0.07)
|
||||||
tween.tween_callback(func() -> void: hit_glow.visible = true)
|
cell_tweens[current_cell - 1].tween_callback(func() -> void: hit_glow.visible = false)
|
||||||
tween.tween_callback(change_cell_color.bind(current_cell - 1, cell_level))
|
cell_tweens[current_cell - 1].tween_interval(0.07)
|
||||||
tween.tween_interval(0.07)
|
cell_tweens[current_cell - 1].tween_callback(func() -> void: hit_glow.visible = true)
|
||||||
tween.tween_callback(func() -> void: hit_glow.visible = false)
|
cell_tweens[current_cell - 1].tween_callback(change_cell_color.bind(current_cell - 1, cell_level))
|
||||||
|
cell_tweens[current_cell - 1].tween_interval(0.07)
|
||||||
|
cell_tweens[current_cell - 1].tween_callback(func() -> void: hit_glow.visible = false)
|
||||||
fade_timer.start()
|
fade_timer.start()
|
||||||
|
|
||||||
|
|
||||||
func change_cell_color(cell: int, color: int) -> void:
|
func change_cell_color(cell: int, color: int) -> void:
|
||||||
|
var cell_to_change: int = 15 - cell
|
||||||
|
if cell_to_change >= 0 and cell_to_change < cells.size():
|
||||||
cells[15 - cell].texture.region.position.x = 66.0 * color
|
cells[15 - cell].texture.region.position.x = 66.0 * color
|
||||||
|
|
||||||
|
|
||||||
func fade_out() -> void:
|
func fade_out() -> void:
|
||||||
if fade_tween:
|
if fade_tween:
|
||||||
fade_tween.kill()
|
fade_tween.kill()
|
||||||
|
if fading_enabled:
|
||||||
fade_tween = create_tween()
|
fade_tween = create_tween()
|
||||||
fade_tween.tween_property(self, "modulate", Color8(255, 255, 255, 0), 1.0)
|
fade_tween.tween_property(self, "modulate", Color8(255, 255, 255, 0), 1.0)
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ atlas = ExtResource("4_yanml")
|
|||||||
region = Rect2(0, 0, 66, 66)
|
region = Rect2(0, 0, 66, 66)
|
||||||
|
|
||||||
[node name="ShieldUI" type="Control" node_paths=PackedStringArray("cells", "hit_glow", "fade_timer")]
|
[node name="ShieldUI" type="Control" node_paths=PackedStringArray("cells", "hit_glow", "fade_timer")]
|
||||||
modulate = Color(1, 1, 1, 0)
|
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
script = ExtResource("1_aa64g")
|
script = ExtResource("1_aa64g")
|
||||||
|
|||||||
7
UI/Themes/Scale1/grabber_disabled_tex.tres
Normal file
7
UI/Themes/Scale1/grabber_disabled_tex.tres
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://c1xm8bkvho3vl"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_466t2"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_466t2")
|
||||||
|
region = Rect2(79, 1, 8, 8)
|
||||||
7
UI/Themes/Scale1/grabber_tex.tres
Normal file
7
UI/Themes/Scale1/grabber_tex.tres
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://cuwhoitu6ybba"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_74qo4"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_74qo4")
|
||||||
|
region = Rect2(62, 1, 8, 8)
|
||||||
15
UI/Themes/Scale1/h_scroll_bar.tres
Normal file
15
UI/Themes/Scale1/h_scroll_bar.tres
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://duopp63rij323"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_73g4w"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_okcqu"]
|
||||||
|
atlas = ExtResource("1_73g4w")
|
||||||
|
region = Rect2(62, 10, 8, 8)
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
texture = SubResource("AtlasTexture_okcqu")
|
||||||
|
texture_margin_left = 2.0
|
||||||
|
texture_margin_top = 4.0
|
||||||
|
texture_margin_right = 2.0
|
||||||
|
texture_margin_bottom = 4.0
|
||||||
|
region_rect = Rect2(0, 0, 8, 8)
|
||||||
15
UI/Themes/Scale1/h_scroll_grabber.tres
Normal file
15
UI/Themes/Scale1/h_scroll_grabber.tres
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://dlnw55uearhrg"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_xum1s"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_noue1"]
|
||||||
|
atlas = ExtResource("1_xum1s")
|
||||||
|
region = Rect2(62, 1, 8, 8)
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
texture = SubResource("AtlasTexture_noue1")
|
||||||
|
texture_margin_left = 2.0
|
||||||
|
texture_margin_right = 2.0
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
region_rect = Rect2(0, 0, 8, 8)
|
||||||
14
UI/Themes/Scale1/popup_item_hover.tres
Normal file
14
UI/Themes/Scale1/popup_item_hover.tres
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://co6ouoi7ieawj"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_slo62"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_xobyj"]
|
||||||
|
atlas = ExtResource("1_slo62")
|
||||||
|
region = Rect2(10, 10, 9, 9)
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
texture = SubResource("AtlasTexture_xobyj")
|
||||||
|
texture_margin_left = 3.0
|
||||||
|
texture_margin_top = 3.0
|
||||||
|
texture_margin_right = 3.0
|
||||||
|
texture_margin_bottom = 3.0
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_resource type="Theme" load_steps=36 format=3 uid="uid://jn4qqx5hxc5i"]
|
[gd_resource type="Theme" load_steps=42 format=3 uid="uid://jn4qqx5hxc5i"]
|
||||||
|
|
||||||
[ext_resource type="StyleBox" uid="uid://doxcjij1w2ot7" path="res://UI/Themes/Scale1/button_disabled.tres" id="1_ts3pc"]
|
[ext_resource type="StyleBox" uid="uid://doxcjij1w2ot7" path="res://UI/Themes/Scale1/button_disabled.tres" id="1_ts3pc"]
|
||||||
[ext_resource type="StyleBox" uid="uid://buu2yn08s4wc7" path="res://UI/Themes/Scale1/button_focus.tres" id="1_vnhdr"]
|
[ext_resource type="StyleBox" uid="uid://buu2yn08s4wc7" path="res://UI/Themes/Scale1/button_focus.tres" id="1_vnhdr"]
|
||||||
@@ -10,9 +10,16 @@
|
|||||||
[ext_resource type="StyleBox" uid="uid://bfuea1sjymo8g" path="res://UI/Themes/Scale1/pane_style_box.tres" id="6_w151p"]
|
[ext_resource type="StyleBox" uid="uid://bfuea1sjymo8g" path="res://UI/Themes/Scale1/pane_style_box.tres" id="6_w151p"]
|
||||||
[ext_resource type="StyleBox" uid="uid://jnnnhb3i2265" path="res://UI/Themes/Scale1/switch_side_b_style_box.tres" id="7_w8nmj"]
|
[ext_resource type="StyleBox" uid="uid://jnnnhb3i2265" path="res://UI/Themes/Scale1/switch_side_b_style_box.tres" id="7_w8nmj"]
|
||||||
[ext_resource type="StyleBox" uid="uid://cm3wsvk3woory" path="res://UI/Themes/Scale1/switch_side_a_style_box.tres" id="8_8j1wx"]
|
[ext_resource type="StyleBox" uid="uid://cm3wsvk3woory" path="res://UI/Themes/Scale1/switch_side_a_style_box.tres" id="8_8j1wx"]
|
||||||
|
[ext_resource type="StyleBox" uid="uid://dlnw55uearhrg" path="res://UI/Themes/Scale1/h_scroll_grabber.tres" id="8_b5n6m"]
|
||||||
[ext_resource type="StyleBox" uid="uid://bss3dp7k18rx0" path="res://UI/Themes/Scale1/grabber_area.tres" id="8_o6p3e"]
|
[ext_resource type="StyleBox" uid="uid://bss3dp7k18rx0" path="res://UI/Themes/Scale1/grabber_area.tres" id="8_o6p3e"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cuwhoitu6ybba" path="res://UI/Themes/Scale1/grabber_tex.tres" id="8_t2hcr"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c1xm8bkvho3vl" path="res://UI/Themes/Scale1/grabber_disabled_tex.tres" id="9_n5i54"]
|
||||||
[ext_resource type="StyleBox" uid="uid://bpowvv8e13flg" path="res://UI/Themes/Scale1/slider.tres" id="9_w151p"]
|
[ext_resource type="StyleBox" uid="uid://bpowvv8e13flg" path="res://UI/Themes/Scale1/slider.tres" id="9_w151p"]
|
||||||
[ext_resource type="StyleBox" uid="uid://8s0fgx46n145" path="res://UI/Themes/Scale1/scroll_grabber.tres" id="13_w151p"]
|
[ext_resource type="StyleBox" uid="uid://duopp63rij323" path="res://UI/Themes/Scale1/h_scroll_bar.tres" id="9_xqncf"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://d3bbst30pgfgy" path="res://UI/Themes/Scale1/slider_tick_tex.tres" id="10_08ul3"]
|
||||||
|
[ext_resource type="StyleBox" uid="uid://co6ouoi7ieawj" path="res://UI/Themes/Scale1/popup_item_hover.tres" id="16_xqncf"]
|
||||||
|
[ext_resource type="StyleBox" uid="uid://8s0fgx46n145" path="res://UI/Themes/Scale1/v_scroll_grabber.tres" id="18_nis8m"]
|
||||||
|
[ext_resource type="StyleBox" uid="uid://c4cljq7yl78eg" path="res://UI/Themes/Scale1/v_scroll_bar.tres" id="19_aggbr"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_845oj"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_845oj"]
|
||||||
atlas = ExtResource("6_43i8g")
|
atlas = ExtResource("6_43i8g")
|
||||||
@@ -26,27 +33,35 @@ region = Rect2(46, 1, 15, 8)
|
|||||||
base_font = ExtResource("5_o6p3e")
|
base_font = ExtResource("5_o6p3e")
|
||||||
baseline_offset = 0.15
|
baseline_offset = 0.15
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w8nmj"]
|
|
||||||
atlas = ExtResource("6_43i8g")
|
|
||||||
region = Rect2(62, 1, 8, 8)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_t2hcr"]
|
|
||||||
atlas = ExtResource("6_43i8g")
|
|
||||||
region = Rect2(79, 1, 8, 8)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8j1wx"]
|
|
||||||
atlas = ExtResource("6_43i8g")
|
|
||||||
region = Rect2(62, 1, 8, 8)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w151p"]
|
|
||||||
atlas = ExtResource("6_43i8g")
|
|
||||||
region = Rect2(75, 4, 2, 2)
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_t2hcr"]
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_t2hcr"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_noue1"]
|
||||||
|
atlas = ExtResource("6_43i8g")
|
||||||
|
region = Rect2(98, 4, 8, 5)
|
||||||
|
|
||||||
[sub_resource type="FontVariation" id="FontVariation_inyly"]
|
[sub_resource type="FontVariation" id="FontVariation_inyly"]
|
||||||
base_font = ExtResource("5_o6p3e")
|
base_font = ExtResource("5_o6p3e")
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_k1p2l"]
|
||||||
|
atlas = ExtResource("6_43i8g")
|
||||||
|
region = Rect2(62, 1, 8, 8)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_qa24s"]
|
||||||
|
atlas = ExtResource("6_43i8g")
|
||||||
|
region = Rect2(62, 10, 8, 8)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_xqncf"]
|
||||||
|
content_margin_left = 2.0
|
||||||
|
content_margin_top = 2.0
|
||||||
|
content_margin_right = 2.0
|
||||||
|
content_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_nis8m"]
|
||||||
|
content_margin_left = 2.0
|
||||||
|
content_margin_top = 2.0
|
||||||
|
content_margin_right = 2.0
|
||||||
|
content_margin_bottom = 2.0
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_n5i54"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_n5i54"]
|
||||||
atlas = ExtResource("6_43i8g")
|
atlas = ExtResource("6_43i8g")
|
||||||
region = Rect2(98, 4, 8, 5)
|
region = Rect2(98, 4, 8, 5)
|
||||||
@@ -82,18 +97,6 @@ region = Rect2(89, 7, 8, 5)
|
|||||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ts3pc"]
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ts3pc"]
|
||||||
content_margin_top = 2.0
|
content_margin_top = 2.0
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_okcqu"]
|
|
||||||
atlas = ExtResource("6_43i8g")
|
|
||||||
region = Rect2(62, 10, 8, 8)
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_qa24s"]
|
|
||||||
texture = SubResource("AtlasTexture_okcqu")
|
|
||||||
texture_margin_left = 4.0
|
|
||||||
texture_margin_top = 2.0
|
|
||||||
texture_margin_right = 4.0
|
|
||||||
texture_margin_bottom = 2.0
|
|
||||||
region_rect = Rect2(0, 0, 8, 8)
|
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
Button/colors/font_color = Color(0.85490197, 0.8784314, 0.91764706, 1)
|
Button/colors/font_color = Color(0.85490197, 0.8784314, 0.91764706, 1)
|
||||||
Button/colors/font_disabled_color = Color(0.85882354, 0.6431373, 0.3882353, 1)
|
Button/colors/font_disabled_color = Color(0.85882354, 0.6431373, 0.3882353, 1)
|
||||||
@@ -109,10 +112,14 @@ CheckButton/icons/unchecked = SubResource("AtlasTexture_o6p3e")
|
|||||||
Control/constants/outline_size = 4
|
Control/constants/outline_size = 4
|
||||||
Control/font_sizes/font_size = 8
|
Control/font_sizes/font_size = 8
|
||||||
Control/fonts/font = SubResource("FontVariation_b02pe")
|
Control/fonts/font = SubResource("FontVariation_b02pe")
|
||||||
HSlider/icons/grabber = SubResource("AtlasTexture_w8nmj")
|
HScrollBar/styles/grabber = ExtResource("8_b5n6m")
|
||||||
HSlider/icons/grabber_disabled = SubResource("AtlasTexture_t2hcr")
|
HScrollBar/styles/grabber_highlight = ExtResource("8_b5n6m")
|
||||||
HSlider/icons/grabber_highlight = SubResource("AtlasTexture_8j1wx")
|
HScrollBar/styles/grabber_pressed = ExtResource("8_b5n6m")
|
||||||
HSlider/icons/tick = SubResource("AtlasTexture_w151p")
|
HScrollBar/styles/scroll = ExtResource("9_xqncf")
|
||||||
|
HSlider/icons/grabber = ExtResource("8_t2hcr")
|
||||||
|
HSlider/icons/grabber_disabled = ExtResource("9_n5i54")
|
||||||
|
HSlider/icons/grabber_highlight = ExtResource("8_t2hcr")
|
||||||
|
HSlider/icons/tick = ExtResource("10_08ul3")
|
||||||
HSlider/styles/grabber_area = ExtResource("8_o6p3e")
|
HSlider/styles/grabber_area = ExtResource("8_o6p3e")
|
||||||
HSlider/styles/grabber_area_highlight = ExtResource("8_o6p3e")
|
HSlider/styles/grabber_area_highlight = ExtResource("8_o6p3e")
|
||||||
HSlider/styles/slider = ExtResource("9_w151p")
|
HSlider/styles/slider = ExtResource("9_w151p")
|
||||||
@@ -121,13 +128,19 @@ Label/font_sizes/font_size = 8
|
|||||||
Label/fonts/font = ExtResource("5_o6p3e")
|
Label/fonts/font = ExtResource("5_o6p3e")
|
||||||
LineEdit/styles/focus = ExtResource("1_vnhdr")
|
LineEdit/styles/focus = ExtResource("1_vnhdr")
|
||||||
LineEdit/styles/normal = SubResource("StyleBoxEmpty_t2hcr")
|
LineEdit/styles/normal = SubResource("StyleBoxEmpty_t2hcr")
|
||||||
|
OptionButton/icons/arrow = SubResource("AtlasTexture_noue1")
|
||||||
PanelContainer/styles/panel = ExtResource("6_w151p")
|
PanelContainer/styles/panel = ExtResource("6_w151p")
|
||||||
PopupMenu/constants/outline_size = 4
|
PopupMenu/constants/outline_size = 4
|
||||||
PopupMenu/font_sizes/font_size = 8
|
PopupMenu/font_sizes/font_size = 8
|
||||||
PopupMenu/fonts/font = SubResource("FontVariation_inyly")
|
PopupMenu/fonts/font = SubResource("FontVariation_inyly")
|
||||||
|
PopupMenu/icons/radio_checked = SubResource("AtlasTexture_k1p2l")
|
||||||
|
PopupMenu/icons/radio_unchecked = SubResource("AtlasTexture_qa24s")
|
||||||
|
PopupMenu/styles/hover = ExtResource("16_xqncf")
|
||||||
PopupMenu/styles/panel = ExtResource("6_w151p")
|
PopupMenu/styles/panel = ExtResource("6_w151p")
|
||||||
RichTextLabel/font_sizes/normal_font_size = 8
|
RichTextLabel/font_sizes/normal_font_size = 8
|
||||||
RichTextLabel/fonts/normal_font = ExtResource("5_o6p3e")
|
RichTextLabel/fonts/normal_font = ExtResource("5_o6p3e")
|
||||||
|
RichTextLabel/styles/normal = SubResource("StyleBoxEmpty_xqncf")
|
||||||
|
ScrollContainer/styles/panel = SubResource("StyleBoxEmpty_nis8m")
|
||||||
SideCheckButton/base_type = &"Button"
|
SideCheckButton/base_type = &"Button"
|
||||||
SideCheckButton/colors/font_color = Color(0.8392157, 0.8392157, 0.8392157, 1)
|
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_color = Color(1, 1, 1, 1)
|
||||||
@@ -155,10 +168,17 @@ TabContainer/styles/tab_focus = ExtResource("1_vnhdr")
|
|||||||
TabContainer/styles/tab_hovered = ExtResource("2_ts3pc")
|
TabContainer/styles/tab_hovered = ExtResource("2_ts3pc")
|
||||||
TabContainer/styles/tab_selected = ExtResource("4_845oj")
|
TabContainer/styles/tab_selected = ExtResource("4_845oj")
|
||||||
TabContainer/styles/tab_unselected = ExtResource("3_43i8g")
|
TabContainer/styles/tab_unselected = ExtResource("3_43i8g")
|
||||||
VScrollBar/styles/grabber = ExtResource("13_w151p")
|
VScrollBar/styles/grabber = ExtResource("18_nis8m")
|
||||||
VScrollBar/styles/grabber_highlight = ExtResource("13_w151p")
|
VScrollBar/styles/grabber_highlight = ExtResource("18_nis8m")
|
||||||
VScrollBar/styles/grabber_pressed = ExtResource("13_w151p")
|
VScrollBar/styles/grabber_pressed = ExtResource("18_nis8m")
|
||||||
VScrollBar/styles/scroll = SubResource("StyleBoxTexture_qa24s")
|
VScrollBar/styles/scroll = ExtResource("19_aggbr")
|
||||||
|
VSlider/icons/grabber = ExtResource("8_t2hcr")
|
||||||
|
VSlider/icons/grabber_disabled = ExtResource("9_n5i54")
|
||||||
|
VSlider/icons/grabber_highlight = ExtResource("8_t2hcr")
|
||||||
|
VSlider/icons/tick = ExtResource("10_08ul3")
|
||||||
|
VSlider/styles/grabber_area = ExtResource("8_o6p3e")
|
||||||
|
VSlider/styles/grabber_area_highlight = ExtResource("8_o6p3e")
|
||||||
|
VSlider/styles/slider = ExtResource("9_w151p")
|
||||||
VersionLabel/base_type = &"Label"
|
VersionLabel/base_type = &"Label"
|
||||||
VersionLabel/colors/font_color = Color(0.85, 0.85, 0.85, 0.7)
|
VersionLabel/colors/font_color = Color(0.85, 0.85, 0.85, 0.7)
|
||||||
VersionLabel/font_sizes/font_size = 8
|
VersionLabel/font_sizes/font_size = 8
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ region = Rect2(75, 4, 2, 2)
|
|||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
content_margin_top = 2.0
|
content_margin_top = 2.0
|
||||||
|
content_margin_right = 2.0
|
||||||
texture = SubResource("AtlasTexture_uj2su")
|
texture = SubResource("AtlasTexture_uj2su")
|
||||||
axis_stretch_horizontal = 1
|
axis_stretch_horizontal = 1
|
||||||
axis_stretch_vertical = 1
|
axis_stretch_vertical = 1
|
||||||
|
|||||||
7
UI/Themes/Scale1/slider_tick_tex.tres
Normal file
7
UI/Themes/Scale1/slider_tick_tex.tres
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://d3bbst30pgfgy"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_gfpkm"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_gfpkm")
|
||||||
|
region = Rect2(75, 4, 2, 2)
|
||||||
15
UI/Themes/Scale1/v_scroll_bar.tres
Normal file
15
UI/Themes/Scale1/v_scroll_bar.tres
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://c4cljq7yl78eg"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_qpij5"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_okcqu"]
|
||||||
|
atlas = ExtResource("1_qpij5")
|
||||||
|
region = Rect2(62, 10, 8, 8)
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
texture = SubResource("AtlasTexture_okcqu")
|
||||||
|
texture_margin_left = 4.0
|
||||||
|
texture_margin_top = 2.0
|
||||||
|
texture_margin_right = 4.0
|
||||||
|
texture_margin_bottom = 2.0
|
||||||
|
region_rect = Rect2(0, 0, 8, 8)
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://8s0fgx46n145"]
|
[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://8s0fgx46n145"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_pfcbc"]
|
[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_6syfe"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_noue1"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_noue1"]
|
||||||
atlas = ExtResource("1_pfcbc")
|
atlas = ExtResource("1_6syfe")
|
||||||
region = Rect2(62, 1, 8, 8)
|
region = Rect2(62, 1, 8, 8)
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
@@ -24,7 +24,6 @@ text = "LABEL_CARD_DESCRIPTION"
|
|||||||
|
|
||||||
[node name="DescriptionText" type="RichTextLabel" parent="."]
|
[node name="DescriptionText" type="RichTextLabel" parent="."]
|
||||||
auto_translate_mode = 2
|
auto_translate_mode = 2
|
||||||
clip_contents = false
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
|
|||||||
@@ -187,9 +187,9 @@ domain_warp_enabled = true
|
|||||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_r4es0"]
|
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_r4es0"]
|
||||||
width = 1024
|
width = 1024
|
||||||
height = 1024
|
height = 1024
|
||||||
seamless = true
|
|
||||||
color_ramp = SubResource("Gradient_dj4cy")
|
|
||||||
noise = SubResource("FastNoiseLite_ttr7n")
|
noise = SubResource("FastNoiseLite_ttr7n")
|
||||||
|
color_ramp = SubResource("Gradient_dj4cy")
|
||||||
|
seamless = true
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_4gdda"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_4gdda"]
|
||||||
shader = SubResource("Shader_6od8s")
|
shader = SubResource("Shader_6od8s")
|
||||||
@@ -230,6 +230,7 @@ fog_density = 0.0416
|
|||||||
adjustment_contrast = 2.18
|
adjustment_contrast = 2.18
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_awjk1"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_awjk1"]
|
||||||
|
size = Vector3(1, 1, 3)
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_134um"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_134um"]
|
||||||
size = Vector3(70.0478, 1, 73.4615)
|
size = Vector3(70.0478, 1, 73.4615)
|
||||||
@@ -261,7 +262,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.63136, 4.35346, 7.28324)
|
|||||||
curve = SubResource("Curve3D_3rdl2")
|
curve = SubResource("Curve3D_3rdl2")
|
||||||
|
|
||||||
[node name="PathFollow3D" type="PathFollow3D" parent="CinemaCam/Path3D"]
|
[node name="PathFollow3D" type="PathFollow3D" parent="CinemaCam/Path3D"]
|
||||||
transform = Transform3D(0.05423, 0.161068, 0.98545, -7.45055e-09, 0.986902, -0.161305, -0.998524, 0.00874761, 0.05352, 12.3765, 1.00006, -13.0874)
|
transform = Transform3D(0.054230012, 0.1610678, 0.98545, -7.4505473e-09, 0.98690206, -0.16130519, -0.998524, 0.008747612, 0.05351996, 12.3765, 1.00006, -13.0874)
|
||||||
loop = false
|
loop = false
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="CinemaCam/Path3D/PathFollow3D"]
|
[node name="Camera3D" type="Camera3D" parent="CinemaCam/Path3D/PathFollow3D"]
|
||||||
@@ -274,7 +275,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.63136, 4.35346, 7.28324)
|
|||||||
curve = SubResource("Curve3D_2yu5t")
|
curve = SubResource("Curve3D_2yu5t")
|
||||||
|
|
||||||
[node name="PathFollow3D2" type="PathFollow3D" parent="CinemaCam/Path3D2"]
|
[node name="PathFollow3D2" type="PathFollow3D" parent="CinemaCam/Path3D2"]
|
||||||
transform = Transform3D(-0.607018, -0.0329605, 0.793996, 0, 0.999137, 0.0414758, -0.794684, 0.0251768, -0.606492, 7.20375, 0.376301, -5.50257)
|
transform = Transform3D(-0.60701805, -0.03296049, 0.7939957, 0, 0.999137, 0.041475825, -0.79468393, 0.025176814, -0.6064923, 7.20375, 0.376301, -5.50257)
|
||||||
loop = false
|
loop = false
|
||||||
|
|
||||||
[node name="Camera3D2" type="Camera3D" parent="CinemaCam/Path3D2/PathFollow3D2"]
|
[node name="Camera3D2" type="Camera3D" parent="CinemaCam/Path3D2/PathFollow3D2"]
|
||||||
@@ -286,7 +287,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.63136, 4.35346, 7.28324)
|
|||||||
curve = SubResource("Curve3D_tuqlc")
|
curve = SubResource("Curve3D_tuqlc")
|
||||||
|
|
||||||
[node name="PathFollow3D2" type="PathFollow3D" parent="CinemaCam/Path3D3"]
|
[node name="PathFollow3D2" type="PathFollow3D" parent="CinemaCam/Path3D3"]
|
||||||
transform = Transform3D(-4.37112e-08, -0.0254899, -0.99965, 0, 0.999656, -0.0254898, 0.999996, -1.1142e-09, -4.36961e-08, 8.763, 5.707, -7.5)
|
transform = Transform3D(-4.3711214e-08, -0.02548992, -0.99965, 0, 0.999656, -0.025489768, 0.999996, -1.1141998e-09, -4.3696087e-08, 8.762999, 5.707, -7.5)
|
||||||
progress = 27.9321
|
progress = 27.9321
|
||||||
loop = false
|
loop = false
|
||||||
|
|
||||||
@@ -310,7 +311,7 @@ size = Vector3(1, 4, 3)
|
|||||||
collision_mask = 4
|
collision_mask = 4
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyGoal/Area3D"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyGoal/Area3D"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0.010131836)
|
||||||
shape = SubResource("BoxShape3D_awjk1")
|
shape = SubResource("BoxShape3D_awjk1")
|
||||||
|
|
||||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="EnemyGoal"]
|
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="EnemyGoal"]
|
||||||
|
|||||||
7
main.gd
7
main.gd
@@ -4,7 +4,6 @@ extends Node
|
|||||||
signal loaded_scene
|
signal loaded_scene
|
||||||
|
|
||||||
@export var scene: Node
|
@export var scene: Node
|
||||||
@export var ui_viewport: SubViewport
|
|
||||||
@export var movies: Node
|
@export var movies: Node
|
||||||
|
|
||||||
var game_manager: GameManager
|
var game_manager: GameManager
|
||||||
@@ -18,8 +17,9 @@ var singleplayer_lobby_scene_path: String = "res://Scenes/Menus/singleplayer_lob
|
|||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
Engine.max_fps = 60
|
Engine.max_fps = 60
|
||||||
UILayer = CanvasLayer.new()
|
UILayer = CanvasLayer.new()
|
||||||
|
UILayer.name = "UILayer"
|
||||||
UILayer.layer = 2
|
UILayer.layer = 2
|
||||||
ui_viewport.add_child.call_deferred(UILayer)
|
add_child.call_deferred(UILayer)
|
||||||
var version_label: Label = Label.new()
|
var version_label: Label = Label.new()
|
||||||
var version: String = ProjectSettings.get_setting("application/config/version")
|
var version: String = ProjectSettings.get_setting("application/config/version")
|
||||||
version_label.text = "WORK IN PROGRESS | ALPHA - VERSION " + version + " | PLAYTEST"
|
version_label.text = "WORK IN PROGRESS | ALPHA - VERSION " + version + " | PLAYTEST"
|
||||||
@@ -58,6 +58,7 @@ func load_singleplayer() -> void:
|
|||||||
await loaded_scene
|
await loaded_scene
|
||||||
var single_player_lobby: SinglePlayerLobby = scene.get_child(0) as SinglePlayerLobby
|
var single_player_lobby: SinglePlayerLobby = scene.get_child(0) as SinglePlayerLobby
|
||||||
single_player_lobby.game_manager = game_manager
|
single_player_lobby.game_manager = game_manager
|
||||||
|
single_player_lobby.setup_the_ui()
|
||||||
single_player_lobby.setup_game()
|
single_player_lobby.setup_game()
|
||||||
|
|
||||||
|
|
||||||
@@ -81,6 +82,6 @@ func load_scene(scene_path: String) -> void:
|
|||||||
if movies:
|
if movies:
|
||||||
movies.queue_free()
|
movies.queue_free()
|
||||||
movies = null
|
movies = null
|
||||||
$CanvasLayer.visible = true
|
UILayer.visible = true
|
||||||
scene.add_child(new_scene.instantiate())
|
scene.add_child(new_scene.instantiate())
|
||||||
loaded_scene.emit()
|
loaded_scene.emit()
|
||||||
|
|||||||
27
main.tscn
27
main.tscn
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=8 format=3 uid="uid://d2k8y13qfvch0"]
|
[gd_scene load_steps=7 format=3 uid="uid://d2k8y13qfvch0"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cx1xj7esl03ui" path="res://main.gd" id="2_h2yge"]
|
[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"]
|
[ext_resource type="Texture2D" uid="uid://6frn8lcwwehv" path="res://Assets/TextureAtlases/puppyfruit.png" id="2_lquwl"]
|
||||||
@@ -9,19 +9,15 @@
|
|||||||
atlas = ExtResource("2_lquwl")
|
atlas = ExtResource("2_lquwl")
|
||||||
region = Rect2(0, 0, 256, 256)
|
region = Rect2(0, 0, 256, 256)
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_1bvp3"]
|
|
||||||
viewport_path = NodePath("UI")
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_272bh"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_272bh"]
|
||||||
shader = ExtResource("6_7mycd")
|
shader = ExtResource("6_7mycd")
|
||||||
shader_parameter/color_depth = 5
|
shader_parameter/color_depth = 5
|
||||||
shader_parameter/dithering = true
|
shader_parameter/dithering = true
|
||||||
shader_parameter/resolution_scale = 1
|
shader_parameter/resolution_scale = 1
|
||||||
|
|
||||||
[node name="Main" type="Node" node_paths=PackedStringArray("scene", "ui_viewport", "movies")]
|
[node name="Main" type="Node" node_paths=PackedStringArray("scene", "movies")]
|
||||||
script = ExtResource("2_h2yge")
|
script = ExtResource("2_h2yge")
|
||||||
scene = NodePath("Scene")
|
scene = NodePath("Scene")
|
||||||
ui_viewport = NodePath("UI")
|
|
||||||
movies = NodePath("Movies")
|
movies = NodePath("Movies")
|
||||||
metadata/_custom_type_script = "uid://cx1xj7esl03ui"
|
metadata/_custom_type_script = "uid://cx1xj7esl03ui"
|
||||||
|
|
||||||
@@ -80,25 +76,10 @@ color = Color(0.192157, 0.415686, 0.223529, 1)
|
|||||||
|
|
||||||
[node name="Scene" type="Node" parent="."]
|
[node name="Scene" type="Node" parent="."]
|
||||||
|
|
||||||
[node name="UI" type="SubViewport" parent="."]
|
[node name="PostProcessingLayer" type="CanvasLayer" parent="."]
|
||||||
transparent_bg = true
|
|
||||||
size = Vector2i(320, 240)
|
|
||||||
|
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
|
||||||
layer = 3
|
layer = 3
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="CanvasLayer"]
|
[node name="ColorRect2" type="ColorRect" parent="PostProcessingLayer"]
|
||||||
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")
|
material = SubResource("ShaderMaterial_272bh")
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
|||||||
@@ -208,6 +208,11 @@ Pause={
|
|||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":48,"key_label":0,"unicode":48,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":48,"key_label":0,"unicode":48,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
"Show Wave Preview"={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[internationalization]
|
[internationalization]
|
||||||
|
|
||||||
|
|||||||
29
shield_ui_test.gd
Normal file
29
shield_ui_test.gd
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
extends Control
|
||||||
|
|
||||||
|
@export var shield: ShieldUI
|
||||||
|
@export var lives_bar: LivesBar
|
||||||
|
@export var damage_label: Label
|
||||||
|
|
||||||
|
var damage: int = 1
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
shield.fading_enabled = false
|
||||||
|
|
||||||
|
|
||||||
|
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()
|
||||||
1
shield_ui_test.gd.uid
Normal file
1
shield_ui_test.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dhj7ck7ug6uoj
|
||||||
61
shield_ui_test.tscn
Normal file
61
shield_ui_test.tscn
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
[gd_scene load_steps=4 format=3 uid="uid://5kypijhwjhok"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dhj7ck7ug6uoj" path="res://shield_ui_test.gd" id="1_uywwg"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cqslp83lf0ku0" path="res://UI/ShieldUI/shield_ui.tscn" id="2_iketu"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://24x18qxqhy0i" path="res://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"]
|
||||||
47
wave_viewer.gd
Normal file
47
wave_viewer.gd
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
class_name WaveViewer
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
signal closed()
|
||||||
|
|
||||||
|
@export var wave_vbox: VBoxContainer
|
||||||
|
@export var enemy_row_scene: PackedScene
|
||||||
|
|
||||||
|
|
||||||
|
func set_waves(waves: Array[Wave], starting_wave_number: int) -> void:
|
||||||
|
var i: int = starting_wave_number
|
||||||
|
for wave: Wave in waves:
|
||||||
|
var enemy_row: EnemyRow = enemy_row_scene.instantiate() as EnemyRow
|
||||||
|
wave_vbox.add_child(enemy_row)
|
||||||
|
enemy_row.set_wave(i)
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
var enemy_dict: Dictionary[Enemy, int] = {}
|
||||||
|
|
||||||
|
for group: EnemyCard in wave.enemy_groups:
|
||||||
|
if enemy_dict.has(group.enemy):
|
||||||
|
enemy_dict[group.enemy] += group_to_count(group)
|
||||||
|
else:
|
||||||
|
enemy_dict[group.enemy] = group_to_count(group)
|
||||||
|
|
||||||
|
for enemy: Enemy in enemy_dict.keys():
|
||||||
|
enemy_row.add_enemy_tag(enemy, enemy_dict[enemy])
|
||||||
|
|
||||||
|
|
||||||
|
func group_to_count(group: EnemyCard) -> int:
|
||||||
|
var count: int = 0
|
||||||
|
if group.rarity == Data.Rarity.COMMON:
|
||||||
|
count += group.enemy.common_group
|
||||||
|
elif group.rarity == Data.Rarity.UNCOMMON:
|
||||||
|
count += group.enemy.uncommon_group
|
||||||
|
elif group.rarity == Data.Rarity.RARE:
|
||||||
|
count += group.enemy.rare_group
|
||||||
|
elif group.rarity == Data.Rarity.EPIC:
|
||||||
|
count += group.enemy.epic_group
|
||||||
|
elif group.rarity == Data.Rarity.LEGENDARY:
|
||||||
|
count += group.enemy.legendary_group
|
||||||
|
return count
|
||||||
|
|
||||||
|
|
||||||
|
func _on_button_2_pressed() -> void:
|
||||||
|
closed.emit()
|
||||||
|
queue_free()
|
||||||
1
wave_viewer.gd.uid
Normal file
1
wave_viewer.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://ps6sgjd0b5qr
|
||||||
165
wave_viewer.tscn
165
wave_viewer.tscn
@@ -1,6 +1,7 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://ct6gic4shy5qw"]
|
[gd_scene load_steps=5 format=3 uid="uid://ct6gic4shy5qw"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="1_0v4fq"]
|
[ext_resource type="Script" uid="uid://ps6sgjd0b5qr" path="res://wave_viewer.gd" id="1_0v4fq"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b5hp43bm07b8a" path="res://UI/Menus/GameEndScreen/enemy_row.tscn" id="2_lbx3o"]
|
||||||
[ext_resource type="Texture2D" uid="uid://3ywtwfpuuknr" path="res://Assets/Textures/leapfrog.png" id="2_tptaq"]
|
[ext_resource type="Texture2D" uid="uid://3ywtwfpuuknr" path="res://Assets/Textures/leapfrog.png" id="2_tptaq"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0v4fq"]
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0v4fq"]
|
||||||
@@ -9,13 +10,16 @@ content_margin_top = 2.0
|
|||||||
content_margin_right = 2.0
|
content_margin_right = 2.0
|
||||||
content_margin_bottom = 2.0
|
content_margin_bottom = 2.0
|
||||||
|
|
||||||
[node name="WaveViewer" type="Control"]
|
[node name="WaveViewer" type="Control" node_paths=PackedStringArray("wave_vbox")]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_0v4fq")
|
||||||
|
wave_vbox = NodePath("PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/Waves")
|
||||||
|
enemy_row_scene = ExtResource("2_lbx3o")
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@@ -32,7 +36,7 @@ layout_mode = 2
|
|||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
|
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Upcoming waves"
|
text = "TITLE_WAVE_VIEWER"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
@@ -45,154 +49,11 @@ layout_mode = 2
|
|||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_stretch_ratio = 2.0
|
size_flags_stretch_ratio = 2.0
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer"]
|
[node name="Waves" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer"]
|
||||||
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="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer"]
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Wave 1"
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect2" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect3" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect4" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect5" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect6" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="VBoxContainer2" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer2"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Wave 2"
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer2"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer2/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect2" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer2/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect3" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer2/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect4" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer2/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect5" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer2/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect6" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer2/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="VBoxContainer3" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer3"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Wave 3"
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer3"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer3/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect2" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer3/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect3" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer3/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect4" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer3/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect5" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer3/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect6" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer3/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="VBoxContainer4" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer4"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Wave 1"
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer4"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer4/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect2" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer4/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect3" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer4/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect4" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer4/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect5" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer4/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="TextureRect6" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/VBoxContainer4/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_0v4fq")
|
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer"]
|
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
@@ -218,10 +79,8 @@ text = "this dawg is so big itll make your big meaty nuts fall off from how fuck
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
alignment = 2
|
alignment = 2
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer2"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "BUTTON_CANCEL"
|
|
||||||
|
|
||||||
[node name="Button2" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer2"]
|
[node name="Button2" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer2"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "BUTTON_CONFIRM"
|
text = "BUTTON_CLOSE"
|
||||||
|
|
||||||
|
[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer2/Button2" to="." method="_on_button_2_pressed"]
|
||||||
|
|||||||
Reference in New Issue
Block a user