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 OnItemAdded; public static event Action OnItemRemoved; public static event Action OnEnemyKilled; public static event Action OnQuestStarted; public static event Action OnQuestProgressChanged; public static event Action OnQuestReadyToComplete; public static event Action OnQuestCompleted; public static event Action OnExperienceGained; public static event Action OnLevelUp; public static event Action OnTalentPointChanged; public static event Action OnTalentLearned; public static event Action OnAbilityUsed; public static event Action OnWeaponChanged; public static event Action OnStatsChanged; public static event Action 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); } }