Revamp map route stuff
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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; }
|
||||
|
||||
Reference in New Issue
Block a user