// 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_SPHRASE_H #define RY_SPHRASE_H #include "nel/misc/types_nl.h" #include "nel/misc/sheet_id.h" #include "nel/misc/stream.h" #include "persistent_data.h" #include "persistent_data.h" #include "inventories.h" // *************************************************************************** /** * Description of a Sabrina Phrase. (ie set of brick, and other client side infos) * For communication Client/Server (NB: CSPhrase name already exist...) * \author Lionel Berenguier * \author Nevrax France * \date 2003 */ class CSPhraseCom { public: static const CSPhraseCom EmptyPhrase; public: // Start by declaring methods for persistent load/ save operations // The following macro is defined in persistent_data.h // At time of writing it evaluated to: // void store(CPersistentDataRecord &pdr) const; // void apply(CPersistentDataRecord &pdr); DECLARE_PERSISTENCE_METHODS /// Constructor CSPhraseCom(){} // clear out the contents before filling with new data... void clear() { Bricks.clear(); Name.clear(); } // List Of SBricks composing the phrase. std::vector Bricks; // Name Of the Phrase. Saved on server, read on client. ucstring Name; /// The comparison is made only on Bricks bool operator==(const CSPhraseCom &p) const; bool operator!=(const CSPhraseCom &p) const {return !operator==(p);} bool operator<(const CSPhraseCom &p) const; /// consider empty if Bricks.empty() or if brick 0 is 0. bool empty() const {return Bricks.empty() || Bricks[0].asInt()==0;} /// This serial is made for server->client com. NB: SheetId must be init. void serial(NLMISC::IStream &impulse); }; // *************************************************************************** /** * Tuple Sabrina / Known Slot. * \author Lionel Berenguier * \author Nevrax France * \date 2003 */ class CSPhraseSlot { public: CSPhraseCom Phrase; uint16 KnownSlot; NLMISC::CSheetId PhraseSheetId; /// This serial is made for server->client com. void serial(NLMISC::IStream &impulse); }; // *************************************************************************** class CSPhraseMemorySlot { public: uint8 MemoryLineId; uint8 MemorySlotId; uint16 PhraseId; /// This serial is made for server->client com. void serial(NLMISC::IStream &impulse); }; // *************************************************************************** class CFaberMsgItem { uint8 InvId; // matchs INVENTORIES::EInventory public: uint16 IndexInInv; // index in the inventory uint16 Quantity; // quantity of mp selected void setInvId(INVENTORIES::TInventory invId) { InvId = invId; } INVENTORIES::TInventory getInvId() { return INVENTORIES::TInventory(InvId); } /// This serial is made for server->client com. void serial(NLMISC::IStream &impulse); }; #endif // NL_SPHRASE_H /* End of sphrase_com.h */