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.

96 lines
2.7 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 plRoomLoadNotifyMsg_inc
#define plRoomLoadNotifyMsg_inc
///////////////////////////////////////////////////////////////////
//
// plRoomLoadNotifyMsg
//
// This message is used to notify all those who are registered for this message
// whenever the plClient has finished loading a Room.
// Its up to the receiver to decide if they are interested in that particular room
//
#include "pnMessage/plMessage.h"
class plRoomLoadNotifyMsg : public plMessage
{
protected:
plKey fRoomKey;
UInt8 fWhat;
private:
void IInit()
{
fRoomKey = nil;
fWhat=kDontKnow;
// we will only send this message to those who have registered for it
SetBCastFlag(plMessage::kBCastByExactType);
}
public:
plRoomLoadNotifyMsg()
: plMessage(nil, nil, nil) { IInit(); }
plRoomLoadNotifyMsg(const plKey &s,
const plKey &r,
const double* t)
: plMessage(s, r, t) { IInit(); }
virtual ~plRoomLoadNotifyMsg() {;}
CLASSNAME_REGISTER( plRoomLoadNotifyMsg );
GETINTERFACE_ANY( plRoomLoadNotifyMsg, plMessage );
enum NotifyType
{
kDontKnow=0,
kLoaded,
kUnloaded,
};
virtual void SetRoom(plKey &rkey) { fRoomKey = rkey; }
virtual plKey GetRoom() { return fRoomKey; }
virtual void SetWhatHappen(UInt8 what) { fWhat = what; }
virtual UInt8 GetWhatHappen() { return fWhat; }
// IO
void Read(hsStream* stream, hsResMgr* mgr)
{
plMessage::IMsgRead(stream, mgr);
fRoomKey = mgr->ReadKey(stream);
fWhat = stream->ReadByte();
}
void Write(hsStream* stream, hsResMgr* mgr)
{
plMessage::IMsgWrite(stream, mgr);
mgr->WriteKey(stream, fRoomKey);
stream->WriteByte(fWhat);
}
};
#endif // plRoomLoadNotifyMsg_inc