Revamp map route stuff

This commit is contained in:
2026-06-11 20:53:16 -07:00
parent fc598ab48f
commit 403b136c5c
34 changed files with 731 additions and 559 deletions
+13 -33
View File
@@ -185,12 +185,10 @@ public partial class Game : Node3D, IGame
PauseContainer.AddChild((Map)_map);
}
public async void OnResolved()
public void OnResolved()
{
LoadExistingGame();
await InitializeGame();
GameState.Set(GameRepo);
GameState.Set(_player);
GameState.Set(_map);
@@ -200,13 +198,11 @@ public partial class Game : Node3D, IGame
GameState.Start();
this.Provide();
InitializeGame();
InGameUI.UseTeleportPrompt.TeleportToNextFloor += UseTeleportPrompt_TeleportToNextFloor;
InGameUI.UseTeleportPrompt.CloseTeleportPrompt += UseTeleportPrompt_CloseTeleportPrompt;
LoadNextLevel.GoToNextFloor += FloorClearMenu_GoToNextFloor;
LoadNextLevel.Exit += FloorClearMenu_Exit;
LoadNextLevel.TransitionCompleted += FloorClearMenu_TransitionCompleted;
OnLoadLevelRequest += LoadLevel;
GameRepo.CloseInventoryEvent += ExitInventoryAction;
@@ -250,12 +246,11 @@ public partial class Game : Node3D, IGame
public void LoadExistingGame() => SaveFile.Load().ContinueWith((_) => CallDeferred(nameof(FinishedLoadingSaveFile)));
public async Task InitializeGame()
public void InitializeGame()
{
_player.ResetPlayerData();
_map.InitializeMapData();
_map.LoadFloor(_map.FloorRoute.First());
_effectService = new EffectService(this, _player, _map);
await _map.LoadFloor();
}
public async Task Save() => await SaveFile.Save();
@@ -424,7 +419,6 @@ public partial class Game : Node3D, IGame
})
.Handle((in GameState.Output.LoadNextFloor _) =>
{
EmitSignal(SignalName.OnLoadLevelRequest);
var breakableItems = _player.Inventory.Items.Where(x => x.ItemTag == ItemTag.BreaksOnFloorExit).ToList();
foreach (IEquipableItem breakableItem in breakableItems)
{
@@ -433,11 +427,9 @@ public partial class Game : Node3D, IGame
_player.Inventory.Remove(breakableItem);
}
Task.Run(() => Save());
LoadNextLevel.FadeOut();
})
.Handle((in GameState.Output.ReturnToOverworld _) =>
{
LoadNextLevel.FadeOut();
Task.Run(() => Save());
InitializeGame();
})
@@ -464,13 +456,6 @@ public partial class Game : Node3D, IGame
InGameUI.InventoryMenu.SetProcessInput(false);
}
private async void LoadLevel()
{
await _map.LoadFloor();
}
private void FloorClearMenu_GoToNextFloor() => GameState.Input(new GameState.Input.LoadNextFloor());
private void DropRestorative(Vector3 vector)
{
var restorativeScene = GD.Load<PackedScene>("res://src/items/restorative/Restorative.tscn");
@@ -506,11 +491,6 @@ public partial class Game : Node3D, IGame
private void PointUpFinished() => GameState.Input(new GameState.Input.UseTeleport());
private void FloorClearMenu_TransitionCompleted()
{
GameRepo.Resume();
}
private void IsPaused_Sync(bool isPaused) => GetTree().Paused = isPaused;
private void FinishedLoadingSaveFile() => EmitSignal(SignalName.SaveFileLoaded);
@@ -924,13 +904,13 @@ public partial class Game : Node3D, IGame
private void OnFloorLoadFinished()
{
LoadNextLevel.Hide();
GameLoaded?.Invoke();
_map.FadeIn();
if (GameOverMenu.Visible)
GameOverMenu.FadeOut();
GameRepo.Resume();
_player.Activate();
_map.ShowMap();
GameState.Input(new GameState.Input.LoadNextFloor());
Resume();
}
private void RustStatusChanged(bool rustStatus)
@@ -1001,9 +981,13 @@ public partial class Game : Node3D, IGame
UnlockGalleryItem.Invoke("TrueEnd");
}
public void Pause() => GameRepo.Pause();
public void Resume() => GameRepo.Resume();
private void OnQuit() => GameExitRequested?.Invoke();
private void GameOverMenuAppeared() => _map.ClearFloor();
private void GameOverMenuAppeared() => _map.EndCurrentGame();
private void OnResume() => GameState.Input(new GameState.Input.PauseButtonPressed());
@@ -1011,11 +995,7 @@ public partial class Game : Node3D, IGame
{
InGameUI.UseTeleportPrompt.TeleportToNextFloor -= UseTeleportPrompt_TeleportToNextFloor;
InGameUI.UseTeleportPrompt.CloseTeleportPrompt -= UseTeleportPrompt_CloseTeleportPrompt;
LoadNextLevel.GoToNextFloor -= FloorClearMenu_GoToNextFloor;
LoadNextLevel.Exit -= FloorClearMenu_Exit;
LoadNextLevel.TransitionCompleted -= FloorClearMenu_TransitionCompleted;
OnLoadLevelRequest -= LoadLevel;
GameRepo.CloseInventoryEvent -= ExitInventoryAction;
+4
View File
@@ -52,6 +52,10 @@ public interface IGame : IProvide<IGame>, IProvide<IGameRepo>, IProvide<IPlayer>
public Task OnReachTrueEnd();
public void Pause();
public void Resume();
public ItemRescueMenu ItemRescueMenu { get; }
public QuestData QuestData { get; }