forked from Shardstone/trail-into-darkness
added the charater creation view base functionality
This commit is contained in:
@@ -3,6 +3,7 @@ using Nox.Game;
|
||||
using Jovian.SaveSystem;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
using UnityEngine.ResourceManagement.AsyncOperations;
|
||||
using PlayMode = Nox.Core.PlayMode;
|
||||
|
||||
namespace Nox.UI {
|
||||
@@ -14,6 +15,10 @@ namespace Nox.UI {
|
||||
private readonly MenuGameStateData menuGameStateData;
|
||||
private readonly ISaveSystem saveSystem;
|
||||
private MainMenuReference mainMenuReference;
|
||||
private CharacterCreationReference characterCreationReference;
|
||||
private CharacterCreationView characterCreationView;
|
||||
private AsyncOperationHandle<GameObject> charCreationHandle;
|
||||
|
||||
public MainMenuView(MenuPrefabsContainer menuPrefabsContainer, MenuGameStateData menuGameStateData, ISaveSystem saveSystem) {
|
||||
this.menuPrefabsContainer = menuPrefabsContainer;
|
||||
this.menuGameStateData = menuGameStateData;
|
||||
@@ -25,7 +30,7 @@ namespace Nox.UI {
|
||||
}
|
||||
mainMenuReference.exitButton.onClick.AddListener(Application.Quit);
|
||||
mainMenuReference.optionsButton.onClick.AddListener(() => {/* options logic here */});
|
||||
mainMenuReference.newGameButton.onClick.AddListener(() => menuGameStateData.startGameRequests?.Invoke(PlayMode.Adventure));
|
||||
mainMenuReference.newGameButton.onClick.AddListener(InitializeCharacterCreation);
|
||||
|
||||
bool hasSave = saveSystem.HasAnySaves();
|
||||
mainMenuReference.continueButton.gameObject.SetActive(hasSave);
|
||||
@@ -33,8 +38,27 @@ namespace Nox.UI {
|
||||
mainMenuReference.continueButton.onClick.AddListener(() => menuGameStateData.continueGameRequest.Invoke());
|
||||
}
|
||||
}
|
||||
public void Tick() { }
|
||||
|
||||
public void InitializeCharacterCreation() {
|
||||
charCreationHandle = Addressables.InstantiateAsync(menuPrefabsContainer.characterCreationReference);
|
||||
charCreationHandle.Task.ContinueWith(t => {
|
||||
if(t.IsFaulted) {
|
||||
Debug.LogError(t.Exception);
|
||||
}
|
||||
characterCreationReference =t.Result.GetComponent<CharacterCreationReference>();
|
||||
characterCreationView = new CharacterCreationView(characterCreationReference, menuGameStateData);
|
||||
characterCreationView.Show();
|
||||
});
|
||||
}
|
||||
|
||||
public void Tick() {
|
||||
characterCreationView?.Tick();
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
characterCreationView?.Dispose();
|
||||
Object.Destroy(characterCreationReference.gameObject);
|
||||
charCreationHandle.Release();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user