Add unlock conditions for gallery
This commit is contained in:
@@ -93,6 +93,9 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
public event Action<string> InventoryEventNotification;
|
||||
|
||||
|
||||
public event Action<string> UnlockGalleryItem;
|
||||
|
||||
public Game()
|
||||
{
|
||||
_container = new SimpleInjector.Container();
|
||||
@@ -105,6 +108,7 @@ public partial class Game : Node3D, IGame
|
||||
RescuedItems = new RescuedItemDatabase(20);
|
||||
SarcoData = new SarcoData();
|
||||
NpcData = new NpcData() { SteleDiscovered = [] };
|
||||
StatData = new StatData();
|
||||
ItemDatabase = ItemDatabase.Instance;
|
||||
|
||||
GameChunk = new SaveChunk<GameData>(
|
||||
@@ -150,7 +154,7 @@ public partial class Game : Node3D, IGame
|
||||
}
|
||||
);
|
||||
|
||||
var saveFileManager = new MaSaveFileManager();
|
||||
var saveFileManager = new MaSaveFileManager($"{OS.GetUserDataDir()}/game.json");
|
||||
SaveFile = new SaveFile<GameData>(
|
||||
root: GameChunk,
|
||||
onSave: saveFileManager.Save,
|
||||
@@ -956,6 +960,49 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
public void NotifyInventory(string message) => InventoryEventNotification?.Invoke(message);
|
||||
|
||||
public async Task IncrementEnemyDefeatedCount(string enemyName)
|
||||
{
|
||||
if (StatData.EnemiesDefeated.ContainsKey(enemyName))
|
||||
StatData.EnemiesDefeated[enemyName]++;
|
||||
else
|
||||
StatData.EnemiesDefeated.TryAdd(enemyName, 1);
|
||||
|
||||
if (StatData.EnemiesDefeated[enemyName] == 50)
|
||||
UnlockGalleryItem.Invoke(enemyName + "Fifty");
|
||||
if (StatData.EnemiesDefeated[enemyName] == 100)
|
||||
UnlockGalleryItem.Invoke(enemyName + "Hundred");
|
||||
|
||||
await Save();
|
||||
}
|
||||
|
||||
public async Task IncrementSteleCount(int steleId)
|
||||
{
|
||||
if (!NpcData.SteleDiscovered.Contains(steleId))
|
||||
{
|
||||
NpcData.SteleDiscovered.Add(steleId);
|
||||
|
||||
if (NpcData.SteleDiscovered.Count == 10)
|
||||
UnlockGalleryItem.Invoke("StelesTen");
|
||||
|
||||
await Save();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task OnReachNormalEnd()
|
||||
{
|
||||
UnlockGalleryItem.Invoke("NormalEnd");
|
||||
}
|
||||
|
||||
public async Task OnReachBadEnd()
|
||||
{
|
||||
UnlockGalleryItem.Invoke("BadEnd");
|
||||
}
|
||||
|
||||
public async Task OnReachTrueEnd()
|
||||
{
|
||||
UnlockGalleryItem.Invoke("TrueEnd");
|
||||
}
|
||||
|
||||
private void OnQuit() => GameExitRequested?.Invoke();
|
||||
|
||||
private void GameOverMenuAppeared() => _map.ClearFloor();
|
||||
|
||||
@@ -42,6 +42,16 @@ public interface IGame : IProvide<IGame>, IProvide<IGameRepo>, IProvide<IPlayer>
|
||||
|
||||
public void NotifyInventory(string message);
|
||||
|
||||
public Task IncrementEnemyDefeatedCount(string enemyName);
|
||||
|
||||
public Task IncrementSteleCount(int steleId);
|
||||
|
||||
public Task OnReachNormalEnd();
|
||||
|
||||
public Task OnReachBadEnd();
|
||||
|
||||
public Task OnReachTrueEnd();
|
||||
|
||||
public ItemRescueMenu ItemRescueMenu { get; }
|
||||
|
||||
public QuestData QuestData { get; }
|
||||
@@ -57,4 +67,6 @@ public interface IGame : IProvide<IGame>, IProvide<IGameRepo>, IProvide<IPlayer>
|
||||
public event Action GameLoaded;
|
||||
|
||||
public event Action<string> InventoryEventNotification;
|
||||
|
||||
public event Action<string> UnlockGalleryItem;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user