first commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using OTGIntegrated.Abilities;
|
||||
using OTGIntegrated.Items;
|
||||
using OTGIntegrated.Quests;
|
||||
using OTGIntegrated.Talents;
|
||||
using OTGIntegrated.Weapons;
|
||||
|
||||
namespace OTGIntegrated.Core
|
||||
{
|
||||
public static class GameEvents
|
||||
{
|
||||
public static event Action<ItemData, int> OnItemAdded;
|
||||
public static event Action<ItemData, int> OnItemRemoved;
|
||||
public static event Action<string> OnEnemyKilled;
|
||||
public static event Action<QuestData> OnQuestStarted;
|
||||
public static event Action<QuestData> OnQuestProgressChanged;
|
||||
public static event Action<QuestData> OnQuestReadyToComplete;
|
||||
public static event Action<QuestData> OnQuestCompleted;
|
||||
public static event Action<int> OnExperienceGained;
|
||||
public static event Action<int> OnLevelUp;
|
||||
public static event Action<int> OnTalentPointChanged;
|
||||
public static event Action<TalentData> OnTalentLearned;
|
||||
public static event Action<AbilityData> OnAbilityUsed;
|
||||
public static event Action<WeaponData> OnWeaponChanged;
|
||||
public static event Action OnStatsChanged;
|
||||
public static event Action<string> OnNotificationRequested;
|
||||
|
||||
public static void RaiseItemAdded(ItemData item, int amount) => OnItemAdded?.Invoke(item, amount);
|
||||
public static void RaiseItemRemoved(ItemData item, int amount) => OnItemRemoved?.Invoke(item, amount);
|
||||
public static void RaiseEnemyKilled(string enemyId) => OnEnemyKilled?.Invoke(enemyId);
|
||||
public static void RaiseQuestStarted(QuestData quest) => OnQuestStarted?.Invoke(quest);
|
||||
public static void RaiseQuestProgressChanged(QuestData quest) => OnQuestProgressChanged?.Invoke(quest);
|
||||
public static void RaiseQuestReadyToComplete(QuestData quest) => OnQuestReadyToComplete?.Invoke(quest);
|
||||
public static void RaiseQuestCompleted(QuestData quest) => OnQuestCompleted?.Invoke(quest);
|
||||
public static void RaiseExperienceGained(int amount) => OnExperienceGained?.Invoke(amount);
|
||||
public static void RaiseLevelUp(int newLevel) => OnLevelUp?.Invoke(newLevel);
|
||||
public static void RaiseTalentPointChanged(int points) => OnTalentPointChanged?.Invoke(points);
|
||||
public static void RaiseTalentLearned(TalentData talent) => OnTalentLearned?.Invoke(talent);
|
||||
public static void RaiseAbilityUsed(AbilityData ability) => OnAbilityUsed?.Invoke(ability);
|
||||
public static void RaiseWeaponChanged(WeaponData weapon) => OnWeaponChanged?.Invoke(weapon);
|
||||
public static void RaiseStatsChanged() => OnStatsChanged?.Invoke();
|
||||
public static void RaiseNotification(string message) => OnNotificationRequested?.Invoke(message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c92f8d4902c2f63bbb7a3c47c875a94b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,114 @@
|
||||
using OTGIntegrated.Abilities;
|
||||
using OTGIntegrated.Crafting;
|
||||
using OTGIntegrated.Dialogue;
|
||||
using OTGIntegrated.Inventory;
|
||||
using OTGIntegrated.Player;
|
||||
using OTGIntegrated.Quests;
|
||||
using OTGIntegrated.Save;
|
||||
using OTGIntegrated.Stats;
|
||||
using OTGIntegrated.Talents;
|
||||
using OTGIntegrated.UI;
|
||||
using OTGIntegrated.Weapons;
|
||||
using UnityEngine;
|
||||
|
||||
namespace OTGIntegrated.Core
|
||||
{
|
||||
public sealed class GameManager : MonoBehaviour
|
||||
{
|
||||
public static GameManager Instance { get; private set; }
|
||||
|
||||
[Header("Player")]
|
||||
public PlayerController playerController;
|
||||
public PlayerStats playerStats;
|
||||
public OTGIntegrated.Inventory.Inventory inventory;
|
||||
public LevelSystem levelSystem;
|
||||
public WeaponManager weaponManager;
|
||||
public AbilityManager abilityManager;
|
||||
public TalentManager talentManager;
|
||||
|
||||
[Header("World Systems")]
|
||||
public QuestManager questManager;
|
||||
public DialogueManager dialogueManager;
|
||||
public CraftingSystem craftingSystem;
|
||||
|
||||
[Header("UI / Save")]
|
||||
public UIManager uiManager;
|
||||
public SaveSystem saveSystem;
|
||||
|
||||
private bool initialized;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (Instance != null && Instance != this)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
|
||||
Instance = this;
|
||||
ResolveMissingReferences();
|
||||
InitializeSystems();
|
||||
}
|
||||
|
||||
public void ResolveMissingReferences()
|
||||
{
|
||||
if (playerController == null) playerController = FindObjectOfType<PlayerController>();
|
||||
if (playerStats == null) playerStats = FindObjectOfType<PlayerStats>();
|
||||
if (inventory == null) inventory = FindObjectOfType<OTGIntegrated.Inventory.Inventory>();
|
||||
if (levelSystem == null) levelSystem = FindObjectOfType<LevelSystem>();
|
||||
if (weaponManager == null) weaponManager = FindObjectOfType<WeaponManager>();
|
||||
if (abilityManager == null) abilityManager = FindObjectOfType<AbilityManager>();
|
||||
if (talentManager == null) talentManager = FindObjectOfType<TalentManager>();
|
||||
if (questManager == null) questManager = FindObjectOfType<QuestManager>();
|
||||
if (dialogueManager == null) dialogueManager = FindObjectOfType<DialogueManager>();
|
||||
if (craftingSystem == null) craftingSystem = FindObjectOfType<CraftingSystem>();
|
||||
if (uiManager == null) uiManager = FindObjectOfType<UIManager>();
|
||||
if (saveSystem == null) saveSystem = FindObjectOfType<SaveSystem>();
|
||||
}
|
||||
|
||||
public void InitializeSystems()
|
||||
{
|
||||
if (initialized)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (playerController != null) playerController.Initialize(playerStats);
|
||||
if (levelSystem != null) levelSystem.Initialize(talentManager);
|
||||
if (weaponManager != null) weaponManager.Initialize(playerStats, inventory);
|
||||
if (abilityManager != null) abilityManager.Initialize(playerStats);
|
||||
if (talentManager != null) talentManager.Initialize(playerStats);
|
||||
if (questManager != null) questManager.Initialize(inventory, levelSystem, talentManager);
|
||||
if (dialogueManager != null) dialogueManager.Initialize(questManager, uiManager, playerController);
|
||||
if (craftingSystem != null) craftingSystem.Initialize(inventory, uiManager);
|
||||
if (uiManager != null) uiManager.Initialize(playerController);
|
||||
if (saveSystem != null) saveSystem.Initialize(this);
|
||||
|
||||
ValidateReferences();
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
private void ValidateReferences()
|
||||
{
|
||||
Require(playerStats, "PlayerStats");
|
||||
Require(inventory, "Inventory");
|
||||
Require(levelSystem, "LevelSystem");
|
||||
Require(weaponManager, "WeaponManager");
|
||||
Require(abilityManager, "AbilityManager");
|
||||
Require(talentManager, "TalentManager");
|
||||
Require(questManager, "QuestManager");
|
||||
Require(dialogueManager, "DialogueManager");
|
||||
Require(craftingSystem, "CraftingSystem");
|
||||
Require(uiManager, "UIManager");
|
||||
Require(saveSystem, "SaveSystem");
|
||||
}
|
||||
|
||||
private void Require(Object value, string label)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
Debug.LogWarning($"GameManager reference is missing: {label}", this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 19f1587ed61214d2181a2d440a8b2922
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user