#pragma once // Domain interfaces for GameHandler decomposition (Phase 1.2A). // Each interface defines a narrow contract for a specific domain concern, // enabling domain handlers to depend only on the state they need. #include #include #include #include #include #include namespace wowee::network { class WorldSocket; } namespace wowee::game { // Forward declarations class Entity; class EntityManager; enum class WorldState; struct ContactEntry; struct BgQueueSlot; struct AvailableBgInfo; struct BgScoreboardData; struct BgPlayerPosition; struct ArenaTeamStats; struct ArenaTeamRoster; struct GuildRosterData; struct GuildInfoData; struct GuildQueryResponseData; struct CreatureQueryResponseData; struct GameObjectQueryResponseData; // --------------------------------------------------------------------------- // IConnectionState — server connection and authentication state // --------------------------------------------------------------------------- class IConnectionState { public: virtual ~IConnectionState() = default; virtual bool isConnected() const = 0; virtual bool isInWorld() const = 0; virtual WorldState getState() const = 0; virtual network::WorldSocket* getSocket() = 0; virtual const std::vector& getSessionKey() const = 0; }; // --------------------------------------------------------------------------- // ITargetingState — target, focus, and mouseover management // --------------------------------------------------------------------------- class ITargetingState { public: virtual ~ITargetingState() = default; virtual void setTarget(uint64_t guid) = 0; virtual void clearTarget() = 0; virtual uint64_t getTargetGuid() const = 0; virtual std::shared_ptr getTarget() const = 0; virtual bool hasTarget() const = 0; virtual void setFocus(uint64_t guid) = 0; virtual void clearFocus() = 0; virtual uint64_t getFocusGuid() const = 0; virtual bool hasFocus() const = 0; virtual void setMouseoverGuid(uint64_t guid) = 0; virtual uint64_t getMouseoverGuid() const = 0; }; // --------------------------------------------------------------------------- // IEntityAccess — entity queries and name/info caching // --------------------------------------------------------------------------- class IEntityAccess { public: virtual ~IEntityAccess() = default; virtual EntityManager& getEntityManager() = 0; virtual const EntityManager& getEntityManager() const = 0; virtual void queryPlayerName(uint64_t guid) = 0; virtual void queryCreatureInfo(uint32_t entry, uint64_t guid) = 0; virtual std::string getCachedPlayerName(uint64_t guid) const = 0; virtual std::string getCachedCreatureName(uint32_t entry) const = 0; virtual const std::unordered_map& getPlayerNameCache() const = 0; virtual const std::unordered_map& getCreatureInfoCache() const = 0; virtual const GameObjectQueryResponseData* getCachedGameObjectInfo(uint32_t entry) const = 0; }; // --------------------------------------------------------------------------- // ISocialState — friends, ignore list, contacts, guild info // --------------------------------------------------------------------------- class ISocialState { public: virtual ~ISocialState() = default; virtual void addFriend(const std::string& playerName, const std::string& note = "") = 0; virtual void removeFriend(const std::string& playerName) = 0; virtual void addIgnore(const std::string& playerName) = 0; virtual void removeIgnore(const std::string& playerName) = 0; virtual const std::unordered_map& getIgnoreCache() const = 0; virtual const std::vector& getContacts() const = 0; virtual bool isInGuild() const = 0; virtual const std::string& getGuildName() const = 0; virtual const GuildRosterData& getGuildRoster() const = 0; virtual bool hasGuildRoster() const = 0; }; // --------------------------------------------------------------------------- // IPvpState — battleground queues, arena teams, scoreboard // --------------------------------------------------------------------------- class IPvpState { public: virtual ~IPvpState() = default; virtual bool hasPendingBgInvite() const = 0; virtual void acceptBattlefield(uint32_t queueSlot = 0xFFFFFFFF) = 0; virtual void declineBattlefield(uint32_t queueSlot = 0xFFFFFFFF) = 0; virtual const std::array& getBgQueues() const = 0; virtual const std::vector& getAvailableBgs() const = 0; virtual const BgScoreboardData* getBgScoreboard() const = 0; virtual const std::vector& getArenaTeamStats() const = 0; }; } // namespace wowee::game