way too many changes to list, oops. big rewrite.
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://ri8r03wqy80t"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/eight_direction_sprite.gd" id="1_ipfb5"]
|
||||
[ext_resource type="Script" uid="uid://by8jxwui7chwl" path="res://Scripts/eight_direction_sprite.gd" id="1_ipfb5"]
|
||||
[ext_resource type="Texture2D" uid="uid://bf3gkg7f2oyg7" path="res://Assets/TextureAtlases/player.tres" id="2_kkoy2"]
|
||||
|
||||
[node name="EightDirectionSprite" type="Sprite3D"]
|
||||
|
@ -1,14 +1,22 @@
|
||||
class_name CardPrinter extends StaticBody3D
|
||||
|
||||
@export var cards: Array[CardInHand]
|
||||
@export var item_card_scene: PackedScene
|
||||
@export var button_collider: CollisionShape3D
|
||||
@export var button_box: Node3D
|
||||
@export var choice_colliders: Array[CollisionShape3D]
|
||||
|
||||
#TODO: use faction enum
|
||||
var base_faction: int = 1
|
||||
var cards_generated: int = 0
|
||||
var card_available: bool = false
|
||||
var reply_player: Hero
|
||||
var spawned_cards: Array[CardItem] = []
|
||||
|
||||
|
||||
func get_faction_cards(faction: Card.Faction) -> Array[Card]:
|
||||
var valid_cards: Array[Card] = []
|
||||
for card: Card in Data.cards:
|
||||
if card.faction == faction:
|
||||
valid_cards.append(card)
|
||||
return valid_cards
|
||||
|
||||
|
||||
func generate_rarity() -> int:
|
||||
@ -28,42 +36,44 @@ func generate_rarity() -> int:
|
||||
return decided_rarity
|
||||
|
||||
|
||||
func randomize_cards() -> void:
|
||||
var decided_rarity: int = generate_rarity()
|
||||
var card_array: Array = []
|
||||
for x: Card in Data.cards:
|
||||
if x.rarity == decided_rarity:
|
||||
card_array.append(x)
|
||||
var card: Card
|
||||
for x: CardInHand in cards:
|
||||
func randomize_cards(faction: Card.Faction) -> void:
|
||||
#TODO: no magic numbers, asshole! 3 = cards to spawn
|
||||
for x: int in 3:
|
||||
var decided_rarity: int = generate_rarity()
|
||||
var card_choices: Array[Card] = get_faction_cards(faction)
|
||||
var card_array: Array = []
|
||||
var cards_chosen: bool = false
|
||||
while !cards_chosen:
|
||||
for card: Card in card_choices:
|
||||
if card.rarity == decided_rarity:
|
||||
card_array.append(card)
|
||||
cards_chosen = true
|
||||
decided_rarity -= 1
|
||||
if decided_rarity < 0:
|
||||
card_array.append(Data.cards[0])
|
||||
cards_chosen = true
|
||||
var card: Card
|
||||
if card_array.size() > 0:
|
||||
card = card_array[Game.randi_in_range(132 * cards_generated, 0, card_array.size() - 1)]
|
||||
cards_generated += 1
|
||||
card_array.erase(card)
|
||||
x.set_card(card)
|
||||
#TODO: in reality this should just show the icon and then hovering over it lets you see either side at the players own discretion
|
||||
x.view_tower()
|
||||
$Node3D.set_visible(true)
|
||||
for x: CollisionShape3D in choice_colliders:
|
||||
x.disabled = false
|
||||
card_available = true
|
||||
var item: CardItem = item_card_scene.instantiate() as CardItem
|
||||
item.set_card(card)
|
||||
item.position = Vector3(x, 1, 2)
|
||||
item.pressed.connect(card_picked_up)
|
||||
spawned_cards.append(item)
|
||||
add_child(item)
|
||||
|
||||
|
||||
func retrieve_card(i: int, _reply: Hero) -> void:
|
||||
$Node3D.set_visible(false)
|
||||
for x: CollisionShape3D in choice_colliders:
|
||||
x.disabled = true
|
||||
if card_available:
|
||||
var card: Card = cards[i].stats
|
||||
reply_player.add_card(card)
|
||||
#var item: ItemCard = item_card_scene.instantiate() as ItemCard
|
||||
#item.card = card
|
||||
#item.position = Vector3(1.683, 0, 0)
|
||||
#add_child(item)
|
||||
func card_picked_up(card_item: CardItem) -> void:
|
||||
reply_player.add_card(card_item.card)
|
||||
reply_player = null
|
||||
for spawned_card: CardItem in spawned_cards:
|
||||
spawned_card.queue_free()
|
||||
spawned_cards = []
|
||||
button_collider.disabled = false
|
||||
button_box.position = Vector3(0,0,0)
|
||||
$StaticBody3D/AudioStreamPlayer3D.play()
|
||||
reply_player = null
|
||||
|
||||
|
||||
func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void:
|
||||
@ -71,4 +81,4 @@ func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void:
|
||||
button_collider.disabled = true
|
||||
button_box.position = Vector3(0,0,-0.2)
|
||||
$StaticBody3D/AudioStreamPlayer3D.play()
|
||||
randomize_cards()
|
||||
randomize_cards(reply.hero_class.faction)
|
||||
|
1
Scenes/CardPrinter/card_printer.gd.uid
Normal file
1
Scenes/CardPrinter/card_printer.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bivtfdl3p1brv
|
@ -1,10 +1,9 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://1b2ikdanl66b"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://1b2ikdanl66b"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scenes/CardPrinter/card_printer.gd" id="1_qft15"]
|
||||
[ext_resource type="PackedScene" uid="uid://dsasunnk47n8o" path="res://Scenes/item_card.tscn" id="2_hegq8"]
|
||||
[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="3_wygtg"]
|
||||
[ext_resource type="Script" path="res://Scripts/interact_button.gd" id="4_eavi1"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="5_m033a"]
|
||||
[ext_resource type="Script" uid="uid://bivtfdl3p1brv" path="res://Scenes/CardPrinter/card_printer.gd" id="1_qft15"]
|
||||
[ext_resource type="PackedScene" uid="uid://dq8v5e11rvyi6" path="res://plan.tscn" id="2_8jpsw"]
|
||||
[ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="4_eavi1"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="5_m033a"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s02au"]
|
||||
albedo_color = Color(0.203922, 0.592157, 0.592157, 1)
|
||||
@ -12,15 +11,6 @@ albedo_color = Color(0.203922, 0.592157, 0.592157, 1)
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_0ebt5"]
|
||||
size = Vector3(2, 2.1, 1)
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_yf4je"]
|
||||
viewport_path = NodePath("SubViewport")
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_3q3h0"]
|
||||
viewport_path = NodePath("SubViewport2")
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_vyyy4"]
|
||||
viewport_path = NodePath("SubViewport3")
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_ikdwj"]
|
||||
size = Vector3(1.29447, 0.342125, 0.277604)
|
||||
|
||||
@ -28,18 +18,12 @@ size = Vector3(1.29447, 0.342125, 0.277604)
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("5_m033a")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_gv3t5"]
|
||||
size = Vector3(0.617184, 0.869944, 0.0570252)
|
||||
|
||||
[node name="CardPrinter" type="StaticBody3D" node_paths=PackedStringArray("cards", "button_collider", "button_box", "choice_colliders")]
|
||||
[node name="CardPrinter" type="StaticBody3D" node_paths=PackedStringArray("button_collider", "button_box")]
|
||||
script = ExtResource("1_qft15")
|
||||
cards = [NodePath("SubViewport/Node2D"), NodePath("SubViewport2/Node2D"), NodePath("SubViewport3/Node2D")]
|
||||
item_card_scene = ExtResource("2_hegq8")
|
||||
item_card_scene = ExtResource("2_8jpsw")
|
||||
button_collider = NodePath("StaticBody3D/CollisionShape3D2")
|
||||
button_box = NodePath("StaticBody3D/CollisionShape3D2/CSGBox3D")
|
||||
choice_colliders = [NodePath("StaticBody3D2/CollisionShape3D2"), NodePath("StaticBody3D3/CollisionShape3D2"), NodePath("StaticBody3D4/CollisionShape3D2")]
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.05, 0)
|
||||
@ -50,49 +34,6 @@ material = SubResource("StandardMaterial3D_s02au")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.05, 0)
|
||||
shape = SubResource("BoxShape3D_0ebt5")
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="."]
|
||||
transparent_bg = true
|
||||
size = Vector2i(352, 512)
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="Node2D" parent="SubViewport" instance=ExtResource("3_wygtg")]
|
||||
position = Vector2(-56, 0)
|
||||
|
||||
[node name="SubViewport2" type="SubViewport" parent="."]
|
||||
transparent_bg = true
|
||||
size = Vector2i(352, 512)
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="Node2D" parent="SubViewport2" instance=ExtResource("3_wygtg")]
|
||||
position = Vector2(-56, 0)
|
||||
|
||||
[node name="SubViewport3" type="SubViewport" parent="."]
|
||||
transparent_bg = true
|
||||
size = Vector2i(352, 512)
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="Node2D" parent="SubViewport3" instance=ExtResource("3_wygtg")]
|
||||
position = Vector2(-56, 0)
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.149617, 0)
|
||||
visible = false
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Node3D"]
|
||||
transform = Transform3D(0.175, 0, 0, 0, 0.175, 0, 0, 0, 0.175, -0.65, 1.65, 0.506948)
|
||||
texture_filter = 0
|
||||
texture = SubResource("ViewportTexture_yf4je")
|
||||
|
||||
[node name="Sprite3D2" type="Sprite3D" parent="Node3D"]
|
||||
transform = Transform3D(0.175, 0, 0, 0, 0.175, 0, 0, 0, 0.175, 0, 1.65, 0.506948)
|
||||
texture_filter = 0
|
||||
texture = SubResource("ViewportTexture_3q3h0")
|
||||
|
||||
[node name="Sprite3D3" type="Sprite3D" parent="Node3D"]
|
||||
transform = Transform3D(0.175, 0, 0, 0, 0.175, 0, 0, 0, 0.175, 0.65, 1.65, 0.506948)
|
||||
texture_filter = 0
|
||||
texture = SubResource("ViewportTexture_vyyy4")
|
||||
|
||||
[node name="StaticBody3D" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.847404, 0.610684)
|
||||
collision_layer = 16
|
||||
@ -112,42 +53,4 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.010989, -0.086501)
|
||||
stream = SubResource("AudioStreamRandomizer_73g2w")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="StaticBody3D2" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.650194, 1.50143, 0.528758)
|
||||
collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("4_eavi1")
|
||||
hover_text = "Select card"
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D2"]
|
||||
shape = SubResource("BoxShape3D_gv3t5")
|
||||
disabled = true
|
||||
|
||||
[node name="StaticBody3D3" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000848182, 1.5001, 0.528758)
|
||||
collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("4_eavi1")
|
||||
button_press_value = 1
|
||||
hover_text = "Select card"
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D3"]
|
||||
shape = SubResource("BoxShape3D_gv3t5")
|
||||
disabled = true
|
||||
|
||||
[node name="StaticBody3D4" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.648946, 1.49865, 0.528758)
|
||||
collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("4_eavi1")
|
||||
button_press_value = 2
|
||||
hover_text = "Select card"
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D4"]
|
||||
shape = SubResource("BoxShape3D_gv3t5")
|
||||
disabled = true
|
||||
|
||||
[connection signal="button_interacted" from="StaticBody3D" to="." method="_on_static_body_3d_button_interacted"]
|
||||
[connection signal="button_interacted" from="StaticBody3D2" to="." method="retrieve_card"]
|
||||
[connection signal="button_interacted" from="StaticBody3D3" to="." method="retrieve_card"]
|
||||
[connection signal="button_interacted" from="StaticBody3D4" to="." method="retrieve_card"]
|
||||
|
3
Scenes/Menus/CharacterSelect/character_podium.gd
Normal file
3
Scenes/Menus/CharacterSelect/character_podium.gd
Normal file
@ -0,0 +1,3 @@
|
||||
class_name CharacterPodium extends Node3D
|
||||
|
||||
@export var text: String = ""
|
1
Scenes/Menus/CharacterSelect/character_podium.gd.uid
Normal file
1
Scenes/Menus/CharacterSelect/character_podium.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bc0xyfr5nj1ul
|
41
Scenes/Menus/CharacterSelect/character_preview.gd
Normal file
41
Scenes/Menus/CharacterSelect/character_preview.gd
Normal file
@ -0,0 +1,41 @@
|
||||
class_name CharacterPreview extends PanelContainer
|
||||
|
||||
@export var tower_label_scene: PackedScene
|
||||
@export var tower_label_container: VBoxContainer
|
||||
@export var hero_name_label: Label
|
||||
|
||||
var added_tags: Array[TowerLabel] = []
|
||||
var regular_label: Label = null
|
||||
|
||||
|
||||
func set_preview(hero: HeroClass) -> void:
|
||||
hero_name_label.text = hero.hero_name
|
||||
if regular_label:
|
||||
regular_label.queue_free()
|
||||
regular_label = null
|
||||
for tag: TowerLabel in added_tags:
|
||||
tag.queue_free()
|
||||
added_tags = []
|
||||
var added_labels: Array[Card] = []
|
||||
for card: Card in hero.deck:
|
||||
if !added_labels.has(card):
|
||||
var new_label: TowerLabel = tower_label_scene.instantiate() as TowerLabel
|
||||
new_label.change_label(card.display_name, str(hero.deck.count(card)))
|
||||
added_labels.append(card)
|
||||
tower_label_container.add_child(new_label)
|
||||
added_tags.append(new_label)
|
||||
|
||||
|
||||
func setup_with_basic_text(hero: HeroClass, text: String) -> void:
|
||||
hero_name_label.text = hero.hero_name
|
||||
if regular_label:
|
||||
regular_label.queue_free()
|
||||
regular_label = null
|
||||
for tag: TowerLabel in added_tags:
|
||||
tag.queue_free()
|
||||
added_tags = []
|
||||
var added_labels: Array[Card] = []
|
||||
var new_label: Label = Label.new()
|
||||
new_label.text = text
|
||||
tower_label_container.add_child(new_label)
|
||||
regular_label = new_label
|
1
Scenes/Menus/CharacterSelect/character_preview.gd.uid
Normal file
1
Scenes/Menus/CharacterSelect/character_preview.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://b1ucgfqilvr67
|
78
Scenes/Menus/CharacterSelect/character_select.gd
Normal file
78
Scenes/Menus/CharacterSelect/character_select.gd
Normal file
@ -0,0 +1,78 @@
|
||||
class_name CharacterSelect extends Node3D
|
||||
|
||||
signal hero_selected(hero_class: int)
|
||||
signal hero_confirmed()
|
||||
|
||||
@export var hero_preview_panel: CharacterPreview
|
||||
|
||||
var podiums: Array[CharacterPodium]
|
||||
|
||||
var character_selected: int = 0
|
||||
var can_hit_button: bool = true
|
||||
|
||||
func _ready() -> void:
|
||||
hero_preview_panel.set_preview(Data.characters[0])
|
||||
var heroes: int = Data.characters.size()
|
||||
var x: int = 0
|
||||
for hero: HeroClass in Data.characters:
|
||||
var pivot: Node3D = Node3D.new()
|
||||
$Podiums.add_child(pivot)
|
||||
var podium: CharacterPodium = hero.podium.instantiate() as CharacterPodium
|
||||
podium.position = Vector3(0.0, -0.5, 5.0)
|
||||
podiums.append(podium)
|
||||
pivot.add_child(podium)
|
||||
pivot.rotate_y((TAU / heroes) * x)
|
||||
x += 1
|
||||
#if Data.save_data.mage_unlocked:
|
||||
#podiums.visible = true
|
||||
|
||||
|
||||
func reset_button() -> void:
|
||||
can_hit_button = true
|
||||
|
||||
|
||||
func setup_ui() -> void:
|
||||
#TODO: This should all tie into a proper achievements system
|
||||
if character_selected == 0 or (character_selected == 1 and Data.save_data.mage_unlocked):
|
||||
$VBoxContainer/Button.disabled = false
|
||||
hero_preview_panel.set_preview(Data.characters[character_selected])
|
||||
hero_selected.emit(character_selected)
|
||||
elif character_selected == 1 and !Data.save_data.mage_unlocked and Data.save_data.mage_card_seen_in_shop:
|
||||
hero_preview_panel.setup_with_basic_text(Data.characters[character_selected], "Buy " + str(Data.save_data.mage_cards_bought) + "/10 scrolls in the shop to unlock")
|
||||
else:
|
||||
$VBoxContainer/Button.disabled = true
|
||||
hero_preview_panel.setup_with_basic_text(Data.characters[character_selected], podiums[character_selected].text)
|
||||
|
||||
|
||||
func retreat_selector() -> void:
|
||||
if !can_hit_button:
|
||||
return
|
||||
can_hit_button = false
|
||||
var tween: Tween = create_tween()
|
||||
tween.set_ease(Tween.EASE_OUT)
|
||||
tween.set_trans(Tween.TRANS_CUBIC)
|
||||
tween.tween_property($Node3D, "rotation_degrees", Vector3(0.0, $Node3D.rotation_degrees.y - 90.0, 0.0), 1.0)
|
||||
tween.tween_callback(reset_button)
|
||||
character_selected -= 1
|
||||
if character_selected < 0:
|
||||
character_selected = Data.characters.size() - 1
|
||||
setup_ui()
|
||||
|
||||
|
||||
func advance_selector() -> void:
|
||||
if !can_hit_button:
|
||||
return
|
||||
can_hit_button = false
|
||||
var tween: Tween = create_tween()
|
||||
tween.set_ease(Tween.EASE_OUT)
|
||||
tween.set_trans(Tween.TRANS_CUBIC)
|
||||
tween.tween_property($Node3D, "rotation_degrees", Vector3(0.0, $Node3D.rotation_degrees.y + 90.0, 0.0), 1.0)
|
||||
tween.tween_callback(reset_button)
|
||||
character_selected += 1
|
||||
if character_selected >= Data.characters.size():
|
||||
character_selected = 0
|
||||
setup_ui()
|
||||
|
||||
|
||||
func _on_confirm_button_pressed() -> void:
|
||||
hero_confirmed.emit()
|
1
Scenes/Menus/CharacterSelect/character_select.gd.uid
Normal file
1
Scenes/Menus/CharacterSelect/character_select.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://plrd0ckxrabh
|
104
Scenes/Menus/CharacterSelect/character_select.tscn
Normal file
104
Scenes/Menus/CharacterSelect/character_select.tscn
Normal file
@ -0,0 +1,104 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://bc6m3cluulpis"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://plrd0ckxrabh" path="res://Scenes/Menus/CharacterSelect/character_select.gd" id="1_lqqhx"]
|
||||
[ext_resource type="Script" uid="uid://b1ucgfqilvr67" path="res://Scenes/Menus/CharacterSelect/character_preview.gd" id="9_8d0rx"]
|
||||
[ext_resource type="PackedScene" uid="uid://clabkhnbn75rf" path="res://UI/tower_label.tscn" id="10_jdigy"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_tlgw2"]
|
||||
sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
|
||||
ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
|
||||
energy_multiplier = 0.0
|
||||
|
||||
[sub_resource type="Sky" id="Sky_atdxu"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_tlgw2")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_pq6wd"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_atdxu")
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
|
||||
[node name="CharacterSelect" type="Node3D" node_paths=PackedStringArray("hero_preview_panel")]
|
||||
script = ExtResource("1_lqqhx")
|
||||
hero_preview_panel = NodePath("PanelContainer")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_pq6wd")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
|
||||
light_energy = 0.0
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="."]
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="Node3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.976893, 0.21373, 0, -0.21373, 0.976893, 0, 2.25535, 10.9009)
|
||||
cull_mask = 1047553
|
||||
fov = 39.4
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="." node_paths=PackedStringArray("tower_label_container", "hero_name_label")]
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = 100.0
|
||||
offset_top = -91.5
|
||||
offset_right = 299.0
|
||||
offset_bottom = 91.5
|
||||
grow_vertical = 2
|
||||
script = ExtResource("9_8d0rx")
|
||||
tower_label_scene = ExtResource("10_jdigy")
|
||||
tower_label_container = NodePath("HBoxContainer2/HBoxContainer")
|
||||
hero_name_label = NodePath("HBoxContainer2/Label")
|
||||
|
||||
[node name="HBoxContainer2" type="VBoxContainer" parent="PanelContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PanelContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
text = "character name"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="PanelContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
text = "------------------------"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="VBoxContainer" parent="PanelContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -20.0
|
||||
offset_top = -40.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = -150.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Button2" type="Button" parent="VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "prev"
|
||||
|
||||
[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "next"
|
||||
|
||||
[node name="Button" type="Button" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Confirm"
|
||||
|
||||
[node name="Podiums" type="Node3D" parent="."]
|
||||
|
||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button2" to="." method="retreat_selector"]
|
||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button" to="." method="advance_selector"]
|
||||
[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_confirm_button_pressed"]
|
@ -1,19 +0,0 @@
|
||||
class_name HeroSelector extends Control
|
||||
|
||||
signal hero_selected(hero_class: int)
|
||||
|
||||
@export var hero_card_scene: PackedScene
|
||||
@export var hbox: HBoxContainer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
for hero: HeroClass in Data.characters:
|
||||
var card: Control = hero_card_scene.instantiate()
|
||||
card.set_hero(hero)
|
||||
card.pressed.connect(func(x: int) -> void: hero_selected.emit(x))
|
||||
card.button_mouse_entered.connect(_on_button_mouse_entered)
|
||||
hbox.add_child(card)
|
||||
|
||||
|
||||
func _on_button_mouse_entered() -> void:
|
||||
$AudioStreamPlayer.play()
|
@ -1,49 +0,0 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dqqitmhu66a7d"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scenes/Menus/CharacterSelect/charselect.gd" id="1_h2h26"]
|
||||
[ext_resource type="PackedScene" uid="uid://bnsf2degj5tio" path="res://Scenes/UI/hero_card.tscn" id="1_v2mfo"]
|
||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="3_ho1fl"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ehpk7"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("3_ho1fl")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="Control" type="Control" node_paths=PackedStringArray("hbox")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = ExtResource("1_h2h26")
|
||||
hero_card_scene = ExtResource("1_v2mfo")
|
||||
hbox = NodePath("CenterContainer/VBoxContainer/HBoxContainer")
|
||||
|
||||
[node name="CenterContainer" type="CenterContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="CenterContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Choose your hero"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = SubResource("AudioStreamRandomizer_ehpk7")
|
||||
bus = &"SFX"
|
@ -11,13 +11,13 @@ class_name GameEndScreen extends PanelContainer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var wins: int = Data.save_stats.twenty_game_history.count(true)
|
||||
var games: int = Data.save_stats.twenty_game_history.size()
|
||||
var wins: int = Data.save_data.twenty_game_history.count(true)
|
||||
var games: int = Data.save_data.twenty_game_history.size()
|
||||
var winrate: int = int((float(wins) / float(games)) * 100.0)
|
||||
winrate_label.text = "Your 20-game winrate is now: " + str(winrate) + "%!"
|
||||
total_games_label.text = "Total games: " + str(Data.save_stats.wins + Data.save_stats.losses)
|
||||
total_wins_label.text = "Total wins: " + str(Data.save_stats.wins)
|
||||
total_losses_label.text = "Total losses: " + str(Data.save_stats.losses)
|
||||
total_games_label.text = "Total games: " + str(Data.save_data.wins + Data.save_data.losses)
|
||||
total_wins_label.text = "Total wins: " + str(Data.save_data.wins)
|
||||
total_losses_label.text = "Total losses: " + str(Data.save_data.losses)
|
||||
for wave_key: int in Game.stats.enemies_undefeated:
|
||||
var spawned_box: EnemyBox = box.instantiate() as EnemyBox
|
||||
undefeated_enemies.add_child(spawned_box)
|
||||
@ -36,6 +36,8 @@ func _on_quit_button_pressed() -> void:
|
||||
|
||||
|
||||
func _on_play_button_pressed() -> void:
|
||||
if Game.gamemode.daily == false and !Game.gamemode.seeded:
|
||||
Game.gamemode.rng_seed = randi()
|
||||
Game.setup()
|
||||
Game.start()
|
||||
queue_free()
|
||||
|
1
Scenes/Menus/GameEndScreen/game_end_screen.gd.uid
Normal file
1
Scenes/Menus/GameEndScreen/game_end_screen.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bdknvktw033g3
|
@ -1,14 +1,13 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://ce0m8vbjbng6o"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scenes/Menus/GameEndScreen/game_end_screen.gd" id="1_oa7nq"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5hp43bm07b8a" path="res://h_box_container.tscn" id="2_xm8em"]
|
||||
[ext_resource type="Script" uid="uid://bdknvktw033g3" path="res://Scenes/Menus/GameEndScreen/game_end_screen.gd" id="1_oa7nq"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5hp43bm07b8a" path="res://UI/h_box_container.tscn" id="2_xm8em"]
|
||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="3_ro1yg"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_dram5"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("3_ro1yg")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[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
|
||||
|
9
Scenes/Menus/MainMenu/achievements_menu.gd
Normal file
9
Scenes/Menus/MainMenu/achievements_menu.gd
Normal file
@ -0,0 +1,9 @@
|
||||
extends PanelContainer
|
||||
|
||||
func _ready() -> void:
|
||||
if Data.save_data.wins > 0:
|
||||
$VBoxContainer/GridContainer/FirstWin.icon.region = Rect2(36, 0, 36, 36)
|
||||
if Data.save_data.mage_card_seen_in_shop:
|
||||
$VBoxContainer/GridContainer/SeenMageCard.icon.region = Rect2(36, 0, 36, 36)
|
||||
if Data.save_data.mage_unlocked:
|
||||
$VBoxContainer/GridContainer/UnlockedMage.icon.region = Rect2(36, 0, 36, 36)
|
1
Scenes/Menus/MainMenu/achievements_menu.gd.uid
Normal file
1
Scenes/Menus/MainMenu/achievements_menu.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://cjr0pbqisd51v
|
@ -1,27 +1,36 @@
|
||||
class_name MainMenu extends Control
|
||||
|
||||
@export var bg_level: Level
|
||||
@export var game_select_menu: Control
|
||||
@export var main_controls: Control
|
||||
@export var seed_entry: LineEdit
|
||||
@export var profile_controls: Control
|
||||
@export var mods_controls: ModMenu
|
||||
|
||||
var gamemode: GameMode = GameMode.new()
|
||||
|
||||
var confirmation_popup_scene: PackedScene = preload("res://Scenes/Menus/confirmation_popup.tscn")
|
||||
var text_input_popup_scene: PackedScene = preload("res://Scenes/Menus/text_input_popup.tscn")
|
||||
var multiplayer_lobby_scene_path: String = "res://Scenes/multiplayer_lobby.tscn"
|
||||
var options_menu_scene: PackedScene = preload("res://Scenes/Menus/options_menu.tscn")
|
||||
var temp_data: SaveData
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
$ProfileEditor/VBoxContainer/HBoxContainer/DisplayName.text = Data.player_profile.display_name
|
||||
load_stats(Data.save_data)
|
||||
bg_level.a_star_graph_3d.make_grid()
|
||||
bg_level.a_star_graph_3d.find_path()
|
||||
bg_level.a_star_graph_3d.build_random_maze(50)
|
||||
bg_level.a_star_graph_3d.place_random_towers(20)
|
||||
bg_level.a_star_graph_3d.disable_all_tower_frames()
|
||||
Game.level = bg_level
|
||||
var new_wave: Dictionary = WaveManager.generate_wave(400, bg_level.enemy_pool)
|
||||
WaveManager.generate_wave(400, bg_level.enemy_pool, bg_level.enemy_spawns)
|
||||
for spawn: EnemySpawner in bg_level.enemy_spawns:
|
||||
spawn.enemy_died_callback = enemy_died
|
||||
spawn.enemy_reached_goal_callback = damage_goal
|
||||
spawn.enemy_spawned.connect(increase_enemy_count)
|
||||
spawn.spawn_wave(new_wave)
|
||||
spawn.spawn_wave()
|
||||
|
||||
|
||||
#these exist purely to make the enemies that spawn on the main menu happy
|
||||
@ -34,10 +43,9 @@ func increase_enemy_count() -> void:
|
||||
|
||||
|
||||
func _on_display_name_edit_pressed() -> void:
|
||||
var popup: TextInputPopup = text_input_popup_scene.instantiate() as TextInputPopup
|
||||
popup.set_popup(Data.player_profile.display_name, "Display Name", "Confirm")
|
||||
popup.completed.connect(change_profile_display_name)
|
||||
add_child(popup)
|
||||
$ProfileManager.visible = true
|
||||
$ProfileManager/VBoxContainer/DisplayName/LineEdit.placeholder_text = Data.player_profile.display_name
|
||||
temp_data = SaveData.load_profile_from_disk()
|
||||
|
||||
|
||||
func change_profile_display_name(display_name: String) -> void:
|
||||
@ -57,20 +65,130 @@ func quit_game(confirmation: bool) -> void:
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
func _on_play_button_pressed() -> void:
|
||||
Game.level = null
|
||||
Game.scene_switch_to_singleplayer_lobby()
|
||||
|
||||
|
||||
func _on_options_button_pressed() -> void:
|
||||
var menu: OptionsMenu = options_menu_scene.instantiate()
|
||||
add_child(menu)
|
||||
|
||||
|
||||
func _on_multiplayer_button_pressed() -> void:
|
||||
Game.level = null
|
||||
Game.scene_switch_to_multiplayer_lobby()
|
||||
|
||||
|
||||
func _on_button_mouse_entered() -> void:
|
||||
$AudioStreamPlayer.play()
|
||||
|
||||
|
||||
func start_game() -> void:
|
||||
Game.level = null
|
||||
Game.gamemode = gamemode
|
||||
if gamemode.multiplayer:
|
||||
Game.scene_switch_to_multiplayer_lobby()
|
||||
else:
|
||||
Game.scene_switch_to_singleplayer_lobby()
|
||||
|
||||
|
||||
func _on_play_button_pressed() -> void:
|
||||
gamemode.multiplayer = false
|
||||
open_game_menu()
|
||||
|
||||
|
||||
func _on_multiplayer_button_pressed() -> void:
|
||||
gamemode.multiplayer = true
|
||||
open_game_menu()
|
||||
|
||||
|
||||
func open_game_menu() -> void:
|
||||
main_controls.visible = false
|
||||
game_select_menu.visible = true
|
||||
|
||||
|
||||
func _on_back_button_pressed() -> void:
|
||||
main_controls.visible = true
|
||||
game_select_menu.visible = false
|
||||
|
||||
|
||||
func generate_seed() -> void:
|
||||
if seed_entry.text != "":
|
||||
if seed_entry.text.is_valid_int():
|
||||
gamemode.rng_seed = int(seed_entry.text)
|
||||
else:
|
||||
gamemode.rng_seed = hash(seed_entry.text)
|
||||
gamemode.seeded = true
|
||||
else:
|
||||
gamemode.rng_seed = randi()
|
||||
|
||||
|
||||
func _on_standard_button_pressed() -> void:
|
||||
generate_seed()
|
||||
gamemode.endless = false
|
||||
gamemode.daily = false
|
||||
start_game()
|
||||
|
||||
|
||||
func _on_daily_button_pressed() -> void:
|
||||
gamemode.seed = hash(Time.get_date_string_from_system(true))
|
||||
gamemode.endless = false
|
||||
gamemode.daily = true
|
||||
start_game()
|
||||
|
||||
|
||||
func _on_endless_button_pressed() -> void:
|
||||
generate_seed()
|
||||
gamemode.endless = true
|
||||
gamemode.daily = false
|
||||
start_game()
|
||||
|
||||
|
||||
func _on_changelog_button_pressed() -> void:
|
||||
main_controls.visible = true
|
||||
profile_controls.visible = true
|
||||
$Changelog.queue_free()
|
||||
|
||||
|
||||
func load_stats(stats: SaveData) -> void:
|
||||
$ProfileManager/VBoxContainer/Stats/Wins/Label2.text = str(stats.wins)
|
||||
$ProfileManager/VBoxContainer/Stats/Losses/Label2.text = str(stats.losses)
|
||||
$ProfileManager/VBoxContainer/Stats/Winrate/Label2.text = str(int(stats.wins / 20.0))
|
||||
$ProfileManager/VBoxContainer/Stats/EngineerCardsBought/Label2.text = str(stats.engineer_cards_bought)
|
||||
$ProfileManager/VBoxContainer/Stats/MageCardsBought/Label2.text = str(stats.mage_cards_bought)
|
||||
|
||||
|
||||
func _on_achievements_back_button_pressed() -> void:
|
||||
$AchievementsMenu.visible = false
|
||||
|
||||
|
||||
func _on_achievements_button_pressed() -> void:
|
||||
$AchievementsMenu.visible = true
|
||||
|
||||
|
||||
func _on_profile_manager_cancel_pressed() -> void:
|
||||
$ProfileManager.visible = false
|
||||
|
||||
|
||||
func _on_profile_manager_confirm_pressed() -> void:
|
||||
$ProfileManager.visible = false
|
||||
if $ProfileManager/VBoxContainer/DisplayName/LineEdit.text != "":
|
||||
change_profile_display_name($ProfileManager/VBoxContainer/DisplayName/LineEdit.text)
|
||||
$ProfileManager/VBoxContainer/DisplayName/LineEdit.text = ""
|
||||
Data.save_data = temp_data
|
||||
Data.save_data.save_to_disc()
|
||||
|
||||
|
||||
func _on_unlock_all_pressed() -> void:
|
||||
temp_data.unlock_all_content()
|
||||
|
||||
|
||||
func _on_lock_all_pressed() -> void:
|
||||
temp_data.lock_all_content()
|
||||
|
||||
|
||||
func _on_mods_button_pressed() -> void:
|
||||
profile_controls.visible = false
|
||||
main_controls.visible = false
|
||||
mods_controls.visible = true
|
||||
|
||||
|
||||
func _on_cancel_mods_pressed() -> void:
|
||||
profile_controls.visible = true
|
||||
main_controls.visible = true
|
||||
mods_controls.visible = false
|
||||
|
||||
|
||||
func _on_confirm_mods_pressed() -> void:
|
||||
mods_controls.load_mod_list()
|
||||
|
1
Scenes/Menus/MainMenu/main_menu.gd.uid
Normal file
1
Scenes/Menus/MainMenu/main_menu.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://ci8vq73u23viy
|
@ -1,21 +1,75 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://8yv7excojcg0"]
|
||||
[gd_scene load_steps=27 format=3 uid="uid://8yv7excojcg0"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_p1cib"]
|
||||
[ext_resource type="Script" path="res://Scenes/Menus/MainMenu/main_menu.gd" id="2_ivytu"]
|
||||
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_p1cib"]
|
||||
[ext_resource type="Script" uid="uid://ci8vq73u23viy" path="res://Scenes/Menus/MainMenu/main_menu.gd" id="2_ivytu"]
|
||||
[ext_resource type="Texture2D" uid="uid://lvvnrb5jugum" path="res://Assets/Textures/logo_title.png" id="3_8jkeb"]
|
||||
[ext_resource type="PackedScene" uid="uid://y1qa1g3ic8sp" path="res://Worlds/GreenPlanet/Levels/first_level.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://Resources/Enemies/dog_fast.tres" id="9_hdp0s"]
|
||||
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Resources/Enemies/dog_heavy.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://Resources/Enemies/airenemy2.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://mod_menu.gd" id="19_6t4jd"]
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_5u75i"]
|
||||
viewport_path = NodePath("SubViewport")
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_sv1gy"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("8_1vnym")
|
||||
region = Rect2(0, 0, 32, 32)
|
||||
|
||||
[sub_resource type="Resource" id="Resource_6t4jd"]
|
||||
resource_local_to_scene = true
|
||||
script = ExtResource("5_u514r")
|
||||
title = "dog"
|
||||
target_type = 1
|
||||
icon = ExtResource("7_2sylv")
|
||||
death_sprite = ExtResource("6_rsxwm")
|
||||
sprite = SubResource("AtlasTexture_sv1gy")
|
||||
spawn_power = 10
|
||||
health = 180
|
||||
penalty = 10
|
||||
movement_speed = 1.2
|
||||
spawn_cooldown = 1.2
|
||||
common_group = 1
|
||||
common_cost = 1
|
||||
uncommon_group = 1
|
||||
uncommon_cost = 1
|
||||
rare_group = 1
|
||||
rare_cost = 1
|
||||
epic_group = 1
|
||||
epic_cost = 1
|
||||
legendary_group = 1
|
||||
legendary_cost = 1
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2jyua"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("5_cwn2i")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="MainMenu" type="Control" node_paths=PackedStringArray("bg_level")]
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_y5bw6"]
|
||||
atlas = ExtResource("15_74epv")
|
||||
region = Rect2(0, 0, 36, 36)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_q26na"]
|
||||
atlas = ExtResource("16_sv1gy")
|
||||
region = Rect2(0, 0, 36, 36)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3aj5m"]
|
||||
atlas = ExtResource("17_6t4jd")
|
||||
region = Rect2(0, 0, 36, 36)
|
||||
|
||||
[node name="MainMenu" type="Control" node_paths=PackedStringArray("bg_level", "game_select_menu", "main_controls", "seed_entry", "profile_controls", "mods_controls")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@ -25,6 +79,11 @@ grow_vertical = 2
|
||||
theme = ExtResource("1_p1cib")
|
||||
script = ExtResource("2_ivytu")
|
||||
bg_level = NodePath("SubViewport/GridMap")
|
||||
game_select_menu = NodePath("GameSelectMenu")
|
||||
main_controls = NodePath("MainControls")
|
||||
seed_entry = NodePath("GameSelectMenu/VBoxContainer/HBoxContainer2/LineEdit")
|
||||
profile_controls = NodePath("ProfileEditor")
|
||||
mods_controls = NodePath("PanelContainer")
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="."]
|
||||
layout_mode = 1
|
||||
@ -68,6 +127,10 @@ text = "Play"
|
||||
layout_mode = 2
|
||||
text = "Multiplayer"
|
||||
|
||||
[node name="ModsButton" type="Button" parent="MainControls"]
|
||||
layout_mode = 2
|
||||
text = "Mods"
|
||||
|
||||
[node name="OptionsButton" type="Button" parent="MainControls"]
|
||||
layout_mode = 2
|
||||
text = "Options
|
||||
@ -97,8 +160,7 @@ layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="ProfileEditor/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Display Name
|
||||
"
|
||||
text = "Current Profile"
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="ProfileEditor/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
@ -118,12 +180,13 @@ theme_override_constants/margin_bottom = 4
|
||||
[node name="DisplayNameEdit" type="Button" parent="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Change"
|
||||
text = "View Profile"
|
||||
|
||||
[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_6t4jd"), 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")
|
||||
@ -133,13 +196,436 @@ bus = &"SFX"
|
||||
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
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -20.0
|
||||
offset_top = -20.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="GameSelectMenu"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="GameSelectMenu/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="BackButton" type="Button" parent="GameSelectMenu/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Back"
|
||||
|
||||
[node name="Title" type="Label" parent="GameSelectMenu/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Select a game to begin"
|
||||
|
||||
[node name="StandardButton" type="Button" parent="GameSelectMenu/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Standard (20 waves)"
|
||||
|
||||
[node name="DailyButton" type="Button" parent="GameSelectMenu/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Daily Challenge"
|
||||
|
||||
[node name="EndlessButton" type="Button" parent="GameSelectMenu/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Endless"
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="GameSelectMenu/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="GameSelectMenu/VBoxContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
text = "Seed:"
|
||||
|
||||
[node name="LineEdit" type="LineEdit" parent="GameSelectMenu/VBoxContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "leave blank for random game"
|
||||
|
||||
[node name="Changelog" type="PanelContainer" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = 200.0
|
||||
offset_top = 100.0
|
||||
offset_right = -200.0
|
||||
offset_bottom = -100.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Changelog"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="Changelog/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Changelog"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Changelog/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Changelog/VBoxContainer/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
alignment = 1
|
||||
|
||||
[node name="Label6" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label10" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Added: New Mage card: Ascension"
|
||||
|
||||
[node name="Label13" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Added: New Mechanic card: Overclock"
|
||||
|
||||
[node name="Label11" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Fixed: Interaction text now properly disappears if the wave starts"
|
||||
|
||||
[node name="Label3" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Fixed: Refrigerator tower now applies cold to enemies"
|
||||
|
||||
[node name="Label12" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Fixed: Seed now correctly changes on consecutive random seed runs"
|
||||
|
||||
[node name="Label4" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label5" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Balance: Increased Bubble movement speed 1.5 > 2.0"
|
||||
|
||||
[node name="Label7" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Balance: Increased Spike health 9 > 12"
|
||||
|
||||
[node name="Label8" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Balance: Increased Heavy Dog speed 0.8 > 0.9"
|
||||
|
||||
[node name="Label14" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Balance: Decreased Boss Dog speed 1.0 > 0.8"
|
||||
|
||||
[node name="Label15" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Balance: Increased Boss Dog health 1000 > 3000"
|
||||
|
||||
[node name="Label16" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Balance: Increased Boss Dog spawn chance"
|
||||
|
||||
[node name="Label9" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Balance: Adjusted Glue Launcher rarity [Uncommon -> Common]"
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Changelog/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="Button" type="Button" parent="Changelog/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Close"
|
||||
|
||||
[node name="ProfileManager" type="PanelContainer" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -20.0
|
||||
offset_top = -20.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="ProfileManager"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TitleBar" type="Label" parent="ProfileManager/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Profile Viewer"
|
||||
|
||||
[node name="DisplayName" type="HBoxContainer" parent="ProfileManager/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/DisplayName"]
|
||||
layout_mode = 2
|
||||
text = "Display Name"
|
||||
|
||||
[node name="LineEdit" type="LineEdit" parent="ProfileManager/VBoxContainer/DisplayName"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "Display name"
|
||||
alignment = 1
|
||||
|
||||
[node name="Stats" type="VBoxContainer" parent="ProfileManager/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats"]
|
||||
layout_mode = 2
|
||||
text = "Stats"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Wins" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Wins"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Wins"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Wins"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Losses" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Losses"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Losses"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Losses"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Winrate" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Winrate"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Winrate (last 20 games)"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Winrate"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="EngineerCardsBought" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/EngineerCardsBought"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "plans bought"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/EngineerCardsBought"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="MageCardsBought" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/MageCardsBought"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "scrolls bought"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/MageCardsBought"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="UnlockAll" type="Button" parent="ProfileManager/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Unlock All Content"
|
||||
|
||||
[node name="LockAll" type="Button" parent="ProfileManager/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Lock All Content"
|
||||
|
||||
[node name="AchievementsButton" type="Button" parent="ProfileManager/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "View Achievements"
|
||||
|
||||
[node name="Controls" type="HBoxContainer" parent="ProfileManager/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Cancel" type="Button" parent="ProfileManager/VBoxContainer/Controls"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Cancel"
|
||||
|
||||
[node name="Confirm" type="Button" parent="ProfileManager/VBoxContainer/Controls"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Confirm"
|
||||
|
||||
[node name="AchievementsMenu" type="PanelContainer" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -20.0
|
||||
offset_top = -20.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("15_sv1gy")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="AchievementsMenu"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="AchievementsMenu/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="AchievementsMenu/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Achievements"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Button" type="Button" parent="AchievementsMenu/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Back"
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="AchievementsMenu/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
columns = 9
|
||||
|
||||
[node name="FirstWin" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer"]
|
||||
custom_minimum_size = Vector2(140, 140)
|
||||
layout_mode = 2
|
||||
tooltip_text = "What could I possibly have to do to earn this??"
|
||||
icon = SubResource("AtlasTexture_y5bw6")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="SeenMageCard" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer"]
|
||||
custom_minimum_size = Vector2(140, 140)
|
||||
layout_mode = 2
|
||||
tooltip_text = "Who would use this old thing anyway?"
|
||||
icon = SubResource("AtlasTexture_q26na")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="UnlockedMage" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer"]
|
||||
custom_minimum_size = Vector2(140, 140)
|
||||
layout_mode = 2
|
||||
tooltip_text = "Ok, here me out
|
||||
"
|
||||
icon = SubResource("AtlasTexture_3aj5m")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -20.0
|
||||
offset_top = -20.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("19_6t4jd")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Mods"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(800, 400)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="CancelMods" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Confirm"
|
||||
|
||||
[node name="ConfirmMods" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Confirm"
|
||||
|
||||
[connection signal="mouse_entered" from="MainControls/PlayButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="MainControls/PlayButton" to="." method="_on_play_button_pressed"]
|
||||
[connection signal="mouse_entered" from="MainControls/MultiplayerButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="MainControls/MultiplayerButton" to="." method="_on_multiplayer_button_pressed"]
|
||||
[connection signal="mouse_entered" from="MainControls/ModsButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="MainControls/ModsButton" to="." method="_on_mods_button_pressed"]
|
||||
[connection signal="mouse_entered" from="MainControls/OptionsButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="MainControls/OptionsButton" to="." method="_on_options_button_pressed"]
|
||||
[connection signal="mouse_entered" from="MainControls/QuitButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="MainControls/QuitButton" to="." method="_on_quit_button_pressed"]
|
||||
[connection signal="mouse_entered" from="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer/DisplayNameEdit" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer/DisplayNameEdit" to="." method="_on_display_name_edit_pressed"]
|
||||
[connection signal="pressed" from="GameSelectMenu/VBoxContainer/HBoxContainer/BackButton" to="." method="_on_back_button_pressed"]
|
||||
[connection signal="pressed" from="GameSelectMenu/VBoxContainer/StandardButton" to="." method="_on_standard_button_pressed"]
|
||||
[connection signal="pressed" from="GameSelectMenu/VBoxContainer/DailyButton" to="." method="_on_daily_button_pressed"]
|
||||
[connection signal="pressed" from="GameSelectMenu/VBoxContainer/EndlessButton" to="." method="_on_endless_button_pressed"]
|
||||
[connection signal="pressed" from="Changelog/VBoxContainer/HBoxContainer/Button" to="." method="_on_changelog_button_pressed"]
|
||||
[connection signal="pressed" from="ProfileManager/VBoxContainer/UnlockAll" to="." method="_on_unlock_all_pressed"]
|
||||
[connection signal="pressed" from="ProfileManager/VBoxContainer/LockAll" to="." method="_on_lock_all_pressed"]
|
||||
[connection signal="pressed" from="ProfileManager/VBoxContainer/AchievementsButton" to="." method="_on_achievements_button_pressed"]
|
||||
[connection signal="pressed" from="ProfileManager/VBoxContainer/Controls/Cancel" to="." method="_on_profile_manager_cancel_pressed"]
|
||||
[connection signal="pressed" from="ProfileManager/VBoxContainer/Controls/Confirm" to="." method="_on_profile_manager_confirm_pressed"]
|
||||
[connection signal="pressed" from="AchievementsMenu/VBoxContainer/HBoxContainer/Button" to="." method="_on_achievements_back_button_pressed"]
|
||||
[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/CancelMods" to="." method="_on_cancel_mods_pressed"]
|
||||
[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/ConfirmMods" to="." method="_on_confirm_mods_pressed"]
|
||||
|
1
Scenes/Menus/PauseMenu/pause_menu.gd.uid
Normal file
1
Scenes/Menus/PauseMenu/pause_menu.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://cjyyepxaf4xl8
|
@ -1,14 +1,13 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://buvgdem68wtev"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_gaupv"]
|
||||
[ext_resource type="Script" path="res://Scenes/Menus/PauseMenu/pause_menu.gd" id="2_4pn2l"]
|
||||
[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"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_n6ixr"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("3_0bid7")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="Control" type="Control"]
|
||||
layout_mode = 3
|
||||
|
@ -1,13 +1,12 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://6a277g802os0"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/alert_popup.gd" id="1_cac03"]
|
||||
[ext_resource type="Script" uid="uid://4uwd40mavufi" path="res://Scripts/alert_popup.gd" id="1_cac03"]
|
||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_2mbtt"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_veol0"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("2_2mbtt")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="Control" type="PanelContainer"]
|
||||
anchors_preset = 8
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bwc45ogto8thn"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/audio_options.gd" id="1_avc0j"]
|
||||
[ext_resource type="Script" uid="uid://c4ljvgrb81du6" path="res://Scripts/audio_options.gd" id="1_avc0j"]
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_hvvdd"]
|
||||
|
||||
|
@ -1,13 +1,12 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://f46qh73hrk4y"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/confirmation_popup.gd" id="1_x7akt"]
|
||||
[ext_resource type="Script" uid="uid://bjt72v1wym5ie" path="res://Scripts/confirmation_popup.gd" id="1_x7akt"]
|
||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_3w36n"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_22wuj"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("2_3w36n")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="ConfirmationPopup" type="PanelContainer"]
|
||||
anchors_preset = 8
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bjk7jf0bau5lv"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/gameplay_options.gd" id="1_sy26f"]
|
||||
[ext_resource type="Script" uid="uid://dtrjph756oq1f" path="res://Scripts/gameplay_options.gd" id="1_sy26f"]
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_03x6q"]
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bmd4mawasoc11"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/graphics_options.gd" id="1_85rh6"]
|
||||
[ext_resource type="Script" uid="uid://bpb5c5r1yi8um" path="res://Scripts/graphics_options.gd" id="1_85rh6"]
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_03x6q"]
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bf2nosqt5f82e"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/keybind_options.gd" id="1_oxg0p"]
|
||||
[ext_resource type="Script" uid="uid://cxm67e833baex" path="res://Scripts/keybind_options.gd" id="1_oxg0p"]
|
||||
|
||||
[node name="Keybinds" type="VBoxContainer"]
|
||||
anchors_preset = 15
|
||||
|
@ -1,32 +0,0 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://3kcl30sump8c"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/loadout_editor.gd" id="1_y0cit"]
|
||||
|
||||
[node name="Panel" type="Panel"]
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = 90.0
|
||||
offset_top = -142.5
|
||||
offset_right = 545.0
|
||||
offset_bottom = 142.5
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_y0cit")
|
||||
|
||||
[node name="HBoxContainer" type="VBoxContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -20.0
|
||||
offset_top = -20.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Label" type="Label" parent="HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Choose Character"
|
@ -1,20 +1,19 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://cwvprrvk4l2k0"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_l1spu"]
|
||||
[ext_resource type="Script" path="res://Scripts/multiplayer_lobby.gd" id="2_nb860"]
|
||||
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_l1spu"]
|
||||
[ext_resource type="Script" uid="uid://cvm4lyhx1uh0w" path="res://Scripts/multiplayer_lobby.gd" id="2_nb860"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpt3kpixawyby" path="res://Scenes/UI/scoreboard.tscn" id="3_f6bia"]
|
||||
[ext_resource type="PackedScene" uid="uid://bvfit0sy2tnw4" path="res://Scenes/Menus/server_form.tscn" id="5_bqbwv"]
|
||||
[ext_resource type="PackedScene" uid="uid://dqqitmhu66a7d" path="res://Scenes/Menus/CharacterSelect/charselect.tscn" id="5_lvoo2"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://Scenes/UI/chatbox.tscn" id="6_wtqwd"]
|
||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="7_6mhre"]
|
||||
[ext_resource type="PackedScene" uid="uid://bc6m3cluulpis" path="res://Scenes/Menus/CharacterSelect/character_select.tscn" id="7_kawp7"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_cwnde"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("7_6mhre")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="multiplayer_lobby" type="Control" node_paths=PackedStringArray("server_form", "scoreboard", "loadout_editor", "chatbox")]
|
||||
[node name="multiplayer_lobby" type="Control" node_paths=PackedStringArray("server_form", "scoreboard", "chatbox", "ready_button", "audio_player")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@ -25,9 +24,11 @@ mouse_filter = 2
|
||||
theme = ExtResource("1_l1spu")
|
||||
script = ExtResource("2_nb860")
|
||||
server_form = NodePath("ServerForm")
|
||||
character_select_screen = ExtResource("7_kawp7")
|
||||
scoreboard = NodePath("Scoreboard")
|
||||
loadout_editor = NodePath("Control")
|
||||
chatbox = NodePath("Chatbox")
|
||||
ready_button = NodePath("ReadyButton")
|
||||
audio_player = NodePath("AudioStreamPlayer")
|
||||
|
||||
[node name="ServerForm" parent="." instance=ExtResource("5_bqbwv")]
|
||||
layout_mode = 1
|
||||
@ -46,10 +47,6 @@ offset_left = -472.0
|
||||
offset_right = -50.0
|
||||
grow_horizontal = 0
|
||||
|
||||
[node name="Control" parent="." instance=ExtResource("5_lvoo2")]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
|
||||
[node name="ReadyButton" type="Button" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
@ -81,4 +78,3 @@ bus = &"SFX"
|
||||
[connection signal="host_button_pressed" from="ServerForm" to="ServerForm" method="set_visible" binds= [false]]
|
||||
[connection signal="mouse_entered" from="ReadyButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="ReadyButton" to="." method="ready_player"]
|
||||
[connection signal="pressed" from="ReadyButton" to="ReadyButton" method="set_visible" binds= [false]]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://clulh7v8c7h85"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/options_menu.gd" id="1_bievw"]
|
||||
[ext_resource type="Script" uid="uid://48rvmybi18wj" path="res://Scripts/options_menu.gd" id="1_bievw"]
|
||||
[ext_resource type="PackedScene" uid="uid://bjk7jf0bau5lv" path="res://Scenes/Menus/gameplay_options.tscn" id="3_25wuw"]
|
||||
[ext_resource type="PackedScene" uid="uid://bmd4mawasoc11" path="res://Scenes/Menus/graphics_options.tscn" id="4_ckcvq"]
|
||||
[ext_resource type="PackedScene" uid="uid://bf2nosqt5f82e" path="res://Scenes/Menus/keybind_options.tscn" id="5_4k33c"]
|
||||
@ -11,7 +11,6 @@
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("6_hhyef")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="OptionsMenu" type="PanelContainer" node_paths=PackedStringArray("gameplay", "graphics", "keybinds")]
|
||||
anchors_preset = 15
|
||||
@ -34,21 +33,26 @@ layout_mode = 2
|
||||
[node name="TabContainer" type="TabContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
current_tab = 3
|
||||
|
||||
[node name="Gameplay" parent="VBoxContainer/TabContainer" instance=ExtResource("3_25wuw")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 0
|
||||
|
||||
[node name="Graphics" parent="VBoxContainer/TabContainer" instance=ExtResource("4_ckcvq")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 1
|
||||
|
||||
[node name="Keybinds" parent="VBoxContainer/TabContainer" instance=ExtResource("5_4k33c")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 2
|
||||
|
||||
[node name="Audio" parent="VBoxContainer/TabContainer" instance=ExtResource("6_4vs8p")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 3
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
@ -1,15 +1,15 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://bvfit0sy2tnw4"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/server_form.gd" id="1_43oaq"]
|
||||
[ext_resource type="Script" uid="uid://dyyhbd2pbfygi" path="res://Scripts/server_form.gd" id="1_43oaq"]
|
||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_hirre"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_3o7ni"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("2_hirre")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="ServerForm" type="PanelContainer"]
|
||||
[node name="ServerForm" type="PanelContainer" node_paths=PackedStringArray("ip_entry", "port_entry", "host_button", "join_button", "ip_field", "port_field", "players_field", "start_button")]
|
||||
custom_minimum_size = Vector2(500, 0)
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
@ -22,54 +22,96 @@ offset_bottom = 85.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_43oaq")
|
||||
ip_entry = NodePath("VBoxContainer/IPField/ServerIP")
|
||||
port_entry = NodePath("VBoxContainer/PortField/ServerPort")
|
||||
host_button = NodePath("VBoxContainer/ModeContainer/HostButton")
|
||||
join_button = NodePath("VBoxContainer/ModeContainer/JoinButton")
|
||||
ip_field = NodePath("VBoxContainer/IPField")
|
||||
port_field = NodePath("VBoxContainer/PortField")
|
||||
players_field = NodePath("VBoxContainer/PlayersField")
|
||||
start_button = NodePath("VBoxContainer/StartButton")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="Button" type="Button" parent="VBoxContainer"]
|
||||
[node name="BackButton" type="Button" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Back"
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
|
||||
[node name="ModeContainer" type="VBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"]
|
||||
[node name="HostButton" type="Button" parent="VBoxContainer/ModeContainer"]
|
||||
layout_mode = 2
|
||||
text = "Host Game"
|
||||
|
||||
[node name="JoinButton" type="Button" parent="VBoxContainer/ModeContainer"]
|
||||
layout_mode = 2
|
||||
text = "Join Game"
|
||||
|
||||
[node name="IPField" type="HBoxContainer" parent="VBoxContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/IPField"]
|
||||
layout_mode = 2
|
||||
text = "Server IP:"
|
||||
|
||||
[node name="ServerIP" type="LineEdit" parent="VBoxContainer/HBoxContainer"]
|
||||
[node name="ServerIP" type="LineEdit" parent="VBoxContainer/IPField"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "localhost"
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"]
|
||||
[node name="PortField" type="HBoxContainer" parent="VBoxContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2"]
|
||||
[node name="Label" type="Label" parent="VBoxContainer/PortField"]
|
||||
layout_mode = 2
|
||||
text = "Server Port:"
|
||||
|
||||
[node name="ServerPort" type="LineEdit" parent="VBoxContainer/HBoxContainer2"]
|
||||
[node name="ServerPort" type="LineEdit" parent="VBoxContainer/PortField"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "default"
|
||||
|
||||
[node name="Connect" type="Button" parent="VBoxContainer"]
|
||||
[node name="PlayersField" type="HBoxContainer" parent="VBoxContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Connect"
|
||||
|
||||
[node name="Host" type="Button" parent="VBoxContainer"]
|
||||
[node name="Label" type="Label" parent="VBoxContainer/PlayersField"]
|
||||
layout_mode = 2
|
||||
text = "Host"
|
||||
text = "Max Players"
|
||||
|
||||
[node name="HSlider" type="HSlider" parent="VBoxContainer/PlayersField"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 1
|
||||
max_value = 4.0
|
||||
value = 4.0
|
||||
tick_count = 5
|
||||
ticks_on_borders = true
|
||||
|
||||
[node name="Label2" type="Label" parent="VBoxContainer/PlayersField"]
|
||||
layout_mode = 2
|
||||
text = "4"
|
||||
|
||||
[node name="StartButton" type="Button" parent="VBoxContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Start"
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = SubResource("AudioStreamRandomizer_3o7ni")
|
||||
bus = &"SFX"
|
||||
|
||||
[connection signal="mouse_entered" from="VBoxContainer/Button" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_button_pressed"]
|
||||
[connection signal="mouse_entered" from="VBoxContainer/Connect" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="VBoxContainer/Connect" to="." method="_on_connect_pressed"]
|
||||
[connection signal="mouse_entered" from="VBoxContainer/Host" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="VBoxContainer/Host" to="." method="_on_host_pressed"]
|
||||
[connection signal="mouse_entered" from="VBoxContainer/BackButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="VBoxContainer/BackButton" to="." method="_on_button_pressed"]
|
||||
[connection signal="mouse_entered" from="VBoxContainer/ModeContainer/HostButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="VBoxContainer/ModeContainer/HostButton" to="." method="_on_host_button_pressed"]
|
||||
[connection signal="mouse_entered" from="VBoxContainer/ModeContainer/JoinButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="VBoxContainer/ModeContainer/JoinButton" to="." method="_on_join_button_pressed"]
|
||||
[connection signal="value_changed" from="VBoxContainer/PlayersField/HSlider" to="." method="_on_h_slider_value_changed"]
|
||||
[connection signal="mouse_entered" from="VBoxContainer/StartButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="VBoxContainer/StartButton" to="." method="_on_start_button_pressed"]
|
||||
|
@ -1,19 +1,17 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://176c6fuhg5ic"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://176c6fuhg5ic"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_2aur6"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpt3kpixawyby" path="res://Scenes/UI/scoreboard.tscn" id="1_423py"]
|
||||
[ext_resource type="Script" path="res://Scripts/singleplayer_lobby.gd" id="1_nd17k"]
|
||||
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_2aur6"]
|
||||
[ext_resource type="Script" uid="uid://e5gf7hd5jsw3" path="res://Scripts/singleplayer_lobby.gd" id="1_nd17k"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://Scenes/UI/chatbox.tscn" id="3_l8xy3"]
|
||||
[ext_resource type="PackedScene" uid="uid://dqqitmhu66a7d" path="res://Scenes/Menus/CharacterSelect/charselect.tscn" id="5_vg5y0"]
|
||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="6_6nu57"]
|
||||
[ext_resource type="PackedScene" uid="uid://bc6m3cluulpis" path="res://Scenes/Menus/CharacterSelect/character_select.tscn" id="6_ltm04"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_g5har"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("6_6nu57")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="singleplayer_lobby" type="Control" node_paths=PackedStringArray("scoreboard", "loadout_editor", "chatbox", "seed_entry", "ready_button", "daily_button")]
|
||||
[node name="singleplayer_lobby" type="Control" node_paths=PackedStringArray("chatbox", "audio_player")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@ -23,72 +21,13 @@ grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
theme = ExtResource("1_2aur6")
|
||||
script = ExtResource("1_nd17k")
|
||||
scoreboard = NodePath("Scoreboard")
|
||||
loadout_editor = NodePath("Control")
|
||||
character_select_screen = ExtResource("6_ltm04")
|
||||
chatbox = NodePath("Chatbox")
|
||||
seed_entry = NodePath("LineEdit")
|
||||
ready_button = NodePath("ReadyButton")
|
||||
daily_button = NodePath("DailyButton")
|
||||
|
||||
[node name="Scoreboard" parent="." instance=ExtResource("1_423py")]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_left = 1.0
|
||||
anchor_right = 1.0
|
||||
offset_left = -472.0
|
||||
offset_right = -50.0
|
||||
grow_horizontal = 0
|
||||
|
||||
[node name="ReadyButton" type="Button" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -81.0
|
||||
offset_top = 311.0
|
||||
offset_right = -240.0
|
||||
offset_bottom = 19.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
text = "Ready"
|
||||
audio_player = NodePath("AudioStreamPlayer")
|
||||
|
||||
[node name="Chatbox" parent="." instance=ExtResource("3_l8xy3")]
|
||||
layout_mode = 1
|
||||
|
||||
[node name="Control" parent="." instance=ExtResource("5_vg5y0")]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = SubResource("AudioStreamRandomizer_g5har")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="LineEdit" type="LineEdit" parent="."]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_right = 69.0625
|
||||
offset_bottom = 23.0
|
||||
placeholder_text = "seed"
|
||||
|
||||
[node name="DailyButton" type="Button" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 3
|
||||
anchor_left = 1.0
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -276.0
|
||||
offset_top = -40.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 0
|
||||
text = "Daily challenge"
|
||||
|
||||
[connection signal="mouse_entered" from="ReadyButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="ReadyButton" to="Scoreboard" method="set_player_ready_state" binds= [1, true]]
|
||||
[connection signal="mouse_entered" from="DailyButton" to="." method="_on_button_mouse_entered"]
|
||||
[connection signal="pressed" from="DailyButton" to="." method="_on_daily_button_pressed"]
|
||||
|
@ -1,13 +1,12 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://dccsyymk4uko6"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/text_input_popup.gd" id="1_ve6eb"]
|
||||
[ext_resource type="Script" uid="uid://b0asb3pmu8pqb" path="res://Scripts/text_input_popup.gd" id="1_ve6eb"]
|
||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_mec4u"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_w0x7l"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("2_mec4u")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="TextInputPopup" type="PanelContainer"]
|
||||
anchors_preset = 8
|
||||
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://7f4dfphgiswr"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://c8qjlgam6wuo0" path="res://Scenes/Projectiles/projectile.tscn" id="1_136w8"]
|
||||
[ext_resource type="Script" path="res://Scripts/Projectiles/explosive_projectile.gd" id="2_3adg2"]
|
||||
[ext_resource type="Script" uid="uid://cubn2iabwg3" path="res://Scripts/Projectiles/explosive_projectile.gd" id="2_3adg2"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_ia31t"]
|
||||
offsets = PackedFloat32Array(0, 0.3, 0.681818, 1)
|
||||
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://di2wwvkv4wov1"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://7f4dfphgiswr" path="res://Scenes/Projectiles/explosive_projectile.tscn" id="1_it3tw"]
|
||||
[ext_resource type="Script" path="res://Scripts/Projectiles/homing_projectile.gd" id="2_etdxg"]
|
||||
[ext_resource type="Script" uid="uid://dwr38fukjqu7r" path="res://Scripts/Projectiles/homing_projectile.gd" id="2_etdxg"]
|
||||
|
||||
[node name="HomingProjectile" instance=ExtResource("1_it3tw")]
|
||||
script = ExtResource("2_etdxg")
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c8qjlgam6wuo0"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Projectiles/projectile.gd" id="1_k4v4y"]
|
||||
[ext_resource type="Script" uid="uid://bifvnevs5y4nj" path="res://Scripts/Projectiles/projectile.gd" id="1_k4v4y"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_fgj4t"]
|
||||
radius = 0.2
|
||||
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://beq6rn0babncg"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://7f4dfphgiswr" path="res://Scenes/Projectiles/explosive_projectile.tscn" id="1_atrjq"]
|
||||
[ext_resource type="Script" path="res://Scripts/Projectiles/status_applying_projectile.gd" id="2_4p44n"]
|
||||
[ext_resource type="Script" uid="uid://ba2aqn82wo747" path="res://Scripts/Projectiles/status_applying_projectile.gd" id="2_4p44n"]
|
||||
|
||||
[node name="StatusApplyingProjectile" instance=ExtResource("1_atrjq")]
|
||||
script = ExtResource("2_4p44n")
|
||||
|
@ -24,10 +24,14 @@ func close() -> void:
|
||||
|
||||
|
||||
func randomize_cards() -> void:
|
||||
#TODO: use seeded randomness
|
||||
var random_faction: int = randi_range(1, Card.Faction.values().size() - 1)
|
||||
var cheap_cards: Array[Card] = []
|
||||
var medium_cards: Array[Card] = []
|
||||
var pricey_cards: Array[Card] = []
|
||||
for card: Card in Data.cards:
|
||||
if card.faction != random_faction:
|
||||
continue
|
||||
if card.rarity == Data.Rarity.UNCOMMON or card.rarity == Data.Rarity.RARE:
|
||||
cheap_cards.append(card)
|
||||
if card.rarity == Data.Rarity.RARE or card.rarity == Data.Rarity.EPIC:
|
||||
@ -35,27 +39,46 @@ func randomize_cards() -> void:
|
||||
if card.rarity == Data.Rarity.EPIC or card.rarity == Data.Rarity.LEGENDARY:
|
||||
pricey_cards.append(card)
|
||||
|
||||
var chosen_card: Card = null
|
||||
for x: int in 3:
|
||||
var chosen_card: Card = cheap_cards[Game.randi_in_range(12 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
if cheap_cards.size() > 0:
|
||||
chosen_card = cheap_cards[Game.randi_in_range(12 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
cards_generated += 1
|
||||
cards[x].set_card(chosen_card)
|
||||
cards[x].view_tower()
|
||||
choice_buttons[x].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x].hover_text = "Spend $" + str(choice_buttons[x].press_cost) + " to acquire " + chosen_card.display_name + "?"
|
||||
if chosen_card != null:
|
||||
cards[x].set_card(chosen_card)
|
||||
cards[x].view_tower()
|
||||
choice_buttons[x].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x].hover_text = "Spend $" + str(choice_buttons[x].press_cost) + " to acquire " + chosen_card.display_name + "?"
|
||||
if chosen_card.faction == Card.Faction.MAGE:
|
||||
Data.save_data.saw_mage_card_in_shop()
|
||||
for x: int in 2:
|
||||
var chosen_card: Card = medium_cards[Game.randi_in_range(9 * cards_generated, 0, medium_cards.size() - 1)]
|
||||
if medium_cards.size() > 0:
|
||||
chosen_card = medium_cards[Game.randi_in_range(9 * cards_generated, 0, medium_cards.size() - 1)]
|
||||
elif cheap_cards.size() > 0:
|
||||
chosen_card = cheap_cards[Game.randi_in_range(9 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
cards_generated += 1
|
||||
cards[x+3].set_card(chosen_card)
|
||||
cards[x+3].view_tower()
|
||||
choice_buttons[x+3].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x+3].hover_text = "Spend $" + str(choice_buttons[x+3].press_cost) + " to acquire " + chosen_card.display_name + "?"
|
||||
if chosen_card != null:
|
||||
cards[x+3].set_card(chosen_card)
|
||||
cards[x+3].view_tower()
|
||||
choice_buttons[x+3].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x+3].hover_text = "Spend $" + str(choice_buttons[x+3].press_cost) + " to acquire " + chosen_card.display_name + "?"
|
||||
if chosen_card.faction == Card.Faction.MAGE:
|
||||
Data.save_data.saw_mage_card_in_shop()
|
||||
for x: int in 1:
|
||||
var chosen_card: Card = pricey_cards[Game.randi_in_range(50 * cards_generated, 0, pricey_cards.size() - 1)]
|
||||
if pricey_cards.size() > 0:
|
||||
chosen_card = pricey_cards[Game.randi_in_range(50 * cards_generated, 0, pricey_cards.size() - 1)]
|
||||
elif medium_cards.size() > 0:
|
||||
chosen_card = medium_cards[Game.randi_in_range(50 * cards_generated, 0, medium_cards.size() - 1)]
|
||||
elif cheap_cards.size() > 0:
|
||||
chosen_card = cheap_cards[Game.randi_in_range(50 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
cards_generated += 1
|
||||
cards[x+5].set_card(chosen_card)
|
||||
cards[x+5].view_tower()
|
||||
choice_buttons[x+5].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x+5].hover_text = "Spend $" + str(choice_buttons[x+5].press_cost) + " to acquire " + chosen_card.display_name + "?"
|
||||
if chosen_card != null:
|
||||
cards[x+5].set_card(chosen_card)
|
||||
cards[x+5].view_tower()
|
||||
choice_buttons[x+5].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x+5].hover_text = "Spend $" + str(choice_buttons[x+5].press_cost) + " to acquire " + chosen_card.display_name + "?"
|
||||
if chosen_card.faction == Card.Faction.MAGE:
|
||||
Data.save_data.saw_mage_card_in_shop()
|
||||
for x: CollisionShape3D in choice_colliders:
|
||||
x.set_deferred("disabled", false)
|
||||
for x: Sprite3D in choice_sprites:
|
||||
@ -67,6 +90,10 @@ func retrieve_card(i: int, callback: Hero) -> void:
|
||||
choice_colliders[i].disabled = true
|
||||
choice_sprites[i].set_visible(false)
|
||||
var card: Card = cards[i].stats
|
||||
if card.faction == Card.Faction.ENGINEER:
|
||||
Data.save_data.bought_engineer_card()
|
||||
if card.faction == Card.Faction.MAGE:
|
||||
Data.save_data.bought_mage_card()
|
||||
callback.add_card(card)
|
||||
#var item: ItemCard = item_card_scene.instantiate() as ItemCard
|
||||
#item.card = card
|
||||
|
1
Scenes/ShopStand/shop_stand.gd.uid
Normal file
1
Scenes/ShopStand/shop_stand.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://colk6js4wet11
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://7g3jev3v6d3l"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scenes/ShopStand/shop_stand.gd" id="1_4in53"]
|
||||
[ext_resource type="Script" path="res://Scripts/interact_button.gd" id="1_x8sts"]
|
||||
[ext_resource type="Script" uid="uid://colk6js4wet11" path="res://Scenes/ShopStand/shop_stand.gd" id="1_4in53"]
|
||||
[ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="1_x8sts"]
|
||||
[ext_resource type="PackedScene" uid="uid://dsasunnk47n8o" path="res://Scenes/item_card.tscn" id="2_qh00w"]
|
||||
[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="3_u7x2f"]
|
||||
|
||||
@ -71,6 +71,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.08327, 0.835364, 0.235621)
|
||||
collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_x8sts")
|
||||
hover_text = "[center]#Interact# to [do thing]"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractButton"]
|
||||
shape = SubResource("BoxShape3D_3r1g8")
|
||||
@ -82,6 +83,7 @@ collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_x8sts")
|
||||
button_press_value = 1
|
||||
hover_text = "[center]#Interact# to [do thing]"
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="InteractButton2"]
|
||||
shape = SubResource("BoxShape3D_3r1g8")
|
||||
@ -93,6 +95,7 @@ collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_x8sts")
|
||||
button_press_value = 2
|
||||
hover_text = "[center]#Interact# to [do thing]"
|
||||
|
||||
[node name="CollisionShape3D3" type="CollisionShape3D" parent="InteractButton3"]
|
||||
shape = SubResource("BoxShape3D_3r1g8")
|
||||
@ -104,6 +107,7 @@ collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_x8sts")
|
||||
button_press_value = 5
|
||||
hover_text = "[center]#Interact# to [do thing]"
|
||||
|
||||
[node name="CollisionShape3D4" type="CollisionShape3D" parent="InteractButton4"]
|
||||
shape = SubResource("BoxShape3D_3r1g8")
|
||||
@ -115,6 +119,7 @@ collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_x8sts")
|
||||
button_press_value = 4
|
||||
hover_text = "[center]#Interact# to [do thing]"
|
||||
|
||||
[node name="CollisionShape3D5" type="CollisionShape3D" parent="InteractButton5"]
|
||||
shape = SubResource("BoxShape3D_3r1g8")
|
||||
@ -126,6 +131,7 @@ collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_x8sts")
|
||||
button_press_value = 3
|
||||
hover_text = "[center]#Interact# to [do thing]"
|
||||
|
||||
[node name="CollisionShape3D6" type="CollisionShape3D" parent="InteractButton6"]
|
||||
shape = SubResource("BoxShape3D_3r1g8")
|
||||
|
1
Scenes/Shredder/shredder.gd.uid
Normal file
1
Scenes/Shredder/shredder.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://cu11aknhwt2qc
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://c2avjln5vmr0y"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scenes/Shredder/shredder.gd" id="1_diuqd"]
|
||||
[ext_resource type="Script" path="res://Scripts/interact_button.gd" id="1_toyr6"]
|
||||
[ext_resource type="Script" uid="uid://cu11aknhwt2qc" path="res://Scenes/Shredder/shredder.gd" id="1_diuqd"]
|
||||
[ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="1_toyr6"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_waypt"]
|
||||
albedo_color = Color(0.909804, 0.113725, 0.113725, 1)
|
||||
|
182
Scenes/TowerBase/dissolve.tres
Normal file
182
Scenes/TowerBase/dissolve.tres
Normal file
@ -0,0 +1,182 @@
|
||||
[gd_resource type="VisualShader" load_steps=17 format=3 uid="uid://dsi0ofa74tfc4"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bmor4v4j7krgh" path="res://Scenes/TowerBase/funboxtex.png" id="1_kau30"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4ytjp05u7auv" path="res://noisetex.tres" id="2_ow168"]
|
||||
|
||||
[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_ugjxq"]
|
||||
source = 5
|
||||
texture = ExtResource("1_kau30")
|
||||
|
||||
[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_hqcdo"]
|
||||
parameter_name = "Texture2DParameter"
|
||||
qualifier = 2
|
||||
texture_type = 1
|
||||
texture_filter = 1
|
||||
|
||||
[sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_rwgpq"]
|
||||
output_port_for_preview = 0
|
||||
expanded_output_ports = [0]
|
||||
parameter_name = "Color"
|
||||
qualifier = 2
|
||||
default_value_enabled = true
|
||||
default_value = Color(0, 1, 0, 0.752941)
|
||||
|
||||
[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_g2jnk"]
|
||||
output_port_for_preview = 0
|
||||
default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 0, 0)]
|
||||
op_type = 2
|
||||
operator = 2
|
||||
|
||||
[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_ddxtc"]
|
||||
default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 0, 0)]
|
||||
expanded_output_ports = [0]
|
||||
op_type = 2
|
||||
operator = 2
|
||||
|
||||
[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_nxokf"]
|
||||
output_port_for_preview = 0
|
||||
input_name = "uv"
|
||||
|
||||
[sub_resource type="VisualShaderNodeVectorFunc" id="VisualShaderNodeVectorFunc_lymyr"]
|
||||
output_port_for_preview = 0
|
||||
default_input_values = [0, Quaternion(0, 0, 0, 0)]
|
||||
op_type = 2
|
||||
function = 32
|
||||
|
||||
[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_s08rr"]
|
||||
output_port_for_preview = 4
|
||||
default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 0, 0)]
|
||||
expanded_output_ports = [0]
|
||||
op_type = 2
|
||||
|
||||
[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_8utgl"]
|
||||
parameter_name = "Float"
|
||||
qualifier = 2
|
||||
default_value_enabled = true
|
||||
default_value = 1.0
|
||||
|
||||
[sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_pyn4g"]
|
||||
function = 31
|
||||
|
||||
[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_pw0qj"]
|
||||
default_input_values = [0, 0.0, 1, 0.5]
|
||||
operator = 1
|
||||
|
||||
[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_4c6mr"]
|
||||
output_port_for_preview = 0
|
||||
texture = ExtResource("2_ow168")
|
||||
|
||||
[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_v8kd6"]
|
||||
output_port_for_preview = 0
|
||||
operator = 1
|
||||
|
||||
[sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_h0gpf"]
|
||||
output_port_for_preview = 0
|
||||
function = 15
|
||||
|
||||
[resource]
|
||||
code = "shader_type spatial;
|
||||
render_mode blend_mix, depth_draw_always, cull_back, diffuse_lambert, specular_schlick_ggx, depth_prepass_alpha;
|
||||
|
||||
uniform sampler2D Texture2DParameter : source_color, filter_nearest;
|
||||
uniform sampler2D tex_frg_7;
|
||||
instance uniform float Float = 1.0;
|
||||
instance uniform vec4 Color : source_color = vec4(0.000000, 1.000000, 0.000000, 0.752941);
|
||||
|
||||
|
||||
|
||||
void fragment() {
|
||||
vec4 n_out13p0;
|
||||
// Texture2D:13
|
||||
n_out13p0 = texture(Texture2DParameter, UV);
|
||||
|
||||
|
||||
// Input:2
|
||||
vec2 n_out2p0 = UV;
|
||||
|
||||
|
||||
// Texture2D:7
|
||||
vec4 n_out7p0 = texture(tex_frg_7, n_out2p0);
|
||||
|
||||
|
||||
// FloatParameter:23
|
||||
float n_out23p0 = Float;
|
||||
|
||||
|
||||
// FloatFunc:24
|
||||
float n_out24p0 = 1.0 - n_out23p0;
|
||||
|
||||
|
||||
// FloatOp:5
|
||||
float n_in5p1 = 0.50000;
|
||||
float n_out5p0 = n_out24p0 - n_in5p1;
|
||||
|
||||
|
||||
// FloatOp:8
|
||||
float n_out8p0 = n_out7p0.x - n_out5p0;
|
||||
|
||||
|
||||
// FloatFunc:9
|
||||
float n_out9p0 = round(n_out8p0);
|
||||
|
||||
|
||||
// VectorOp:18
|
||||
vec4 n_out18p0 = n_out13p0 * vec4(n_out9p0);
|
||||
|
||||
|
||||
// VectorFunc:21
|
||||
vec4 n_out21p0 = vec4(1.0) - vec4(n_out9p0);
|
||||
|
||||
|
||||
// ColorParameter:15
|
||||
vec4 n_out15p0 = Color;
|
||||
|
||||
|
||||
// VectorOp:19
|
||||
vec4 n_out19p0 = n_out21p0 * n_out15p0;
|
||||
|
||||
|
||||
// VectorOp:22
|
||||
vec4 n_out22p0 = n_out18p0 + n_out19p0;
|
||||
float n_out22p4 = n_out22p0.a;
|
||||
|
||||
|
||||
// Output:0
|
||||
ALBEDO = vec3(n_out22p0.xyz);
|
||||
ALPHA = n_out22p4;
|
||||
|
||||
|
||||
}
|
||||
"
|
||||
modes/depth_draw = 1
|
||||
flags/depth_prepass_alpha = true
|
||||
nodes/fragment/0/position = Vector2(1220, 280)
|
||||
nodes/fragment/2/node = SubResource("VisualShaderNodeInput_nxokf")
|
||||
nodes/fragment/2/position = Vector2(-580, 180)
|
||||
nodes/fragment/5/node = SubResource("VisualShaderNodeFloatOp_pw0qj")
|
||||
nodes/fragment/5/position = Vector2(-500, 440)
|
||||
nodes/fragment/7/node = SubResource("VisualShaderNodeTexture_4c6mr")
|
||||
nodes/fragment/7/position = Vector2(-280, 20)
|
||||
nodes/fragment/8/node = SubResource("VisualShaderNodeFloatOp_v8kd6")
|
||||
nodes/fragment/8/position = Vector2(-60, 340)
|
||||
nodes/fragment/9/node = SubResource("VisualShaderNodeFloatFunc_h0gpf")
|
||||
nodes/fragment/9/position = Vector2(140, 360)
|
||||
nodes/fragment/13/node = SubResource("VisualShaderNodeTexture_ugjxq")
|
||||
nodes/fragment/13/position = Vector2(260, 140)
|
||||
nodes/fragment/14/node = SubResource("VisualShaderNodeTexture2DParameter_hqcdo")
|
||||
nodes/fragment/14/position = Vector2(-60, 0)
|
||||
nodes/fragment/15/node = SubResource("VisualShaderNodeColorParameter_rwgpq")
|
||||
nodes/fragment/15/position = Vector2(40, 940)
|
||||
nodes/fragment/18/node = SubResource("VisualShaderNodeVectorOp_g2jnk")
|
||||
nodes/fragment/18/position = Vector2(500, 340)
|
||||
nodes/fragment/19/node = SubResource("VisualShaderNodeVectorOp_ddxtc")
|
||||
nodes/fragment/19/position = Vector2(600, 740)
|
||||
nodes/fragment/21/node = SubResource("VisualShaderNodeVectorFunc_lymyr")
|
||||
nodes/fragment/21/position = Vector2(360, 660)
|
||||
nodes/fragment/22/node = SubResource("VisualShaderNodeVectorOp_s08rr")
|
||||
nodes/fragment/22/position = Vector2(900.954, 607.998)
|
||||
nodes/fragment/23/node = SubResource("VisualShaderNodeFloatParameter_8utgl")
|
||||
nodes/fragment/23/position = Vector2(-1000, 460)
|
||||
nodes/fragment/24/node = SubResource("VisualShaderNodeFloatFunc_pyn4g")
|
||||
nodes/fragment/24/position = Vector2(-700, 460)
|
||||
nodes/fragment/connections = PackedInt32Array(2, 0, 7, 0, 14, 0, 13, 2, 8, 0, 9, 0, 9, 0, 18, 1, 9, 0, 21, 0, 15, 0, 19, 1, 21, 0, 19, 0, 18, 0, 22, 0, 19, 0, 22, 1, 22, 0, 0, 0, 22, 4, 0, 1, 13, 0, 18, 0, 7, 0, 8, 0, 5, 0, 8, 1, 23, 0, 24, 0, 24, 0, 5, 0)
|
@ -17,6 +17,8 @@ nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
@ -28,6 +30,7 @@ animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={
|
||||
"meshes": {
|
||||
|
BIN
Scenes/TowerBase/textmesh.res.depren
Normal file
BIN
Scenes/TowerBase/textmesh.res.depren
Normal file
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://ddbbwx0yy16lh"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/tower_base.gd" id="1_kalmg"]
|
||||
[ext_resource type="Script" path="res://Scripts/inventory.gd" id="2_m0oxx"]
|
||||
[ext_resource type="Script" uid="uid://si58bm4r7r2i" path="res://Scripts/tower_base.gd" id="1_kalmg"]
|
||||
[ext_resource type="Script" uid="uid://do24iuot0j7d7" path="res://Scripts/inventory.gd" id="2_m0oxx"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://cr83c74ys8rll" path="res://Scenes/TowerBase/textmesh.res" id="3_ly30x"]
|
||||
[ext_resource type="Texture2D" uid="uid://ba85u6i558x4w" path="res://Assets/Textures/minimap_node.png" id="4_lbvtm"]
|
||||
|
||||
@ -20,7 +20,7 @@ albedo_color = Color(0.462745, 0.439216, 0.415686, 1)
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t32n1"]
|
||||
albedo_color = Color(0.462745, 0.439216, 0.415686, 1)
|
||||
|
||||
[node name="Node3D" type="StaticBody3D" node_paths=PackedStringArray("inventory", "block", "collider", "minimap_icon", "north_icon", "south_icon", "east_icon", "west_icon", "north_mesh", "south_mesh", "east_mesh", "west_mesh", "north_collider", "south_collider", "east_collider", "west_collider")]
|
||||
[node name="Node3D" type="StaticBody3D" node_paths=PackedStringArray("inventory", "block", "collider", "minimap_icon", "north_icon", "south_icon", "east_icon", "west_icon", "north_mesh", "south_mesh", "east_mesh", "west_mesh", "north_collider", "south_collider", "east_collider", "west_collider") groups=["TowerBases"]]
|
||||
collision_layer = 17
|
||||
script = ExtResource("1_kalmg")
|
||||
inventory = NodePath("Inventory")
|
||||
|
67
Scenes/Towers/area_tower.tscn
Normal file
67
Scenes/Towers/area_tower.tscn
Normal file
@ -0,0 +1,67 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://kioik38usbqj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ct24fjmc1ptd6" path="res://Towers/tower.gd" id="1_6jyob"]
|
||||
[ext_resource type="Script" uid="uid://rvnacmxsrh4w" path="res://Scripts/target_finder.gd" id="2_e7wkg"]
|
||||
[ext_resource type="Script" uid="uid://duvfverjdqodj" path="res://Scripts/Affectors/area_affector.gd" id="3_u832u"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_vk4a8"]
|
||||
resource_name = "shoot"
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cebsq"]
|
||||
_data = {
|
||||
&"shoot": SubResource("Animation_vk4a8")
|
||||
}
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_42byu"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1ucq4"]
|
||||
transparency = 1
|
||||
cull_mode = 1
|
||||
shading_mode = 0
|
||||
albedo_color = Color(1, 0, 0.415686, 0.223529)
|
||||
|
||||
[node name="Tower" type="Node3D" node_paths=PackedStringArray("target_finder", "affector", "animator", "pitch_model", "yaw_model", "range_indicator", "audio_player")]
|
||||
script = ExtResource("1_6jyob")
|
||||
target_finder = NodePath("TargetFinder")
|
||||
affector = NodePath("AreaAffector")
|
||||
animator = NodePath("AnimationPlayer")
|
||||
pitch_model = NodePath("Pitch")
|
||||
yaw_model = NodePath("Yaw")
|
||||
range_indicator = NodePath("CSGSphere3D")
|
||||
audio_player = NodePath("Yaw/AudioStreamPlayer3D")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_cebsq")
|
||||
}
|
||||
|
||||
[node name="Pitch" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||
mesh = SubResource("BoxMesh_42byu")
|
||||
|
||||
[node name="Yaw" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||
mesh = SubResource("BoxMesh_42byu")
|
||||
|
||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Yaw"]
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="MinimapIcon" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
layers = 4
|
||||
|
||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="."]
|
||||
visible = false
|
||||
layers = 5
|
||||
radius = 10.0
|
||||
radial_segments = 16
|
||||
rings = 16
|
||||
material = SubResource("StandardMaterial3D_1ucq4")
|
||||
|
||||
[node name="TargetFinder" type="Node" parent="." node_paths=PackedStringArray("tower")]
|
||||
script = ExtResource("2_e7wkg")
|
||||
tower = NodePath("..")
|
||||
max_targets = 0
|
||||
|
||||
[node name="AreaAffector" type="Node" parent="."]
|
||||
script = ExtResource("3_u832u")
|
10
Scenes/Towers/direct_affect_tower.tscn
Normal file
10
Scenes/Towers/direct_affect_tower.tscn
Normal file
@ -0,0 +1,10 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://43vmeyuurqfs"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_rp4eu"]
|
||||
[ext_resource type="Script" uid="uid://8d0a4uc2i0ti" path="res://Scripts/Affectors/direct_affect.gd" id="2_f7mf6"]
|
||||
|
||||
[node name="DirectAffectTower" node_paths=PackedStringArray("affector") instance=ExtResource("1_rp4eu")]
|
||||
affector = NodePath("DirectAffect")
|
||||
|
||||
[node name="DirectAffect" type="Node" parent="." index="6"]
|
||||
script = ExtResource("2_f7mf6")
|
@ -1,7 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dumiyjlnea4gq"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_60g1i"]
|
||||
[ext_resource type="Script" path="res://Scripts/Towers/hitscan_tower.gd" id="2_t6bcd"]
|
||||
|
||||
[node name="HitscanTower" instance=ExtResource("1_60g1i")]
|
||||
script = ExtResource("2_t6bcd")
|
@ -1,8 +1,12 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://t0b32qb8eub2"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bidr1m71pajma"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_yagdr"]
|
||||
[ext_resource type="Script" path="res://Scripts/Towers/projectile_tower.gd" id="2_fqi5p"]
|
||||
[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_p8i8e"]
|
||||
[ext_resource type="Script" uid="uid://ccu1u6nqkjxki" path="res://Scripts/Affectors/spawn_affect.gd" id="2_d8uyp"]
|
||||
|
||||
[node name="ProjectileTower" instance=ExtResource("1_yagdr")]
|
||||
script = ExtResource("2_fqi5p")
|
||||
projectile_scene = null
|
||||
[node name="ProjectileTower" node_paths=PackedStringArray("affector") instance=ExtResource("1_p8i8e")]
|
||||
affector = NodePath("SpawnAffect")
|
||||
|
||||
[node name="SpawnAffect" type="Node" parent="." index="6" node_paths=PackedStringArray("tower")]
|
||||
script = ExtResource("2_d8uyp")
|
||||
tower = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://ccu1u6nqkjxki"
|
||||
|
@ -1,7 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bi6b2r6wek7he"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dxwtlvv632ae8" path="res://Scenes/Towers/status_applying_tower.tscn" id="1_x852w"]
|
||||
[ext_resource type="Script" path="res://Scripts/Towers/range_affecting_tower.gd" id="2_wc1xf"]
|
||||
|
||||
[node name="RangeAffectingTower" instance=ExtResource("1_x852w")]
|
||||
script = ExtResource("2_wc1xf")
|
@ -1,14 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://8uxu72vjo0cv"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_ljc02"]
|
||||
[ext_resource type="Script" path="res://Scripts/Towers/shapecast_tower.gd" id="2_qh834"]
|
||||
|
||||
[node name="ShapecastTower" node_paths=PackedStringArray("shapecast", "particlesystem") instance=ExtResource("1_ljc02")]
|
||||
script = ExtResource("2_qh834")
|
||||
shapecast = NodePath("Yaw/ShapeCast3D")
|
||||
particlesystem = NodePath("Yaw/ShapeCast3D/GPUParticles3D")
|
||||
status_stats = null
|
||||
|
||||
[node name="ShapeCast3D" type="ShapeCast3D" parent="Yaw" index="0"]
|
||||
|
||||
[node name="GPUParticles3D" type="GPUParticles3D" parent="Yaw/ShapeCast3D" index="0"]
|
@ -1,8 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dxwtlvv632ae8"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dumiyjlnea4gq" path="res://Scenes/Towers/hitscan_tower.tscn" id="1_suc1i"]
|
||||
[ext_resource type="Script" path="res://Scripts/Towers/status_applying_tower.gd" id="2_rd0fq"]
|
||||
|
||||
[node name="StatusApplyingTower" instance=ExtResource("1_suc1i")]
|
||||
script = ExtResource("2_rd0fq")
|
||||
status_stats = null
|
@ -1,14 +1,14 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://bvqu1heobgboe"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Towers/tower.gd" id="1_u8bfo"]
|
||||
[ext_resource type="Script" path="res://Scripts/target_finder.gd" id="2_txlxp"]
|
||||
[ext_resource type="Script" uid="uid://ct24fjmc1ptd6" path="res://Towers/tower.gd" id="1_u8bfo"]
|
||||
[ext_resource type="Script" uid="uid://rvnacmxsrh4w" path="res://Scripts/target_finder.gd" id="2_txlxp"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_vk4a8"]
|
||||
resource_name = "shoot"
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cebsq"]
|
||||
_data = {
|
||||
"shoot": SubResource("Animation_vk4a8")
|
||||
&"shoot": SubResource("Animation_vk4a8")
|
||||
}
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_42byu"]
|
||||
@ -30,13 +30,15 @@ audio_player = NodePath("Yaw/AudioStreamPlayer3D")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_cebsq")
|
||||
&"": SubResource("AnimationLibrary_cebsq")
|
||||
}
|
||||
|
||||
[node name="Pitch" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||
mesh = SubResource("BoxMesh_42byu")
|
||||
|
||||
[node name="Yaw" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||
mesh = SubResource("BoxMesh_42byu")
|
||||
|
||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Yaw"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://dixtx38u4jhd7"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/card_hand.gd" id="1_2cfmh"]
|
||||
[ext_resource type="Script" uid="uid://d6ejaumcenmg" path="res://Scripts/card_hand.gd" id="1_2cfmh"]
|
||||
[ext_resource type="Texture2D" uid="uid://dlqnhs8or4ik2" path="res://Assets/Textures/cardhand.png" id="1_d5oo3"]
|
||||
[ext_resource type="Texture2D" uid="uid://buf8t5gc7iw3a" path="res://Assets/TextureAtlases/rarityborders.tres" id="3_pclfx"]
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://ddmg342ff2qaq"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/chatbox.gd" id="1_k3g22"]
|
||||
[ext_resource type="Script" uid="uid://dmdf7tbvc3bsg" path="res://Scripts/chatbox.gd" id="1_k3g22"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c3kb6"]
|
||||
bg_color = Color(0.223529, 0.211765, 0.184314, 0.462745)
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://bnsf2degj5tio"]
|
||||
|
||||
[ext_resource type="Script" path="res://hero_select_card.gd" id="1_rqutp"]
|
||||
[ext_resource type="Script" uid="uid://v5y44744p7ie" path="res://UI/hero_select_card.gd" id="1_rqutp"]
|
||||
[ext_resource type="Texture2D" uid="uid://bskg4kgoi576f" path="res://Assets/Textures/Sprite-0001.png" id="2_gly1b"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ihqrr"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://ckuu2y4kymshy"]
|
||||
|
||||
[ext_resource type="Script" path="res://KeybindEntry.gd" id="1_it8q2"]
|
||||
[ext_resource type="Script" uid="uid://y2pxkfjn0wa2" path="res://UI/KeybindEntry.gd" id="1_it8q2"]
|
||||
|
||||
[node name="KeybindEntry" type="HBoxContainer"]
|
||||
anchors_preset = 15
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://clsdko6ttudu8"]
|
||||
|
||||
[ext_resource type="Script" path="res://keybind_screen.gd" id="1_m5i0b"]
|
||||
[ext_resource type="Script" uid="uid://d25hjwjdwv35i" path="res://UI/keybind_screen.gd" id="1_m5i0b"]
|
||||
|
||||
[node name="Control" type="Control"]
|
||||
layout_mode = 3
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://dko38egcaxubd"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/lifebar_segment.gd" id="1_dvlcq"]
|
||||
[ext_resource type="Script" uid="uid://c3ark32u3lct8" path="res://Scripts/lifebar_segment.gd" id="1_dvlcq"]
|
||||
[ext_resource type="Texture2D" uid="uid://0ey8r48lgjw1" path="res://Assets/Textures/lifebar_pip.png" id="1_pianw"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_i18y2"]
|
||||
@ -464,13 +464,13 @@ tracks/2/keys = {
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_1s8yp"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_i18y2"),
|
||||
"lose1": SubResource("Animation_a6tv4"),
|
||||
"lose2": SubResource("Animation_t2ym0"),
|
||||
"lose3": SubResource("Animation_ueyfw"),
|
||||
"lose4": SubResource("Animation_r4h4h"),
|
||||
"lose5": SubResource("Animation_defuy"),
|
||||
"lose6": SubResource("Animation_rctjq")
|
||||
&"RESET": SubResource("Animation_i18y2"),
|
||||
&"lose1": SubResource("Animation_a6tv4"),
|
||||
&"lose2": SubResource("Animation_t2ym0"),
|
||||
&"lose3": SubResource("Animation_ueyfw"),
|
||||
&"lose4": SubResource("Animation_r4h4h"),
|
||||
&"lose5": SubResource("Animation_defuy"),
|
||||
&"lose6": SubResource("Animation_rctjq")
|
||||
}
|
||||
|
||||
[node name="Control" type="Control"]
|
||||
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://24x18qxqhy0i"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dvy2lvtotaxb3" path="res://Assets/Textures/lifebar_bg.png" id="1_x27cx"]
|
||||
[ext_resource type="Script" path="res://Scripts/lives_bar.gd" id="2_lqe7s"]
|
||||
[ext_resource type="Script" uid="uid://b3g3hofk5pbcp" path="res://Scripts/lives_bar.gd" id="2_lqe7s"]
|
||||
[ext_resource type="PackedScene" uid="uid://dko38egcaxubd" path="res://Scenes/UI/lifebar_segment.tscn" id="3_6hp86"]
|
||||
|
||||
[node name="LivesBar" type="TextureRect" node_paths=PackedStringArray("segments")]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://chnj376d3lcjd"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/pickup_notification.gd" id="1_cgy5u"]
|
||||
[ext_resource type="Script" uid="uid://b6vynawytkd0k" path="res://Scripts/pickup_notification.gd" id="1_cgy5u"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cdnv4"]
|
||||
resource_local_to_scene = true
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dpt3kpixawyby"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/scoreboard.gd" id="1_b5vdp"]
|
||||
[ext_resource type="Script" uid="uid://k0jvsnqw4766" path="res://Scripts/scoreboard.gd" id="1_b5vdp"]
|
||||
[ext_resource type="PackedScene" uid="uid://bhri8mqjbme2t" path="res://Scenes/UI/scoreboard_entry.tscn" id="2_uer0b"]
|
||||
|
||||
[node name="Scoreboard" type="PanelContainer"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://bhri8mqjbme2t"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/scoreboard_entry.gd" id="1_5xryr"]
|
||||
[ext_resource type="Script" uid="uid://bmcym1lkp0j8f" path="res://Scripts/scoreboard_entry.gd" id="1_5xryr"]
|
||||
[ext_resource type="Texture2D" uid="uid://m4ehy5bahsup" path="res://Assets/Textures/ready.png" id="2_yxtr2"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_qhkn8"]
|
||||
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://difwo7wlyqr3h"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://b7nargdyg28fj" path="res://Scenes/Weapons/weapon.tscn" id="1_s865l"]
|
||||
[ext_resource type="Script" path="res://Scripts/Weapons/hitscan_weapon.gd" id="2_nyich"]
|
||||
[ext_resource type="Script" uid="uid://bp3o5klntwmhd" path="res://Scripts/Weapons/hitscan_weapon.gd" id="2_nyich"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1ucq4"]
|
||||
transparency = 1
|
||||
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bqdllitxbbpyp"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://b7nargdyg28fj" path="res://Scenes/Weapons/weapon.tscn" id="1_nbhwa"]
|
||||
[ext_resource type="Script" path="res://Scripts/Weapons/projectile_weapon.gd" id="2_5ekyi"]
|
||||
[ext_resource type="Script" uid="uid://d2gdg2lcedfgg" path="res://Scripts/Weapons/projectile_weapon.gd" id="2_5ekyi"]
|
||||
|
||||
[node name="ProjectileWeapon" instance=ExtResource("1_nbhwa")]
|
||||
script = ExtResource("2_5ekyi")
|
||||
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://dp4gfr5h0tbcd"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://b7nargdyg28fj" path="res://Scenes/Weapons/weapon.tscn" id="1_gfchc"]
|
||||
[ext_resource type="Script" path="res://Scripts/Weapons/shapecast_weapon.gd" id="2_lg6v5"]
|
||||
[ext_resource type="Script" uid="uid://1l1qccgmp5ih" path="res://Scripts/Weapons/shapecast_weapon.gd" id="2_lg6v5"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_uk6ey"]
|
||||
size = Vector3(2, 2, 3)
|
||||
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://nrdexcyatika"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_uolyx"]
|
||||
[ext_resource type="Script" path="res://Scripts/Weapons/status_applying_weapon.gd" id="2_iq7bw"]
|
||||
[ext_resource type="Script" uid="uid://dqcjfcecqhuec" path="res://Scripts/Weapons/status_applying_weapon.gd" id="2_iq7bw"]
|
||||
|
||||
[node name="StatusApplyingWeapon" instance=ExtResource("1_uolyx")]
|
||||
script = ExtResource("2_iq7bw")
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://b7nargdyg28fj"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Weapons/weapon.gd" id="1_yo2gh"]
|
||||
[ext_resource type="Script" uid="uid://blh4s3v07ycwa" path="res://Scripts/Weapons/weapon.gd" id="1_yo2gh"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_5krlx"]
|
||||
length = 0.001
|
||||
@ -35,8 +35,8 @@ tracks/0/keys = {
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fs82p"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_5krlx"),
|
||||
"shoot": SubResource("Animation_0rgpe")
|
||||
&"RESET": SubResource("Animation_5krlx"),
|
||||
&"shoot": SubResource("Animation_0rgpe")
|
||||
}
|
||||
|
||||
[node name="Weapon" type="Node3D" node_paths=PackedStringArray("animator", "audio_player", "recharge_timer")]
|
||||
@ -52,11 +52,11 @@ texture_filter = 0
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_fs82p")
|
||||
&"": SubResource("AnimationLibrary_fs82p")
|
||||
}
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 3.0
|
||||
wait_time = 2.0
|
||||
one_shot = true
|
||||
|
||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://canrxnpxcugc2"]
|
||||
|
||||
[ext_resource type="Script" path="res://corpse.gd" id="1_hdqtp"]
|
||||
[ext_resource type="Script" uid="uid://mm665gsfr23a" path="res://Scripts/corpse.gd" id="1_hdqtp"]
|
||||
[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="2_6ext7"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_shai7"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cqtew0t8sttpm"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/damage_particle.gd" id="1_lgvaq"]
|
||||
[ext_resource type="Script" uid="uid://blt7umrgo3tfh" path="res://Scripts/damage_particle.gd" id="1_lgvaq"]
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_ppqlh"]
|
||||
viewport_path = NodePath("SubViewport")
|
||||
|
@ -1,13 +1,20 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://d2yv447trxkwt"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://d2yv447trxkwt"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/enemy_spawner.gd" id="1_23wuv"]
|
||||
[ext_resource type="Script" uid="uid://dkuxg6ek5us4f" path="res://Scripts/enemy_spawner.gd" id="1_23wuv"]
|
||||
[ext_resource type="PackedScene" uid="uid://b0nady5xm88bo" path="res://Worlds/GreenPlanet/Enemies/land_enemy.tscn" id="2_muaoj"]
|
||||
[ext_resource type="PackedScene" uid="uid://bjo2q6vca5qlv" path="res://Worlds/GreenPlanet/Enemies/air_enemy.tscn" id="3_nh55v"]
|
||||
[ext_resource type="Script" uid="uid://cd500cyj1tdyw" path="res://Scripts/visualized_path.gd" id="4_tdwud"]
|
||||
|
||||
[node name="Node3D" type="Node3D"]
|
||||
[node name="Node3D" type="Node3D" node_paths=PackedStringArray("path")]
|
||||
script = ExtResource("1_23wuv")
|
||||
land_enemy_scene = ExtResource("2_muaoj")
|
||||
air_enemy_scene = ExtResource("3_nh55v")
|
||||
path = NodePath("VisualizedPath")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
visible = false
|
||||
|
||||
[node name="VisualizedPath" type="Path3D" parent="."]
|
||||
script = ExtResource("4_tdwud")
|
||||
metadata/_custom_type_script = "uid://cd500cyj1tdyw"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dqt1ggtkpkuhs"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/edit_tool.gd" id="1_yf8lt"]
|
||||
[ext_resource type="Script" uid="uid://ckm02cx0ai624" path="res://Scripts/edit_tool.gd" id="1_yf8lt"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="2_r3632"]
|
||||
[ext_resource type="Texture2D" uid="uid://gh4yvnerf1f5" path="res://Assets/Textures/radial.png" id="3_a323w"]
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://hjq3nrnumklp"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="1_x8m88"]
|
||||
[ext_resource type="Script" path="res://Scripts/health_bar.gd" id="2_m8c1f"]
|
||||
[ext_resource type="Gradient" uid="uid://dx7auy3oqw82t" path="res://health_bar_gradient.tres" id="3_dpmma"]
|
||||
[ext_resource type="Script" uid="uid://bf06es50d0flv" path="res://Scripts/health_bar.gd" id="2_m8c1f"]
|
||||
[ext_resource type="Gradient" uid="uid://dx7auy3oqw82t" path="res://UI/health_bar_gradient.tres" id="3_dpmma"]
|
||||
|
||||
[node name="HealthBar" type="TextureProgressBar"]
|
||||
offset_right = 200.0
|
||||
|
@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://dsasunnk47n8o"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/item_card.gd" id="1_f3ek5"]
|
||||
[ext_resource type="Script" path="res://Scripts/float_and_spin.gd" id="2_yfdc3"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="3_om63b"]
|
||||
[ext_resource type="Script" uid="uid://1l7xhsd5prk1" path="res://Scripts/item_card.gd" id="1_f3ek5"]
|
||||
[ext_resource type="Script" uid="uid://cl2mi4bnpatwk" path="res://Scripts/float_and_spin.gd" id="2_yfdc3"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="3_om63b"]
|
||||
|
||||
[sub_resource type="Curve" id="Curve_qb7ge"]
|
||||
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||
@ -15,7 +15,6 @@ height = 1.0
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("3_om63b")
|
||||
stream_0/weight = 1.0
|
||||
|
||||
[node name="Node3D" type="StaticBody3D"]
|
||||
collision_layer = 8
|
||||
|
@ -1,9 +1,10 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://8d452unjpoiu"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://8d452unjpoiu"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/inventory.gd" id="1_6ftnx"]
|
||||
[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://PCs/Mechanic/ClassCards/Assault/card_assault.tres" id="2_hayav"]
|
||||
[ext_resource type="Resource" uid="uid://bibx2my7igspq" path="res://PCs/Mage/ClassCards/Fireball/card_fireball.tres" id="3_sq8ai"]
|
||||
[ext_resource type="Resource" uid="uid://b3o112jw3loiu" path="res://PCs/Mechanic/ClassCards/Reactor/card_reactor.tres" id="4_3jmlk"]
|
||||
[ext_resource type="Script" uid="uid://do24iuot0j7d7" path="res://Scripts/inventory.gd" id="1_6ftnx"]
|
||||
[ext_resource type="Script" uid="uid://uomjb4sj4enc" path="res://Scripts/Resources/item.gd" id="2_a0o80"]
|
||||
[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_hayav"]
|
||||
[ext_resource type="Resource" uid="uid://bibx2my7igspq" path="res://Cards/fireball.tres" id="3_sq8ai"]
|
||||
[ext_resource type="Resource" uid="uid://b3o112jw3loiu" path="res://Cards/reactor.tres" id="4_3jmlk"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_lscco"]
|
||||
|
||||
@ -14,7 +15,7 @@ albedo_color = Color(0.509804, 0.505882, 0, 1)
|
||||
|
||||
[node name="Inventory" type="Node" parent="."]
|
||||
script = ExtResource("1_6ftnx")
|
||||
contents = Array[Resource("res://Scripts/Resources/item.gd")]([ExtResource("2_hayav"), ExtResource("3_sq8ai"), ExtResource("4_3jmlk")])
|
||||
contents = Array[ExtResource("2_a0o80")]([ExtResource("2_hayav"), ExtResource("3_sq8ai"), ExtResource("4_3jmlk")])
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://clbw3osqy2ww2"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/path_visual_thing.gd" id="1_pgun7"]
|
||||
[ext_resource type="Script" uid="uid://cr3sfjjo6l6n2" path="res://Scripts/path_visual_thing.gd" id="1_pgun7"]
|
||||
[ext_resource type="Texture2D" uid="uid://cy786nrpcdr5o" path="res://Assets/Textures/minimap_path_visual.png" id="2_0gsds"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lutld"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dtfw0tefhb6qq"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/visualized_path.gd" id="1_34oex"]
|
||||
[ext_resource type="Script" uid="uid://cd500cyj1tdyw" path="res://Scripts/visualized_path.gd" id="1_34oex"]
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_tcut2"]
|
||||
_data = {
|
||||
|
Reference in New Issue
Block a user