/*------------------------------------------------------------------------- * wintrek\ZoneSquad.h * * Interface for IZoneSquad and CZonePlayer * * These two classes are in the same file because are closely related. * When you add a player to a squad, a double link is created. That is, * the squad points to the player and the player points to the squad. * * Owner: * * Copyright 1986-2000 Microsoft Corporation, All Rights Reserved *-----------------------------------------------------------------------*/ class IZonePlayer; class IZoneSquad; class CMembership; typedef TListListWrapper > XZonePlayers; typedef TListListWrapper > XSquads; typedef TListListWrapper > XMemberships; typedef XZonePlayers::Iterator XZonePlayersIt; typedef XSquads::Iterator XSquadsIt; typedef XMemberships::Iterator XMembershipsIt; class IZoneSquad: public IObject, public ISquadBase { public: virtual char *GetName() = 0; virtual void SetName(PCC szName) = 0; virtual int GetID() = 0; // True ID determined by Zone database servers virtual void SetID(int nID) = 0; virtual int GetCreationID() = 0; // Creation ID is valid on client only virtual void SetCreationID(int nCreationID) = 0; virtual char *GetDescription() = 0; virtual void SetDescription(PCC szDescription) = 0; virtual char *GetURL() = 0; virtual void SetURL(PCC szURL) = 0; virtual char *GetInceptionDate() = 0; virtual void SetInceptionDate(char *szInceptionDate) = 0; virtual TRef GetOwner() = 0; virtual char const * GetRank() = 0; virtual int GetRanking(SQUAD_SORT_COLUMN column) = 0; virtual void SetRanking(SQUAD_SORT_COLUMN column, int nRanking) = 0; virtual int GetWins() = 0; virtual void SetWins(int nWins) = 0; virtual int GetLosses() = 0; virtual void SetLosses(int nLosses) = 0; virtual CivID GetCivID() = 0; virtual void SetCivID(int id) = 0; virtual short GetScore() = 0; virtual void SetScore(short nScore) = 0; virtual void SetDetailsReceived() = 0; virtual bool WereDetailsReceived() = 0; // do we know everything about this squad, or are some of its details yet to be received from server? virtual void AddJoinRequest(IZonePlayer & pPlayer) = 0; virtual void RejectPlayer(IZonePlayer & pPlayer) = 0; // reject player's join request virtual void CancelJoinRequest(IZonePlayer & pPlayer) = 0; // Note: consider using SquadScreen::AddPlayerToSquad() instead of AddPlayer // to ensure proper screen refresh virtual void AddPlayer(IZonePlayer & player, IMemberBase::DetailedStatus detailedstatus) = 0; virtual void SetStatus(IZonePlayer & player, IMemberBase::DetailedStatus detailedstatus) = 0; // sets status (adds player as needed) virtual void BootPlayer(IZonePlayer & pPlayer) = 0; virtual void QuitPlayer(IZonePlayer & player) = 0; virtual void SetEmpty() = 0; // Clears all membership virtual void SetOwnershipLog(char *szLog) = 0; virtual TList * GetOwnershipLog() = 0; virtual void AddPlayersToList(XZonePlayers & list) = 0; }; TRef CreateZoneSquad(); class IZonePlayer: public IObject, public IMemberBase { public: virtual void Randomize() = 0; // fill in random data virtual char * GetName() = 0; virtual void SetName(PCC szName) = 0; virtual int GetID() = 0; virtual void SetID(int nID) = 0; virtual char * GetLastPlayedDate(IZoneSquad & squad) = 0; virtual void SetLastPlayedDate(IZoneSquad & squad, PCC szLastPlayedDate) = 0; virtual DetailedStatus GetStatus(IZoneSquad & squad) = 0; virtual Rank GetRank() = 0; virtual void SetRank(Rank rank) = 0; virtual Position GetPosition(IZoneSquad & squad) = 0; virtual void SetPosition(IZoneSquad & squad, Position pos) = 0; // setting to leader should only be done from IZoneSquad::SetOwner() virtual float GetHours(IZoneSquad & squad) = 0; virtual void SetHours(IZoneSquad & squad, float fHours) = 0; virtual bool IsMemberOf(IZoneSquad & squad) = 0; // is this player a member of pSquad virtual bool IsPendingFor(IZoneSquad & squad) = 0; }; TRef CreateZonePlayer(const char *szName, int nID);