First commit on my server, yey!

This commit is contained in:
Sebastian Bularca
2026-03-19 18:12:07 +01:00
parent 5139ec2cec
commit fedd1961a0
602 changed files with 101587 additions and 6 deletions

View File

@@ -0,0 +1,68 @@
#nullable enable
using System;
using Nox.Core;
using Jovian.SaveSystem;
using UnityEngine;
using UnityEngine.AddressableAssets;
using Object = UnityEngine.Object;
using PlayMode = Nox.Core.PlayMode;
namespace Nox.Game.UI {
public class PauseMenuView: IMenuView {
private readonly GameDataState gameDataState;
private readonly ISaveSystem saveSystem;
private readonly Func<NoxSavedDataSet?> captureSaveData;
private PauseMenuReferences? pauseMenu;
private PauseMenuPrefabs? pauseMenuPrefabs;
public PauseMenuView(GameDataState gameDataState, ISaveSystem saveSystem, Func<NoxSavedDataSet?> captureSaveData) {
this.gameDataState = gameDataState;
this.saveSystem = saveSystem;
this.captureSaveData = captureSaveData;
pauseMenu ??= Object.FindFirstObjectByType<PauseMenuReferences>();
if(pauseMenu) {
Hide();
}
}
public void Initialize() {
pauseMenuPrefabs ??= Addressables.LoadAssetAsync<PauseMenuPrefabs>("PauseMenuPrefabs").WaitForCompletion();
if(!pauseMenu) {
pauseMenu = Object.Instantiate(pauseMenuPrefabs.pauseMenuReferencesPrefab);
pauseMenu?.resumeButton.onClick.AddListener(() => {gameDataState.ChangePlayMode(gameDataState.PreviousPlayMode);});
pauseMenu?.exitButton.onClick.AddListener(() => {
OnSaveRequested();
gameDataState.ChangeGameState(GameState.MainMenu);
});
pauseMenu?.saveButton.onClick.AddListener(OnSaveRequested);
}
Show();
}
private void OnSaveRequested() {
if(string.IsNullOrEmpty(gameDataState.activeSessionId)) {
Debug.LogWarning("[PauseMenuView] No active session. Cannot save.");
return;
}
var data = captureSaveData();
if(data == null) {
Debug.LogWarning("[PauseMenuView] No save data to capture.");
return;
}
saveSystem.Save(gameDataState.activeSessionId, data, SaveSlotType.Auto);
}
public void Show() {
pauseMenu?.gameObject.SetActive(true);
}
public void Hide() {
pauseMenu?.gameObject.SetActive(false);
}
public void Tick() { }
}
}