diff --git a/GameJamDungeon.csproj b/GameJamDungeon.csproj index 1ed1fe8c..38d8c9a9 100644 --- a/GameJamDungeon.csproj +++ b/GameJamDungeon.csproj @@ -1,4 +1,4 @@ - + net8.0 net8.0 diff --git a/GameJamDungeon.csproj.old b/GameJamDungeon.csproj.old new file mode 100644 index 00000000..1ed1fe8c --- /dev/null +++ b/GameJamDungeon.csproj.old @@ -0,0 +1,26 @@ + + + net8.0 + net8.0 + net8.0 + true + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/project.godot b/project.godot index 942a88f1..7e75981e 100644 --- a/project.godot +++ b/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="GameJamDungeon" run/main_scene="res://src/Main.tscn" -config/features=PackedStringArray("4.3", "C#", "GL Compatibility") +config/features=PackedStringArray("4.4", "C#", "GL Compatibility") [display] @@ -72,4 +72,6 @@ Inventory={ [physics] +3d/run_on_separate_thread=true common/physics_ticks_per_second=144 +3d/physics_engine="GodotPhysics3D" diff --git a/src/app/App.tscn b/src/app/App.tscn index 56e215d2..9aa409be 100644 --- a/src/app/App.tscn +++ b/src/app/App.tscn @@ -3,6 +3,7 @@ [ext_resource type="Script" path="res://src/app/App.cs" id="1_rt73h"] [node name="App" type="CanvasLayer"] +process_mode = 3 script = ExtResource("1_rt73h") [node name="SubViewportContainer" type="SubViewportContainer" parent="."] diff --git a/src/game/Game.cs b/src/game/Game.cs index 6fe0d4cd..a23417b6 100644 --- a/src/game/Game.cs +++ b/src/game/Game.cs @@ -24,6 +24,8 @@ public partial class Game : Node3D, IGame [Dependency] public IAppRepo AppRepo => this.DependOn(); + [Node] public Control MiniMap { get; set; } = default!; + public void Setup() { GameRepo = new GameRepo(); @@ -38,12 +40,14 @@ public partial class Game : Node3D, IGame GameBinding .Handle((in GameLogic.Output.StartGame _) => { GameRepo.Resume(); }) .Handle((in GameLogic.Output.SetPauseMode output) => { CallDeferred(nameof(SetPauseMode), output.IsPaused); }) + .Handle((in GameLogic.Output.ShowMiniMap _) => { MiniMap.Show(); }) + .Handle((in GameLogic.Output.HideMiniMap _) => { MiniMap.Hide(); }) .Handle((in GameLogic.Output.GameOver _) => { AppRepo.OnGameOver(); }); + GameLogic.Start(); GameLogic.Input(new GameLogic.Input.Initialize()); this.Provide(); - GameLogic.Start(); } public override void _Input(InputEvent @event) diff --git a/src/game/Game.tscn b/src/game/Game.tscn index e9b28e0d..5a3a5f5b 100644 --- a/src/game/Game.tscn +++ b/src/game/Game.tscn @@ -1,83 +1,119 @@ -[gd_scene load_steps=8 format=3 uid="uid://33ek675mfb5n"] +[gd_scene load_steps=11 format=3 uid="uid://33ek675mfb5n"] [ext_resource type="Script" path="res://src/game/Game.cs" id="1_ytcii"] [ext_resource type="PackedScene" uid="uid://wg25dg65ksgg" path="res://src/map/dungeon/DungeonGenerator.tscn" id="2_cgboj"] [ext_resource type="PackedScene" uid="uid://cfecvvav8kkp6" path="res://src/player/Player.tscn" id="3_kk6ly"] [ext_resource type="PackedScene" uid="uid://dhpwwqow1ahrc" path="res://src/map/dungeon/rooms/Room1.tscn" id="4_56rmd"] -[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="5_5i8m5"] -[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="6_5fcqc"] +[ext_resource type="PackedScene" uid="uid://bbwgmqy3evhh2" path="res://src/map/dungeon/rooms/Room2.tscn" id="4_clpvl"] +[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="6_aur0q"] +[ext_resource type="PackedScene" uid="uid://bwbofurcvf3yh" path="res://src/minimap/Minimap.tscn" id="6_owlf4"] [sub_resource type="Environment" id="Environment_fke5g"] +[sub_resource type="PlaneMesh" id="PlaneMesh_atd5i"] +size = Vector2(10, 10) + +[sub_resource type="BoxShape3D" id="BoxShape3D_s2hwi"] +size = Vector3(10, 1, 10) + [node name="Game" type="Node3D"] +process_mode = 3 script = ExtResource("1_ytcii") [node name="DungeonGenerator3D" parent="." instance=ExtResource("2_cgboj")] - -[node name="WorldEnvironment" type="WorldEnvironment" parent="DungeonGenerator3D"] -environment = SubResource("Environment_fke5g") - -[node name="Player" parent="DungeonGenerator3D" instance=ExtResource("3_kk6ly")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.55927, -4.70883, 25.1515) +room_scenes = Array[PackedScene]([ExtResource("4_56rmd"), ExtResource("4_clpvl")]) +corridor_cost_multiplier = 1.0 +room_cost_multiplier = 8.0 +room_cost_at_end_for_required_doors = 1.0 [node name="RoomsContainer" type="Node3D" parent="DungeonGenerator3D"] -[node name="DungeonRoom3D_0" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("4_56rmd")] -transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 5, 0, 15) -script = ExtResource("5_5i8m5") +[node name="DungeonRoom3D_0" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("4_56rmd")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 25, 0, -25) -[node name="DungeonRoom3D_1" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("4_56rmd")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -25, 0, -25) -script = ExtResource("5_5i8m5") +[node name="DungeonRoom3D_1" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("4_clpvl")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 5, 0, 25) -[node name="Corridor_2" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 15) -script = ExtResource("5_5i8m5") +[node name="Corridor_2" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, -25) -[node name="Corridor_3" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 5) -script = ExtResource("5_5i8m5") +[node name="Corridor_3" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, -15) -[node name="Corridor_4" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, -5) -script = ExtResource("5_5i8m5") +[node name="Corridor_4" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, -5) -[node name="Corridor_5" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, -15) -script = ExtResource("5_5i8m5") - -[node name="Corridor_6" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, -15) -script = ExtResource("5_5i8m5") - -[node name="Corridor_7" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, -25) -script = ExtResource("5_5i8m5") - -[node name="Corridor_8" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 15) -script = ExtResource("5_5i8m5") - -[node name="Corridor_9" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] +[node name="Corridor_5" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 5) -script = ExtResource("5_5i8m5") -[node name="Corridor_10" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 5) -script = ExtResource("5_5i8m5") +[node name="Corridor_6" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 15) -[node name="Corridor_11" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35, 0, -25) -script = ExtResource("5_5i8m5") +[node name="Corridor_7" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 25) -[node name="Corridor_12" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35, 0, -15) -script = ExtResource("5_5i8m5") +[node name="Corridor_8" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35, 0, -25) -[node name="Corridor_13" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 0, -15) -script = ExtResource("5_5i8m5") +[node name="Corridor_9" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35, 0, -15) -[node name="Corridor_14" type="Node3D" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_5fcqc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, -5) -script = ExtResource("5_5i8m5") +[node name="Corridor_10" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35, 0, -5) + +[node name="Corridor_11" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35, 0, 5) + +[node name="Corridor_12" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35, 0, 15) + +[node name="Corridor_13" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 15) + +[node name="Corridor_14" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 25) + +[node name="Corridor_15" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 25) + +[node name="Corridor_16" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 15) + +[node name="Corridor_17" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 5) + +[node name="Corridor_18" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, -5) + +[node name="Corridor_19" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, -15) + +[node name="Corridor_20" parent="DungeonGenerator3D/RoomsContainer" instance=ExtResource("6_aur0q")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, -15) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_fke5g") + +[node name="Player" parent="." instance=ExtResource("3_kk6ly")] +process_mode = 1 +transform = Transform3D(0.0871905, 0, -0.996192, 0, 1, 0, 0.996192, 0, 0.0871905, -71.4241, -4.70883, -0.527107) + +[node name="RigidBody3D" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -69.9907, -4.96505, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D"] +mesh = SubResource("PlaneMesh_atd5i") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.498463, 0) +shape = SubResource("BoxShape3D_s2hwi") + +[node name="MiniMap" parent="." instance=ExtResource("6_owlf4")] +unique_name_in_owner = true +visible = false + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 24.5244, 0) +layers = 3 +omni_range = 163.618 +omni_attenuation = -0.183 diff --git a/src/game/GameLogic.cs b/src/game/GameLogic.cs index d8d7a6b1..16d73aac 100644 --- a/src/game/GameLogic.cs +++ b/src/game/GameLogic.cs @@ -9,6 +9,6 @@ namespace GameJamDungeon [LogicBlock(typeof(State), Diagram = true)] public partial class GameLogic : LogicBlock, IGameLogic { - public override Transition GetInitialState() => To(); + public override Transition GetInitialState() => To(); } } diff --git a/src/game/IGameRepo.cs b/src/game/IGameRepo.cs index 7105cb87..bf22fd26 100644 --- a/src/game/IGameRepo.cs +++ b/src/game/IGameRepo.cs @@ -3,96 +3,95 @@ using Godot; using System; using System.Collections.Generic; -namespace GameJamDungeon +namespace GameJamDungeon; + +public interface IGameRepo : IDisposable { - public interface IGameRepo : IDisposable + event Action? Ended; + + IAutoProp> InventoryItems { get; } + + IAutoProp IsInventoryScreenOpened { get; } + + IAutoProp IsPaused { get; } + + void Pause(); + + void Resume(); + + IAutoProp PlayerGlobalPosition { get; } + + void SetPlayerGlobalPosition(Vector3 playerGlobalPosition); +} + +public class GameRepo : IGameRepo +{ + public event Action? Ended; + + private readonly AutoProp> _inventoryItems; + private readonly AutoProp _isInventoryScreenOpened; + + public IAutoProp> InventoryItems => _inventoryItems; + + public IAutoProp IsInventoryScreenOpened => _isInventoryScreenOpened; + + public IAutoProp PlayerGlobalPosition => _playerGlobalPosition; + private readonly AutoProp _playerGlobalPosition; + + public IAutoProp IsPaused => _isPaused; + private readonly AutoProp _isPaused; + + private bool _disposedValue; + + public GameRepo() { - event Action? Ended; - - IAutoProp> InventoryItems { get; } - - IAutoProp IsInventoryScreenOpened { get; } - - IAutoProp IsPaused { get; } - - void Pause(); - - void Resume(); - - IAutoProp PlayerGlobalPosition { get; } - - void SetPlayerGlobalPosition(Vector3 playerGlobalPosition); + _inventoryItems = new AutoProp>([]); + _isInventoryScreenOpened = new AutoProp(false); + _isPaused = new AutoProp(false); + _playerGlobalPosition = new AutoProp(Vector3.Zero); } - public class GameRepo : IGameRepo + public void Pause() { - public event Action? Ended; + _isPaused.OnNext(true); + GD.Print("Paused"); + } - private readonly AutoProp> _inventoryItems; - private readonly AutoProp _isInventoryScreenOpened; + public void Resume() + { + _isPaused.OnNext(false); + GD.Print("Resume"); + } - public IAutoProp> InventoryItems => _inventoryItems; + public void SetPlayerGlobalPosition(Vector3 playerGlobalPosition) => _playerGlobalPosition.OnNext(playerGlobalPosition); - public IAutoProp IsInventoryScreenOpened => _isInventoryScreenOpened; + public void OnGameEnded() + { + Pause(); + Ended?.Invoke(); + } - public IAutoProp PlayerGlobalPosition => _playerGlobalPosition; - private readonly AutoProp _playerGlobalPosition; - - public IAutoProp IsPaused => _isPaused; - private readonly AutoProp _isPaused; - - private bool _disposedValue; - - public GameRepo() + protected void Dispose(bool disposing) + { + if (!_disposedValue) { - _inventoryItems = new AutoProp>([]); - _isInventoryScreenOpened = new AutoProp(false); - _isPaused = new AutoProp(false); - _playerGlobalPosition = new AutoProp(Vector3.Zero); - } - - public void Pause() - { - _isPaused.OnNext(true); - GD.Print("Paused"); - } - - public void Resume() - { - _isPaused.OnNext(false); - GD.Print("Resume"); - } - - public void SetPlayerGlobalPosition(Vector3 playerGlobalPosition) => _playerGlobalPosition.OnNext(playerGlobalPosition); - - public void OnGameEnded() - { - Pause(); - Ended?.Invoke(); - } - - protected void Dispose(bool disposing) - { - if (!_disposedValue) + if (disposing) { - if (disposing) - { - _playerGlobalPosition.OnCompleted(); - _playerGlobalPosition.Dispose(); - _inventoryItems.OnCompleted(); - _inventoryItems.Dispose(); - _isInventoryScreenOpened.OnCompleted(); - _isInventoryScreenOpened.Dispose(); - } - - _disposedValue = true; + _playerGlobalPosition.OnCompleted(); + _playerGlobalPosition.Dispose(); + _inventoryItems.OnCompleted(); + _inventoryItems.Dispose(); + _isInventoryScreenOpened.OnCompleted(); + _isInventoryScreenOpened.Dispose(); } - } - public void Dispose() - { - Dispose(disposing: true); - GC.SuppressFinalize(this); + _disposedValue = true; } } + + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } } diff --git a/src/map/dungeon/corridor/Corridor.tscn b/src/map/dungeon/corridor/Corridor.tscn index 928f83ac..40cbeca0 100644 --- a/src/map/dungeon/corridor/Corridor.tscn +++ b/src/map/dungeon/corridor/Corridor.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 format=3 uid="uid://bn4gslp2gk8ds"] +[gd_scene load_steps=11 format=3 uid="uid://bn4gslp2gk8ds"] [ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_y0rqi"] [ext_resource type="Texture2D" uid="uid://n4ds85jp0aq0" path="res://src/map/dungeon/textures/map_ceiling.jpg" id="2_6scux"] @@ -15,20 +15,19 @@ albedo_texture = ExtResource("2_6scux") uv1_scale = Vector3(0.23, 0.23, 0.23) uv1_triplanar = true -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cquyy"] -albedo_texture = ExtResource("4_6qf87") - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_67t3u"] -albedo_texture = ExtResource("4_6qf87") - [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ej8w2"] albedo_texture = ExtResource("4_6qf87") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oy7nu"] albedo_texture = ExtResource("4_6qf87") +[sub_resource type="PlaneMesh" id="PlaneMesh_7myha"] +size = Vector2(10, 10) + [node name="Corridor" type="Node3D"] script = ExtResource("1_y0rqi") +min_count = 1 +max_count = 1 [node name="CSGBox3D" type="CSGBox3D" parent="."] use_collision = true @@ -40,21 +39,26 @@ operation = 2 size = Vector3(9, 9, 9) material = SubResource("StandardMaterial3D_18cgv") -[node name="DOOR?" parent="CSGBox3D" instance=ExtResource("2_vpnlr")] -transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -5, -2.58627, 0) -material = SubResource("StandardMaterial3D_cquyy") - -[node name="DOOR?3" parent="CSGBox3D" instance=ExtResource("2_vpnlr")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 5, -2.58627, 0) -material = SubResource("StandardMaterial3D_67t3u") - [node name="DOOR?4" parent="CSGBox3D" instance=ExtResource("2_vpnlr")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.58627, 5) material = SubResource("StandardMaterial3D_ej8w2") +[node name="DOOR?5" parent="CSGBox3D" instance=ExtResource("2_vpnlr")] +transform = Transform3D(-0.0899894, 0, 0.995943, 0, 1, 0, -0.995943, 0, -0.0899894, -4.7076, -2.586, 0) +material = SubResource("StandardMaterial3D_ej8w2") + +[node name="DOOR?6" parent="CSGBox3D" instance=ExtResource("2_vpnlr")] +transform = Transform3D(-0.0899894, 0, 0.995943, 0, 1, 0, -0.995943, 0, -0.0899894, 4.73741, -2.586, 0) +material = SubResource("StandardMaterial3D_ej8w2") + [node name="DOOR?2" parent="CSGBox3D" instance=ExtResource("2_vpnlr")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.58627, -5) material = SubResource("StandardMaterial3D_oy7nu") [node name="RemoveUnusedDoors" type="Node" parent="."] script = ExtResource("3_8i1ij") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.56974, 0) +layers = 2 +mesh = SubResource("PlaneMesh_7myha") diff --git a/src/map/dungeon/rooms/Room1.tscn b/src/map/dungeon/rooms/Room1.tscn index 413886c4..764091c6 100644 --- a/src/map/dungeon/rooms/Room1.tscn +++ b/src/map/dungeon/rooms/Room1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://dhpwwqow1ahrc"] +[gd_scene load_steps=7 format=3 uid="uid://dhpwwqow1ahrc"] [ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_0tfda"] [ext_resource type="Script" path="res://src/map/dungeon/rooms/DungeonRoom.cs" id="1_ti7ur"] @@ -10,8 +10,13 @@ albedo_texture = ExtResource("2_rw3uc") uv1_scale = Vector3(0.105, 0.105, 0.105) uv1_triplanar = true +[sub_resource type="PlaneMesh" id="PlaneMesh_luhnj"] +size = Vector2(10, 10) + [node name="DungeonRoom3D" type="Node3D"] script = ExtResource("1_0tfda") +min_count = 1 +max_count = 3 [node name="DungeonRoom" type="Node3D" parent="."] script = ExtResource("1_ti7ur") @@ -36,3 +41,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.58282, -4.73548) [node name="PlayerSpawn" type="Marker3D" parent="."] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.23461, 0) + +[node name="Minimap Texture" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.9805, 0) +layers = 2 +mesh = SubResource("PlaneMesh_luhnj") diff --git a/src/map/dungeon/rooms/Room2.tscn b/src/map/dungeon/rooms/Room2.tscn index 7d531b4f..c18d655c 100644 --- a/src/map/dungeon/rooms/Room2.tscn +++ b/src/map/dungeon/rooms/Room2.tscn @@ -1,6 +1,58 @@ -[gd_scene load_steps=2 format=3 uid="uid://baddk1soq2ske"] +[gd_scene load_steps=7 format=3 uid="uid://bbwgmqy3evhh2"] [ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_o02dd"] +[ext_resource type="Script" path="res://src/map/dungeon/rooms/DungeonRoom.cs" id="2_jrlll"] +[ext_resource type="PackedScene" uid="uid://ckaw6wjmi0fom" path="res://src/map/dungeon/door/Door.tscn" id="4_nh0nj"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b8kax"] +albedo_color = Color(0.0470588, 0, 1, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1h648"] +albedo_color = Color(0.0470588, 0, 1, 1) + +[sub_resource type="PlaneMesh" id="PlaneMesh_j8q3j"] +size = Vector2(50, 10) [node name="DungeonRoom3D" type="Node3D"] script = ExtResource("1_o02dd") +size_in_voxels = Vector3i(5, 1, 1) +min_count = 1 +max_count = 2 + +[node name="DungeonRoom" type="Node3D" parent="."] +script = ExtResource("2_jrlll") + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(50, 10, 10) +material = SubResource("StandardMaterial3D_b8kax") + +[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0493774, 0, 0) +operation = 2 +use_collision = true +size = Vector3(49, 9, 9) +material = SubResource("StandardMaterial3D_1h648") + +[node name="DOOR" parent="CSGBox3D" instance=ExtResource("4_nh0nj")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.54039, 4.74571) + +[node name="DOOR2" parent="CSGBox3D" instance=ExtResource("4_nh0nj")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.58282, -4.73548) + +[node name="PlayerSpawn" type="Marker3D" parent="."] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.23461, 0) + +[node name="ItemSpawnPoints" type="Node3D" parent="."] + +[node name="ItemSpawn1" type="Marker3D" parent="ItemSpawnPoints"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.3383, -4.48909, -2.92704) +gizmo_extents = 1.0 + +[node name="EnemySpawnPoints" type="Node3D" parent="."] + +[node name="Minimap Texture" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.50433, 0) +layers = 2 +mesh = SubResource("PlaneMesh_j8q3j") diff --git a/src/map/dungeon/textures/IMG_6565.JPEG b/src/map/dungeon/textures/IMG_6565.JPEG new file mode 100644 index 00000000..c1fb2fc4 Binary files /dev/null and b/src/map/dungeon/textures/IMG_6565.JPEG differ diff --git a/src/map/dungeon/textures/IMG_6565.JPEG.import b/src/map/dungeon/textures/IMG_6565.JPEG.import new file mode 100644 index 00000000..705df4ef --- /dev/null +++ b/src/map/dungeon/textures/IMG_6565.JPEG.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvql5ldgpyw63" +path.s3tc="res://.godot/imported/IMG_6565.JPEG-70110ae185d0d8955206d76c17acff50.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://src/map/dungeon/textures/IMG_6565.JPEG" +dest_files=["res://.godot/imported/IMG_6565.JPEG-70110ae185d0d8955206d76c17acff50.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 diff --git a/src/minimap/MiniMap.cs b/src/minimap/MiniMap.cs deleted file mode 100644 index 214c8646..00000000 --- a/src/minimap/MiniMap.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Godot; -using System; - -public partial class MiniMap : Control -{ -} diff --git a/src/minimap/Minimap.tscn b/src/minimap/Minimap.tscn new file mode 100644 index 00000000..3d3f1e0e --- /dev/null +++ b/src/minimap/Minimap.tscn @@ -0,0 +1,34 @@ +[gd_scene format=3 uid="uid://bwbofurcvf3yh"] + +[node name="Minimap" type="Control"] +process_mode = 3 +visibility_layer = 2 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="SubViewportContainer" type="SubViewportContainer" parent="."] +custom_minimum_size = Vector2(600, 600) +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 643.0 +offset_top = 265.0 +offset_right = -677.0 +offset_bottom = -215.0 + +[node name="SubViewport" type="SubViewport" parent="SubViewportContainer"] +transparent_bg = true +handle_input_locally = false +size = Vector2i(600, 600) +render_target_update_mode = 4 + +[node name="Minimap Camera" type="Camera3D" parent="SubViewportContainer/SubViewport"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -1.75903, 28.9504, 0) +cull_mask = 1048574 +fov = 120.0 +size = 20.0 diff --git a/src/minimap/textures/floor_minimap.png b/src/minimap/textures/floor_minimap.png new file mode 100644 index 00000000..dfe1a772 Binary files /dev/null and b/src/minimap/textures/floor_minimap.png differ diff --git a/src/minimap/textures/floor_minimap.png.import b/src/minimap/textures/floor_minimap.png.import new file mode 100644 index 00000000..b145361b --- /dev/null +++ b/src/minimap/textures/floor_minimap.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bup8egjin5afn" +path.s3tc="res://.godot/imported/floor_minimap.png-4fd86e7d3e861a95a2ca94eeca8e02e2.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://src/minimap/textures/floor_minimap.png" +dest_files=["res://.godot/imported/floor_minimap.png-4fd86e7d3e861a95a2ca94eeca8e02e2.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 diff --git a/src/player/Player.cs b/src/player/Player.cs index d9576817..8a214651 100644 --- a/src/player/Player.cs +++ b/src/player/Player.cs @@ -1,8 +1,9 @@ using Chickensoft.AutoInject; using Chickensoft.GodotNodeInterfaces; using Chickensoft.Introspection; +using Chickensoft.SaveFileBuilder; +using GameJamDungeon; using Godot; -using System; namespace GameJamDungeon { @@ -22,20 +23,26 @@ namespace GameJamDungeon PlayerLogic IProvide.Value() => PlayerLogic; - [Dependency] public IAppRepo AppRepo => this.DependOn(); - [Dependency] public IGameRepo GameRepo => this.DependOn(); + [Dependency] + public IAppRepo AppRepo => this.DependOn(); + + [Dependency] + public IGameRepo GameRepo => this.DependOn(); + + [Dependency] + public ISaveChunk GameChunk => this.DependOn>(); /// Rotation speed (quaternions?/sec). [Export(PropertyHint.Range, "0, 100, 0.1")] - public float RotationSpeed { get; set; } = 0.5f; + public float RotationSpeed { get; set; } = 12.0f; /// Player speed (meters/sec). [Export(PropertyHint.Range, "0, 100, 0.1")] - public float MoveSpeed { get; set; } = 2f; + public float MoveSpeed { get; set; } = 8f; /// Player speed (meters^2/sec). [Export(PropertyHint.Range, "0, 100, 0.1")] - public float Acceleration { get; set; } = 1f; + public float Acceleration { get; set; } = 4f; public PlayerLogic.Settings Settings { get; set; } = default!; @@ -45,9 +52,15 @@ namespace GameJamDungeon public PlayerLogic.IBinding PlayerBinding { get; set; } = default!; + [Node] + public IAnimationPlayer AnimationPlayer { get; set; } = default!; + + [Node] + public IAnimatedSprite2D SwordSlashAnimation { get; set; } = default!; + public void Initialize() { - + AnimationPlayer.AnimationFinished += OnAnimationFinished; } public void Setup() @@ -75,24 +88,24 @@ namespace GameJamDungeon { PlayerBinding = PlayerLogic.Bind(); + GameRepo.SetPlayerGlobalPosition(GlobalPosition); + PlayerBinding .Handle((in PlayerLogic.Output.MovementComputed output) => - { - Transform = Transform with { Basis = output.Rotation }; - Velocity = output.Velocity; - }) + { + Transform = Transform with { Basis = output.Rotation }; + Velocity = output.Velocity; + }) .Handle((in PlayerLogic.Output.Animations.Attack output) => { + AnimationPlayer.Play("attack"); }); this.Provide(); PlayerLogic.Start(); } - public void OnReady() - { - SetPhysicsProcess(true); - } + public void OnReady() => SetPhysicsProcess(true); public void OnPhysicsProcess(double delta) { @@ -119,12 +132,17 @@ namespace GameJamDungeon return input with { Y = 0f }; } + public void OnAnimationFinished(StringName animation) + { + GD.Print("Attack finished"); + PlayerLogic.Input(new PlayerLogic.Input.AttackAnimationFinished()); + } + public void OnExitTree() { PlayerLogic.Stop(); - AppRepo.Dispose(); - GameRepo.Dispose(); PlayerBinding.Dispose(); + AnimationPlayer.AnimationFinished -= OnAnimationFinished; } } } diff --git a/src/player/Player.tscn b/src/player/Player.tscn index 12fd470d..fc4e46e2 100644 --- a/src/player/Player.tscn +++ b/src/player/Player.tscn @@ -1,9 +1,111 @@ -[gd_scene load_steps=3 format=3 uid="uid://cfecvvav8kkp6"] +[gd_scene load_steps=15 format=3 uid="uid://cfecvvav8kkp6"] [ext_resource type="Script" path="res://src/player/Player.cs" id="1_xcol5"] +[ext_resource type="Texture2D" uid="uid://bokx3h8kfdo5i" path="res://src/player/slash_0000_Classic_30.png" id="2_la11l"] +[ext_resource type="Texture2D" uid="uid://byosr5gk51237" path="res://src/player/slash_0001_Classic_29.png" id="3_ux3f1"] +[ext_resource type="Texture2D" uid="uid://nh071o6ii03j" path="res://src/player/slash_0002_Classic_28.png" id="4_gqnq0"] +[ext_resource type="Texture2D" uid="uid://bodfblud4kea3" path="res://src/player/slash_0003_Classic_27.png" id="5_eebal"] +[ext_resource type="Texture2D" uid="uid://de55prolicl0u" path="res://src/player/slash_0004_Classic_26.png" id="6_ngag5"] +[ext_resource type="Texture2D" uid="uid://bp0msic3uk3kc" path="res://src/player/slash_0005_Layer-1.png" id="7_tp5uu"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_dw45s"] -height = 1.2 + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_dmans"] + +[sub_resource type="Animation" id="Animation_0jjwv"] +resource_name = "attack" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("SwordSlashAnimation:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0667, 0.1667, 0.2667, 0.366667, 0.433333, 0.5, 0.6333), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Area3D/Hitbox:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.1667, 0.3333), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [true, false, true] +} + +[sub_resource type="Animation" id="Animation_hcjph"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("SwordSlashAnimation:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Area3D/Hitbox:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_w8l8m"] +_data = { +"RESET": SubResource("Animation_hcjph"), +"attack": SubResource("Animation_0jjwv") +} + +[sub_resource type="SpriteFrames" id="SpriteFrames_ywvvo"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": null +}, { +"duration": 1.0, +"texture": ExtResource("2_la11l") +}, { +"duration": 1.0, +"texture": ExtResource("3_ux3f1") +}, { +"duration": 1.0, +"texture": ExtResource("4_gqnq0") +}, { +"duration": 1.0, +"texture": ExtResource("5_eebal") +}, { +"duration": 1.0, +"texture": ExtResource("6_ngag5") +}, { +"duration": 1.0, +"texture": ExtResource("7_tp5uu") +}, { +"duration": 1.0, +"texture": null +}], +"loop": false, +"name": &"attack", +"speed": 12.0 +}] + +[sub_resource type="BoxShape3D" id="BoxShape3D_wedu3"] [node name="Player" type="CharacterBody3D"] motion_mode = 1 @@ -14,11 +116,35 @@ RotationSpeed = 0.025 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.937567, 0) shape = SubResource("CapsuleShape3D_dw45s") +[node name="MeshInstance3D" type="MeshInstance3D" parent="CollisionShape3D"] +mesh = SubResource("CapsuleMesh_dmans") + [node name="Camera3D" type="Camera3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.19694, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46709, -0.511194) +cull_mask = 1048573 [node name="OmniLight3D" type="OmniLight3D" parent="."] omni_range = 73.156 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] unique_name_in_owner = true +libraries = { +"": SubResource("AnimationLibrary_w8l8m") +} + +[node name="SwordSlashAnimation" type="AnimatedSprite2D" parent="."] +unique_name_in_owner = true +position = Vector2(911, 546) +scale = Vector2(9.03192, 6.39623) +sprite_frames = SubResource("SpriteFrames_ywvvo") +animation = &"attack" + +[node name="Area3D" type="Area3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -1) +collision_layer = 16 +collision_mask = 16 + +[node name="Hitbox" type="CollisionShape3D" parent="Area3D"] +unique_name_in_owner = true +shape = SubResource("BoxShape3D_wedu3") +disabled = true diff --git a/src/player/PlayerData.cs b/src/player/PlayerData.cs index b920bff5..1c6e23de 100644 --- a/src/player/PlayerData.cs +++ b/src/player/PlayerData.cs @@ -1,6 +1,5 @@ using Chickensoft.Serialization; using Godot; -using System.Collections; using System.Collections.Generic; namespace GameJamDungeon diff --git a/src/player/animations/SwordSlash.tres b/src/player/animations/SwordSlash.tres new file mode 100644 index 00000000..2648ee88 --- /dev/null +++ b/src/player/animations/SwordSlash.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" load_steps=7 format=3 uid="uid://nxdb75oa71hj"] + +[ext_resource type="Texture2D" uid="uid://cd8gggy8mdm2e" path="res://src/vfx/Sword Slash/slash_0000_Classic_30.png" id="1_dmb5o"] +[ext_resource type="Texture2D" uid="uid://difp6a34ot1oq" path="res://src/vfx/Sword Slash/slash_0001_Classic_29.png" id="2_dme0j"] +[ext_resource type="Texture2D" uid="uid://brjqbpy3wsksb" path="res://src/vfx/Sword Slash/slash_0002_Classic_28.png" id="3_twn5o"] +[ext_resource type="Texture2D" uid="uid://brpnjc7aho55s" path="res://src/vfx/Sword Slash/slash_0003_Classic_27.png" id="4_3f3ea"] +[ext_resource type="Texture2D" uid="uid://mb7qoowmapaj" path="res://src/vfx/Sword Slash/slash_0004_Classic_26.png" id="5_fp65h"] +[ext_resource type="Texture2D" uid="uid://d2e5prh2tm73h" path="res://src/vfx/Sword Slash/slash_0005_Layer-1.png" id="6_6syma"] + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": null +}, { +"duration": 1.0, +"texture": ExtResource("1_dmb5o") +}, { +"duration": 1.0, +"texture": ExtResource("2_dme0j") +}, { +"duration": 1.0, +"texture": ExtResource("3_twn5o") +}, { +"duration": 1.0, +"texture": ExtResource("4_3f3ea") +}, { +"duration": 1.0, +"texture": ExtResource("5_fp65h") +}, { +"duration": 1.0, +"texture": ExtResource("6_6syma") +}, { +"duration": 1.0, +"texture": null +}], +"loop": false, +"name": &"slash", +"speed": 12.0 +}] diff --git a/src/player/animations/slash_0000_Classic_30.png b/src/player/animations/slash_0000_Classic_30.png new file mode 100644 index 00000000..c1b41a89 Binary files /dev/null and b/src/player/animations/slash_0000_Classic_30.png differ diff --git a/src/player/animations/slash_0000_Classic_30.png.import b/src/player/animations/slash_0000_Classic_30.png.import new file mode 100644 index 00000000..e0dfdc0e --- /dev/null +++ b/src/player/animations/slash_0000_Classic_30.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqpaiixbyo16v" +path="res://.godot/imported/slash_0000_Classic_30.png-2c428e005da5748673e1d7868aa6b18a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/animations/slash_0000_Classic_30.png" +dest_files=["res://.godot/imported/slash_0000_Classic_30.png-2c428e005da5748673e1d7868aa6b18a.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/src/player/animations/slash_0001_Classic_29.png b/src/player/animations/slash_0001_Classic_29.png new file mode 100644 index 00000000..b4a48bce Binary files /dev/null and b/src/player/animations/slash_0001_Classic_29.png differ diff --git a/src/player/animations/slash_0001_Classic_29.png.import b/src/player/animations/slash_0001_Classic_29.png.import new file mode 100644 index 00000000..1bdf978d --- /dev/null +++ b/src/player/animations/slash_0001_Classic_29.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://wm86fj4argv6" +path="res://.godot/imported/slash_0001_Classic_29.png-3673010723601f8b6d22db47032b50c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/animations/slash_0001_Classic_29.png" +dest_files=["res://.godot/imported/slash_0001_Classic_29.png-3673010723601f8b6d22db47032b50c1.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/src/player/animations/slash_0002_Classic_28.png b/src/player/animations/slash_0002_Classic_28.png new file mode 100644 index 00000000..ff65af50 Binary files /dev/null and b/src/player/animations/slash_0002_Classic_28.png differ diff --git a/src/player/animations/slash_0002_Classic_28.png.import b/src/player/animations/slash_0002_Classic_28.png.import new file mode 100644 index 00000000..63d6d68c --- /dev/null +++ b/src/player/animations/slash_0002_Classic_28.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://j4m8omoaui1x" +path="res://.godot/imported/slash_0002_Classic_28.png-597c35b28abcb81bd5ff794f73b0fdd0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/animations/slash_0002_Classic_28.png" +dest_files=["res://.godot/imported/slash_0002_Classic_28.png-597c35b28abcb81bd5ff794f73b0fdd0.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/src/player/animations/slash_0003_Classic_27.png b/src/player/animations/slash_0003_Classic_27.png new file mode 100644 index 00000000..7e8fe043 Binary files /dev/null and b/src/player/animations/slash_0003_Classic_27.png differ diff --git a/src/player/animations/slash_0003_Classic_27.png.import b/src/player/animations/slash_0003_Classic_27.png.import new file mode 100644 index 00000000..27c767ec --- /dev/null +++ b/src/player/animations/slash_0003_Classic_27.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://caqgpeg6yfy04" +path="res://.godot/imported/slash_0003_Classic_27.png-a5584650bbab5644c4f68a72c7102891.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/animations/slash_0003_Classic_27.png" +dest_files=["res://.godot/imported/slash_0003_Classic_27.png-a5584650bbab5644c4f68a72c7102891.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/src/player/animations/slash_0004_Classic_26.png b/src/player/animations/slash_0004_Classic_26.png new file mode 100644 index 00000000..266a0aa4 Binary files /dev/null and b/src/player/animations/slash_0004_Classic_26.png differ diff --git a/src/player/animations/slash_0004_Classic_26.png.import b/src/player/animations/slash_0004_Classic_26.png.import new file mode 100644 index 00000000..5f9fe25f --- /dev/null +++ b/src/player/animations/slash_0004_Classic_26.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnasdkwdao7br" +path="res://.godot/imported/slash_0004_Classic_26.png-edc418ced5f957bf9acd48ba10300783.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/animations/slash_0004_Classic_26.png" +dest_files=["res://.godot/imported/slash_0004_Classic_26.png-edc418ced5f957bf9acd48ba10300783.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/src/player/animations/slash_0005_Layer-1.png b/src/player/animations/slash_0005_Layer-1.png new file mode 100644 index 00000000..04c738d1 Binary files /dev/null and b/src/player/animations/slash_0005_Layer-1.png differ diff --git a/src/player/animations/slash_0005_Layer-1.png.import b/src/player/animations/slash_0005_Layer-1.png.import new file mode 100644 index 00000000..713f4b68 --- /dev/null +++ b/src/player/animations/slash_0005_Layer-1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpulted24fmhb" +path="res://.godot/imported/slash_0005_Layer-1.png-1d7636cfc5c4b430e4a056383d58afa9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/animations/slash_0005_Layer-1.png" +dest_files=["res://.godot/imported/slash_0005_Layer-1.png-1d7636cfc5c4b430e4a056383d58afa9.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/src/player/slash_0000_Classic_30.png b/src/player/slash_0000_Classic_30.png new file mode 100644 index 00000000..c1b41a89 Binary files /dev/null and b/src/player/slash_0000_Classic_30.png differ diff --git a/src/player/slash_0000_Classic_30.png.import b/src/player/slash_0000_Classic_30.png.import new file mode 100644 index 00000000..87ec6be8 --- /dev/null +++ b/src/player/slash_0000_Classic_30.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bokx3h8kfdo5i" +path="res://.godot/imported/slash_0000_Classic_30.png-29bf4d1f49823b71f227d5df12819eb4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/slash_0000_Classic_30.png" +dest_files=["res://.godot/imported/slash_0000_Classic_30.png-29bf4d1f49823b71f227d5df12819eb4.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/src/player/slash_0001_Classic_29.png b/src/player/slash_0001_Classic_29.png new file mode 100644 index 00000000..b4a48bce Binary files /dev/null and b/src/player/slash_0001_Classic_29.png differ diff --git a/src/player/slash_0001_Classic_29.png.import b/src/player/slash_0001_Classic_29.png.import new file mode 100644 index 00000000..91f4b4ad --- /dev/null +++ b/src/player/slash_0001_Classic_29.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://byosr5gk51237" +path="res://.godot/imported/slash_0001_Classic_29.png-8b6cb25db8f26faae8c794cbe9767b96.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/slash_0001_Classic_29.png" +dest_files=["res://.godot/imported/slash_0001_Classic_29.png-8b6cb25db8f26faae8c794cbe9767b96.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/src/player/slash_0002_Classic_28.png b/src/player/slash_0002_Classic_28.png new file mode 100644 index 00000000..ff65af50 Binary files /dev/null and b/src/player/slash_0002_Classic_28.png differ diff --git a/src/player/slash_0002_Classic_28.png.import b/src/player/slash_0002_Classic_28.png.import new file mode 100644 index 00000000..706cb166 --- /dev/null +++ b/src/player/slash_0002_Classic_28.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nh071o6ii03j" +path="res://.godot/imported/slash_0002_Classic_28.png-4e04a86162e517edc488454a4efd1ae0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/slash_0002_Classic_28.png" +dest_files=["res://.godot/imported/slash_0002_Classic_28.png-4e04a86162e517edc488454a4efd1ae0.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/src/player/slash_0003_Classic_27.png b/src/player/slash_0003_Classic_27.png new file mode 100644 index 00000000..7e8fe043 Binary files /dev/null and b/src/player/slash_0003_Classic_27.png differ diff --git a/src/player/slash_0003_Classic_27.png.import b/src/player/slash_0003_Classic_27.png.import new file mode 100644 index 00000000..44d07d64 --- /dev/null +++ b/src/player/slash_0003_Classic_27.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bodfblud4kea3" +path="res://.godot/imported/slash_0003_Classic_27.png-e6e9f96a812c6c1dc9c174b34a127296.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/slash_0003_Classic_27.png" +dest_files=["res://.godot/imported/slash_0003_Classic_27.png-e6e9f96a812c6c1dc9c174b34a127296.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/src/player/slash_0004_Classic_26.png b/src/player/slash_0004_Classic_26.png new file mode 100644 index 00000000..266a0aa4 Binary files /dev/null and b/src/player/slash_0004_Classic_26.png differ diff --git a/src/player/slash_0004_Classic_26.png.import b/src/player/slash_0004_Classic_26.png.import new file mode 100644 index 00000000..1a40be28 --- /dev/null +++ b/src/player/slash_0004_Classic_26.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://de55prolicl0u" +path="res://.godot/imported/slash_0004_Classic_26.png-2ac987800cb2865f139b46d65ad72e26.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/slash_0004_Classic_26.png" +dest_files=["res://.godot/imported/slash_0004_Classic_26.png-2ac987800cb2865f139b46d65ad72e26.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/src/player/slash_0005_Layer-1.png b/src/player/slash_0005_Layer-1.png new file mode 100644 index 00000000..04c738d1 Binary files /dev/null and b/src/player/slash_0005_Layer-1.png differ diff --git a/src/player/slash_0005_Layer-1.png.import b/src/player/slash_0005_Layer-1.png.import new file mode 100644 index 00000000..b2040953 --- /dev/null +++ b/src/player/slash_0005_Layer-1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bp0msic3uk3kc" +path="res://.godot/imported/slash_0005_Layer-1.png-e9a5a7f6279134cbc1e523399aaf9074.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/player/slash_0005_Layer-1.png" +dest_files=["res://.godot/imported/slash_0005_Layer-1.png-e9a5a7f6279134cbc1e523399aaf9074.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