You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
4.3 KiB

/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef plCCRMsg_h
#define plCCRMsg_h
#include "../pnMessage/plMessage.h"
#include "../plNetCommon/plNetCommon.h"
//
// Abstract Baseclass for CCR messages.
// All CCR messages must derive from this or the server won't be able to tell that's what they are.
//
class plCCRMessage : public plMessage
{
public:
CLASSNAME_REGISTER( plCCRMessage);
GETINTERFACE_ANY( plCCRMessage, plMessage );
};
//
// Player wants to petition a CCR
//
class plCCRPetitionMsg : public plCCRMessage
{
private:
UInt8 fPetitionType;
std::string fNote;
std::string fTitle;
public:
plCCRPetitionMsg() : fPetitionType(plNetCommon::PetitionTypes::kGeneralHelp) { fBCastFlags |= kBCastByType; }
~plCCRPetitionMsg() {}
CLASSNAME_REGISTER( plCCRPetitionMsg);
GETINTERFACE_ANY( plCCRPetitionMsg, plCCRMessage );
// petition text
void SetNote(const char* n) { fNote=n; }
const char* GetNote() const { return fNote.c_str(); }
// title
void SetTitle(const char* n) { fTitle=n; }
const char* GetTitle() const { return fTitle.c_str(); }
// petition type
void SetType(const UInt8 t) { fPetitionType=t; }
UInt8 GetType() const { return fPetitionType; }
virtual void Read(hsStream* stream, hsResMgr* mgr);
virtual void Write(hsStream* stream, hsResMgr* mgr);
};
//
// A CCR has gone invisible
//
class plCCRInvisibleMsg : public plCCRMessage
{
public:
plKey fAvKey;
UInt8 fInvisLevel; // 0 means visible
plCCRInvisibleMsg();
~plCCRInvisibleMsg() {}
CLASSNAME_REGISTER( plCCRInvisibleMsg);
GETINTERFACE_ANY( plCCRInvisibleMsg, plCCRMessage );
virtual void Read(hsStream* stream, hsResMgr* mgr);
virtual void Write(hsStream* stream, hsResMgr* mgr);
};
//
// For CCR-player communication
//
class plCCRCommunicationMsg : public plCCRMessage
{
public:
enum Type
{
kUnInit = 0,
kBeginCommunication,
kChat,
kEndCommunication,
kReturnChatMsg
};
std::string fString;
Type fType;
UInt32 fCCRPlayerID;
plCCRCommunicationMsg();
~plCCRCommunicationMsg() {}
CLASSNAME_REGISTER( plCCRCommunicationMsg);
GETINTERFACE_ANY( plCCRCommunicationMsg, plCCRMessage );
// getters and setters
void SetMessage(const char* n) { fString=n; }
const char* GetMessage() const { return fString.c_str(); }
void SetType(Type t) { fType=t; }
Type GetType() const { return fType; }
void SetCCRPlayerID(UInt32 t) { fCCRPlayerID=t; }
UInt32 GetCCRPlayerID() const { return fCCRPlayerID; }
virtual void Read(hsStream* stream, hsResMgr* mgr);
virtual void Write(hsStream* stream, hsResMgr* mgr);
};
//
// A CCR has banned a player from leaving the age
//
class plCCRBanLinkingMsg : public plCCRMessage
{
public:
hsBool fBan; // ban or un ban
plCCRBanLinkingMsg() ;
~plCCRBanLinkingMsg() {}
CLASSNAME_REGISTER( plCCRBanLinkingMsg);
GETINTERFACE_ANY( plCCRBanLinkingMsg, plCCRMessage );
virtual void Read(hsStream* stream, hsResMgr* mgr);
virtual void Write(hsStream* stream, hsResMgr* mgr);
};
//
// A CCR has silenced a player
//
class plCCRSilencePlayerMsg : public plCCRMessage
{
public:
hsBool fSilence; // ban or un ban
plCCRSilencePlayerMsg() ;
~plCCRSilencePlayerMsg() {}
CLASSNAME_REGISTER( plCCRSilencePlayerMsg);
GETINTERFACE_ANY( plCCRSilencePlayerMsg, plCCRMessage );
virtual void Read(hsStream* stream, hsResMgr* mgr);
virtual void Write(hsStream* stream, hsResMgr* mgr);
};
#endif // plCCRMsg_h