slight gameplay changes and new ui
This commit is contained in:
BIN
Assets/Fonts/Quaver v1.0/quaver.ttf
Normal file
BIN
Assets/Fonts/Quaver v1.0/quaver.ttf
Normal file
Binary file not shown.
40
Assets/Fonts/Quaver v1.0/quaver.ttf.import
Normal file
40
Assets/Fonts/Quaver v1.0/quaver.ttf.import
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://bqy8dm2o3piqm"
|
||||||
|
path="res://.godot/imported/quaver.ttf-d75d58e80cdddb666365b0d5591d2de9.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Fonts/Quaver v1.0/quaver.ttf"
|
||||||
|
dest_files=["res://.godot/imported/quaver.ttf-d75d58e80cdddb666365b0d5591d2de9.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=0
|
||||||
|
generate_mipmaps=false
|
||||||
|
disable_embedded_bitmaps=true
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
hinting=1
|
||||||
|
subpixel_positioning=4
|
||||||
|
keep_rounding_remainders=true
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[{
|
||||||
|
"chars": [],
|
||||||
|
"glyphs": [],
|
||||||
|
"name": "New Configuration",
|
||||||
|
&"size": Vector2i(8, 0)
|
||||||
|
}]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
||||||
9
Assets/Fonts/Quaver v1.0/readme.txt
Normal file
9
Assets/Fonts/Quaver v1.0/readme.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
On Windows:
|
||||||
|
Right click and "Install for All Users" to ensure font is accessible for some programs like Aseprite
|
||||||
|
|
||||||
|
Licensed under CC BY 3.0.
|
||||||
|
Free to use. Attribution not required, but appreciated.
|
||||||
|
(don't resell this font or any modified derivatives and we're good)
|
||||||
|
|
||||||
|
|
||||||
|
Have fun!
|
||||||
BIN
Assets/Textures/battery.png
Normal file
BIN
Assets/Textures/battery.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 208 B |
34
Assets/Textures/battery.png.import
Normal file
34
Assets/Textures/battery.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://up7omskwg0yx"
|
||||||
|
path="res://.godot/imported/battery.png-5347a257821eef012070cbdddeb2d581.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Textures/battery.png"
|
||||||
|
dest_files=["res://.godot/imported/battery.png-5347a257821eef012070cbdddeb2d581.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_yqa4b")
|
script = ExtResource("1_yqa4b")
|
||||||
duration = 5
|
cost = 2
|
||||||
rarity = 0
|
rarity = 0
|
||||||
faction = 1
|
faction = 1
|
||||||
turret_scene = ExtResource("4_5nu32")
|
turret_scene = ExtResource("4_5nu32")
|
||||||
|
|||||||
@@ -8,11 +8,12 @@
|
|||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_5html")
|
script = ExtResource("1_5html")
|
||||||
duration = 4
|
cost = 2
|
||||||
rarity = 0
|
rarity = 0
|
||||||
faction = 1
|
faction = 1
|
||||||
turret_scene = ExtResource("4_thk7u")
|
turret_scene = ExtResource("4_thk7u")
|
||||||
weapon_scene = ExtResource("3_wkjyf")
|
weapon_scene = ExtResource("3_wkjyf")
|
||||||
weapon_stats = ExtResource("4_76fd1")
|
weapon_stats = ExtResource("4_76fd1")
|
||||||
tower_stats = ExtResource("3_4hykq")
|
tower_stats = ExtResource("3_4hykq")
|
||||||
|
tags = Array[int]([])
|
||||||
display_name = "Gatling"
|
display_name = "Gatling"
|
||||||
|
|||||||
@@ -8,11 +8,12 @@
|
|||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_tdu8a")
|
script = ExtResource("1_tdu8a")
|
||||||
duration = 4
|
cost = 2
|
||||||
rarity = 0
|
rarity = 0
|
||||||
faction = 1
|
faction = 1
|
||||||
turret_scene = ExtResource("4_xcrut")
|
turret_scene = ExtResource("4_xcrut")
|
||||||
weapon_scene = ExtResource("5_l3c38")
|
weapon_scene = ExtResource("5_l3c38")
|
||||||
weapon_stats = ExtResource("3_dukui")
|
weapon_stats = ExtResource("3_dukui")
|
||||||
tower_stats = ExtResource("3_e5fta")
|
tower_stats = ExtResource("3_e5fta")
|
||||||
|
tags = Array[int]([])
|
||||||
display_name = "Glue Launcher"
|
display_name = "Glue Launcher"
|
||||||
|
|||||||
@@ -8,11 +8,12 @@
|
|||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_0ciid")
|
script = ExtResource("1_0ciid")
|
||||||
duration = 4
|
cost = 5
|
||||||
rarity = 4
|
rarity = 4
|
||||||
faction = 1
|
faction = 1
|
||||||
turret_scene = ExtResource("3_l4xwa")
|
turret_scene = ExtResource("3_l4xwa")
|
||||||
weapon_scene = ExtResource("3_de72q")
|
weapon_scene = ExtResource("3_de72q")
|
||||||
weapon_stats = ExtResource("4_wilo7")
|
weapon_stats = ExtResource("4_wilo7")
|
||||||
tower_stats = ExtResource("3_7vuex")
|
tower_stats = ExtResource("3_7vuex")
|
||||||
|
tags = Array[int]([])
|
||||||
display_name = "Reactor"
|
display_name = "Reactor"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_ly0o5")
|
script = ExtResource("1_ly0o5")
|
||||||
duration = 5
|
cost = 3
|
||||||
rarity = 0
|
rarity = 0
|
||||||
faction = 1
|
faction = 1
|
||||||
turret_scene = ExtResource("3_73c50")
|
turret_scene = ExtResource("3_73c50")
|
||||||
|
|||||||
@@ -8,11 +8,12 @@
|
|||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_5vmtk")
|
script = ExtResource("1_5vmtk")
|
||||||
duration = 6
|
cost = 2
|
||||||
rarity = 1
|
rarity = 1
|
||||||
faction = 1
|
faction = 1
|
||||||
turret_scene = ExtResource("4_k5nhs")
|
turret_scene = ExtResource("4_k5nhs")
|
||||||
weapon_scene = ExtResource("3_qfpvu")
|
weapon_scene = ExtResource("3_qfpvu")
|
||||||
weapon_stats = ExtResource("4_7kvq1")
|
weapon_stats = ExtResource("4_7kvq1")
|
||||||
tower_stats = ExtResource("3_6i55t")
|
tower_stats = ExtResource("3_6i55t")
|
||||||
|
tags = Array[int]([])
|
||||||
display_name = "Sniper"
|
display_name = "Sniper"
|
||||||
|
|||||||
@@ -6,8 +6,5 @@
|
|||||||
[resource]
|
[resource]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("1_0addr")
|
shader = ExtResource("1_0addr")
|
||||||
shader_parameter/affine_mapping = true
|
|
||||||
shader_parameter/albedo = ExtResource("2_4kam3")
|
shader_parameter/albedo = ExtResource("2_4kam3")
|
||||||
shader_parameter/alpha_scissor = 0.5
|
shader_parameter/alpha_scissor = 0.5
|
||||||
shader_parameter/jitter = 0.25
|
|
||||||
shader_parameter/resolution = Vector2i(320, 240)
|
|
||||||
|
|||||||
@@ -6,8 +6,5 @@
|
|||||||
[resource]
|
[resource]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("1_x1doh")
|
shader = ExtResource("1_x1doh")
|
||||||
shader_parameter/affine_mapping = true
|
|
||||||
shader_parameter/albedo = ExtResource("2_jh2nf")
|
shader_parameter/albedo = ExtResource("2_jh2nf")
|
||||||
shader_parameter/alpha_scissor = 0.5
|
shader_parameter/alpha_scissor = 0.5
|
||||||
shader_parameter/jitter = 0.25
|
|
||||||
shader_parameter/resolution = Vector2i(320, 240)
|
|
||||||
|
|||||||
@@ -6,8 +6,5 @@
|
|||||||
[resource]
|
[resource]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("1_crvh7")
|
shader = ExtResource("1_crvh7")
|
||||||
shader_parameter/affine_mapping = true
|
|
||||||
shader_parameter/albedo = ExtResource("2_1d6vt")
|
shader_parameter/albedo = ExtResource("2_1d6vt")
|
||||||
shader_parameter/alpha_scissor = 0.5
|
shader_parameter/alpha_scissor = 0.5
|
||||||
shader_parameter/jitter = 0.25
|
|
||||||
shader_parameter/resolution = Vector2i(320, 240)
|
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ func exit_state() -> void:
|
|||||||
hero.weapons[hero.equipped_weapon].visible = false
|
hero.weapons[hero.equipped_weapon].visible = false
|
||||||
hero.hud.set_energy_visible(false)
|
hero.hud.set_energy_visible(false)
|
||||||
hero.hud.grow_wave_start_label()
|
hero.hud.grow_wave_start_label()
|
||||||
hero.hud.primary_duration.visible = true
|
#hero.hud.primary_duration.visible = true
|
||||||
hero.hud.secondary_duration.visible = true
|
#hero.hud.secondary_duration.visible = true
|
||||||
hero.hud.energy_label.visible = true
|
hero.hud.energy_label.visible = true
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ func _process(delta: float) -> void:
|
|||||||
|
|
||||||
if interact_key_held:
|
if interact_key_held:
|
||||||
if !interacted_once:
|
if !interacted_once:
|
||||||
if valid_point and hero.energy >= Data.wall_cost and ray_collider and point.buildable:
|
if valid_point and hero.currency >= Data.wall_cost and ray_collider and point.buildable:
|
||||||
interact_held_time += delta
|
interact_held_time += delta
|
||||||
set_progress_percent(interact_held_time / interact_hold_time)
|
set_progress_percent(interact_held_time / interact_hold_time)
|
||||||
wall_preview.set_float(interact_held_time / interact_hold_time)
|
wall_preview.set_float(interact_held_time / interact_hold_time)
|
||||||
@@ -93,7 +93,7 @@ func reset() -> void:
|
|||||||
|
|
||||||
func process_looking_at_level() -> void:
|
func process_looking_at_level() -> void:
|
||||||
point = level.flow_field.get_closest_buildable_point(ray_point)
|
point = level.flow_field.get_closest_buildable_point(ray_point)
|
||||||
if level.walls.has(point) or !point.buildable or hero.energy < Data.wall_cost:
|
if level.walls.has(point) or !point.buildable or hero.currency < Data.wall_cost:
|
||||||
wall_preview.set_visible(false)
|
wall_preview.set_visible(false)
|
||||||
valid_point = false
|
valid_point = false
|
||||||
clear_previous_point()
|
clear_previous_point()
|
||||||
@@ -127,8 +127,8 @@ func process_looking_at_tower() -> void:
|
|||||||
|
|
||||||
|
|
||||||
func build_wall() -> void:
|
func build_wall() -> void:
|
||||||
if point and valid_point and hero.energy >= Data.wall_cost:
|
if point and valid_point and hero.currency >= Data.wall_cost:
|
||||||
hero.energy -= Data.wall_cost
|
hero.currency -= Data.wall_cost
|
||||||
level.set_wall(point, multiplayer.get_unique_id())
|
level.set_wall(point, multiplayer.get_unique_id())
|
||||||
wall_preview.visible = false
|
wall_preview.visible = false
|
||||||
|
|
||||||
|
|||||||
@@ -137,6 +137,8 @@ func check_removal() -> void:
|
|||||||
for card: Card in unique_cards:
|
for card: Card in unique_cards:
|
||||||
if !hand.contents.has(card):
|
if !hand.contents.has(card):
|
||||||
index = unique_cards.find(card)
|
index = unique_cards.find(card)
|
||||||
|
for i: int in selection_boxes.size():
|
||||||
|
selection_boxes[i].set_amount(hand.contents.count(unique_cards[i]))
|
||||||
if index >= 0:
|
if index >= 0:
|
||||||
unique_cards.remove_at(index)
|
unique_cards.remove_at(index)
|
||||||
selection_boxes[index].queue_free()
|
selection_boxes[index].queue_free()
|
||||||
@@ -327,6 +329,7 @@ func draw_to_hand_size() -> void:
|
|||||||
var box: CardSelectionBox = card_select_scene.instantiate()
|
var box: CardSelectionBox = card_select_scene.instantiate()
|
||||||
box.set_card(card)
|
box.set_card(card)
|
||||||
box.set_key(i)
|
box.set_key(i)
|
||||||
|
box.set_amount(hand.contents.count(unique_cards[i]))
|
||||||
selection_boxes.append(box)
|
selection_boxes.append(box)
|
||||||
$HUD/selection_boxes.add_child(box)
|
$HUD/selection_boxes.add_child(box)
|
||||||
hand_selected_index = 0
|
hand_selected_index = 0
|
||||||
@@ -342,8 +345,7 @@ func update_selected_box() -> void:
|
|||||||
func equip_weapon(slot: int = 0) -> void:
|
func equip_weapon(slot: int = 0) -> void:
|
||||||
if hand.size == 0:
|
if hand.size == 0:
|
||||||
return
|
return
|
||||||
var energy_cost: int = int(hand.item_at(hand_selected_index).rarity) + 1
|
var energy_cost: int = selected_card.cost
|
||||||
energy_cost *= 2
|
|
||||||
if energy < energy_cost:
|
if energy < energy_cost:
|
||||||
return
|
return
|
||||||
if weapons[slot] != null:
|
if weapons[slot] != null:
|
||||||
@@ -360,7 +362,7 @@ func equip_weapon(slot: int = 0) -> void:
|
|||||||
#decrement_selected()
|
#decrement_selected()
|
||||||
weapons[slot] = cards[slot].weapon_scene.instantiate()
|
weapons[slot] = cards[slot].weapon_scene.instantiate()
|
||||||
weapons[slot].name = str(weapons_spawn_count)
|
weapons[slot].name = str(weapons_spawn_count)
|
||||||
weapons[slot].duration = cards[slot].duration
|
weapons[slot].duration = 1
|
||||||
networked_equip_weapon.rpc(Data.cards.find(cards[slot]), 0, weapons_spawn_count)
|
networked_equip_weapon.rpc(Data.cards.find(cards[slot]), 0, weapons_spawn_count)
|
||||||
weapons_spawn_count += 1
|
weapons_spawn_count += 1
|
||||||
weapons[slot].set_multiplayer_authority(multiplayer.get_unique_id())
|
weapons[slot].set_multiplayer_authority(multiplayer.get_unique_id())
|
||||||
|
|||||||
148
PCs/hero.tscn
148
PCs/hero.tscn
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=64 format=3 uid="uid://dxgxbtf68lcv5"]
|
[gd_scene load_steps=68 format=3 uid="uid://dxgxbtf68lcv5"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://1fqpoegbdm6n" path="res://PCs/hero.gd" id="1_pihpe"]
|
[ext_resource type="Script" uid="uid://1fqpoegbdm6n" path="res://PCs/hero.gd" id="1_pihpe"]
|
||||||
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="2_dbyo0"]
|
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="2_dbyo0"]
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
[ext_resource type="AudioStream" uid="uid://bn8lkvy5wibvo" path="res://Audio/cardSlide1.ogg" id="28_1thk8"]
|
[ext_resource type="AudioStream" uid="uid://bn8lkvy5wibvo" path="res://Audio/cardSlide1.ogg" id="28_1thk8"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d32gpcu8w1yvn" path="res://Audio/cardSlide2.ogg" id="29_s0a0l"]
|
[ext_resource type="AudioStream" uid="uid://d32gpcu8w1yvn" path="res://Audio/cardSlide2.ogg" id="29_s0a0l"]
|
||||||
[ext_resource type="AudioStream" uid="uid://val5n418yebw" path="res://Audio/cardSlide3.ogg" id="30_djhlg"]
|
[ext_resource type="AudioStream" uid="uid://val5n418yebw" path="res://Audio/cardSlide3.ogg" id="30_djhlg"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://up7omskwg0yx" path="res://Assets/Textures/battery.png" id="30_rim6q"]
|
||||||
[ext_resource type="AudioStream" uid="uid://ck6g061w7i6ro" path="res://Audio/cardSlide4.ogg" id="31_546e6"]
|
[ext_resource type="AudioStream" uid="uid://ck6g061w7i6ro" path="res://Audio/cardSlide4.ogg" id="31_546e6"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bj8eitlsjdotb" path="res://Audio/cardSlide5.ogg" id="32_tg7y0"]
|
[ext_resource type="AudioStream" uid="uid://bj8eitlsjdotb" path="res://Audio/cardSlide5.ogg" id="32_tg7y0"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d0620p56ad34a" path="res://Audio/cardSlide6.ogg" id="33_2v5co"]
|
[ext_resource type="AudioStream" uid="uid://d0620p56ad34a" path="res://Audio/cardSlide6.ogg" id="33_2v5co"]
|
||||||
@@ -50,6 +51,8 @@
|
|||||||
[ext_resource type="Script" uid="uid://b5h7jfwkyokes" path="res://PCs/FSM/building_state.gd" id="47_d8pnf"]
|
[ext_resource type="Script" uid="uid://b5h7jfwkyokes" path="res://PCs/FSM/building_state.gd" id="47_d8pnf"]
|
||||||
[ext_resource type="Script" uid="uid://cjdv1onyfej0m" path="res://PCs/FSM/carding_state.gd" id="48_7d213"]
|
[ext_resource type="Script" uid="uid://cjdv1onyfej0m" path="res://PCs/FSM/carding_state.gd" id="48_7d213"]
|
||||||
[ext_resource type="Script" uid="uid://cf7m4yyiqhhru" path="res://PCs/FSM/fighting_state.gd" id="49_60hic"]
|
[ext_resource type="Script" uid="uid://cf7m4yyiqhhru" path="res://PCs/FSM/fighting_state.gd" id="49_60hic"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bg4pmewlvshu8" path="res://coin/Coin.glb" id="51_w13oc"]
|
||||||
|
[ext_resource type="Script" uid="uid://dq0yemhxscvtm" path="res://rotate.gd" id="52_rim6q"]
|
||||||
|
|
||||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jbu13"]
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jbu13"]
|
||||||
radius = 0.3
|
radius = 0.3
|
||||||
@@ -79,6 +82,9 @@ viewport_path = NodePath("FirstPersonViewport")
|
|||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_574jy"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_574jy"]
|
||||||
viewport_path = NodePath("MiniMapViewport")
|
viewport_path = NodePath("MiniMapViewport")
|
||||||
|
|
||||||
|
[sub_resource type="ViewportTexture" id="ViewportTexture_w13oc"]
|
||||||
|
viewport_path = NodePath("CoinViewport")
|
||||||
|
|
||||||
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_tsiqi"]
|
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_tsiqi"]
|
||||||
properties/0/path = NodePath(".:position")
|
properties/0/path = NodePath(".:position")
|
||||||
properties/0/spawn = true
|
properties/0/spawn = true
|
||||||
@@ -318,7 +324,7 @@ script = ExtResource("8_yl6ka")
|
|||||||
player = NodePath("..")
|
player = NodePath("..")
|
||||||
wave_count = NodePath("EnemyTracker/WaveCount")
|
wave_count = NodePath("EnemyTracker/WaveCount")
|
||||||
lives_count = NodePath("LivesBar/LivesCount")
|
lives_count = NodePath("LivesBar/LivesCount")
|
||||||
currency_count = NodePath("Minimap/CurrencyCount")
|
currency_count = NodePath("Currencies/CoinCounter/CurrencyCount")
|
||||||
minimap_outline = NodePath("Minimap/MinimapBorder")
|
minimap_outline = NodePath("Minimap/MinimapBorder")
|
||||||
minimap = NodePath("Minimap")
|
minimap = NodePath("Minimap")
|
||||||
minimap_cam = NodePath("../MiniMapViewport/Camera3D")
|
minimap_cam = NodePath("../MiniMapViewport/Camera3D")
|
||||||
@@ -328,14 +334,14 @@ hover_text = NodePath("InteractLabel")
|
|||||||
enemy_sprites = [NodePath("EnemyTracker/TextureRect"), NodePath("EnemyTracker/TextureRect2"), NodePath("EnemyTracker/TextureRect3"), NodePath("EnemyTracker/TextureRect4"), NodePath("EnemyTracker/TextureRect5")]
|
enemy_sprites = [NodePath("EnemyTracker/TextureRect"), NodePath("EnemyTracker/TextureRect2"), NodePath("EnemyTracker/TextureRect3"), NodePath("EnemyTracker/TextureRect4"), NodePath("EnemyTracker/TextureRect5")]
|
||||||
enemy_counts = [NodePath("EnemyTracker/TextureRect/Label"), NodePath("EnemyTracker/TextureRect2/Label2"), NodePath("EnemyTracker/TextureRect3/Label3"), NodePath("EnemyTracker/TextureRect4/Label4"), NodePath("EnemyTracker/TextureRect5/Label5")]
|
enemy_counts = [NodePath("EnemyTracker/TextureRect/Label"), NodePath("EnemyTracker/TextureRect2/Label2"), NodePath("EnemyTracker/TextureRect3/Label3"), NodePath("EnemyTracker/TextureRect4/Label4"), NodePath("EnemyTracker/TextureRect5/Label5")]
|
||||||
pickup_notif_scene = ExtResource("17_oyeww")
|
pickup_notif_scene = ExtResource("17_oyeww")
|
||||||
wave_start_label = NodePath("RichTextLabel")
|
wave_start_label = NodePath("StartWaveLabel")
|
||||||
place_icon = NodePath("PlaceIcon")
|
place_icon = NodePath("PlaceIcon")
|
||||||
swap_icon = NodePath("SwapIcon")
|
swap_icon = NodePath("SwapIcon")
|
||||||
place_text = NodePath("PlaceIcon/RichTextLabel")
|
place_text = NodePath("PlaceIcon/RichTextLabel")
|
||||||
swap_text = NodePath("SwapIcon/RichTextLabel")
|
swap_text = NodePath("SwapIcon/RichTextLabel")
|
||||||
enemy_card_scene = ExtResource("18_dfkac")
|
enemy_card_scene = ExtResource("18_dfkac")
|
||||||
new_energy_bar = NodePath("EnergyBar")
|
new_energy_bar = NodePath("EnergyBar")
|
||||||
energy_label = NodePath("EnergyLabel")
|
energy_label = NodePath("Currencies/HBoxContainer/EnergyLabel")
|
||||||
primary_duration = NodePath("weapon_duration")
|
primary_duration = NodePath("weapon_duration")
|
||||||
secondary_duration = NodePath("weapon_duration2")
|
secondary_duration = NodePath("weapon_duration2")
|
||||||
|
|
||||||
@@ -361,6 +367,7 @@ offset_right = -331.0
|
|||||||
offset_bottom = -1.0
|
offset_bottom = -1.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
|
mouse_filter = 2
|
||||||
texture = ExtResource("18_okmpi")
|
texture = ExtResource("18_okmpi")
|
||||||
|
|
||||||
[node name="RichTextLabel" type="RichTextLabel" parent="HUD/PlaceIcon"]
|
[node name="RichTextLabel" type="RichTextLabel" parent="HUD/PlaceIcon"]
|
||||||
@@ -370,6 +377,7 @@ anchor_right = 1.0
|
|||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "#Primary Fire#"
|
text = "#Primary Fire#"
|
||||||
scroll_active = false
|
scroll_active = false
|
||||||
@@ -389,6 +397,7 @@ offset_right = -6.0
|
|||||||
offset_bottom = -1.0
|
offset_bottom = -1.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
|
mouse_filter = 2
|
||||||
texture = ExtResource("18_okmpi")
|
texture = ExtResource("18_okmpi")
|
||||||
|
|
||||||
[node name="RichTextLabel" type="RichTextLabel" parent="HUD/SwapIcon"]
|
[node name="RichTextLabel" type="RichTextLabel" parent="HUD/SwapIcon"]
|
||||||
@@ -398,6 +407,7 @@ anchor_right = 1.0
|
|||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "#Secondary Fire#"
|
text = "#Secondary Fire#"
|
||||||
scroll_active = false
|
scroll_active = false
|
||||||
@@ -405,6 +415,7 @@ horizontal_alignment = 1
|
|||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="Minimap" type="TextureRect" parent="HUD"]
|
[node name="Minimap" type="TextureRect" parent="HUD"]
|
||||||
|
visible = false
|
||||||
anchors_preset = 1
|
anchors_preset = 1
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -430,22 +441,8 @@ grow_horizontal = 0
|
|||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
texture = ExtResource("16_x1xjr")
|
texture = ExtResource("16_x1xjr")
|
||||||
|
|
||||||
[node name="CurrencyCount" type="Label" parent="HUD/Minimap"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 1
|
|
||||||
anchor_left = 1.0
|
|
||||||
anchor_right = 1.0
|
|
||||||
offset_left = -61.0
|
|
||||||
offset_top = 260.0
|
|
||||||
offset_bottom = 318.0
|
|
||||||
grow_horizontal = 0
|
|
||||||
theme_override_colors/font_color = Color(0.988235, 0.909804, 0.65098, 1)
|
|
||||||
theme_override_font_sizes/font_size = 37
|
|
||||||
text = "20"
|
|
||||||
horizontal_alignment = 1
|
|
||||||
vertical_alignment = 1
|
|
||||||
|
|
||||||
[node name="FPSCounter" type="Label" parent="HUD"]
|
[node name="FPSCounter" type="Label" parent="HUD"]
|
||||||
|
visible = false
|
||||||
anchors_preset = 1
|
anchors_preset = 1
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -630,13 +627,12 @@ offset_right = 296.0
|
|||||||
offset_bottom = 84.0
|
offset_bottom = 84.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
theme_override_colors/default_color = Color(0, 0, 0, 1)
|
mouse_filter = 2
|
||||||
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
|
|
||||||
theme_override_constants/outline_size = 5
|
|
||||||
theme_override_font_sizes/normal_font_size = 32
|
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "[center]Press Button To do thing"
|
text = "[center]Press Button To do thing"
|
||||||
scroll_active = false
|
scroll_active = false
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="HUD"]
|
[node name="VBoxContainer" type="VBoxContainer" parent="HUD"]
|
||||||
anchors_preset = 4
|
anchors_preset = 4
|
||||||
@@ -647,20 +643,19 @@ offset_top = -295.0
|
|||||||
offset_right = 445.0
|
offset_right = 445.0
|
||||||
offset_bottom = -40.0
|
offset_bottom = -40.0
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
|
mouse_filter = 2
|
||||||
alignment = 2
|
alignment = 2
|
||||||
|
|
||||||
[node name="RichTextLabel" type="RichTextLabel" parent="HUD"]
|
[node name="StartWaveLabel" type="RichTextLabel" parent="HUD"]
|
||||||
anchors_preset = 5
|
anchors_preset = -1
|
||||||
anchor_left = 0.5
|
anchor_left = 0.34
|
||||||
anchor_right = 0.5
|
anchor_top = 0.085
|
||||||
offset_left = -300.0
|
anchor_right = 0.69
|
||||||
offset_top = 110.0
|
anchor_bottom = 0.155
|
||||||
offset_right = 300.0
|
|
||||||
offset_bottom = 160.0
|
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
theme_override_font_sizes/normal_font_size = 32
|
mouse_filter = 2
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "[center]Press #Ready# to start wave[/center]"
|
text = "[center]#Ready# Start wave[/center]"
|
||||||
scroll_active = false
|
scroll_active = false
|
||||||
|
|
||||||
[node name="Control2" type="Control" parent="HUD"]
|
[node name="Control2" type="Control" parent="HUD"]
|
||||||
@@ -672,6 +667,7 @@ anchor_right = 1.0
|
|||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
|
||||||
[node name="Control3" type="Control" parent="HUD"]
|
[node name="Control3" type="Control" parent="HUD"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
@@ -682,6 +678,7 @@ anchor_right = 0.5
|
|||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
|
||||||
[node name="EnergyBar" parent="HUD" instance=ExtResource("27_14ugt")]
|
[node name="EnergyBar" parent="HUD" instance=ExtResource("27_14ugt")]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -723,42 +720,31 @@ texture = ExtResource("26_dfkac")
|
|||||||
expand_mode = 3
|
expand_mode = 3
|
||||||
stretch_mode = 5
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="EnergyLabel" type="Label" parent="HUD"]
|
|
||||||
anchors_preset = -1
|
|
||||||
anchor_left = 0.978
|
|
||||||
anchor_top = 0.341
|
|
||||||
anchor_right = 0.978
|
|
||||||
anchor_bottom = 0.341
|
|
||||||
offset_left = -103.0
|
|
||||||
offset_bottom = 40.0
|
|
||||||
grow_horizontal = 0
|
|
||||||
text = "energy = 0"
|
|
||||||
horizontal_alignment = 1
|
|
||||||
vertical_alignment = 1
|
|
||||||
|
|
||||||
[node name="weapon_duration" type="Label" parent="HUD"]
|
[node name="weapon_duration" type="Label" parent="HUD"]
|
||||||
|
visible = false
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_left = 0.978
|
anchor_left = 0.978
|
||||||
anchor_top = 0.376
|
anchor_top = 0.186
|
||||||
anchor_right = 0.978
|
anchor_right = 0.978
|
||||||
anchor_bottom = 0.376
|
anchor_bottom = 0.186
|
||||||
offset_left = -103.0
|
offset_left = -103.0
|
||||||
offset_bottom = 40.0
|
offset_bottom = 40.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
text = "primary weapon rounds left = 0"
|
text = "w1 = 0"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="weapon_duration2" type="Label" parent="HUD"]
|
[node name="weapon_duration2" type="Label" parent="HUD"]
|
||||||
|
visible = false
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_left = 0.978
|
anchor_left = 0.978
|
||||||
anchor_top = 0.411
|
anchor_top = 0.251
|
||||||
anchor_right = 0.978
|
anchor_right = 0.978
|
||||||
anchor_bottom = 0.411
|
anchor_bottom = 0.261
|
||||||
offset_left = -103.0
|
offset_left = -103.0
|
||||||
offset_bottom = 40.0
|
offset_bottom = 40.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
text = "secondary weapon rounds left = 0"
|
text = "w2 = 0"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
@@ -768,8 +754,46 @@ offset_left = 73.0
|
|||||||
offset_top = 457.0
|
offset_top = 457.0
|
||||||
offset_right = 753.0
|
offset_right = 753.0
|
||||||
offset_bottom = 585.0
|
offset_bottom = 585.0
|
||||||
|
mouse_filter = 2
|
||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="Currencies" type="VBoxContainer" parent="HUD"]
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_left = 0.95
|
||||||
|
anchor_top = 0.05
|
||||||
|
anchor_right = 0.95
|
||||||
|
anchor_bottom = 0.05
|
||||||
|
grow_horizontal = 0
|
||||||
|
|
||||||
|
[node name="CoinCounter" type="HBoxContainer" parent="HUD/Currencies"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="CoinTexture" type="TextureRect" parent="HUD/Currencies/CoinCounter"]
|
||||||
|
layout_mode = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = SubResource("ViewportTexture_w13oc")
|
||||||
|
|
||||||
|
[node name="CurrencyCount" type="Label" parent="HUD/Currencies/CoinCounter"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "20"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="HUD/Currencies"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="HUD/Currencies/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("30_rim6q")
|
||||||
|
expand_mode = 3
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="EnergyLabel" type="Label" parent="HUD/Currencies/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "0"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="WeaponSwapTimer" type="Timer" parent="."]
|
[node name="WeaponSwapTimer" type="Timer" parent="."]
|
||||||
wait_time = 0.4
|
wait_time = 0.4
|
||||||
one_shot = true
|
one_shot = true
|
||||||
@@ -826,6 +850,26 @@ script = ExtResource("49_60hic")
|
|||||||
hero = NodePath("..")
|
hero = NodePath("..")
|
||||||
metadata/_custom_type_script = "uid://cf7m4yyiqhhru"
|
metadata/_custom_type_script = "uid://cf7m4yyiqhhru"
|
||||||
|
|
||||||
|
[node name="CoinViewport" type="SubViewport" parent="."]
|
||||||
|
transparent_bg = true
|
||||||
|
size = Vector2i(64, 64)
|
||||||
|
|
||||||
|
[node name="Coin" parent="CoinViewport" instance=ExtResource("51_w13oc")]
|
||||||
|
|
||||||
|
[node name="Cylinder" parent="CoinViewport/Coin" index="0"]
|
||||||
|
layers = 8
|
||||||
|
|
||||||
|
[node name="Node3D" type="Node3D" parent="CoinViewport"]
|
||||||
|
script = ExtResource("52_rim6q")
|
||||||
|
speed = 70.0
|
||||||
|
|
||||||
|
[node name="Camera3D" type="Camera3D" parent="CoinViewport/Node3D"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 0.74214, 0.670245, 0, -0.670245, 0.74214, 0, 0.977616, 1.08572)
|
||||||
|
cull_mask = 1047560
|
||||||
|
projection = 1
|
||||||
|
size = 2.243
|
||||||
|
|
||||||
[connection signal="timeout" from="WeaponSwapTimer" to="." method="_on_timer_timeout"]
|
[connection signal="timeout" from="WeaponSwapTimer" to="." method="_on_timer_timeout"]
|
||||||
|
|
||||||
[editable path="FirstPersonViewport/Head2/LeftHand/card_hand_model"]
|
[editable path="FirstPersonViewport/Head2/LeftHand/card_hand_model"]
|
||||||
|
[editable path="CoinViewport/Coin"]
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ var map_anchor: Node3D
|
|||||||
var cards: Array[EnemyCardUI] = []
|
var cards: Array[EnemyCardUI] = []
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$StartWaveLabel.theme_type_variation = "WaveStartLabel"
|
||||||
|
$InteractLabel.theme_type_variation = "InteractLabel"
|
||||||
|
|
||||||
|
|
||||||
func show_wave_generation_anim(wave: Wave) -> void:
|
func show_wave_generation_anim(wave: Wave) -> void:
|
||||||
for card: EnemyCardUI in cards:
|
for card: EnemyCardUI in cards:
|
||||||
card.queue_free()
|
card.queue_free()
|
||||||
@@ -155,7 +160,7 @@ func set_currency_count(value: int) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func set_energy_amount(value: int) -> void:
|
func set_energy_amount(value: int) -> void:
|
||||||
energy_label.text = "energy = " + str(value)
|
energy_label.text = str(value)
|
||||||
|
|
||||||
|
|
||||||
func set_crosshair_visible(value: bool) -> void:
|
func set_crosshair_visible(value: bool) -> void:
|
||||||
|
|||||||
@@ -222,8 +222,8 @@ func _unhandled_input(event: InputEvent) -> void:
|
|||||||
if !is_multiplayer_authority():
|
if !is_multiplayer_authority():
|
||||||
return
|
return
|
||||||
if event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
|
if event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
|
||||||
player.rotation.y -= event.relative.x * (look_sens / zoom_factor) * (-1 if invert_x else 1)
|
player.rotation.y -= (event.relative.x * get_viewport().get_final_transform().x.x) * (look_sens / zoom_factor) * (-1 if invert_x else 1)
|
||||||
head_angle -= event.relative.y * (look_sens / zoom_factor) * (-1 if invert_y else 1)
|
head_angle -= (event.relative.y * get_viewport().get_final_transform().y.y) * (look_sens / zoom_factor) * (-1 if invert_y else 1)
|
||||||
head_angle = clamp(head_angle, deg_to_rad(-max_look_down_angle), deg_to_rad(max_look_up_angle))
|
head_angle = clamp(head_angle, deg_to_rad(-max_look_down_angle), deg_to_rad(max_look_up_angle))
|
||||||
head.rotation.x = head_angle
|
head.rotation.x = head_angle
|
||||||
if weapon_holder:
|
if weapon_holder:
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ var temp_data: SaveData
|
|||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
$ProfileEditor/VBoxContainer/HBoxContainer/DisplayName.text = Data.player_profile.display_name
|
|
||||||
load_stats(Data.save_data)
|
load_stats(Data.save_data)
|
||||||
#bg_level.a_star_graph_3d.make_grid()
|
#bg_level.a_star_graph_3d.make_grid()
|
||||||
#bg_level.a_star_graph_3d.find_path()
|
#bg_level.a_star_graph_3d.find_path()
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
[gd_scene load_steps=27 format=3 uid="uid://8yv7excojcg0"]
|
[gd_scene load_steps=25 format=3 uid="uid://8yv7excojcg0"]
|
||||||
|
|
||||||
[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="Script" uid="uid://ci8vq73u23viy" path="res://Scenes/Menus/MainMenu/main_menu.gd" id="2_ivytu"]
|
||||||
[ext_resource type="PackedScene" uid="uid://y1qa1g3ic8sp" path="res://Worlds/GreenPlanet/Levels/Bridge/bridge.tscn" id="3_l8r4a"]
|
[ext_resource type="PackedScene" uid="uid://y1qa1g3ic8sp" path="res://Worlds/GreenPlanet/Levels/Bridge/bridge.tscn" id="3_l8r4a"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="5_cwn2i"]
|
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="5_cwn2i"]
|
||||||
@@ -18,24 +17,23 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://cpa1hl36xfplg" path="res://Assets/Textures/first_scroll_seen.png" id="16_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="Texture2D" uid="uid://ctbi3gm1me1t5" path="res://Assets/Textures/unlock_mage_achievement.png" id="17_6t4jd"]
|
||||||
[ext_resource type="Script" uid="uid://cxrm2naq75jo1" path="res://Scripts/mod_menu.gd" id="19_6t4jd"]
|
[ext_resource type="Script" uid="uid://cxrm2naq75jo1" path="res://Scripts/mod_menu.gd" id="19_6t4jd"]
|
||||||
[ext_resource type="FontFile" uid="uid://c3hwdjscf2hnk" path="res://Assets/Fonts/OpenType (.otf)/Kaph-Regular.otf" id="20_y5bw6"]
|
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_5u75i"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_5u75i"]
|
||||||
viewport_path = NodePath("SubViewport")
|
viewport_path = NodePath("SubViewport")
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6t4jd"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_74epv"]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
atlas = ExtResource("8_1vnym")
|
atlas = ExtResource("8_1vnym")
|
||||||
region = Rect2(0, 0, 32, 32)
|
region = Rect2(0, 0, 32, 32)
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_y5bw6"]
|
[sub_resource type="Resource" id="Resource_sv1gy"]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
script = ExtResource("5_u514r")
|
script = ExtResource("5_u514r")
|
||||||
title = "dog"
|
title = "dog"
|
||||||
target_type = 1
|
target_type = 1
|
||||||
icon = ExtResource("7_2sylv")
|
icon = ExtResource("7_2sylv")
|
||||||
death_sprite = ExtResource("6_rsxwm")
|
death_sprite = ExtResource("6_rsxwm")
|
||||||
sprite = SubResource("AtlasTexture_6t4jd")
|
sprite = SubResource("AtlasTexture_74epv")
|
||||||
spawn_power = 10
|
spawn_power = 10
|
||||||
health = 180
|
health = 180
|
||||||
penalty = 10
|
penalty = 10
|
||||||
@@ -69,23 +67,22 @@ region = Rect2(0, 0, 36, 36)
|
|||||||
atlas = ExtResource("17_6t4jd")
|
atlas = ExtResource("17_6t4jd")
|
||||||
region = Rect2(0, 0, 36, 36)
|
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")]
|
[node name="MainMenu" type="Control" node_paths=PackedStringArray("bg_level", "game_select_menu", "main_controls", "seed_entry", "mods_controls")]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
theme = ExtResource("1_p1cib")
|
|
||||||
script = ExtResource("2_ivytu")
|
script = ExtResource("2_ivytu")
|
||||||
bg_level = NodePath("SubViewport/GridMap")
|
bg_level = NodePath("SubViewport/GridMap")
|
||||||
game_select_menu = NodePath("GameSelectMenu")
|
game_select_menu = NodePath("GameSelectMenu")
|
||||||
main_controls = NodePath("MainControls")
|
main_controls = NodePath("MainControls")
|
||||||
seed_entry = NodePath("GameSelectMenu/VBoxContainer/HBoxContainer2/LineEdit")
|
seed_entry = NodePath("GameSelectMenu/VBoxContainer/HBoxContainer2/LineEdit")
|
||||||
profile_controls = NodePath("ProfileEditor")
|
|
||||||
mods_controls = NodePath("ModsMenu")
|
mods_controls = NodePath("ModsMenu")
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="."]
|
[node name="TextureRect" type="TextureRect" parent="."]
|
||||||
|
visible = false
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -100,34 +97,27 @@ anchors_preset = -1
|
|||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
theme_override_colors/font_color = Color(0.8, 0.5644, 0.344, 1)
|
|
||||||
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
|
|
||||||
theme_override_constants/line_spacing = -35
|
|
||||||
theme_override_constants/outline_size = 55
|
|
||||||
theme_override_fonts/font = ExtResource("20_y5bw6")
|
|
||||||
theme_override_font_sizes/font_size = 146
|
|
||||||
text = "decked
|
text = "decked
|
||||||
out
|
out
|
||||||
defense"
|
defense"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="MainControls" type="HBoxContainer" parent="."]
|
[node name="MainControls" type="VBoxContainer" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_left = 0.05
|
anchor_left = 0.1
|
||||||
anchor_top = 0.95
|
anchor_top = 0.4
|
||||||
anchor_right = 0.95
|
anchor_right = 0.9
|
||||||
anchor_bottom = 0.95
|
anchor_bottom = 0.9
|
||||||
offset_top = -60.0
|
alignment = 2
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 0
|
|
||||||
|
|
||||||
[node name="PlayButton" type="Button" parent="MainControls"]
|
[node name="PlayButton" type="Button" parent="MainControls"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Play"
|
text = "Play"
|
||||||
|
|
||||||
[node name="MultiplayerButton" type="Button" parent="MainControls"]
|
[node name="MultiplayerButton" type="Button" parent="MainControls"]
|
||||||
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
disabled = true
|
disabled = true
|
||||||
text = "Multiplayer"
|
text = "Multiplayer"
|
||||||
@@ -136,6 +126,10 @@ text = "Multiplayer"
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Mods"
|
text = "Mods"
|
||||||
|
|
||||||
|
[node name="StatsButton" type="Button" parent="MainControls"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Stats"
|
||||||
|
|
||||||
[node name="OptionsButton" type="Button" parent="MainControls"]
|
[node name="OptionsButton" type="Button" parent="MainControls"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Options
|
text = "Options
|
||||||
@@ -146,50 +140,11 @@ layout_mode = 2
|
|||||||
text = "Quit
|
text = "Quit
|
||||||
"
|
"
|
||||||
|
|
||||||
[node name="ProfileEditor" type="PanelContainer" parent="."]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
anchor_left = 0.97
|
|
||||||
anchor_top = 0.95
|
|
||||||
anchor_right = 0.97
|
|
||||||
anchor_bottom = 0.95
|
|
||||||
offset_left = -421.0
|
|
||||||
offset_top = -150.0
|
|
||||||
grow_horizontal = 0
|
|
||||||
grow_vertical = 0
|
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="ProfileEditor"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="ProfileEditor/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Current Profile"
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="ProfileEditor/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="DisplayName" type="Label" parent="ProfileEditor/VBoxContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_horizontal = 3
|
|
||||||
text = "Dummy Name"
|
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="ProfileEditor/VBoxContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_override_constants/margin_left = 29
|
|
||||||
theme_override_constants/margin_top = 2
|
|
||||||
theme_override_constants/margin_right = 31
|
|
||||||
theme_override_constants/margin_bottom = 4
|
|
||||||
|
|
||||||
[node name="DisplayNameEdit" type="Button" parent="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_horizontal = 3
|
|
||||||
text = "View Profile"
|
|
||||||
|
|
||||||
[node name="SubViewport" type="SubViewport" parent="."]
|
[node name="SubViewport" type="SubViewport" parent="."]
|
||||||
size = Vector2i(1920, 1080)
|
size = Vector2i(1920, 1080)
|
||||||
|
|
||||||
[node name="GridMap" parent="SubViewport" instance=ExtResource("3_l8r4a")]
|
[node name="GridMap" parent="SubViewport" instance=ExtResource("3_l8r4a")]
|
||||||
enemy_pool = Array[ExtResource("5_u514r")]([SubResource("Resource_y5bw6"), ExtResource("9_hdp0s"), ExtResource("10_day26"), ExtResource("11_1mes0"), ExtResource("12_5vny5"), ExtResource("13_xb7gj")])
|
enemy_pool = Array[ExtResource("5_u514r")]([SubResource("Resource_sv1gy"), ExtResource("9_hdp0s"), ExtResource("10_day26"), ExtResource("11_1mes0"), ExtResource("12_5vny5"), ExtResource("13_xb7gj")])
|
||||||
|
|
||||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||||
stream = SubResource("AudioStreamRandomizer_2jyua")
|
stream = SubResource("AudioStreamRandomizer_2jyua")
|
||||||
@@ -617,8 +572,6 @@ text = "Confirm"
|
|||||||
[connection signal="pressed" from="MainControls/OptionsButton" to="." method="_on_options_button_pressed"]
|
[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="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="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/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/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/DailyButton" to="." method="_on_daily_button_pressed"]
|
||||||
|
|||||||
@@ -71,8 +71,8 @@ func networked_spawn_tower(card_index: int, caller_id: int) -> void:
|
|||||||
tower.owner_id = caller_id
|
tower.owner_id = caller_id
|
||||||
tower.position = Vector3(0, 1.2, 0)
|
tower.position = Vector3(0, 1.2, 0)
|
||||||
minimap_icon.modulate = Color.RED
|
minimap_icon.modulate = Color.RED
|
||||||
duration = card.duration
|
duration = 999
|
||||||
enable_duration_sprites()
|
#enable_duration_sprites()
|
||||||
add_child(tower)
|
add_child(tower)
|
||||||
|
|
||||||
|
|
||||||
@@ -82,6 +82,6 @@ func networked_remove_tower() -> void:
|
|||||||
#game_manager.connected_players_nodes[tower.owner_id].add_card(inventory.remove_at(0))
|
#game_manager.connected_players_nodes[tower.owner_id].add_card(inventory.remove_at(0))
|
||||||
#game_manager.connected_players_nodes[tower.owner_id].unready_self()
|
#game_manager.connected_players_nodes[tower.owner_id].unready_self()
|
||||||
tower.queue_free()
|
tower.queue_free()
|
||||||
disable_duration_sprites()
|
#disable_duration_sprites()
|
||||||
tower = null
|
tower = null
|
||||||
minimap_icon.modulate = Color.GREEN
|
minimap_icon.modulate = Color.GREEN
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ title_text = NodePath("Title")
|
|||||||
description = NodePath("Description")
|
description = NodePath("Description")
|
||||||
target_label = NodePath("Title2")
|
target_label = NodePath("Title2")
|
||||||
energy_cost = NodePath("EnergyCost")
|
energy_cost = NodePath("EnergyCost")
|
||||||
duration = NodePath("Duration")
|
duration = NodePath("")
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
texture_filter = 1
|
texture_filter = 1
|
||||||
@@ -72,13 +72,3 @@ theme_override_colors/font_color = Color(0.228497, 0.570097, 0.884935, 1)
|
|||||||
text = "3"
|
text = "3"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="Duration" type="Label" parent="."]
|
|
||||||
offset_left = 125.0
|
|
||||||
offset_top = 55.0
|
|
||||||
offset_right = 42.0
|
|
||||||
offset_bottom = 95.0
|
|
||||||
theme_override_colors/font_color = Color(0.228497, 0.570097, 0.884935, 1)
|
|
||||||
text = "4"
|
|
||||||
horizontal_alignment = 1
|
|
||||||
vertical_alignment = 1
|
|
||||||
|
|||||||
@@ -6,10 +6,11 @@
|
|||||||
viewport_path = NodePath("SubViewport")
|
viewport_path = NodePath("SubViewport")
|
||||||
|
|
||||||
[node name="Node3D" type="Sprite3D"]
|
[node name="Node3D" type="Sprite3D"]
|
||||||
pixel_size = 0.0006
|
pixel_size = 0.005
|
||||||
billboard = 1
|
billboard = 1
|
||||||
no_depth_test = true
|
no_depth_test = true
|
||||||
fixed_size = true
|
fixed_size = true
|
||||||
|
texture_filter = 2
|
||||||
render_priority = 1
|
render_priority = 1
|
||||||
texture = SubResource("ViewportTexture_ppqlh")
|
texture = SubResource("ViewportTexture_ppqlh")
|
||||||
script = ExtResource("1_lgvaq")
|
script = ExtResource("1_lgvaq")
|
||||||
@@ -25,9 +26,7 @@ anchor_right = 1.0
|
|||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
|
theme_type_variation = &"DamageNumLabel"
|
||||||
theme_override_constants/outline_size = 5
|
|
||||||
theme_override_font_sizes/font_size = 60
|
|
||||||
text = "12345"
|
text = "12345"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ enum Faction {
|
|||||||
MAGE = 2,
|
MAGE = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
@export var duration: int
|
@export var cost: int
|
||||||
@export var rarity: Data.Rarity
|
@export var rarity: Data.Rarity
|
||||||
@export var faction: Faction
|
@export var faction: Faction
|
||||||
@export var turret_scene: PackedScene
|
@export var turret_scene: PackedScene
|
||||||
|
|||||||
@@ -15,17 +15,7 @@ func set_card(value: Card) -> void:
|
|||||||
title_text.text = stats.display_name
|
title_text.text = stats.display_name
|
||||||
target_label.text = str(Data.TargetType.keys()[stats.tower_stats.target_type])
|
target_label.text = str(Data.TargetType.keys()[stats.tower_stats.target_type])
|
||||||
rarity_sprite.region_rect = Rect2(64 * stats.rarity, 0, 64, 64)
|
rarity_sprite.region_rect = Rect2(64 * stats.rarity, 0, 64, 64)
|
||||||
if stats.rarity == Data.Rarity.COMMON:
|
energy_cost.text = str(value.cost)
|
||||||
energy_cost.text = "2"
|
|
||||||
if stats.rarity == Data.Rarity.UNCOMMON:
|
|
||||||
energy_cost.text = "4"
|
|
||||||
if stats.rarity == Data.Rarity.RARE:
|
|
||||||
energy_cost.text = "6"
|
|
||||||
if stats.rarity == Data.Rarity.EPIC:
|
|
||||||
energy_cost.text = "8"
|
|
||||||
if stats.rarity == Data.Rarity.LEGENDARY:
|
|
||||||
energy_cost.text = "10"
|
|
||||||
duration.text = str(value.duration)
|
|
||||||
|
|
||||||
|
|
||||||
func process_card_text(card_text: CardText) -> String:
|
func process_card_text(card_text: CardText) -> String:
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ enum EnemyType {UNDEFINED = 0, LAND = 1, AIR = 2}
|
|||||||
enum Rarity {COMMON = 0, UNCOMMON = 1, RARE = 2, EPIC = 3, LEGENDARY = 4}
|
enum Rarity {COMMON = 0, UNCOMMON = 1, RARE = 2, EPIC = 3, LEGENDARY = 4}
|
||||||
enum CardTags {DAMAGE = 0, UTILITY = 1, TARGETS_FLYING = 2}
|
enum CardTags {DAMAGE = 0, UTILITY = 1, TARGETS_FLYING = 2}
|
||||||
|
|
||||||
static var weapon_recharge_delay: float = 1.5
|
static var weapon_recharge_delay: float = 0.5
|
||||||
static var starting_cash: int = 10
|
static var starting_cash: int = 10
|
||||||
|
static var player_energy: int = 6
|
||||||
static var wall_cost: int = 1
|
static var wall_cost: int = 1
|
||||||
static var printer_cost: int = 15
|
static var printer_cost: int = 15
|
||||||
static var rarity_weights: Dictionary = {
|
static var rarity_weights: Dictionary = {
|
||||||
|
|||||||
@@ -44,8 +44,9 @@ func _ready() -> void:
|
|||||||
version_label.text = "WORK IN PROGRESS | ALPHA - VERSION " + version + " | PLAYTEST"
|
version_label.text = "WORK IN PROGRESS | ALPHA - VERSION " + version + " | PLAYTEST"
|
||||||
version_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
version_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||||
version_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
version_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
version_label.add_theme_font_size_override("font_size", 18)
|
version_label.theme_type_variation = "VersionLabel"
|
||||||
version_label.add_theme_color_override("font_color", Color(0.85, 0.85, 0.85, 0.7))
|
#version_label.add_theme_font_size_override("font_size", 18)
|
||||||
|
#version_label.add_theme_color_override("font_color", Color(0.85, 0.85, 0.85, 0.7))
|
||||||
version_label.set_anchors_preset(Control.PRESET_TOP_WIDE)
|
version_label.set_anchors_preset(Control.PRESET_TOP_WIDE)
|
||||||
UILayer.add_child(version_label)
|
UILayer.add_child(version_label)
|
||||||
Input.set_custom_mouse_cursor(load("res://Assets/Textures/cursor_none.png"), Input.CURSOR_ARROW, Vector2(9, 6))
|
Input.set_custom_mouse_cursor(load("res://Assets/Textures/cursor_none.png"), Input.CURSOR_ARROW, Vector2(9, 6))
|
||||||
@@ -59,7 +60,7 @@ func parse_command(text: String, peer_id: int) -> void:
|
|||||||
for x: Card in Data.cards:
|
for x: Card in Data.cards:
|
||||||
if x.display_name == gift_name:
|
if x.display_name == gift_name:
|
||||||
gift = x
|
gift = x
|
||||||
connected_players_nodes[peer_id].inventory.add(gift)
|
connected_players_nodes[peer_id].hand.add(gift)
|
||||||
elif text.substr(1, 2) == "tr":
|
elif text.substr(1, 2) == "tr":
|
||||||
chatbox.append_message("SERVER", Color.TOMATO, "[color=#f7a8b8]t[color=#55cdfc]r[color=#ffffff]a[color=#55cdfc]n[color=#f7a8b8]s [color=#e50000]r[color=#ff8d00]i[color=#ffee00]g[color=#028121]h[color=#004cff]t[color=#760088]s[color=white]!!")
|
chatbox.append_message("SERVER", Color.TOMATO, "[color=#f7a8b8]t[color=#55cdfc]r[color=#ffffff]a[color=#55cdfc]n[color=#f7a8b8]s [color=#e50000]r[color=#ff8d00]i[color=#ffee00]g[color=#028121]h[color=#004cff]t[color=#760088]s[color=white]!!")
|
||||||
elif text.substr(1, 6) == "length":
|
elif text.substr(1, 6) == "length":
|
||||||
@@ -165,8 +166,8 @@ func spawn_enemy_wave() -> void:
|
|||||||
for spawn: EnemySpawner in level.enemy_spawns:
|
for spawn: EnemySpawner in level.enemy_spawns:
|
||||||
spawn.visible = false
|
spawn.visible = false
|
||||||
spawn.spawn_wave()
|
spawn.spawn_wave()
|
||||||
for tower_base: TowerBase in level.walls.values():
|
#for tower_base: TowerBase in level.walls.values():
|
||||||
tower_base.disable_duration_sprites()
|
#tower_base.disable_duration_sprites()
|
||||||
wave_started.emit()
|
wave_started.emit()
|
||||||
|
|
||||||
|
|
||||||
@@ -240,7 +241,7 @@ func end_wave() -> void:
|
|||||||
var player: Hero = connected_players_nodes[peer_id] as Hero
|
var player: Hero = connected_players_nodes[peer_id] as Hero
|
||||||
player.hud.set_wave_count(wave)
|
player.hud.set_wave_count(wave)
|
||||||
player.currency += ceili(pot / connected_players_nodes.size())
|
player.currency += ceili(pot / connected_players_nodes.size())
|
||||||
player.energy = 12
|
player.energy = Data.player_energy
|
||||||
player.iterate_duration()
|
player.iterate_duration()
|
||||||
player.draw_to_hand_size()
|
player.draw_to_hand_size()
|
||||||
player.unready_self()
|
player.unready_self()
|
||||||
@@ -248,7 +249,7 @@ func end_wave() -> void:
|
|||||||
spawn.visible = true
|
spawn.visible = true
|
||||||
for tower_base: TowerBase in level.walls.values():
|
for tower_base: TowerBase in level.walls.values():
|
||||||
if tower_base.has_card:
|
if tower_base.has_card:
|
||||||
tower_base.enable_duration_sprites()
|
#tower_base.enable_duration_sprites()
|
||||||
tower_base.iterate_duration()
|
tower_base.iterate_duration()
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
if NoiseRandom.randf_in_range(23 * wave, 0.0, 1.0) <= shop_chance:
|
if NoiseRandom.randf_in_range(23 * wave, 0.0, 1.0) <= shop_chance:
|
||||||
@@ -308,7 +309,7 @@ func start() -> void:
|
|||||||
spawn_players()
|
spawn_players()
|
||||||
for peer_id: int in connected_players_nodes:
|
for peer_id: int in connected_players_nodes:
|
||||||
connected_players_nodes[peer_id].currency = ceili(float(Data.starting_cash) / float(connected_players_nodes.size()))
|
connected_players_nodes[peer_id].currency = ceili(float(Data.starting_cash) / float(connected_players_nodes.size()))
|
||||||
connected_players_nodes[peer_id].energy = 12
|
connected_players_nodes[peer_id].energy = Data.player_energy
|
||||||
connected_players_nodes[peer_id].draw_pile.shuffle()
|
connected_players_nodes[peer_id].draw_pile.shuffle()
|
||||||
connected_players_nodes[peer_id].draw_to_hand_size()
|
connected_players_nodes[peer_id].draw_to_hand_size()
|
||||||
|
|
||||||
|
|||||||
@@ -6,18 +6,17 @@ render_mode blend_mix,
|
|||||||
specular_disabled,
|
specular_disabled,
|
||||||
vertex_lighting;
|
vertex_lighting;
|
||||||
|
|
||||||
uniform bool affine_mapping = false;
|
global uniform bool affine_mapping = false;
|
||||||
|
global uniform ivec2 jitter_resolution = ivec2(320, 240);
|
||||||
uniform sampler2D albedo : source_color, filter_nearest;
|
uniform sampler2D albedo : source_color, filter_nearest;
|
||||||
uniform float alpha_scissor : hint_range(0, 1) = 0.5;
|
uniform float alpha_scissor : hint_range(0, 1) = 0.5;
|
||||||
uniform float jitter: hint_range(0, 1) = 0.25;
|
|
||||||
uniform ivec2 resolution = ivec2(320, 240);
|
|
||||||
|
|
||||||
vec4 snap_to_position(vec4 base_position)
|
vec4 snap_to_position(vec4 base_position)
|
||||||
{
|
{
|
||||||
vec4 snapped_position = base_position;
|
vec4 snapped_position = base_position;
|
||||||
snapped_position.xyz = base_position.xyz / base_position.w;
|
snapped_position.xyz = base_position.xyz / base_position.w;
|
||||||
|
|
||||||
vec2 snap_resulotion = floor(vec2(resolution) * (1.0 - jitter));
|
vec2 snap_resulotion = floor(vec2(jitter_resolution));
|
||||||
snapped_position.x = floor(snap_resulotion.x * snapped_position.x) / snap_resulotion.x;
|
snapped_position.x = floor(snap_resulotion.x * snapped_position.x) / snap_resulotion.x;
|
||||||
snapped_position.y = floor(snap_resulotion.y * snapped_position.y) / snap_resulotion.y;
|
snapped_position.y = floor(snap_resulotion.y * snapped_position.y) / snap_resulotion.y;
|
||||||
|
|
||||||
|
|||||||
39
Shaders/mightyduke.gdshader
Normal file
39
Shaders/mightyduke.gdshader
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
shader_type canvas_item;
|
||||||
|
|
||||||
|
uniform sampler2D SCREEN_TEXTURE: hint_screen_texture, filter_linear_mipmap;
|
||||||
|
uniform int color_depth : hint_range(1, 8) = 5;
|
||||||
|
uniform bool dithering = true;
|
||||||
|
uniform int resolution_scale = 4;
|
||||||
|
|
||||||
|
int dithering_pattern(ivec2 fragcoord) {
|
||||||
|
const int pattern[] = {
|
||||||
|
-4, +0, -3, +1,
|
||||||
|
+2, -2, +3, -1,
|
||||||
|
-3, +1, -4, +0,
|
||||||
|
+3, -1, +2, -2
|
||||||
|
};
|
||||||
|
|
||||||
|
int x = fragcoord.x % 4;
|
||||||
|
int y = fragcoord.y % 4;
|
||||||
|
|
||||||
|
return pattern[y * 4 + x];
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
ivec2 uv = ivec2(FRAGCOORD.xy / float(resolution_scale));
|
||||||
|
vec3 color = texelFetch(SCREEN_TEXTURE, uv * resolution_scale, 0).rgb;
|
||||||
|
|
||||||
|
// Convert from [0.0, 1.0] range to [0, 255] range
|
||||||
|
ivec3 c = ivec3(round(color * 255.0));
|
||||||
|
|
||||||
|
// Apply the dithering pattern
|
||||||
|
if (dithering) {
|
||||||
|
c += ivec3(dithering_pattern(uv));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Truncate from 8 bits to color_depth bits
|
||||||
|
c >>= (8 - color_depth);
|
||||||
|
|
||||||
|
// Convert back to [0.0, 1.0] range
|
||||||
|
COLOR = vec4(vec3(c) / float(1 << color_depth), 1.0);
|
||||||
|
}
|
||||||
1
Shaders/mightyduke.gdshader.uid
Normal file
1
Shaders/mightyduke.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dvvn4x6geogiv
|
||||||
@@ -4,15 +4,18 @@ extends Control
|
|||||||
@export var icon: TextureRect
|
@export var icon: TextureRect
|
||||||
@export var tags: VBoxContainer
|
@export var tags: VBoxContainer
|
||||||
@export var cost_label: Label
|
@export var cost_label: Label
|
||||||
@export var lifetime_label: Label
|
|
||||||
@export var unselected_style_box: StyleBoxFlat
|
@export var unselected_style_box: StyleBoxFlat
|
||||||
@export var selected_style_box: StyleBoxFlat
|
@export var selected_style_box: StyleBoxFlat
|
||||||
|
@export var amount_label: Label
|
||||||
|
|
||||||
|
|
||||||
|
func set_amount(num: int) -> void:
|
||||||
|
amount_label.text = "x" + str(num)
|
||||||
|
|
||||||
|
|
||||||
func set_card(card: Card) -> void:
|
func set_card(card: Card) -> void:
|
||||||
icon.texture = card.icon
|
icon.texture = card.icon
|
||||||
cost_label.text = str(card.rarity + 1)
|
cost_label.text = str(card.cost)
|
||||||
lifetime_label.text = str(card.duration)
|
|
||||||
for i: int in tags.get_child_count():
|
for i: int in tags.get_child_count():
|
||||||
tags.get_child(i).queue_free()
|
tags.get_child(i).queue_free()
|
||||||
for tag: Data.CardTags in card.tags:
|
for tag: Data.CardTags in card.tags:
|
||||||
|
|||||||
@@ -6,17 +6,17 @@
|
|||||||
[ext_resource type="StyleBox" uid="uid://csbgndc6vfayf" path="res://UI/CardSelectionBox/selected_style_box.tres" id="2_ek0dh"]
|
[ext_resource type="StyleBox" uid="uid://csbgndc6vfayf" path="res://UI/CardSelectionBox/selected_style_box.tres" id="2_ek0dh"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bpcyxdpog3w85" path="res://Assets/Textures/assault_icon.png" id="2_m0g3h"]
|
[ext_resource type="Texture2D" uid="uid://bpcyxdpog3w85" path="res://Assets/Textures/assault_icon.png" id="2_m0g3h"]
|
||||||
|
|
||||||
[node name="Control" type="Control" node_paths=PackedStringArray("icon", "tags", "cost_label", "lifetime_label")]
|
[node name="Control" type="Control" node_paths=PackedStringArray("icon", "tags", "cost_label", "amount_label")]
|
||||||
custom_minimum_size = Vector2(170, 0)
|
custom_minimum_size = Vector2(170, 0)
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
script = ExtResource("1_m0g3h")
|
script = ExtResource("1_m0g3h")
|
||||||
icon = NodePath("PanelContainer/HBoxContainer/Icon")
|
icon = NodePath("PanelContainer/VBoxContainer/HBoxContainer/Icon")
|
||||||
tags = NodePath("PanelContainer/HBoxContainer/MarginContainer/Tags")
|
tags = NodePath("PanelContainer/VBoxContainer/HBoxContainer/MarginContainer/Tags")
|
||||||
cost_label = NodePath("PanelContainer/HBoxContainer/Stats/Cost")
|
cost_label = NodePath("PanelContainer/VBoxContainer/HBoxContainer/Stats/Cost")
|
||||||
lifetime_label = NodePath("PanelContainer/HBoxContainer/Stats/Lifetime")
|
|
||||||
unselected_style_box = ExtResource("2_0817q")
|
unselected_style_box = ExtResource("2_0817q")
|
||||||
selected_style_box = ExtResource("2_ek0dh")
|
selected_style_box = ExtResource("2_ek0dh")
|
||||||
|
amount_label = NodePath("PanelContainer/VBoxContainer/Label")
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
@@ -24,45 +24,49 @@ offset_right = 152.0
|
|||||||
offset_bottom = 124.0
|
offset_bottom = 124.0
|
||||||
theme_override_styles/panel = ExtResource("2_ek0dh")
|
theme_override_styles/panel = ExtResource("2_ek0dh")
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer"]
|
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/HBoxContainer"]
|
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
theme_override_constants/margin_top = 10
|
theme_override_constants/margin_top = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="Tags" type="VBoxContainer" parent="PanelContainer/HBoxContainer/MarginContainer"]
|
[node name="Tags" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer/MarginContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Icon2" type="TextureRect" parent="PanelContainer/HBoxContainer/MarginContainer/Tags"]
|
[node name="Icon2" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer/MarginContainer/Tags"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
texture = ExtResource("1_k8442")
|
texture = ExtResource("1_k8442")
|
||||||
stretch_mode = 5
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Icon" type="TextureRect" parent="PanelContainer/HBoxContainer"]
|
[node name="Icon" type="TextureRect" parent="PanelContainer/VBoxContainer/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
texture = ExtResource("2_m0g3h")
|
texture = ExtResource("2_m0g3h")
|
||||||
stretch_mode = 5
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Stats" type="VBoxContainer" parent="PanelContainer/HBoxContainer"]
|
[node name="Stats" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
[node name="Cost" type="Label" parent="PanelContainer/HBoxContainer/Stats"]
|
[node name="Cost" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer/Stats"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 7
|
size_flags_vertical = 7
|
||||||
text = "3"
|
text = "3"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="Lifetime" type="Label" parent="PanelContainer/HBoxContainer/Stats"]
|
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 7
|
size_flags_vertical = 8
|
||||||
text = "6"
|
text = "x2"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
|||||||
@@ -119,6 +119,8 @@ func gain_energy(energy_gained: float, energy_type: Data.EnergyType = Data.Energ
|
|||||||
energy += energy_gained
|
energy += energy_gained
|
||||||
progress_bar.value = energy
|
progress_bar.value = energy
|
||||||
big_progress_bar.value = energy
|
big_progress_bar.value = energy
|
||||||
|
#TODO: Theres a bug here that should be fixed by making the discrete and continuous bars
|
||||||
|
#into a different ui element which i think i wanna do anyway
|
||||||
if energy_type == Data.EnergyType.DISCRETE and int(energy) > prev_energy_int:
|
if energy_type == Data.EnergyType.DISCRETE and int(energy) > prev_energy_int:
|
||||||
cell_icons[int(energy) - 1].visible = true
|
cell_icons[int(energy) - 1].visible = true
|
||||||
prev_energy_int = int(energy)
|
prev_energy_int = int(energy)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
[gd_resource type="Theme" load_steps=16 format=3 uid="uid://b6a0ip4p72tgx"]
|
[gd_resource type="Theme" load_steps=17 format=3 uid="uid://b6a0ip4p72tgx"]
|
||||||
|
|
||||||
|
[ext_resource type="FontFile" uid="uid://bqy8dm2o3piqm" path="res://Assets/Fonts/Quaver v1.0/quaver.ttf" id="2_i4k6b"]
|
||||||
[ext_resource type="StyleBox" uid="uid://lpof3jdy7hr7" path="res://UI/new_style_box_flat.tres" id="4_o03gw"]
|
[ext_resource type="StyleBox" uid="uid://lpof3jdy7hr7" path="res://UI/new_style_box_flat.tres" id="4_o03gw"]
|
||||||
[ext_resource type="FontFile" uid="uid://c17ml15e2qan0" path="res://Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf" id="4_v3wda"]
|
[ext_resource type="FontFile" uid="uid://c17ml15e2qan0" path="res://Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf" id="4_v3wda"]
|
||||||
|
|
||||||
@@ -97,6 +98,9 @@ CheckButton/styles/hover = SubResource("StyleBoxEmpty_v4c6d")
|
|||||||
CheckButton/styles/hover_pressed = SubResource("StyleBoxEmpty_pdxi3")
|
CheckButton/styles/hover_pressed = SubResource("StyleBoxEmpty_pdxi3")
|
||||||
CheckButton/styles/normal = SubResource("StyleBoxEmpty_8epi8")
|
CheckButton/styles/normal = SubResource("StyleBoxEmpty_8epi8")
|
||||||
CheckButton/styles/pressed = SubResource("StyleBoxEmpty_o02xp")
|
CheckButton/styles/pressed = SubResource("StyleBoxEmpty_o02xp")
|
||||||
|
DamageNumLabel/base_type = &"Label"
|
||||||
|
DamageNumLabel/font_sizes/font_size = 8
|
||||||
|
DamageNumLabel/fonts/font = ExtResource("2_i4k6b")
|
||||||
HBoxContainer/constants/separation = 10
|
HBoxContainer/constants/separation = 10
|
||||||
Label/colors/font_color = Color(0.941129, 0.938917, 0.927802, 1)
|
Label/colors/font_color = Color(0.941129, 0.938917, 0.927802, 1)
|
||||||
Label/font_sizes/font_size = 34
|
Label/font_sizes/font_size = 34
|
||||||
@@ -108,6 +112,7 @@ LineEdit/fonts/font = ExtResource("4_v3wda")
|
|||||||
LineEdit/styles/focus = SubResource("StyleBoxFlat_s5vy1")
|
LineEdit/styles/focus = SubResource("StyleBoxFlat_s5vy1")
|
||||||
LineEdit/styles/normal = SubResource("StyleBoxFlat_s5vy1")
|
LineEdit/styles/normal = SubResource("StyleBoxFlat_s5vy1")
|
||||||
PanelContainer/styles/panel = ExtResource("4_o03gw")
|
PanelContainer/styles/panel = ExtResource("4_o03gw")
|
||||||
|
StartWaveLabel/base_type = &"Label"
|
||||||
TabBar/fonts/font = ExtResource("4_v3wda")
|
TabBar/fonts/font = ExtResource("4_v3wda")
|
||||||
TabContainer/colors/font_hovered_color = Color(0.894118, 0.890196, 0.870588, 1)
|
TabContainer/colors/font_hovered_color = Color(0.894118, 0.890196, 0.870588, 1)
|
||||||
TabContainer/colors/font_selected_color = Color(0.895148, 0.891833, 0.869117, 1)
|
TabContainer/colors/font_selected_color = Color(0.895148, 0.891833, 0.869117, 1)
|
||||||
@@ -120,3 +125,6 @@ TabContainer/styles/tab_focus = SubResource("StyleBoxFlat_ehga6")
|
|||||||
TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_tuxkj")
|
TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_tuxkj")
|
||||||
TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_ehga6")
|
TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_ehga6")
|
||||||
TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_tuxkj")
|
TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_tuxkj")
|
||||||
|
VersionLabel/base_type = &"Label"
|
||||||
|
VersionLabel/colors/font_color = Color(0.85, 0.85, 0.85, 0.7)
|
||||||
|
VersionLabel/font_sizes/font_size = 16
|
||||||
|
|||||||
9
UI/psx_ui.tres
Normal file
9
UI/psx_ui.tres
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[gd_resource type="Theme" format=3 uid="uid://jn4qqx5hxc5i"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
Button/font_sizes/font_size = 8
|
||||||
|
InteractLabel/base_type = &"Label"
|
||||||
|
StartWaveLabel/base_type = &"Label"
|
||||||
|
VersionLabel/base_type = &"Label"
|
||||||
|
VersionLabel/colors/font_color = Color(0.85, 0.85, 0.85, 0.7)
|
||||||
|
VersionLabel/font_sizes/font_size = 8
|
||||||
@@ -6,8 +6,5 @@
|
|||||||
[resource]
|
[resource]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("1_r6w0r")
|
shader = ExtResource("1_r6w0r")
|
||||||
shader_parameter/affine_mapping = true
|
|
||||||
shader_parameter/albedo = ExtResource("2_kbuty")
|
shader_parameter/albedo = ExtResource("2_kbuty")
|
||||||
shader_parameter/alpha_scissor = 0.5
|
shader_parameter/alpha_scissor = 0.5
|
||||||
shader_parameter/jitter = 0.25
|
|
||||||
shader_parameter/resolution = Vector2i(320, 240)
|
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
[gd_scene load_steps=33 format=3 uid="uid://y1qa1g3ic8sp"]
|
[gd_scene load_steps=38 format=3 uid="uid://y1qa1g3ic8sp"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cvejbo3srx8py" path="res://Scripts/level.gd" id="1_ws6nn"]
|
[ext_resource type="Script" uid="uid://cvejbo3srx8py" path="res://Scripts/level.gd" id="1_ws6nn"]
|
||||||
[ext_resource type="PackedScene" uid="uid://d2yv447trxkwt" path="res://Scenes/enemy_spawner.tscn" id="3_5imwp"]
|
[ext_resource type="PackedScene" uid="uid://d2yv447trxkwt" path="res://Scenes/enemy_spawner.tscn" id="3_5imwp"]
|
||||||
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="3_6od8s"]
|
[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="3_6od8s"]
|
||||||
[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="5_6od8s"]
|
[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="3_uh5sr"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="4_g08yk"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bvq6tbkuv2mfp" path="res://Enemies/EyeDog/eye_dog.tscn" id="5_asmpj"]
|
||||||
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="5_j6d65"]
|
[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="5_j6d65"]
|
||||||
[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="6_ks6qx"]
|
[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="6_ks6qx"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="6_vrxvq"]
|
||||||
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="9_4gdda"]
|
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="9_4gdda"]
|
||||||
[ext_resource type="PackedScene" uid="uid://1b2ikdanl66b" path="res://Scenes/CardPrinter/card_printer.tscn" id="9_r25gu"]
|
[ext_resource type="PackedScene" uid="uid://1b2ikdanl66b" path="res://Scenes/CardPrinter/card_printer.tscn" id="9_r25gu"]
|
||||||
[ext_resource type="Script" uid="uid://cxwtuxytavfu5" path="res://Scripts/enemy_goal.gd" id="9_s3rd7"]
|
[ext_resource type="Script" uid="uid://cxwtuxytavfu5" path="res://Scripts/enemy_goal.gd" id="9_s3rd7"]
|
||||||
@@ -21,6 +24,36 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://dqrfgw65d0sq8" path="res://Assets/Textures/bridge_map.png" id="28_6od8s"]
|
[ext_resource type="Texture2D" uid="uid://dqrfgw65d0sq8" path="res://Assets/Textures/bridge_map.png" id="28_6od8s"]
|
||||||
[ext_resource type="PackedScene" uid="uid://ca174636iktc6" path="res://Worlds/GreenPlanet/Levels/Bridge/bridge.glb" id="30_ttr7n"]
|
[ext_resource type="PackedScene" uid="uid://ca174636iktc6" path="res://Worlds/GreenPlanet/Levels/Bridge/bridge.glb" id="30_ttr7n"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_p1iv6"]
|
||||||
|
resource_local_to_scene = true
|
||||||
|
atlas = ExtResource("6_vrxvq")
|
||||||
|
region = Rect2(0, 0, 32, 32)
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_uvxyn"]
|
||||||
|
resource_local_to_scene = true
|
||||||
|
script = ExtResource("3_6od8s")
|
||||||
|
title = "Eye Dog"
|
||||||
|
target_type = 1
|
||||||
|
scene = ExtResource("5_asmpj")
|
||||||
|
icon = ExtResource("4_g08yk")
|
||||||
|
death_sprite = ExtResource("3_uh5sr")
|
||||||
|
sprite = SubResource("AtlasTexture_p1iv6")
|
||||||
|
spawn_power = 10
|
||||||
|
health = 180
|
||||||
|
penalty = 10
|
||||||
|
movement_speed = 1.5
|
||||||
|
spawn_cooldown = 1.2
|
||||||
|
common_group = 6
|
||||||
|
common_cost = 1
|
||||||
|
uncommon_group = 10
|
||||||
|
uncommon_cost = 2
|
||||||
|
rare_group = 16
|
||||||
|
rare_cost = 3
|
||||||
|
epic_group = 22
|
||||||
|
epic_cost = 5
|
||||||
|
legendary_group = 28
|
||||||
|
legendary_cost = 6
|
||||||
|
|
||||||
[sub_resource type="Curve3D" id="Curve3D_3rdl2"]
|
[sub_resource type="Curve3D" id="Curve3D_3rdl2"]
|
||||||
_data = {
|
_data = {
|
||||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 12.3765, 1.00006, -13.0874, 0, 0, 0, 0, 0, 0, -13.1528, 5.17887, -14.4739),
|
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 12.3765, 1.00006, -13.0874, 0, 0, 0, 0, 0, 0, -13.1528, 5.17887, -14.4739),
|
||||||
@@ -235,7 +268,7 @@ size = Vector3(70.0478, 1, 73.4615)
|
|||||||
|
|
||||||
[node name="Bridge" type="Node3D" node_paths=PackedStringArray("tower_path", "player_spawns", "enemy_spawns", "enemy_goals", "corpses", "flow_field", "cinematic_cam", "printer", "shop")]
|
[node name="Bridge" type="Node3D" node_paths=PackedStringArray("tower_path", "player_spawns", "enemy_spawns", "enemy_goals", "corpses", "flow_field", "cinematic_cam", "printer", "shop")]
|
||||||
script = ExtResource("1_ws6nn")
|
script = ExtResource("1_ws6nn")
|
||||||
enemy_pool = Array[ExtResource("3_6od8s")]([ExtResource("5_6od8s"), ExtResource("9_4gdda"), ExtResource("5_j6d65"), ExtResource("6_ks6qx")])
|
enemy_pool = Array[ExtResource("3_6od8s")]([SubResource("Resource_uvxyn"), ExtResource("9_4gdda"), ExtResource("5_j6d65"), ExtResource("6_ks6qx")])
|
||||||
tower_path = NodePath("Towers")
|
tower_path = NodePath("Towers")
|
||||||
player_spawns = [NodePath("PlayerSpawnLocations/PlayerSpawn1"), NodePath("PlayerSpawnLocations/PlayerSpawn2"), NodePath("PlayerSpawnLocations/PlayerSpawn3"), NodePath("PlayerSpawnLocations/PlayerSpawn4")]
|
player_spawns = [NodePath("PlayerSpawnLocations/PlayerSpawn1"), NodePath("PlayerSpawnLocations/PlayerSpawn2"), NodePath("PlayerSpawnLocations/PlayerSpawn3"), NodePath("PlayerSpawnLocations/PlayerSpawn4")]
|
||||||
enemy_spawns = [NodePath("GroundSpawn"), NodePath("GroundSpawn2"), NodePath("GroundSpawn3"), NodePath("GroundSpawn4"), NodePath("GroundSpawn5"), NodePath("AirSpawn")]
|
enemy_spawns = [NodePath("GroundSpawn"), NodePath("GroundSpawn2"), NodePath("GroundSpawn3"), NodePath("GroundSpawn4"), NodePath("GroundSpawn5"), NodePath("AirSpawn")]
|
||||||
@@ -293,9 +326,6 @@ loop = false
|
|||||||
transform = Transform3D(3.27007e-05, 0.999663, -0.0260566, -0.00250896, 0.0260566, 0.99966, 0.999999, 3.26858e-05, 0.00250896, 0, 0, 0)
|
transform = Transform3D(3.27007e-05, 0.999663, -0.0260566, -0.00250896, 0.0260566, 0.99966, 0.999999, 3.26858e-05, 0.00250896, 0, 0, 0)
|
||||||
cull_mask = 1
|
cull_mask = 1
|
||||||
|
|
||||||
[node name="Sun" type="DirectionalLight3D" parent="."]
|
|
||||||
transform = Transform3D(0.917074, 0.155176, 0.367281, -0.398717, 0.356914, 0.84477, 8.88179e-16, -0.921158, 0.389188, 0, 100, 0)
|
|
||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_l41d0")
|
environment = SubResource("Environment_l41d0")
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,7 @@ func put_card_in_tower_base(tower_base: TowerBase) -> void:
|
|||||||
if hero.hand.size <= 0:
|
if hero.hand.size <= 0:
|
||||||
return
|
return
|
||||||
var card: Card = hero.selected_card
|
var card: Card = hero.selected_card
|
||||||
var energy_cost: int = int(card.rarity) + 1
|
var energy_cost: int = card.cost
|
||||||
energy_cost *= 2
|
|
||||||
if hero.energy < energy_cost:
|
if hero.energy < energy_cost:
|
||||||
return
|
return
|
||||||
if tower_base.has_card:
|
if tower_base.has_card:
|
||||||
|
|||||||
BIN
coin/Coin.glb
Normal file
BIN
coin/Coin.glb
Normal file
Binary file not shown.
44
coin/Coin.glb.import
Normal file
44
coin/Coin.glb.import
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://bg4pmewlvshu8"
|
||||||
|
path="res://.godot/imported/Coin.glb-dcf33c435a74febc9dfe74054dddd467.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://coin/Coin.glb"
|
||||||
|
dest_files=["res://.godot/imported/Coin.glb-dcf33c435a74febc9dfe74054dddd467.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
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
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
_subresources={
|
||||||
|
"materials": {
|
||||||
|
"coin": {
|
||||||
|
"use_external/enabled": true,
|
||||||
|
"use_external/path": "uid://5mnnhn5p1tll"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gltf/naming_version=1
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
coin/Coin_coin.png
Normal file
BIN
coin/Coin_coin.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 406 B |
38
coin/Coin_coin.png.import
Normal file
38
coin/Coin_coin.png.import
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bayjketjls0lt"
|
||||||
|
path.s3tc="res://.godot/imported/Coin_coin.png-130d4e26928a415246fa81206a49adee.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "bb4a8a7e338539895ead7701c1dd8cd9"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://coin/Coin_coin.png"
|
||||||
|
dest_files=["res://.godot/imported/Coin_coin.png-130d4e26928a415246fa81206a49adee.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
BIN
coin/coin.png
Normal file
BIN
coin/coin.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 406 B |
35
coin/coin.png.import
Normal file
35
coin/coin.png.import
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ctjkfe23t6crn"
|
||||||
|
path.s3tc="res://.godot/imported/coin.png-c9e5c2f51b2a10beb2d794afbbee004f.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://coin/coin.png"
|
||||||
|
dest_files=["res://.godot/imported/coin.png-c9e5c2f51b2a10beb2d794afbbee004f.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
10
coin/coin_material.tres
Normal file
10
coin/coin_material.tres
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://5mnnhn5p1tll"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" uid="uid://c5bffujq0l70k" path="res://Shaders/jitter.gdshader" id="1_38tga"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://ctjkfe23t6crn" path="res://coin/coin.png" id="2_kttjc"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_38tga")
|
||||||
|
shader_parameter/albedo = ExtResource("2_kttjc")
|
||||||
|
shader_parameter/alpha_scissor = 0.5
|
||||||
@@ -7,8 +7,5 @@
|
|||||||
[resource]
|
[resource]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("1_bpyoj")
|
shader = ExtResource("1_bpyoj")
|
||||||
shader_parameter/affine_mapping = true
|
|
||||||
shader_parameter/albedo = SubResource("PlaceholderTexture2D_6krsv")
|
shader_parameter/albedo = SubResource("PlaceholderTexture2D_6krsv")
|
||||||
shader_parameter/alpha_scissor = 0.5
|
shader_parameter/alpha_scissor = 0.5
|
||||||
shader_parameter/jitter = 0.25
|
|
||||||
shader_parameter/resolution = Vector2i(320, 240)
|
|
||||||
|
|||||||
4
main.gd
4
main.gd
@@ -13,6 +13,10 @@ var multiplayer_lobby_scene_path: String = "res://Scenes/Menus/multiplayer_lobby
|
|||||||
var singleplayer_lobby_scene_path: String = "res://Scenes/Menus/singleplayer_lobby.tscn"
|
var singleplayer_lobby_scene_path: String = "res://Scenes/Menus/singleplayer_lobby.tscn"
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
Engine.max_fps = 60
|
||||||
|
|
||||||
|
|
||||||
func load_main_menu() -> void:
|
func load_main_menu() -> void:
|
||||||
load_scene(main_menu_scene_path)
|
load_scene(main_menu_scene_path)
|
||||||
await loaded_scene
|
await loaded_scene
|
||||||
|
|||||||
35
main.tscn
35
main.tscn
@@ -1,23 +1,19 @@
|
|||||||
[gd_scene load_steps=8 format=3 uid="uid://d2k8y13qfvch0"]
|
[gd_scene load_steps=7 format=3 uid="uid://d2k8y13qfvch0"]
|
||||||
|
|
||||||
[ext_resource type="Shader" uid="uid://diugvmtoos1ti" path="res://Shaders/pixeldither.gdshader" id="2_1bvp3"]
|
|
||||||
[ext_resource type="Script" uid="uid://cx1xj7esl03ui" path="res://main.gd" id="2_h2yge"]
|
[ext_resource type="Script" uid="uid://cx1xj7esl03ui" path="res://main.gd" id="2_h2yge"]
|
||||||
[ext_resource type="Texture2D" uid="uid://6frn8lcwwehv" path="res://Assets/TextureAtlases/puppyfruit.png" id="2_lquwl"]
|
[ext_resource type="Texture2D" uid="uid://6frn8lcwwehv" path="res://Assets/TextureAtlases/puppyfruit.png" id="2_lquwl"]
|
||||||
[ext_resource type="Script" uid="uid://p1ugbcmjuwxg" path="res://Scripts/boot_logo.gd" id="3_7mycd"]
|
[ext_resource type="Script" uid="uid://p1ugbcmjuwxg" path="res://Scripts/boot_logo.gd" id="3_7mycd"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bpo5fu2a26mr7" path="res://blk-nx64-1x.png" id="3_h2yge"]
|
[ext_resource type="Shader" uid="uid://dvvn4x6geogiv" path="res://Shaders/mightyduke.gdshader" id="6_7mycd"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_272bh"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_272bh"]
|
||||||
atlas = ExtResource("2_lquwl")
|
atlas = ExtResource("2_lquwl")
|
||||||
region = Rect2(0, 0, 256, 256)
|
region = Rect2(0, 0, 256, 256)
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7mycd"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_272bh"]
|
||||||
shader = ExtResource("2_1bvp3")
|
shader = ExtResource("6_7mycd")
|
||||||
shader_parameter/shader_enabled = true
|
shader_parameter/color_depth = 5
|
||||||
shader_parameter/palette = ExtResource("3_h2yge")
|
|
||||||
shader_parameter/dithering = true
|
shader_parameter/dithering = true
|
||||||
shader_parameter/dithering_size = 4
|
|
||||||
shader_parameter/resolution_scale = 1
|
shader_parameter/resolution_scale = 1
|
||||||
shader_parameter/quantization_level = 8
|
|
||||||
|
|
||||||
[node name="Main" type="Node" node_paths=PackedStringArray("scene", "movies")]
|
[node name="Main" type="Node" node_paths=PackedStringArray("scene", "movies")]
|
||||||
script = ExtResource("2_h2yge")
|
script = ExtResource("2_h2yge")
|
||||||
@@ -41,9 +37,9 @@ anchor_top = 0.5
|
|||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = -128.0
|
offset_left = -128.0
|
||||||
offset_top = -128.0
|
offset_top = -147.0
|
||||||
offset_right = 128.0
|
offset_right = 128.0
|
||||||
offset_bottom = 128.0
|
offset_bottom = 109.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
texture = SubResource("AtlasTexture_272bh")
|
texture = SubResource("AtlasTexture_272bh")
|
||||||
@@ -54,16 +50,11 @@ color_rect = NodePath("../ColorRect")
|
|||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_top = 0.5
|
anchor_top = 0.77
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.77
|
||||||
offset_left = -52.0
|
|
||||||
offset_top = 205.0
|
|
||||||
offset_right = 52.0
|
|
||||||
offset_bottom = 20.0
|
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
theme_override_font_sizes/font_size = 91
|
|
||||||
text = "puppyfruit"
|
text = "puppyfruit"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
@@ -76,9 +67,9 @@ anchor_top = 0.5
|
|||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = -165.0
|
offset_left = -165.0
|
||||||
offset_top = 85.0
|
offset_top = 50.0
|
||||||
offset_right = 190.0
|
offset_right = 190.0
|
||||||
offset_bottom = 170.0
|
offset_bottom = 135.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
color = Color(0.192157, 0.415686, 0.223529, 1)
|
color = Color(0.192157, 0.415686, 0.223529, 1)
|
||||||
@@ -89,8 +80,8 @@ color = Color(0.192157, 0.415686, 0.223529, 1)
|
|||||||
layer = 2
|
layer = 2
|
||||||
visible = false
|
visible = false
|
||||||
|
|
||||||
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
|
[node name="ColorRect2" type="ColorRect" parent="CanvasLayer"]
|
||||||
material = SubResource("ShaderMaterial_7mycd")
|
material = SubResource("ShaderMaterial_272bh")
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ gdscript/warnings/inferred_declaration=2
|
|||||||
|
|
||||||
window/size/viewport_width=1920
|
window/size/viewport_width=1920
|
||||||
window/size/viewport_height=1080
|
window/size/viewport_height=1080
|
||||||
window/stretch/mode="canvas_items"
|
window/stretch/mode="viewport"
|
||||||
|
window/stretch/scale_mode="integer"
|
||||||
|
|
||||||
[editor]
|
[editor]
|
||||||
|
|
||||||
@@ -55,7 +56,8 @@ import/blender/enabled=false
|
|||||||
|
|
||||||
[gui]
|
[gui]
|
||||||
|
|
||||||
theme/custom="res://UI/new_theme.tres"
|
theme/custom="uid://b6a0ip4p72tgx"
|
||||||
|
theme/default_font_antialiasing=0
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
@@ -221,3 +223,14 @@ Pause={
|
|||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
textures/canvas_textures/default_texture_filter=0
|
textures/canvas_textures/default_texture_filter=0
|
||||||
|
|
||||||
|
[shader_globals]
|
||||||
|
|
||||||
|
affine_mapping={
|
||||||
|
"type": "bool",
|
||||||
|
"value": true
|
||||||
|
}
|
||||||
|
jitter_resolution={
|
||||||
|
"type": "ivec2",
|
||||||
|
"value": Vector2i(320, 240)
|
||||||
|
}
|
||||||
|
|||||||
7
rotate.gd
Normal file
7
rotate.gd
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@export var speed: float = 1.0
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
rotation_degrees.y += speed * delta
|
||||||
1
rotate.gd.uid
Normal file
1
rotate.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dq0yemhxscvtm
|
||||||
Reference in New Issue
Block a user