@@ -30,62 +30,35 @@ class GameLogic : public LogicCore, public std::enable_shared_from_this<GameLogi
3030public:
3131 static GameLogic& GetInstance ();
3232
33- // Core lifecycle
3433 void Initialize () override ;
3534 void Shutdown () override ;
3635
37- // World configuration
3836 struct WorldConfig : public LogicWorld ::WorldConfig {};
3937 void SetWorldConfig (const WorldConfig& config);
4038 const WorldConfig& GetWorldConfig () const ;
4139
42- // World maintenance
4340 void PerformMaintenance ();
4441
45- // IPC message handling
46- void HandleIPCMessage (const nlohmann::json& message);
47-
48- // World methods
4942 std::shared_ptr<WorldChunk> GetOrCreateChunk (int chunkX, int chunkZ);
5043 void GenerateWorldAroundPlayer (uint64_t playerId, const glm::vec3& position);
5144 void PreloadWorldData (float radius);
5245 float GetTerrainHeight (float x, float z) const ;
5346 BiomeType GetBiomeAt (float x, float z) const ;
5447
55- // Entity methods
5648 uint64_t SpawnNPC (NPCType type, const glm::vec3& position, uint64_t ownerId = 0 );
5749 void DespawnNPC (uint64_t npcId);
5850 NPCEntity* GetNPCEntity (uint64_t npcId);
5951 GameEntity* GetEntity (uint64_t entityId);
6052 std::shared_ptr<Player> GetPlayer (uint64_t playerId);
6153
62- // Collision methods
6354 CollisionResult CheckCollision (const glm::vec3& position, float radius, uint64_t excludeEntityId = 0 );
6455 bool Raycast (const glm::vec3& origin, const glm::vec3& direction, float maxDistance, RaycastHit& hit);
6556
66- // Loot methods
6757 void CreateLootEntity (const glm::vec3& position, std::shared_ptr<LootItem> item, int quantity);
68- void HandleLootPickup (uint64_t sessionId, const nlohmann::json& data);
69- void HandleInventoryMove (uint64_t sessionId, const nlohmann::json& data);
70- void HandleItemUse (uint64_t sessionId, const nlohmann::json& data);
71- void HandleItemDrop (uint64_t sessionId, const nlohmann::json& data);
72- void HandleTradeRequest (uint64_t sessionId, const nlohmann::json& data);
73- void HandleGoldTransaction (uint64_t sessionId, const nlohmann::json& data);
74-
75- // Message handlers (remaining non-virtual ones)
76- void HandleNPCInteraction (uint64_t sessionId, const nlohmann::json& data);
77- void HandleCollisionCheck (uint64_t sessionId, const nlohmann::json& data);
78- void HandleEntitySpawnRequest (uint64_t sessionId, const nlohmann::json& data);
79- void HandleFamiliarCommand (uint64_t sessionId, const nlohmann::json& data);
80-
81- // Message handling entry points
82- void HandleMessage (uint64_t sessionId, const nlohmann::json& message);
83-
84- // Player connection/disconnection
58+
8559 void OnPlayerConnected (uint64_t sessionId, uint64_t playerId) override ;
8660 void OnPlayerDisconnected (uint64_t sessionId) override ;
8761
88- // Broadcasting methods (still used)
8962 void BroadcastToNearbyPlayers (const glm::vec3& position, uint16_t messageType,
9063 const std::vector<uint8_t >& data, float radius = 50 .0f );
9164 void BroadcastToNearbyOnlinePlayers (const glm::vec3& position, uint16_t messageType,
@@ -106,23 +79,34 @@ class GameLogic : public LogicCore, public std::enable_shared_from_this<GameLogi
10679 void SendAuthenticationSuccess (uint64_t sessionId, uint64_t playerId, const std::string& message);
10780 void SendAuthenticationFailure (uint64_t sessionId, const std::string& message);
10881
109- // Callback setters for network layer
11082 void SetSendAuthenticationResponseCallback (std::function<void (uint64_t sessionId, bool success, const std::string& message, uint64_t playerId)> cb);
11183 void SetSendChunkCallback (std::function<void (uint64_t sessionId, const ChunkData&)> cb);
84+ void SetSendCollisionResponseCallback (std::function<void (uint64_t session_id, const CollisionResult& result)> cb);
11285 void SetPlayerStateCallback (std::function<void (const PlayerStateData&)> cb);
11386 void SetBroadcastPlayerPositionCallback (std::function<void (const PlayerPositionData&, float radius)> cb);
87+ void SetSendNPCInteractionResponseCallback (std::function<void (uint64_t session_id, const NpcData& response)> cb);
88+ void SetSendFamiliarCommandResponseCallback (std::function<void (uint64_t session_id, const FamiliarData& response)> cb);
89+ void SetSendEntitySpawnResponseCallback (std::function<void (uint64_t session_id, const EntitySpawnData& response)> cb);
90+ void SetSendLootPickupResponseCallback (std::function<void (uint64_t session_id, const LootPickupData& response)> cb);
91+ void SetSendInventoryResponseCallback (std::function<void (uint64_t session_id, const InventoryData& response)> cb);
11492
115- // Incoming data entry points (called by sessions)
11693 void OnAuthentication (const AuthenticationData& data);
117- void OnChunkRequest (const ChunkRequestData& data);
94+ void OnChunkRequest (const ChunkData& data);
95+ void OnCollisionCheck (const CollisionData& data);
11896 void OnPlayerPosition (const PlayerPositionData& data);
11997 void OnPlayerState (const PlayerStateData& data);
98+ void OnNPCInteraction (const NpcData& data);
99+ void OnFamiliarCommand (const FamiliarData& data);
100+ void OnEntitySpawnRequest (const EntitySpawnData& data);
101+ void OnLootPickup (const LootPickupData& data);
102+ void OnInventory (const InventoryData& data);
120103
121- // Overrides of virtual methods from LogicCore
104+ // scripting
105+ void RegisterPythonEventHandlers () override ;
122106 void FirePythonEvent (const std::string& eventName, const nlohmann::json& data) override ;
123107 nlohmann::json CallPythonFunction (const std::string& moduleName, const std::string& functionName,
124108 const nlohmann::json& args) override ;
125- void RegisterPythonEventHandlers () override ;
109+
126110 void SaveGameState () override ;
127111 void CleanupOldData () override ;
128112 void ProcessGameTick (float deltaTime) override ;
@@ -135,7 +119,6 @@ class GameLogic : public LogicCore, public std::enable_shared_from_this<GameLogi
135119 void HandleCombat (uint64_t sessionId, const nlohmann::json& data) override ;
136120 void HandleQuest (uint64_t sessionId, const nlohmann::json& data) override ;
137121
138- // Additional helpers
139122 void SetDatabaseService (DatabaseService* dbService);
140123 void SetConnectionManager (std::shared_ptr<ConnectionManager> connMgr);
141124 void SetDatabaseBackend (std::unique_ptr<DatabaseBackend> backend);
@@ -157,17 +140,21 @@ class GameLogic : public LogicCore, public std::enable_shared_from_this<GameLogi
157140
158141 std::function<void (uint64_t , bool , const std::string&, uint64_t )> sendAuthResponseCb_;
159142 std::function<void (uint64_t , const ChunkData&)> sendChunkCb_;
143+ std::function<void (uint64_t , const CollisionResult&)> sendCollisionResponseCb_;
160144 std::function<void (const PlayerPositionData&, float )> broadcastPlayerPositionCb_;
161145 std::function<void (const PlayerStateData&)> playerStateCb_;
146+ std::function<void (uint64_t , const NpcData&)> sendNPCInteractionResponseCb_;
147+ std::function<void (uint64_t , const FamiliarData&)> sendFamiliarCommandResponseCb_;
148+ std::function<void (uint64_t , const EntitySpawnData&)> sendEntitySpawnResponseCb_;
149+ std::function<void (uint64_t , const LootPickupData&)> sendLootPickupResponseCb_;
150+ std::function<void (uint64_t , const InventoryData&)> sendInventoryResponseCb_;
162151
163152 bool pythonEnabled_ = false ;
164153
165154 void GameLoop () override ;
166155 void SpawnerLoop () override ;
167156 void UpdateWorld (float deltaTime);
168157
169- // Helper methods
170- void RegisterWorldHandlers ();
171158 bool LoadGameData ();
172159 void SaveChunkData ();
173160
0 commit comments