diff --git a/Globals/FunkEngineNameSpace.cs b/Globals/FunkEngineNameSpace.cs index f4626224..b2eb208f 100644 --- a/Globals/FunkEngineNameSpace.cs +++ b/Globals/FunkEngineNameSpace.cs @@ -38,10 +38,10 @@ public enum Timing public struct BattleConfig { - public MapRooms RoomType { get; private set; } - public MapGrid.Room CurRoom { get; private set; } - public SongData CurSong { get; set; } + public Stages RoomType; + public MapGrid.Room BattleRoom; public int TodoEnemyAndChart; + public SongData CurSong; } public enum BattleEffectTrigger @@ -55,16 +55,11 @@ public enum BattleEffectTrigger public enum Stages { Title, - Battle, - Quit, - Map, -} - -public enum MapRooms -{ Battle, Chest, Boss, + Quit, + Map, } public class MapGrid @@ -87,7 +82,7 @@ public Room(int idx, int x, int y) Y = y; } - public void SetType(MapRooms type) + public void SetType(Stages type) { Type = type; } @@ -103,7 +98,7 @@ public void AddChild(int newIdx) public int[] Children { get; private set; } = Array.Empty(); public int X { get; private set; } public int Y { get; private set; } - public MapRooms Type { get; private set; } + public Stages Type { get; private set; } } public void InitMapGrid(int width, int height, int paths) @@ -114,6 +109,7 @@ public void InitMapGrid(int width, int height, int paths) int startX = (width / 2); _rooms = _rooms.Append(new Room(_curIdx, startX, 0)).ToArray(); + _rooms[0].SetType(Stages.Battle); _map[startX, 0] = _curIdx++; for (int i = 0; i < paths; i++) @@ -136,11 +132,7 @@ private void GeneratePath_r(int x, int y, int width, int height) _rooms = _rooms.Append(new Room(_curIdx, nextX, y + 1)).ToArray(); _map[nextX, y + 1] = _curIdx; _rooms[_map[x, y]].AddChild(_curIdx++); - _rooms[^1].SetType(MapRooms.Battle); - if (y > 0 && y % 3 == 0) - { - _rooms[^1].SetType(MapRooms.Chest); - } + _rooms[^1].SetType(PickRoomType(x, y)); } else { @@ -152,6 +144,17 @@ private void GeneratePath_r(int x, int y, int width, int height) } } + private Stages PickRoomType(int x, int y) + { + if (y <= 2) + return Stages.Battle; + if (y % 3 == 0) + return Stages.Chest; + if (StageProducer.GlobalRng.Randf() < .1) + return Stages.Chest; + return Stages.Battle; + } + //Asserts that if there is a room at the same x, but y+1 they are connected private void CreateCommonChildren(int width, int height) { @@ -171,7 +174,7 @@ private void CreateCommonChildren(int width, int height) private void AddBossRoom(int width, int height) { _rooms = _rooms.Append(new Room(_curIdx, width / 2, height)).ToArray(); - _rooms[_curIdx].SetType(MapRooms.Boss); + _rooms[_curIdx].SetType(Stages.Boss); for (int i = 0; i < width; i++) //Attach all last rooms to a boss room { if (_map[i, height - 1] != 0) diff --git a/Globals/StageProducer.cs b/Globals/StageProducer.cs index 2167a8d9..d0403ae5 100644 --- a/Globals/StageProducer.cs +++ b/Globals/StageProducer.cs @@ -36,13 +36,17 @@ public void StartGame() _isInitialized = true; } + public static void ChangeCurRoom(MapGrid.Room room) + { + CurRoom = room; + } + public void TransitionFromRoom(int nextRoomIdx) { - //CurRoom = Map.GetRooms()[nextRoomIdx]; - TransitionStage(Stages.Battle); + TransitionStage(Map.GetRooms()[nextRoomIdx].Type, nextRoomIdx); } - public void TransitionStage(Stages nextStage) + public void TransitionStage(Stages nextStage, int nextRoomIdx = -1) { GD.Print(GetTree().CurrentScene); switch (nextStage) @@ -52,9 +56,13 @@ public void TransitionStage(Stages nextStage) GetTree().ChangeSceneToFile("res://scenes/SceneTransitions/TitleScreen.tscn"); break; case Stages.Battle: - Config = new BattleConfig() { }; + Config = MakeConfig(nextStage, nextRoomIdx); GetTree().ChangeSceneToFile("res://scenes/BattleDirector/test_battle_scene.tscn"); break; + case Stages.Chest: + Config = MakeConfig(nextStage, nextRoomIdx); + GetTree().ChangeSceneToFile("res://scenes/ChestScene/ChestScene.tscn"); + break; case Stages.Map: GetTree().ChangeSceneToFile("res://scenes/Maps/cartographer.tscn"); if (!_isInitialized) @@ -73,4 +81,22 @@ public void TransitionStage(Stages nextStage) _curStage = nextStage; } + + private BattleConfig MakeConfig(Stages nextRoom, int nextRoomIdx) + { + BattleConfig result = new BattleConfig(); + result.BattleRoom = Map.GetRooms()[nextRoomIdx]; + result.RoomType = nextRoom; + if (nextRoom is Stages.Battle or Stages.Boss) + { + result.CurSong = new SongData + { + Bpm = 120, + SongLength = -1, + NumLoops = 5, + }; + } + + return result; + } } diff --git a/Globals/TimeKeeper.cs b/Globals/TimeKeeper.cs index 7f09ddff..6db364ef 100644 --- a/Globals/TimeKeeper.cs +++ b/Globals/TimeKeeper.cs @@ -7,4 +7,9 @@ public partial class TimeKeeper : Node public static float ChartLength; public static float LoopLength; public static float Bpm; + + public static double PosMod(double i, double mod) + { + return (i % mod + mod) % mod; + } } diff --git a/scenes/BattleDirector/assets/BattleFrame1.png b/scenes/BattleDirector/assets/BattleFrame1.png index b02052ad..223cc97d 100644 Binary files a/scenes/BattleDirector/assets/BattleFrame1.png and b/scenes/BattleDirector/assets/BattleFrame1.png differ diff --git a/scenes/BattleDirector/scripts/BattleDirector.cs b/scenes/BattleDirector/scripts/BattleDirector.cs index b1dc9afa..bde2fff5 100644 --- a/scenes/BattleDirector/scripts/BattleDirector.cs +++ b/scenes/BattleDirector/scripts/BattleDirector.cs @@ -32,8 +32,6 @@ public partial class BattleDirector : Node2D private SongData _curSong; - private bool _battleEnd; - #endregion #region Note Handling @@ -63,12 +61,11 @@ public PuppetTemplate GetTarget(Note note) public override void _Ready() { //TODO: Should come from transition into battle - _curSong = new SongData + _curSong = StageProducer.Config.CurSong; + if (_curSong.SongLength <= 0) { - Bpm = 120, - SongLength = Audio.Stream.GetLength(), - NumLoops = 5, - }; + _curSong.SongLength = Audio.Stream.GetLength(); + } TimeKeeper.Bpm = _curSong.Bpm; Player = GD.Load("res://scenes/Puppets/PlayerPuppet.tscn") @@ -119,12 +116,16 @@ private void Begin() Audio.Play(); } + private void EndBattle() + { + StageProducer.ChangeCurRoom(StageProducer.Config.BattleRoom); + GetNode("/root/StageProducer").TransitionStage(Stages.Map); + } + public override void _Process(double delta) { TimeKeeper.CurrentTime = Audio.GetPlaybackPosition(); CD.CheckMiss(); - if (_battleEnd) - GetNode("/root/StageProducer").TransitionStage(Stages.Map); } #endregion @@ -137,24 +138,9 @@ public override void _UnhandledInput(InputEvent @event) { if (eventKey.Keycode == Key.Key0) { - //DebugKillEnemy(); + DebugKillEnemy(); } } - - if (@event.IsActionPressed("Pause")) - { - var pauseMenu = GD.Load("res://scenes/UI/Pause.tscn"); - GetNode("UILayer").AddChild(pauseMenu.Instantiate()); - GetTree().Paused = true; - } - if (@event.IsActionPressed("Inventory")) - { - var invenMenu = GD.Load("res://scenes/UI/inventory.tscn") - .Instantiate(); - GetNode("UILayer").AddChild(invenMenu); - invenMenu.Display(Player.Stats); - GetTree().Paused = true; - } } private void OnNotePressed(ArrowType type) @@ -213,6 +199,7 @@ private void CheckBattleStatus(PuppetTemplate puppet) if (puppet == Player) { GD.Print("Player is Dead"); + Audio.StreamPaused = true; GetNode("/root/StageProducer").TransitionStage(Stages.Title); return; } @@ -220,19 +207,15 @@ private void CheckBattleStatus(PuppetTemplate puppet) //will have to adjust this to account for when we have multiple enemies at once if (puppet == Enemy) { + Audio.StreamPaused = true; GD.Print("Enemy is dead"); ShowRewardSelection(3); - _battleEnd = true; } } private void ShowRewardSelection(int amount) { - var rewardUI = GD.Load("res://scenes/UI/RewardSelectionUI.tscn") - .Instantiate(); - AddChild(rewardUI); - rewardUI.Initialize(Player.Stats, amount); - GetTree().Paused = true; + RewardSelect.CreateSelection(this, Player.Stats, amount).Selected += EndBattle; } #endregion diff --git a/scenes/BattleDirector/test_battle_scene.tscn b/scenes/BattleDirector/test_battle_scene.tscn index 90172f6a..e0b58697 100644 --- a/scenes/BattleDirector/test_battle_scene.tscn +++ b/scenes/BattleDirector/test_battle_scene.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=10 format=3 uid="uid://b0mrgr7h0ty1y"] +[gd_scene load_steps=11 format=3 uid="uid://b0mrgr7h0ty1y"] [ext_resource type="Script" path="res://scenes/BattleDirector/scripts/BattleDirector.cs" id="1_cwqqr"] [ext_resource type="PackedScene" uid="uid://dfevfib11kou1" path="res://scenes/ChartViewport/ChartViewport.tscn" id="2_cupb3"] [ext_resource type="Script" path="res://scenes/BattleDirector/scripts/Conductor.cs" id="2_pcp76"] +[ext_resource type="Script" path="res://scenes/UI/scripts/MenuModule.cs" id="3_8hff6"] [ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://scenes/BattleDirector/assets/bgupdate.png" id="4_13o87"] [ext_resource type="Texture2D" uid="uid://dbjotl0v1ymia" path="res://scenes/BattleDirector/assets/BattleFrame1.png" id="6_0ak0g"] [ext_resource type="PackedScene" uid="uid://duhiilcv4tat3" path="res://scenes/BattleDirector/NotePlacementBar.tscn" id="7_3ko4g"] @@ -30,6 +31,7 @@ metadata/_edit_lock_ = true stream = ExtResource("8_caqms") [node name="UILayer" type="CanvasLayer" parent="."] +script = ExtResource("3_8hff6") [node name="Conductor" type="Node" parent="." node_paths=PackedStringArray("CM")] script = ExtResource("2_pcp76") diff --git a/scenes/ChartViewport/ChartManager.cs b/scenes/ChartViewport/ChartManager.cs index f8407e28..9b0baa0e 100644 --- a/scenes/ChartViewport/ChartManager.cs +++ b/scenes/ChartViewport/ChartManager.cs @@ -25,7 +25,8 @@ public partial class ChartManager : SubViewportContainer public delegate void NoteReleasedEventHandler(ArrowType arrowType); //Arbitrary vars, play with these - private double ChartLength = 5000; //Might move this to be song specific? + //Might move this to be song specific? For now, should never go below ~2000, else visual break because there isn't enough room to loop. + private double ChartLength = 5000; private double _loopLen; //secs public int BeatsPerLoop; diff --git a/scenes/ChartViewport/ChartViewport.tscn b/scenes/ChartViewport/ChartViewport.tscn index 0b14f4bf..8cfc9b5d 100644 --- a/scenes/ChartViewport/ChartViewport.tscn +++ b/scenes/ChartViewport/ChartViewport.tscn @@ -1,6 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://dfevfib11kou1"] +[gd_scene load_steps=7 format=3 uid="uid://dfevfib11kou1"] [ext_resource type="Script" path="res://scenes/ChartViewport/ChartManager.cs" id="1_ruh2l"] +[ext_resource type="Texture2D" uid="uid://cp78odda2doab" path="res://scenes/ChartViewport/LoopMarker.png" id="2_q5cjc"] +[ext_resource type="Script" path="res://scenes/ChartViewport/Loopable.cs" id="3_5u57h"] [ext_resource type="PackedScene" uid="uid://bn8txx53xlguw" path="res://scenes/NoteManager/note_manager.tscn" id="4_fd5fw"] [ext_resource type="Shader" path="res://scenes/ChartViewport/StarryNight.gdshader" id="5_kqrxg"] @@ -27,11 +29,6 @@ render_target_update_mode = 4 position = Vector2(-50, 0) anchor_mode = 0 -[node name="ChartLoopables" type="CanvasGroup" parent="SubViewport"] -unique_name_in_owner = true - -[node name="ArrowGroup" type="Node" parent="SubViewport/ChartLoopables"] - [node name="StarShader" type="ColorRect" parent="SubViewport"] material = SubResource("ShaderMaterial_5uw0y") offset_left = -60.0 @@ -40,4 +37,15 @@ offset_bottom = 177.0 scale = Vector2(2.18, 2.18) color = Color(0, 0, 0, 1) +[node name="ChartLoopables" type="CanvasGroup" parent="SubViewport"] +unique_name_in_owner = true + +[node name="ArrowGroup" type="Node" parent="SubViewport/ChartLoopables"] + +[node name="LoopMarker" type="Sprite2D" parent="SubViewport/ChartLoopables"] +position = Vector2(0, 90) +texture = ExtResource("2_q5cjc") +script = ExtResource("3_5u57h") +LoopOffset = 0.0 + [node name="noteManager" parent="SubViewport" instance=ExtResource("4_fd5fw")] diff --git a/scenes/ChartViewport/LoopMarker.png b/scenes/ChartViewport/LoopMarker.png new file mode 100644 index 00000000..0879972d Binary files /dev/null and b/scenes/ChartViewport/LoopMarker.png differ diff --git a/scenes/ChartViewport/LoopMarker.png.import b/scenes/ChartViewport/LoopMarker.png.import new file mode 100644 index 00000000..dd4e29e8 --- /dev/null +++ b/scenes/ChartViewport/LoopMarker.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cp78odda2doab" +path="res://.godot/imported/LoopMarker.png-01682285489df860e67dba1278ff087a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/ChartViewport/LoopMarker.png" +dest_files=["res://.godot/imported/LoopMarker.png-01682285489df860e67dba1278ff087a.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/scenes/ChartViewport/Loopable.cs b/scenes/ChartViewport/Loopable.cs index 45e3487e..70f38e33 100644 --- a/scenes/ChartViewport/Loopable.cs +++ b/scenes/ChartViewport/Loopable.cs @@ -5,22 +5,24 @@ * @class Loopable * @brief A general class fo textures on the chart which should have a position at which point they loop. WIP */ -public partial class Loopable : TextureRect +public partial class Loopable : Sprite2D { [Export] - public float Bounds = 700f; //px Pos to loop or do something at. + public float LoopOffset = 700f; //px Pos to loop or do something at. // Called every frame. 'delta' is the elapsed time since the previous frame. public override void _Process(double delta) { Vector2 newPos = Position; + float interval = TimeKeeper.ChartLength; + double relativePosition = + TimeKeeper.CurrentTime / TimeKeeper.LoopLength * TimeKeeper.ChartLength; //Loop position over the course of time across a loop newPos.X = - (float)( - (-TimeKeeper.CurrentTime / TimeKeeper.LoopLength * TimeKeeper.ChartLength) - % TimeKeeper.ChartLength - / 2 - ) + Bounds; - Position = newPos; + (float)( //Yes I know. https://www.desmos.com/calculator/fkmoqi50ee + (TimeKeeper.PosMod(-relativePosition - interval / 2, interval) - interval / 2) / 2 + ) + LoopOffset; + if (!float.IsNaN(newPos.X)) + Position = newPos; } } diff --git a/scenes/ChestScene/ChestScene.cs b/scenes/ChestScene/ChestScene.cs new file mode 100644 index 00000000..4688d79f --- /dev/null +++ b/scenes/ChestScene/ChestScene.cs @@ -0,0 +1,40 @@ +using System; +using FunkEngine; +using Godot; + +public partial class ChestScene : Node2D +{ + public PlayerPuppet Player; + + [Export] + public Button ChestButton; + + public override void _Ready() + { + Player = GD.Load("res://scenes/Puppets/PlayerPuppet.tscn") + .Instantiate(); + AddChild(Player); + + ChestButton.Pressed += GetLoot; + } + + public override void _Process(double delta) + { + if (!ChestButton.Disabled) + { + ChestButton.GrabFocus(); + } + } + + private void GetLoot() + { + ChestButton.Disabled = true; + RewardSelect.CreateSelection(this, Player.Stats, 3).Selected += EndBattle; + } + + private void EndBattle() + { + StageProducer.ChangeCurRoom(StageProducer.Config.BattleRoom); + GetNode("/root/StageProducer").TransitionStage(Stages.Map); + } +} diff --git a/scenes/ChestScene/ChestScene.tscn b/scenes/ChestScene/ChestScene.tscn new file mode 100644 index 00000000..ccce24e2 --- /dev/null +++ b/scenes/ChestScene/ChestScene.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=7 format=3 uid="uid://c4vmb783d3v03"] + +[ext_resource type="Script" path="res://scenes/ChestScene/ChestScene.cs" id="1_ardd2"] +[ext_resource type="AudioStream" uid="uid://cv6lqjj6lu36h" path="res://Audio/335571__magntron__gamemusic_120bpm.mp3" id="2_ogp8i"] +[ext_resource type="Script" path="res://scenes/UI/scripts/MenuModule.cs" id="3_5uvci"] +[ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://scenes/BattleDirector/assets/bgupdate.png" id="6_37nar"] +[ext_resource type="Texture2D" uid="uid://d0ywqw1j1k71v" path="res://scenes/ChestScene/assets/Chest.png" id="6_58hf4"] +[ext_resource type="Texture2D" uid="uid://dbjotl0v1ymia" path="res://scenes/BattleDirector/assets/BattleFrame1.png" id="7_kkck7"] + +[node name="ChestScene" type="Node2D" node_paths=PackedStringArray("ChestButton")] +process_mode = 1 +script = ExtResource("1_ardd2") +ChestButton = NodePath("ChestButton") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_ogp8i") + +[node name="UILayer" type="CanvasLayer" parent="."] +script = ExtResource("3_5uvci") + +[node name="BackGround" type="TextureRect" parent="."] +z_index = -1 +offset_right = 640.0 +offset_bottom = 178.0 +texture = ExtResource("6_37nar") + +[node name="BattleFrame" type="TextureRect" parent="."] +z_index = 1 +offset_top = 178.0 +offset_right = 640.0 +offset_bottom = 360.0 +texture = ExtResource("7_kkck7") + +[node name="ChestButton" type="Button" parent="."] +offset_left = 375.0 +offset_top = 126.0 +offset_right = 431.0 +offset_bottom = 166.0 +icon = ExtResource("6_58hf4") diff --git a/scenes/ChestScene/assets/Chest.png b/scenes/ChestScene/assets/Chest.png new file mode 100644 index 00000000..2763b052 Binary files /dev/null and b/scenes/ChestScene/assets/Chest.png differ diff --git a/scenes/ChestScene/assets/Chest.png.import b/scenes/ChestScene/assets/Chest.png.import new file mode 100644 index 00000000..2f5a70d2 --- /dev/null +++ b/scenes/ChestScene/assets/Chest.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0ywqw1j1k71v" +path="res://.godot/imported/Chest.png-fb3cdf8f34ea60a7ae2cb63e4d6ad62a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/ChestScene/assets/Chest.png" +dest_files=["res://.godot/imported/Chest.png-fb3cdf8f34ea60a7ae2cb63e4d6ad62a.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/scenes/Maps/assets/Player.png b/scenes/Maps/assets/Player.png new file mode 100644 index 00000000..ba949b59 Binary files /dev/null and b/scenes/Maps/assets/Player.png differ diff --git a/scenes/Maps/assets/Player.png.import b/scenes/Maps/assets/Player.png.import new file mode 100644 index 00000000..f61770d4 --- /dev/null +++ b/scenes/Maps/assets/Player.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmc7gcplqnebx" +path="res://.godot/imported/Player.png-7fca1835a2d8df851a542a69dff404ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/Maps/assets/Player.png" +dest_files=["res://.godot/imported/Player.png-7fca1835a2d8df851a542a69dff404ad.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/scenes/Maps/cartographer.tscn b/scenes/Maps/cartographer.tscn index 8c948541..3fe2121b 100644 --- a/scenes/Maps/cartographer.tscn +++ b/scenes/Maps/cartographer.tscn @@ -1,13 +1,24 @@ -[gd_scene load_steps=3 format=3 uid="uid://cydmo2lbnj1de"] +[gd_scene load_steps=5 format=3 uid="uid://cydmo2lbnj1de"] [ext_resource type="Script" path="res://scenes/Maps/scripts/Cartographer.cs" id="1_u4q3n"] [ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://scenes/BattleDirector/assets/bgupdate.png" id="2_5g6at"] +[ext_resource type="Script" path="res://scenes/UI/scripts/MenuModule.cs" id="2_cl7v0"] +[ext_resource type="Texture2D" uid="uid://cmc7gcplqnebx" path="res://scenes/Maps/assets/Player.png" id="3_qiprp"] -[node name="Cartographer" type="Node2D"] +[node name="Cartographer" type="Node2D" node_paths=PackedStringArray("PlayerSprite")] +process_mode = 1 script = ExtResource("1_u4q3n") +PlayerSprite = NodePath("Player") + +[node name="UI" type="CanvasLayer" parent="."] +script = ExtResource("2_cl7v0") [node name="BG" type="Sprite2D" parent="."] modulate = Color(0.462, 0.462, 0.66, 1) position = Vector2(870, 219) scale = Vector2(2.75702, 2.75702) texture = ExtResource("2_5g6at") + +[node name="Player" type="Sprite2D" parent="."] +z_index = 2 +texture = ExtResource("3_qiprp") diff --git a/scenes/Maps/scripts/Cartographer.cs b/scenes/Maps/scripts/Cartographer.cs index 5a9e20d9..473de0d5 100644 --- a/scenes/Maps/scripts/Cartographer.cs +++ b/scenes/Maps/scripts/Cartographer.cs @@ -5,11 +5,32 @@ public partial class Cartographer : Node2D { - private Button[] validButtons = Array.Empty