// Ryzom - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero 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 Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #ifndef RY_PET_INTERFACE_MESSAGES_H #define RY_PET_INTERFACE_MESSAGES_H #include "nel/misc/types_nl.h" #include "nel/misc/sheet_id.h" #include "game_share/synchronised_message.h" #include "game_share/mirror.h" // Pet interface message class for AIS / EGS communication //---------------------------------------------------------------- // pet spawn //---------------------------------------------------------------- class CPetSpawnMsg : public CMirrorTransportClass { public: enum TSpawnMode { NEAR_PLAYER = 0, NEAR_POINT }; uint32 AIInstanceId; uint16 SpawnMode; TDataSetRow CharacterMirrorRow; NLMISC::CSheetId PetSheetId; uint16 PetIdx; // must be returned to EGS with CPetSpawnConfirmationMsg class sint32 Coordinate_X, Coordinate_Y, Coordinate_H; //For NEAR_POINT mode float Heading; //For NEAR_POINT mode virtual void description () { className ("CPetSpawnMsg"); property ("AIInstanceId", PropUInt32, (uint32)~0, AIInstanceId); property ("SpawnMode", PropUInt16, (uint16)NEAR_PLAYER, SpawnMode); property ("CharacterMirrorRow", PropDataSetRow, TDataSetRow(), CharacterMirrorRow); property ("PetSheetId", PropSheetId, NLMISC::CSheetId::Unknown, PetSheetId); property ("PetIndex", PropUInt16, (uint16)0, PetIdx); property ("Coordinate_X", PropSInt32, (sint32)0, Coordinate_X); property ("Coordinate_Y", PropSInt32, (sint32)0, Coordinate_Y); property ("Coordinate_H", PropSInt32, (sint32)0, Coordinate_H); property ("Heading", PropFloat, 0.0f, Heading); } virtual void callback (const std::string &name, NLNET::TServiceId id) {}; }; //---------------------------------------------------------------- // spawn confirmation //---------------------------------------------------------------- class CPetSpawnConfirmationMsg : public CMirrorTransportClass { public: enum TSpawnError { NO_ERROR_SPAWN = 0, CHARATER_UNKNOWN, PET_SHEETID_UNKNOWN, CHARACTER_LAND_MAP_UNKNOWN, COORDINATE_NOT_IN_WORLD, NOT_IMPLEMENTED, INTERNAL_ERROR, PET_ALREADY_SPAWNED }; uint16 SpawnError; TDataSetRow CharacterMirrorRow; TDataSetRow PetMirrorRow; //If spawned uint16 PetIdx; virtual void description () { className ("CPetSpawnConfirmationMsg"); property ("SpawnError", PropUInt16, (uint16)NO_ERROR_SPAWN, SpawnError); property ("CharacterMirrorRow", PropDataSetRow, TDataSetRow(), CharacterMirrorRow); property ("PetMirrorRow", PropDataSetRow, TDataSetRow(), PetMirrorRow); property ("PetIndex", PropUInt16, (uint16)0, PetIdx); } virtual void callback (const std::string &name, NLNET::TServiceId id) {}; }; //---------------------------------------------------------------- // pet command //---------------------------------------------------------------- class CPetCommandMsg : public CMirrorTransportClass { public: enum TCommand { STAND = 0, FOLLOW, GOTO_POINT, GOTO_POINT_DESPAWN, LIBERATE, DESPAWN }; enum TCommandError { COLLISION_NOT_VALIDNO_ERROR_SPAWN = 0, CHARATER_UNKNOWN, PET_SHEETID_UNKNOWN, CHARACTER_LAND_MAP_UNKNOWN, COORDINATE_NOT_IN_WORLD, NOT_IMPLEMENTED, INTERNAL_ERROR }; uint16 Command; TDataSetRow CharacterMirrorRow; TDataSetRow PetMirrorRow; sint32 Coordinate_X, Coordinate_Y, Coordinate_H; //For GOTO_POINT, GOTO_POINT_DESPAWN and SPAWN_POINT commands float Heading; // For GOTO_POINT_DESPAWN commands (via stable) virtual void description () { className ("CPetCommandMsg"); property ("Command", PropUInt16, (uint16)STAND, Command); property ("CharacterMirrorRow", PropDataSetRow, TDataSetRow(), CharacterMirrorRow); property ("PetMirrorRow", PropDataSetRow, TDataSetRow(), PetMirrorRow); property ("Coordinate_X", PropSInt32, (sint32)0, Coordinate_X); property ("Coordinate_Y", PropSInt32, (sint32)0, Coordinate_Y); property ("Coordinate_H", PropSInt32, (sint32)0, Coordinate_H); property ("Heading", PropFloat, 0.0f, Heading); } virtual void callback (const std::string &name, NLNET::TServiceId id) {}; }; //---------------------------------------------------------------- // command confirmation //---------------------------------------------------------------- class CPetCommandConfirmationMsg : public CMirrorTransportClass { public: enum TCommandError { NO_ERROR_COMMAND = 0, POSITION_COLLISION_NOT_VALID }; uint16 CommandError; TDataSetRow CharacterMirrorRow; TDataSetRow PetMirrorRow; CPetCommandConfirmationMsg() {} CPetCommandConfirmationMsg(uint16 commandError, const CPetCommandMsg &msg) :CommandError(commandError) ,CharacterMirrorRow(msg.CharacterMirrorRow) ,PetMirrorRow(msg.PetMirrorRow) {} virtual void description () { className ("CPetCommandConfirmationMsg"); property ("CommandError", PropUInt16, (uint16)NO_ERROR_COMMAND, CommandError); } virtual void callback (const std::string &name, NLNET::TServiceId id) {}; }; //---------------------------------------------------------------- // pet owner //---------------------------------------------------------------- class CPetSetOwner : public CMirrorTransportClass { public: TDataSetRow OwnerMirrorRow; TDataSetRow PetMirrorRow; virtual void description () { className ("CPetSetOwner"); property ("OwnerMirrorRow", PropDataSetRow, TDataSetRow(), OwnerMirrorRow); property ("PetMirrorRow", PropDataSetRow, TDataSetRow(), PetMirrorRow); } virtual void callback (const std::string &name, NLNET::TServiceId id) {}; }; #endif //RY_PET_INTERFACE_MESSAGES_H