summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Game/Lobby/games_lobby.gd (renamed from Game/Lobby/game_lobby.gd)0
-rw-r--r--Stages/Square/square.gd2
-rw-r--r--Stages/Square/square.tscn6
-rw-r--r--Stages/Wintermaul/HUD.tscn16
-rw-r--r--Stages/Wintermaul/Units/ina.tres1
-rw-r--r--Stages/Wintermaul/Units/shade.tres13
-rw-r--r--Towers/Tower.gd3
-rw-r--r--UI/GamesLobby/games_lobby.gd (renamed from UI/GameLobby/game_lobby.gd)2
-rw-r--r--UI/GamesLobby/games_lobby.tscn (renamed from UI/GameLobby/game_lobby.tscn)18
-rw-r--r--UI/GamesLobby/lobby_game.gd (renamed from UI/GameLobby/lobby_game.gd)0
-rw-r--r--UI/GamesLobby/lobby_game.tscn (renamed from UI/GameLobby/lobby_game.tscn)2
-rw-r--r--UI/PlayerLobby/lobby.gd69
-rw-r--r--UI/Start.gd2
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Death.pngbin0 -> 294236 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Death.png.import34
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-E.pngbin0 -> 52625 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-E.png.import34
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-N.pngbin0 -> 72639 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-N.png.import34
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-NE.pngbin0 -> 65921 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-NE.png.import34
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-NW.pngbin0 -> 68763 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-NW.png.import34
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-S.pngbin0 -> 72551 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-S.png.import34
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-SE.pngbin0 -> 67416 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-SE.png.import34
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-SW.pngbin0 -> 65237 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-SW.png.import34
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-W.pngbin0 -> 51041 bytes
-rw-r--r--Units/Assets/Shade/Enemy-Melee-Idle-W.png.import34
-rw-r--r--Units/Assets/Shade/menu.pngbin0 -> 680 bytes
-rw-r--r--Units/Assets/Shade/menu.png.import34
-rw-r--r--Units/Assets/Shade/sprite_frames.tres725
-rw-r--r--Units/Unit.gd2
-rw-r--r--Units/unit_resource.gd1
-rw-r--r--project.godot2
37 files changed, 1157 insertions, 47 deletions
diff --git a/Game/Lobby/game_lobby.gd b/Game/Lobby/games_lobby.gd
index ffc66f3..ffc66f3 100644
--- a/Game/Lobby/game_lobby.gd
+++ b/Game/Lobby/games_lobby.gd
diff --git a/Stages/Square/square.gd b/Stages/Square/square.gd
new file mode 100644
index 0000000..e78c475
--- /dev/null
+++ b/Stages/Square/square.gd
@@ -0,0 +1,2 @@
+class_name Square
+extends Stage
diff --git a/Stages/Square/square.tscn b/Stages/Square/square.tscn
new file mode 100644
index 0000000..d2de788
--- /dev/null
+++ b/Stages/Square/square.tscn
@@ -0,0 +1,6 @@
+[gd_scene load_steps=2 format=3 uid="uid://cw0hxxa1m1qm7"]
+
+[ext_resource type="Script" path="res://Stages/Square/square.gd" id="1_xf3al"]
+
+[node name="Square" type="Node2D"]
+script = ExtResource("1_xf3al")
diff --git a/Stages/Wintermaul/HUD.tscn b/Stages/Wintermaul/HUD.tscn
index 49fffc3..2b3ab59 100644
--- a/Stages/Wintermaul/HUD.tscn
+++ b/Stages/Wintermaul/HUD.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=32 format=3 uid="uid://bylx30cweulmk"]
+[gd_scene load_steps=34 format=3 uid="uid://bylx30cweulmk"]
[ext_resource type="Script" path="res://Stages/Wintermaul/HUD.gd" id="1_2bu0v"]
[ext_resource type="Texture2D" uid="uid://dlg78heamuf5g" path="res://UI/Assets/Icons/tilemap_white.png" id="2_dyehp"]
@@ -26,8 +26,10 @@
[ext_resource type="Texture2D" uid="uid://nge6xe2exfcp" path="res://Units/Assets/LaPlusDarkness/menu_hover.png" id="22_471yj"]
[ext_resource type="Texture2D" uid="uid://chbq7reyacgga" path="res://Units/Assets/Penguin/menu.png" id="25_vpb52"]
[ext_resource type="Resource" uid="uid://criwiyamvskqy" path="res://Stages/Wintermaul/Units/tux.tres" id="25_xipe8"]
+[ext_resource type="Texture2D" uid="uid://clcae8ppob8je" path="res://Units/Assets/Shade/menu.png" id="26_cearo"]
[ext_resource type="Texture2D" uid="uid://dnkrgble5f8g0" path="res://Units/Assets/Penguin/menu_pressed.png" id="26_tgyag"]
[ext_resource type="Texture2D" uid="uid://d1jxmbpc8f6pi" path="res://Units/Assets/Penguin/menu_hover.png" id="27_5tp6y"]
+[ext_resource type="Resource" uid="uid://t6kihappvfh3" path="res://Stages/Wintermaul/Units/shade.tres" id="29_y87a0"]
[sub_resource type="AtlasTexture" id="AtlasTexture_byi0r"]
atlas = ExtResource("2_dyehp")
@@ -326,8 +328,8 @@ theme_override_constants/margin_bottom = 16
[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/SpawnBox/MarginContainer"]
layout_mode = 2
-theme_override_constants/h_separation = 0
-theme_override_constants/v_separation = 0
+theme_override_constants/h_separation = 1
+theme_override_constants/v_separation = 1
columns = 4
[node name="SpawnButton" parent="MarginContainer/VBoxContainer/HBoxContainer/SpawnBox/MarginContainer/GridContainer" instance=ExtResource("3_7eaea")]
@@ -361,10 +363,10 @@ unit_resource = ExtResource("25_xipe8")
[node name="SpawnButton5" parent="MarginContainer/VBoxContainer/HBoxContainer/SpawnBox/MarginContainer/GridContainer" instance=ExtResource("3_7eaea")]
layout_mode = 2
-texture_normal = ExtResource("14_t3qlu")
-texture_pressed = ExtResource("5_xcxr8")
-texture_hover = ExtResource("6_4go2d")
-unit_resource = ExtResource("25_xipe8")
+texture_normal = ExtResource("26_cearo")
+texture_pressed = ExtResource("26_cearo")
+texture_hover = ExtResource("26_cearo")
+unit_resource = ExtResource("29_y87a0")
[node name="SpawnButton6" parent="MarginContainer/VBoxContainer/HBoxContainer/SpawnBox/MarginContainer/GridContainer" instance=ExtResource("3_7eaea")]
layout_mode = 2
diff --git a/Stages/Wintermaul/Units/ina.tres b/Stages/Wintermaul/Units/ina.tres
index 526801b..1b9e5e8 100644
--- a/Stages/Wintermaul/Units/ina.tres
+++ b/Stages/Wintermaul/Units/ina.tres
@@ -8,5 +8,6 @@ script = ExtResource("1_tv002")
cost = 10
income = 3
sprite_frames = ExtResource("2_3lxif")
+sprite_scale = Vector2(1, 1)
hp = 10
speed = 50.0
diff --git a/Stages/Wintermaul/Units/shade.tres b/Stages/Wintermaul/Units/shade.tres
new file mode 100644
index 0000000..c1a1f28
--- /dev/null
+++ b/Stages/Wintermaul/Units/shade.tres
@@ -0,0 +1,13 @@
+[gd_resource type="Resource" script_class="WintermaulUnitResource" load_steps=3 format=3 uid="uid://t6kihappvfh3"]
+
+[ext_resource type="Script" path="res://Stages/Wintermaul/unit_resource.gd" id="1_tm1sw"]
+[ext_resource type="SpriteFrames" uid="uid://dyc1wvnnmasya" path="res://Units/Assets/Shade/sprite_frames.tres" id="2_2lsue"]
+
+[resource]
+script = ExtResource("1_tm1sw")
+cost = 5000
+income = 0
+sprite_frames = ExtResource("2_2lsue")
+sprite_scale = Vector2(0.2, 0.2)
+hp = 5000
+speed = 50.0
diff --git a/Towers/Tower.gd b/Towers/Tower.gd
index c3da1fd..141f588 100644
--- a/Towers/Tower.gd
+++ b/Towers/Tower.gd
@@ -175,7 +175,8 @@ func get_group_id() -> String:
func _on_tree_exiting() -> void:
- is_selected = false
+ if is_selected:
+ is_selected = false
diff --git a/UI/GameLobby/game_lobby.gd b/UI/GamesLobby/games_lobby.gd
index f80015b..b829337 100644
--- a/UI/GameLobby/game_lobby.gd
+++ b/UI/GamesLobby/games_lobby.gd
@@ -5,7 +5,7 @@ var games := []
var refresh_interval := 15.0
-@onready var lobby_game_scene := preload("res://UI/GameLobby/lobby_game.tscn")
+@onready var lobby_game_scene := preload("res://UI/GamesLobby/lobby_game.tscn")
func _ready() -> void:
diff --git a/UI/GameLobby/game_lobby.tscn b/UI/GamesLobby/games_lobby.tscn
index 8c632d6..cfba68c 100644
--- a/UI/GameLobby/game_lobby.tscn
+++ b/UI/GamesLobby/games_lobby.tscn
@@ -1,18 +1,18 @@
[gd_scene load_steps=5 format=3 uid="uid://b0uqf5h2j7fvk"]
-[ext_resource type="Script" path="res://UI/GameLobby/game_lobby.gd" id="1_1vvm7"]
-[ext_resource type="Texture2D" uid="uid://kwgx33awj4y2" path="res://UI/Assets/Enjl-Starry Space Background/background_1.png" id="2_tyk1u"]
-[ext_resource type="Theme" uid="uid://bt84t61hrvoyn" path="res://UI/PlayerLobby/lobby_theme.tres" id="3_3iumi"]
-[ext_resource type="PackedScene" uid="uid://cs2a7wfrj4wn0" path="res://UI/GameLobby/lobby_game.tscn" id="3_83gpr"]
+[ext_resource type="Script" path="res://UI/GamesLobby/games_lobby.gd" id="1_4dbpy"]
+[ext_resource type="Texture2D" uid="uid://kwgx33awj4y2" path="res://UI/Assets/Enjl-Starry Space Background/background_1.png" id="2_up3jk"]
+[ext_resource type="PackedScene" uid="uid://cs2a7wfrj4wn0" path="res://UI/GamesLobby/lobby_game.tscn" id="3_wofvj"]
+[ext_resource type="Theme" uid="uid://bt84t61hrvoyn" path="res://UI/PlayerLobby/lobby_theme.tres" id="4_k7oqv"]
-[node name="GameLobby" type="Control"]
+[node name="GamesLobby" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
-script = ExtResource("1_1vvm7")
+script = ExtResource("1_4dbpy")
[node name="Background" type="Control" parent="."]
layout_mode = 1
@@ -38,7 +38,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
-texture = ExtResource("2_tyk1u")
+texture = ExtResource("2_up3jk")
stretch_mode = 1
[node name="MarginContainer" type="MarginContainer" parent="."]
@@ -60,7 +60,7 @@ layout_mode = 2
unique_name_in_owner = true
layout_mode = 2
-[node name="LobbyGame" parent="MarginContainer/CenterContainer/GamesList" instance=ExtResource("3_83gpr")]
+[node name="LobbyGame" parent="MarginContainer/CenterContainer/GamesList" instance=ExtResource("3_wofvj")]
visible = false
layout_mode = 2
@@ -80,7 +80,7 @@ text = "No Games Found"
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 8
-theme = ExtResource("3_3iumi")
+theme = ExtResource("4_k7oqv")
[node name="Refresh" type="Button" parent="MarginContainer/VBoxContainer"]
unique_name_in_owner = true
diff --git a/UI/GameLobby/lobby_game.gd b/UI/GamesLobby/lobby_game.gd
index 39f9076..39f9076 100644
--- a/UI/GameLobby/lobby_game.gd
+++ b/UI/GamesLobby/lobby_game.gd
diff --git a/UI/GameLobby/lobby_game.tscn b/UI/GamesLobby/lobby_game.tscn
index a6809ac..1517416 100644
--- a/UI/GameLobby/lobby_game.tscn
+++ b/UI/GamesLobby/lobby_game.tscn
@@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cs2a7wfrj4wn0"]
-[ext_resource type="Script" path="res://UI/GameLobby/lobby_game.gd" id="1_cvsql"]
+[ext_resource type="Script" path="res://UI/GamesLobby/lobby_game.gd" id="1_cvsql"]
[node name="LobbyGame" type="HBoxContainer"]
script = ExtResource("1_cvsql")
diff --git a/UI/PlayerLobby/lobby.gd b/UI/PlayerLobby/lobby.gd
index 8c1c4a9..a278a33 100644
--- a/UI/PlayerLobby/lobby.gd
+++ b/UI/PlayerLobby/lobby.gd
@@ -19,7 +19,11 @@ func _ready() -> void:
if multiplayer.is_server():
joined.connect(func():
set_map.rpc(current_map_idx)
+ for setting in settings:
+ set_setting.rpc(setting, settings[setting])
+ # TODO: check that use_premade_teams behaves correctly on join
)
+
for idx in %Maps.get_child_count():
%Maps.get_child(idx).pressed.connect(func():
if current_map_idx != idx:
@@ -72,22 +76,22 @@ func update_list(current_list: Control, player_ids: Array):
label.add_theme_constant_override("outline_size", 10)
control.add_child(label)
current_list.add_child(control)
- #joined.emit()
control.get_child(0).text = str(player.username)
control.get_child(0).tooltip_text = str(id)
current_list.move_child(control, player_ids.find(id) + 1)
- # TODO: test with 3 players
func _on_peer_connected(id):
Network._on_peer_connected(id)
+ joined.emit()
+
func _on_peer_disconnected(id):
Network._on_peer_disconnected(id)
func _on_start_button_pressed() -> void:
- start.rpc()
+ start.rpc(settings)
func _on_cancel_button_pressed() -> void:
@@ -98,14 +102,14 @@ func _on_cancel_button_pressed() -> void:
@rpc("authority", "call_local")
-func start():
+func start(host_settings: Dictionary):
var packed_scene = %Maps.get_child(current_map_idx).get_meta("map_scene")
var scene = packed_scene.instantiate()
- for setting in settings:
- scene[setting] = settings[setting]
+ for setting in host_settings:
+ scene[setting] = host_settings[setting]
- if settings.get("use_premade_teams"):
+ if host_settings.get("use_premade_teams"):
var premade_teams = {}
for team_name in teams:
premade_teams[team_name] = teams[team_name]["players"]
@@ -130,12 +134,15 @@ func set_map(index: int):
# settings
for child in %Settings.get_children():
- child.queue_free()
+ child.free()
+
if map_button.has_meta("settings"):
current_map_scene = map_button.get_meta("map_scene").instantiate()
var map_settings = map_button.get_meta("settings", [])
for setting in map_settings:
- settings[setting] = current_map_scene[setting]
+ if not settings.has(setting):
+ settings[setting] = current_map_scene[setting]
+
var control = preload("res://UI/PlayerLobby/lobby_setting.tscn").instantiate()
control.label = setting
control.value = settings[setting]
@@ -158,26 +165,36 @@ func set_setting(key: String, value: Variant):
%Settings.get_node(key).value = value
# generate PlayersLists per team with clickable labels to switch team
- if settings.get("use_premade_teams"):
- %PlayersListContainer.visible = false
- var team_names = current_map_scene.teams.names()
- var players_per_team = Network.get_ordered_player_ids().size() / team_names.size()
- for idx in team_names.size():
- var team_name = team_names[idx]
-
- var new_list_container = preload("res://UI/players_list_container.tscn").instantiate()
- new_list_container.label = team_name.to_upper()
- new_list_container.clicked.connect(func():
- switch_team.rpc(team_name)
+ if key == "use_premade_teams":
+ if value:
+ %PlayersListContainer.visible = false
+ var team_names = current_map_scene.teams.names()
+ var players_per_team = ceil(
+ float(Network.get_ordered_player_ids().size()) / float(team_names.size())
)
- %Teams.add_child(new_list_container)
- var offset = players_per_team * idx
- teams[team_name] = {}
- teams[team_name]["players"] = Network.get_ordered_player_ids().slice(offset, offset + players_per_team)
- teams[team_name]["list"] = new_list_container.list
+ for idx in team_names.size():
+ var team_name = team_names[idx]
+
+ var new_list_container = preload("res://UI/players_list_container.tscn").instantiate()
+ new_list_container.label = team_name.to_upper()
+ new_list_container.clicked.connect(func():
+ switch_team.rpc(team_name)
+ )
+ %Teams.add_child(new_list_container)
+
+ var offset = players_per_team * idx
+ teams[team_name] = {}
+ teams[team_name]["players"] = Network.get_ordered_player_ids().slice(offset, offset + players_per_team)
+ teams[team_name]["list"] = new_list_container.list
+
+ update_list(teams[team_name]["list"], teams[team_name]["players"])
+ else:
+ for node in %Teams.get_children().slice(1): # get all but the main list
+ node.queue_free()
- update_list(teams[team_name]["list"], teams[team_name]["players"])
+ update_list(list, Network.get_ordered_player_ids())
+ %PlayersListContainer.visible = true
@rpc("any_peer", "call_local")
diff --git a/UI/Start.gd b/UI/Start.gd
index 85a7946..8724cee 100644
--- a/UI/Start.gd
+++ b/UI/Start.gd
@@ -57,4 +57,4 @@ func _on_join_pressed() -> void:
func _on_search_pressed() -> void:
Client.player.username = %Username.text
- get_tree().change_scene_to_file("res://UI/GameLobby/game_lobby.tscn")
+ get_tree().change_scene_to_file("res://UI/GamesLobby/games_lobby.tscn")
diff --git a/Units/Assets/Shade/Enemy-Melee-Death.png b/Units/Assets/Shade/Enemy-Melee-Death.png
new file mode 100644
index 0000000..82fc0da
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Death.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Death.png.import b/Units/Assets/Shade/Enemy-Melee-Death.png.import
new file mode 100644
index 0000000..27ad9b6
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Death.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bpi5kf8dred6a"
+path="res://.godot/imported/Enemy-Melee-Death.png-5b04eee938e5851881d810a4a897b49f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Death.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Death.png-5b04eee938e5851881d810a4a897b49f.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
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-E.png b/Units/Assets/Shade/Enemy-Melee-Idle-E.png
new file mode 100644
index 0000000..004fd4e
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-E.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-E.png.import b/Units/Assets/Shade/Enemy-Melee-Idle-E.png.import
new file mode 100644
index 0000000..fdf7f48
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-E.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://1jvo6f5lbiis"
+path="res://.godot/imported/Enemy-Melee-Idle-E.png-1f926debe270b2fb3b1a49f5645a6fb7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Idle-E.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Idle-E.png-1f926debe270b2fb3b1a49f5645a6fb7.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
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-N.png b/Units/Assets/Shade/Enemy-Melee-Idle-N.png
new file mode 100644
index 0000000..753c18b
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-N.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-N.png.import b/Units/Assets/Shade/Enemy-Melee-Idle-N.png.import
new file mode 100644
index 0000000..b9b56d9
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-N.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cleoem6lw6jl1"
+path="res://.godot/imported/Enemy-Melee-Idle-N.png-d4ea4c4e98abe5f1b5a3088ef23579af.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Idle-N.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Idle-N.png-d4ea4c4e98abe5f1b5a3088ef23579af.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
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-NE.png b/Units/Assets/Shade/Enemy-Melee-Idle-NE.png
new file mode 100644
index 0000000..e6e2c7b
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-NE.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-NE.png.import b/Units/Assets/Shade/Enemy-Melee-Idle-NE.png.import
new file mode 100644
index 0000000..352dc31
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-NE.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://2lqgllc7etxm"
+path="res://.godot/imported/Enemy-Melee-Idle-NE.png-985bfba23fbb84efa2f82ae64a7f72e3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Idle-NE.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Idle-NE.png-985bfba23fbb84efa2f82ae64a7f72e3.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
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-NW.png b/Units/Assets/Shade/Enemy-Melee-Idle-NW.png
new file mode 100644
index 0000000..e265d3f
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-NW.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-NW.png.import b/Units/Assets/Shade/Enemy-Melee-Idle-NW.png.import
new file mode 100644
index 0000000..02ead5c
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-NW.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dvsiir560077j"
+path="res://.godot/imported/Enemy-Melee-Idle-NW.png-b1db14a58302f32e36ea5c7fc5d3a4fe.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Idle-NW.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Idle-NW.png-b1db14a58302f32e36ea5c7fc5d3a4fe.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
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-S.png b/Units/Assets/Shade/Enemy-Melee-Idle-S.png
new file mode 100644
index 0000000..746cad5
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-S.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-S.png.import b/Units/Assets/Shade/Enemy-Melee-Idle-S.png.import
new file mode 100644
index 0000000..69cbada
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-S.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dejuex2d4y2je"
+path="res://.godot/imported/Enemy-Melee-Idle-S.png-30b1761d2c3b3cceeb0f091c513bab90.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Idle-S.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Idle-S.png-30b1761d2c3b3cceeb0f091c513bab90.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
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-SE.png b/Units/Assets/Shade/Enemy-Melee-Idle-SE.png
new file mode 100644
index 0000000..ab18c0b
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-SE.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-SE.png.import b/Units/Assets/Shade/Enemy-Melee-Idle-SE.png.import
new file mode 100644
index 0000000..98fd281
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-SE.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dxxakp8pq6fqx"
+path="res://.godot/imported/Enemy-Melee-Idle-SE.png-a05ae251d6f14ebdbb1ca44981d0c47d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Idle-SE.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Idle-SE.png-a05ae251d6f14ebdbb1ca44981d0c47d.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
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-SW.png b/Units/Assets/Shade/Enemy-Melee-Idle-SW.png
new file mode 100644
index 0000000..ad1b82a
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-SW.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-SW.png.import b/Units/Assets/Shade/Enemy-Melee-Idle-SW.png.import
new file mode 100644
index 0000000..aefa8df
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-SW.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://7hiufnlskg3t"
+path="res://.godot/imported/Enemy-Melee-Idle-SW.png-51d36a381d0c69303f9a747fa06a9fc5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Idle-SW.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Idle-SW.png-51d36a381d0c69303f9a747fa06a9fc5.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
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-W.png b/Units/Assets/Shade/Enemy-Melee-Idle-W.png
new file mode 100644
index 0000000..3ce3eea
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-W.png
Binary files differ
diff --git a/Units/Assets/Shade/Enemy-Melee-Idle-W.png.import b/Units/Assets/Shade/Enemy-Melee-Idle-W.png.import
new file mode 100644
index 0000000..257ba03
--- /dev/null
+++ b/Units/Assets/Shade/Enemy-Melee-Idle-W.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dx1do6vu28lnj"
+path="res://.godot/imported/Enemy-Melee-Idle-W.png-322659ce1b67d98691d4f29a8580febc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/Enemy-Melee-Idle-W.png"
+dest_files=["res://.godot/imported/Enemy-Melee-Idle-W.png-322659ce1b67d98691d4f29a8580febc.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
diff --git a/Units/Assets/Shade/menu.png b/Units/Assets/Shade/menu.png
new file mode 100644
index 0000000..0cf17c2
--- /dev/null
+++ b/Units/Assets/Shade/menu.png
Binary files differ
diff --git a/Units/Assets/Shade/menu.png.import b/Units/Assets/Shade/menu.png.import
new file mode 100644
index 0000000..ad4b2b4
--- /dev/null
+++ b/Units/Assets/Shade/menu.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://clcae8ppob8je"
+path="res://.godot/imported/menu.png-741af31cecc36fbbb939bd11595e7f7a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Units/Assets/Shade/menu.png"
+dest_files=["res://.godot/imported/menu.png-741af31cecc36fbbb939bd11595e7f7a.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
diff --git a/Units/Assets/Shade/sprite_frames.tres b/Units/Assets/Shade/sprite_frames.tres
new file mode 100644
index 0000000..baca412
--- /dev/null
+++ b/Units/Assets/Shade/sprite_frames.tres
@@ -0,0 +1,725 @@
+[gd_resource type="SpriteFrames" load_steps=105 format=3 uid="uid://dyc1wvnnmasya"]
+
+[ext_resource type="Texture2D" uid="uid://dejuex2d4y2je" path="res://Units/Assets/Shade/Enemy-Melee-Idle-S.png" id="1_edn0s"]
+[ext_resource type="Texture2D" uid="uid://7hiufnlskg3t" path="res://Units/Assets/Shade/Enemy-Melee-Idle-SW.png" id="2_onff2"]
+[ext_resource type="Texture2D" uid="uid://dxxakp8pq6fqx" path="res://Units/Assets/Shade/Enemy-Melee-Idle-SE.png" id="3_qmena"]
+[ext_resource type="Texture2D" uid="uid://dx1do6vu28lnj" path="res://Units/Assets/Shade/Enemy-Melee-Idle-W.png" id="8_dptcm"]
+[ext_resource type="Texture2D" uid="uid://1jvo6f5lbiis" path="res://Units/Assets/Shade/Enemy-Melee-Idle-E.png" id="9_cx2tp"]
+[ext_resource type="Texture2D" uid="uid://cleoem6lw6jl1" path="res://Units/Assets/Shade/Enemy-Melee-Idle-N.png" id="10_0bl4f"]
+[ext_resource type="Texture2D" uid="uid://2lqgllc7etxm" path="res://Units/Assets/Shade/Enemy-Melee-Idle-NE.png" id="11_rbnkv"]
+[ext_resource type="Texture2D" uid="uid://dvsiir560077j" path="res://Units/Assets/Shade/Enemy-Melee-Idle-NW.png" id="12_ljpje"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5esc8"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(0, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_yoyp4"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(256, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_blta8"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(512, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_vcj36"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(768, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_h65e8"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(1024, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_8npmv"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(1280, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_1vk51"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(1536, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_usysa"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(1792, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ubwsr"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(2048, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_1dahe"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(2304, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_48eed"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(2560, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_pit0r"]
+atlas = ExtResource("1_edn0s")
+region = Rect2(2816, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_vl1tr"]
+atlas = ExtResource("2_onff2")
+region = Rect2(0, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_84g1q"]
+atlas = ExtResource("2_onff2")
+region = Rect2(256, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_kbwlq"]
+atlas = ExtResource("2_onff2")
+region = Rect2(512, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gkyyk"]
+atlas = ExtResource("2_onff2")
+region = Rect2(768, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_vg24l"]
+atlas = ExtResource("2_onff2")
+region = Rect2(1024, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_lfi1p"]
+atlas = ExtResource("2_onff2")
+region = Rect2(1280, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_yurh6"]
+atlas = ExtResource("2_onff2")
+region = Rect2(1536, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_4lwb5"]
+atlas = ExtResource("2_onff2")
+region = Rect2(1792, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_74amb"]
+atlas = ExtResource("2_onff2")
+region = Rect2(2048, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0bopi"]
+atlas = ExtResource("2_onff2")
+region = Rect2(2304, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_tnuyt"]
+atlas = ExtResource("2_onff2")
+region = Rect2(2560, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gnix1"]
+atlas = ExtResource("2_onff2")
+region = Rect2(2816, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ks53r"]
+atlas = ExtResource("3_qmena")
+region = Rect2(0, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_klfip"]
+atlas = ExtResource("3_qmena")
+region = Rect2(256, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_av1cl"]
+atlas = ExtResource("3_qmena")
+region = Rect2(512, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_biwq0"]
+atlas = ExtResource("3_qmena")
+region = Rect2(768, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_qnvds"]
+atlas = ExtResource("3_qmena")
+region = Rect2(1024, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_7crqs"]
+atlas = ExtResource("3_qmena")
+region = Rect2(1280, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_1jari"]
+atlas = ExtResource("3_qmena")
+region = Rect2(1536, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_f58qx"]
+atlas = ExtResource("3_qmena")
+region = Rect2(1792, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_hp7ry"]
+atlas = ExtResource("3_qmena")
+region = Rect2(2048, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_rba83"]
+atlas = ExtResource("3_qmena")
+region = Rect2(2304, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_mbtep"]
+atlas = ExtResource("3_qmena")
+region = Rect2(2560, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_tf3ai"]
+atlas = ExtResource("3_qmena")
+region = Rect2(2816, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ydwj0"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(0, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_is7ju"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(256, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_hpqcv"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(512, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_lnyh1"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(768, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gqtpw"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(1024, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_f8dos"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(1280, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_r8ofm"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(1536, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gbgwt"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(1792, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_efxdp"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(2048, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_a3fyq"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(2304, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0h0en"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(2560, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_f5l4i"]
+atlas = ExtResource("8_dptcm")
+region = Rect2(2816, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ajbox"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(0, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ikvs2"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(256, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_xvfpc"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(512, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_li8aw"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(768, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_kk4tn"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(1024, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_7j5pv"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(1280, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_s1dha"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(1536, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_7byh7"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(1792, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_xrbrv"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(2048, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ar3ts"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(2304, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_01n1m"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(2560, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ja2e4"]
+atlas = ExtResource("9_cx2tp")
+region = Rect2(2816, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gepce"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(0, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_08hk2"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(256, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_384qh"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(512, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_hygcf"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(768, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_rj18a"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(1024, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_x7sll"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(1280, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_btpnv"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(1536, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ycmar"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(1792, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_18klp"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(2048, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_x5fbt"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(2304, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_j2wfi"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(2560, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_7q88x"]
+atlas = ExtResource("10_0bl4f")
+region = Rect2(2816, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0xxr5"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(0, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_wmoto"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(256, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_jf8au"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(512, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_128y6"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(768, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_2ih0g"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(1024, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gu0ew"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(1280, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_3dbyb"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(1536, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_r11h4"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(1792, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ihkov"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(2048, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_or5s3"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(2304, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_p5i1k"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(2560, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0ukrp"]
+atlas = ExtResource("11_rbnkv")
+region = Rect2(2816, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_hrnae"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(0, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_nqdgj"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(256, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5twgy"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(512, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0rlhm"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(768, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_e3jwu"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(1024, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_frkwu"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(1280, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ajsh6"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(1536, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_1culx"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(1792, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_fabhi"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(2048, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ih80h"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(2304, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_hg5kf"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(2560, 0, 256, 256)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_vcq4i"]
+atlas = ExtResource("12_ljpje")
+region = Rect2(2816, 0, 256, 256)
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5esc8")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_yoyp4")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_blta8")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_vcj36")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_h65e8")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_8npmv")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_1vk51")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_usysa")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ubwsr")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_1dahe")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_48eed")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_pit0r")
+}],
+"loop": true,
+"name": &"down",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_vl1tr")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_84g1q")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_kbwlq")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gkyyk")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_vg24l")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_lfi1p")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_yurh6")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_4lwb5")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_74amb")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0bopi")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_tnuyt")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gnix1")
+}],
+"loop": true,
+"name": &"down_left",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ks53r")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_klfip")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_av1cl")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_biwq0")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_qnvds")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_7crqs")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_1jari")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_f58qx")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_hp7ry")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_rba83")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_mbtep")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_tf3ai")
+}],
+"loop": true,
+"name": &"down_right",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ydwj0")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_is7ju")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_hpqcv")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_lnyh1")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gqtpw")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_f8dos")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_r8ofm")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gbgwt")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_efxdp")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_a3fyq")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0h0en")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_f5l4i")
+}],
+"loop": true,
+"name": &"left",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ajbox")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ikvs2")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_xvfpc")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_li8aw")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_kk4tn")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_7j5pv")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_s1dha")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_7byh7")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_xrbrv")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ar3ts")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_01n1m")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ja2e4")
+}],
+"loop": true,
+"name": &"right",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gepce")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_08hk2")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_384qh")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_hygcf")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_rj18a")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_x7sll")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_btpnv")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ycmar")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_18klp")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_x5fbt")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_j2wfi")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_7q88x")
+}],
+"loop": true,
+"name": &"up",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0xxr5")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_wmoto")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_jf8au")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_128y6")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_2ih0g")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gu0ew")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_3dbyb")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_r11h4")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ihkov")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_or5s3")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_p5i1k")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0ukrp")
+}],
+"loop": true,
+"name": &"up_left",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_hrnae")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_nqdgj")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5twgy")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0rlhm")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_e3jwu")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_frkwu")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ajsh6")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_1culx")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_fabhi")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ih80h")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_hg5kf")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_vcq4i")
+}],
+"loop": true,
+"name": &"up_right",
+"speed": 5.0
+}]
diff --git a/Units/Unit.gd b/Units/Unit.gd
index 889eec3..d42e65b 100644
--- a/Units/Unit.gd
+++ b/Units/Unit.gd
@@ -79,6 +79,7 @@ func _init():
func _ready():
# setup with data from UnitResource
sprite.sprite_frames = unit_resource.sprite_frames
+ sprite.scale = unit_resource.sprite_scale
base_speed = unit_resource.speed
hp = unit_resource.hp
@@ -327,6 +328,7 @@ class NetworkData extends Resource:
var unit_resource: UnitResource
+
func to_network_data() -> NetworkData:
var data = NetworkData.new()
diff --git a/Units/unit_resource.gd b/Units/unit_resource.gd
index f363d6f..de18c57 100644
--- a/Units/unit_resource.gd
+++ b/Units/unit_resource.gd
@@ -3,5 +3,6 @@ extends Resource
@export var sprite_frames: SpriteFrames
+@export var sprite_scale := Vector2(1.0, 1.0)
@export var hp: int
@export var speed: float
diff --git a/project.godot b/project.godot
index 7016ac2..c4bcc98 100644
--- a/project.godot
+++ b/project.godot
@@ -19,7 +19,7 @@ config/icon="res://icon.svg"
Network="*res://Game/Network.tscn"
Client="*res://Game/Client.tscn"
-GameLobby="*res://Game/Lobby/game_lobby.gd"
+GameLobby="*res://Game/Lobby/games_lobby.gd"
[display]