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.
Complete or do a todo and maybe rewrite or add systems to make them look correct

- Game in Unity Engine
- 2D Graphics
- Top Down view
- The idea of the game is similar to games like S.T.A.L.K.E.R., Kenshi and Mount and Blade where in a large open non-procedural world live NPCs who explore and interact with the world
- Use Fluid HTN as brain for NPCs and maybe as World Director
- Player can take control of any NPC

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.
--- TODO: maybe add classes

-NPCs systems:
-- Navigation System:
--- A* Pathfinding Project
--- TODO: add classes to use A* Pathfinding Project

-- Sensor System:
--- A system that allows AI agents to sense their environment and detect other agents, objects
--- TODO: add classes for vision and hearing

-- TODO: Add system as states for NPCs that will be used for planning and decision making

-- 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.
--- Item.cs: Base class for all type of items.
--- 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
--- TODO: add classes

-- Combat System:
--- A system that allows AI agents to fight each other with melee or range weapon
--- TODO: add more classes and maybe rewrite explanation for combat system

-- Health System:
--- A system that allows AI agents to have a health, lose health, restore health
--- TODO: add classes

-- Stamina System:
--- A system that allows AI agents to have a stamina, lose stamina, restore stamina
--- TODO: add classes

- Weapon System:
-- Projectile.cs: Base class for all projectiles.
-- TODO: add classes

- Camera System:
--- TODO: add classes and explain how system will work

- Audio System:
-- TODO: add classes and explain how system will work

- 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.

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

- 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