Act as a Unity Senior Developer, in addition to having a solid understanding of game development principles and best practices, it is expected that you possess knowledge and expertise in solid principles and design patterns.
Analyze systems for any inaccuracies or flaws
Systems:
- Core system:
-- GameMaster.cs: Main class controlling overall game state and progression.
-- GameTime.cs: Class responsible for managing in-game time and date system.
-- WorldController.cs: Class responsible for managing world events, weather, and global states.
-- TODO: maybe add classes

- NPCs systems:
-- NPCBrain.cs: Class responsible for handling NPCs’ decision making and state switching using Fluid HTN.

-- Navigation System:
--- A* Pathfinding Project
--- PathfindingManager.cs: Class responsible for handling A* Pathfinding requests.

-- Sensor System:
--- A system that allows AI agents to sense their environment and detect other agents, objects
--- VisionSensor.cs: Class responsible for NPCs’ field of view, raycasting vision, and detecting other objects/characters.
--- HearingSensor.cs: Class responsible for area detection, NPCs can hear sounds generated by nearby events or interactions.

-- Inventory System:
--- A system that allows AI agents to pick up items, use items, equip items, store items, drop items
--- ItemDatabase.cs: Holds all the ScriptableObjects for items in the game world.
--- Inventory.cs: Handles the inventory system for NPCs. Handle different ItemTypes and their interactions, including equipping, unequipping, and using items.
--- Item.cs: Base class for all type of items. Contains an ItemType Enum, which defines whether the item is a consumable, weapon, or armor. The interactions and functions of the item depend on its ItemType. Contains an Effect variable for effects that can represent onsumables like food, potions or other usable items or buffs.
--- EquipmentSlot.cs: Enum representing different equipment slots (Head, Body, Hand)

-- Communication System:
--- A system that allows AI agents to exchange information and coordinate with each other
--- Personality System:
---- A subsystem that allows AI agents to have a unique name and unique memory of specific events
--- TODO: add classes

-- Faction System:
--- A system that allows AI agents to belong to a specific faction that has unique relationships with other factions
--- Faction.cs: Base class representing a faction, its relationships, and reputation system.
--- FactionDatabase.cs: Holds all the factions and related information in the game world.
--- FactionRelation.cs: Represents relationships between factions and their standings.

-- Quest System:
--- A system that allows AI agents to take quests, complete quests, fail quests, create quests
--- Quest.cs: Represents a quest with objectives, rewards, and related information.
--- QuestGenerator.cs: Creates procedural quests for NPCs.
--- QuestObjective.cs: Represents a single objective within a quest.
--- QuestCompletion.cs: Responsible for completing the quest and awarding rewards.

-- Trading System:
--- A system that allows AI agents to buy and sell items with other agents
--- TradingManager.cs: Class responsible for managing transactions, including buying, selling, and bartering items.
--- TradeInventory.cs: Represents the inventory of items available for trading for characters and merchants.

-- Combat System:
--- A system that allows AI agents to fight each other with melee or range weapon. In real time. Using Fluid HTN for tactics.
--- CombatManager.cs: Class responsible for managing combat interactions, handling AI tactics, and updating the combat state.
--- TODO: add explanations how CombatManager.cs will work

-- Health System:
--- A system that allows AI agents to have a health, lose health, restore health
--- HealthSystem.cs: Class responsible for managing character HP, taking damage, and handling death events.

-- Stamina System:
--- A system that allows AI agents to have a stamina, lose stamina, restore stamina
--- StaminaSystem.cs: Class responsible for managing character stamina, stamina regeneration, and usage.

-- Stats System:
--- Represents the various attributes and statistics for characters in the game, such as strength, agility, intelligence, and more.
--- AgentStats.cs: Class responsible for managing character attributes, leveling up, and updating stats.

- Weapon System:
-- Weapon.cs: Class responsible for handling weapon behavior, including firing projectiles.
-- Projectile.cs: Base class for all projectiles.
-- ProjectileSpawner.cs: Class responsible for instantiating projectiles and assigning properties.
-- TODO: add classes

- Camera System:
-- CameraController.cs: Class responsible for camera movement, smooth following of the player/controlled NPC, and managing camera zoom levels.

- Audio System:
-- AudioManager.cs: Class responsible for managing and playing sound effects, background music, and NPC audio.
-- MusicManager.cs: Class responsible for managing and switching background music based on game events and locations.

- UI System:
-- UIManager.cs: Responsible for updating and controlling general UI elements.
-- InventoryUI.cs: Controls inventory related UI elements.
-- QuestLogUI.cs: Controls quest log related UI elements.
-- TODO: maybe add more classes

- Logging System:
-- GameLogger.cs: Handles logging of game-related events for debugging and analytics purposes.
-- TODO: maybe add more classes and more explanations

- Save Load System:
-- SaveLoadSystem.cs: Responsible for saving and loading game data to and from files.
-- TODO: maybe add more classes and explain how save load system will work

- Pooling System:
-- A system that handles the pooling of frequently instantiated objects, such as projectiles, to improve performance.
-- ObjectPooler.cs: Generic pooling class to handle different types of game objects.
-- ProjectilePool.cs: Class responsible for pooling projectiles specifically, derived from ObjectPooler.

Act as a Unity Senior Developer, in addition to having a solid understanding of game development principles and best practices, it is expected that you possess knowledge and expertise in solid principles and design patterns.
Analyze systems for any inaccuracies or flaws