/*==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 . 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 pyGameCliMsg_h #define pyGameCliMsg_h ///////////////////////////////////////////////////////////////////////////// // // NAME: pyGameCliMsg // // PURPOSE: Class wrapper for game client messages // #include "../pfGameMgr/pfGameMgr.h" #include #include "../pyGlueHelpers.h" class pyGameCliMsg { protected: pfGameCliMsg* message; pyGameCliMsg(); pyGameCliMsg(pfGameCliMsg* msg); public: // required functions for PyObject interoperability PYTHON_EXPOSE_TYPE; // so we can subclass PYTHON_CLASS_NEW_FRIEND(ptGameCliMsg); static PyObject* New(pfGameCliMsg* msg); PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliMsg object PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliMsg); // converts a PyObject to a pyGameCliMsg (throws error if not correct type) static void AddPlasmaClasses(PyObject* m); static void AddPlasmaConstantsClasses(PyObject* m); int GetType() const; PyObject* GetGameCli() const; // returns ptGameCli PyObject* UpcastToFinalGameCliMsg() const; // returns it upcasted to player joined/left/invite/owner change message PyObject* UpcastToGameMsg() const; // returns it upcasted to a game's message base class // for convenience, we define our own message types, one message type for each game, so that we can have // a "base class" for each game's messages. Anything under kCli2Srv_NumGameMsgIds keeps their normal type // (and is exposed to python here), but anything above it has the message code look at the game type and // return the "message type" indicating what game the message is from enum pyGameCliMsgType { kPyGameCliMsgTypeStart = kCli2Srv_NumGameMsgIds, kPyGameCliTTTMsg, // Tick Tack Toe game messages kPyGameCliHeekMsg, // Heek game messages kPyGameCliMarkerMsg, // Marker game messages kPyGameCliBlueSpiralMsg, // Blue Spiral game messages kPyGameCliClimbingWallMsg, // Climbing Wall game messages kPyGameCliVarSyncMsg, // Var Sync game messages }; }; /////////////////////////////////////////////////////////////////////////////// class pyGameCliPlayerJoinedMsg : public pyGameCliMsg { protected: pyGameCliPlayerJoinedMsg(); pyGameCliPlayerJoinedMsg(pfGameCliMsg* msg); public: // required functions for PyObject interoperability PYTHON_CLASS_NEW_FRIEND(ptGameCliPlayerJoinedMsg); static PyObject* New(pfGameCliMsg* msg); PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliPlayerJoinedMsg object PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliPlayerJoinedMsg); // converts a PyObject to a pyGameCliPlayerJoinedMsg (throws error if not correct type) static void AddPlasmaClasses(PyObject* m); unsigned long PlayerID() const; }; /////////////////////////////////////////////////////////////////////////////// class pyGameCliPlayerLeftMsg : public pyGameCliMsg { protected: pyGameCliPlayerLeftMsg(); pyGameCliPlayerLeftMsg(pfGameCliMsg* msg); public: // required functions for PyObject interoperability PYTHON_CLASS_NEW_FRIEND(ptGameCliPlayerLeftMsg); static PyObject* New(pfGameCliMsg* msg); PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliPlayerLeftMsg object PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliPlayerLeftMsg); // converts a PyObject to a pyGameCliPlayerLeftMsg (throws error if not correct type) static void AddPlasmaClasses(PyObject* m); unsigned long PlayerID() const; }; /////////////////////////////////////////////////////////////////////////////// class pyGameCliInviteFailedMsg : public pyGameCliMsg { protected: pyGameCliInviteFailedMsg(); pyGameCliInviteFailedMsg(pfGameCliMsg* msg); public: // required functions for PyObject interoperability PYTHON_CLASS_NEW_FRIEND(ptGameCliInviteFailedMsg); static PyObject* New(pfGameCliMsg* msg); PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliInviteFailedMsg object PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliInviteFailedMsg); // converts a PyObject to a pyGameCliInviteFailedMsg (throws error if not correct type) static void AddPlasmaClasses(PyObject* m); static void AddPlasmaConstantsClasses(PyObject* m); unsigned long InviteeID() const; unsigned long OperationID() const; int Error() const; }; /////////////////////////////////////////////////////////////////////////////// class pyGameCliOwnerChangeMsg : public pyGameCliMsg { protected: pyGameCliOwnerChangeMsg(); pyGameCliOwnerChangeMsg(pfGameCliMsg* msg); public: // required functions for PyObject interoperability PYTHON_CLASS_NEW_FRIEND(ptGameCliOwnerChangeMsg); static PyObject* New(pfGameCliMsg* msg); PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliOwnerChangeMsg object PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliOwnerChangeMsg); // converts a PyObject to a pyGameCliOwnerChangeMsg (throws error if not correct type) static void AddPlasmaClasses(PyObject* m); unsigned long OwnerID() const; }; #endif // pyGameCliMsg_h