Work on hooking the character system into the character creation

This commit is contained in:
Sebastian Bularca
2026-04-05 15:55:48 +02:00
parent 43dc5e68be
commit 4d83483034
18 changed files with 107 additions and 180 deletions

View File

@@ -21,7 +21,6 @@ namespace Nox.Core {
private readonly MenuGameStateData menuGameStateData;
private readonly BootstrapReferences bootstrapReferences;
private readonly ISaveSystem saveSystem;
private readonly PartyCreatorModel partyCreatorModel;
private readonly IGameLogStore gameLogStore;
private AdventureData adventureData;
private Action<PlayMode> onStartGameRequested;
@@ -34,14 +33,12 @@ namespace Nox.Core {
MenuGameStateData menuGameStateData,
BootstrapReferences bootstrapReferences,
ISaveSystem saveSystem,
PartyCreatorModel partyCreatorModel,
AdventureData adventureData,
IGameLogStore gameLogStore) {
this.gameDataState = gameDataState;
this.menuGameStateData = menuGameStateData;
this.bootstrapReferences = bootstrapReferences;
this.saveSystem = saveSystem;
this.partyCreatorModel = partyCreatorModel;
this.adventureData = adventureData;
this.gameLogStore = gameLogStore;
}
@@ -49,8 +46,6 @@ namespace Nox.Core {
public void EnterGameState() {
IsGameStateInitialized = false;
onStartGameRequested = mode => {
var party = partyCreatorModel.CreatePartyForNewRun(companionCount: 4);
gameDataState.ActiveParty = party;
var sessions = saveSystem.GetAllSessions();
gameDataState.activeSessionId = sessions.Count > 0
? sessions[0].sessionId
@@ -67,6 +62,7 @@ namespace Nox.Core {
gameDataState.ChangeGameState(GameState.GameMode);
gameDataState.ChangePlayMode(saveData.activePlayMode);
gameDataState.ActiveParty = saveData.activeParty;
};
menuGameStateData.startGameRequests += onStartGameRequested;
@@ -80,7 +76,15 @@ namespace Nox.Core {
await sceneHandle.Result.ActivateAsync();
var assetHandle = Addressables.LoadAssetAsync<MenuPrefabsContainer>(bootstrapReferences.menuPrefabsContainer);
await assetHandle.Task;
mainMenuView = new MainMenuView(assetHandle.Result, menuGameStateData, saveSystem);
var characterBaseSettings = Addressables.LoadAssetAsync<StarterCharacterSettings>("CharacterBaseSettings").WaitForCompletion();
var perKRegistry = Addressables.LoadAssetAsync<PerksRegistry>("PerksRegistry").WaitForCompletion();
var characterRegistry = Addressables.LoadAssetAsync<CharacterRegistry>("CharacterRegistry").WaitForCompletion();
var modifiersRegistry = Addressables.LoadAssetAsync<ModifiersRegistry>("ModifiersRegistry").WaitForCompletion();
var partySettings = Addressables.LoadAssetAsync<PartySettings>("DefaultPartySettings").WaitForCompletion();
var characterSystems = CharacterSystemsFactory.Create(partySettings, characterBaseSettings, perKRegistry, characterRegistry, modifiersRegistry);
mainMenuView = new MainMenuView(assetHandle.Result, menuGameStateData, saveSystem, gameDataState, partySettings, characterSystems);
mainMenuView.Initialize();
IsGameStateInitialized = true;
}