From ab4aa7487c4744a814c911fa6f4b61238208c4f2 Mon Sep 17 00:00:00 2001 From: Nuno Date: Wed, 9 Feb 2022 16:27:46 +0100 Subject: [PATCH] Revert "Merge branch 'server/yubo-dev' into main/yubo-dev" This reverts commit a4d92c34bda99ab70656b8bb4fba019fda844aa1. --- nel/include/nel/misc/common.h | 4 +- nel/include/nel/misc/file.h | 2 +- nel/include/nel/misc/stream.h | 2 +- nel/include/nel/web/http_package_provider.h | 6 +- .../src/interface_v3/action_handler_item.cpp | 35 ++++ .../client/src/interface_v3/dbctrl_sheet.cpp | 10 + ryzom/client/src/interface_v3/dbctrl_sheet.h | 2 + .../src/interface_v3/inventory_manager.cpp | 194 +++++++++++++++--- ryzom/common/src/game_share/inventories.cpp | 4 +- ryzom/common/src/game_share/inventories.h | 24 +-- ryzom/common/src/game_share/object.h | 34 +-- 11 files changed, 245 insertions(+), 72 deletions(-) diff --git a/nel/include/nel/misc/common.h b/nel/include/nel/misc/common.h index 1e98ca3f7..01817fa98 100644 --- a/nel/include/nel/misc/common.h +++ b/nel/include/nel/misc/common.h @@ -412,8 +412,8 @@ public: Exception(); Exception(const std::string &reason); Exception(const char *format, ...); - virtual ~Exception() throw() {} - virtual const char *what() const throw(); + virtual ~Exception() NL_OVERRIDE {} + virtual const char *what() const throw() NL_OVERRIDE; }; diff --git a/nel/include/nel/misc/file.h b/nel/include/nel/misc/file.h index 0271be4a3..2d3912842 100644 --- a/nel/include/nel/misc/file.h +++ b/nel/include/nel/misc/file.h @@ -41,7 +41,7 @@ struct EFile : public EStream EFile (const std::string& filename) : EStream( "Unknown file error in '"+filename+"'" ), Filename(filename) {} EFile (const std::string& filename, const std::string& text, bool ) : EStream( text ), Filename(filename) {} - virtual ~EFile() throw() {} + virtual ~EFile() NL_OVERRIDE {} std::string Filename; }; diff --git a/nel/include/nel/misc/stream.h b/nel/include/nel/misc/stream.h index 1dc56b1cd..9b18d575c 100644 --- a/nel/include/nel/misc/stream.h +++ b/nel/include/nel/misc/stream.h @@ -81,7 +81,7 @@ struct EStream : public Exception EStream( const IStream &f, const std::string& str ); - virtual ~EStream() throw() {} + virtual ~EStream() NL_OVERRIDE {} // May Not be Filled... std::string StreamName; diff --git a/nel/include/nel/web/http_package_provider.h b/nel/include/nel/web/http_package_provider.h index 98b64a203..380b5cfa2 100644 --- a/nel/include/nel/web/http_package_provider.h +++ b/nel/include/nel/web/http_package_provider.h @@ -52,8 +52,8 @@ public: /// filePath: [out] ex. /games/nel/stream/00/00/000000000.. /// hash: [in] /// name: [in] name for debugging purposes - virtual bool getFile(std::string &filePath, const NLMISC::CHashKey &hash, const std::string &name); - + virtual bool getFile(std::string &filePath, const NLMISC::CHashKey &hash, const std::string &name) NL_OVERRIDE; + public: /// Set storage path (ex. stream/) std::string Path; @@ -61,7 +61,7 @@ public: /// Loads a package into the package manager (ex. http://cdn.ryzom.dev/open/stream/) typedef std::vector THosts; THosts Hosts; - + }; /* class CHttpPackageProvider */ } /* namespace NLMISC */ diff --git a/ryzom/client/src/interface_v3/action_handler_item.cpp b/ryzom/client/src/interface_v3/action_handler_item.cpp index 2e55531fe..02f8d1633 100644 --- a/ryzom/client/src/interface_v3/action_handler_item.cpp +++ b/ryzom/client/src/interface_v3/action_handler_item.cpp @@ -1079,6 +1079,41 @@ class CCanDropToExchange : public IActionHandler }; REGISTER_ACTION_HANDLER (CCanDropToExchange, "can_drop_to_exchange"); +// ********************************************************************************************************** +class CCanDropToHotbar : public IActionHandler +{ + virtual void execute (CCtrlBase *pCaller, const string &Params) + { + CInterfaceManager *pIM = CInterfaceManager::getInstance(); + nlinfo("hey"); + string src = getParam(Params, "src"); + CInterfaceElement *pElt = CWidgetManager::getInstance()->getElementFromId(src); + CDBCtrlSheet *pCSSrc = dynamic_cast(pElt); + CDBCtrlSheet *pCSDst = dynamic_cast(pCaller); + if (!pCSSrc || !pCSDst) return; + + // Exchange can only be done from bag to exchange inventories + uint32 srcInventory = pCSSrc->getSecondIndexInDB(); + if ( + (srcInventory == INVENTORIES::bag || + srcInventory == INVENTORIES::pet_animal1 || + srcInventory == INVENTORIES::pet_animal2 || + srcInventory == INVENTORIES::pet_animal3 || + srcInventory == INVENTORIES::pet_animal4 || + srcInventory == INVENTORIES::pet_animal5 || + srcInventory == INVENTORIES::pet_animal6 || + srcInventory == INVENTORIES::pet_animal7 || + srcInventory == INVENTORIES::player_room) + && getInventory().isInventoryAvailable((INVENTORIES::TInventory) pCSSrc->getSecondIndexInDB()) + && getInventory().isUsableItem(pCSSrc->getSheetId()) + ) + { + pCSDst->setCanDrop ( true ); + } + } +}; +REGISTER_ACTION_HANDLER (CCanDropToHotbar, "can_drop_to_hotbar"); + // ********************************************************************************************************** /** Clear the selected sheet diff --git a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp index dd70c7ece..95caeabe8 100644 --- a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp +++ b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp @@ -314,6 +314,7 @@ CCtrlSheetInfo::CCtrlSheetInfo() _ItemSlot= SLOTTYPE::UNDEFINED; _AutoGrayed= false; _HasTradeSlotType = false; + _IsHotbarSlot = false; _BrickOverable= false; _ReadQuantityFromSheet = false; _AHOnLeftClick = NULL; @@ -389,6 +390,10 @@ bool CCtrlSheetInfo::parseCtrlInfo(xmlNodePtr cur, CInterfaceGroup * /* parentGr prop = (char*) xmlGetProp( cur, (xmlChar*)"use_slot_type_db_entry" ); if (prop) _HasTradeSlotType= CInterfaceElement::convertBool(prop); + + prop = (char*) xmlGetProp( cur, (xmlChar*)"hotbar_slot" ); + if (prop) + _IsHotbarSlot= CInterfaceElement::convertBool(prop); // Read Action handlers CAHManager::getInstance()->parseAH(cur, "onclick_l", "params_l", _AHOnLeftClick, _AHLeftClickParams); @@ -3793,6 +3798,11 @@ bool CDBCtrlSheet::canDropItem(CDBCtrlSheet *src) const bf|= 1<getSheetId()) ) + { + return true; + } + // Look if one slot solution match. if( pIS->SlotBF & bf ) { diff --git a/ryzom/client/src/interface_v3/dbctrl_sheet.h b/ryzom/client/src/interface_v3/dbctrl_sheet.h index 40e943307..f4c58872c 100644 --- a/ryzom/client/src/interface_v3/dbctrl_sheet.h +++ b/ryzom/client/src/interface_v3/dbctrl_sheet.h @@ -168,6 +168,7 @@ public: // and another in the source slot. Useful for items to buy that are in infinite quantity. bool _AutoGrayed : 1; // if true then gray the ctrlSheeet if: 1/ Items: Is the Item Locked. 2/ Bricks: is the brick Latent. bool _HasTradeSlotType : 1; // true is the SLOT_TYPE DB field should be taken in account + bool _IsHotbarSlot : 1; // true if the slot is part of the hotbar bool _BrickOverable : 1; // if Type is Brick, display like a button (because LeftClickable). @@ -272,6 +273,7 @@ public: uint32 getItemNameId() const { return (uint32)_NameId.getSInt32();} // New Stack Size sint32 getStackable() const { return (_Stackable>1) ? 999 : 1; } + bool isHotbarSlot() const { return _IsHotbarSlot; } // get non locked quantity (can be zero) sint32 getNonLockedQuantity() const; diff --git a/ryzom/client/src/interface_v3/inventory_manager.cpp b/ryzom/client/src/interface_v3/inventory_manager.cpp index 56dbb176a..ccf75c77c 100644 --- a/ryzom/client/src/interface_v3/inventory_manager.cpp +++ b/ryzom/client/src/interface_v3/inventory_manager.cpp @@ -1030,11 +1030,6 @@ void CInventoryManager::equip(const std::string &bagPath, const std::string &inv inventory = INVENTORIES::equipment; fromString(invPath.substr(22,invPath.size()), invSlot); } - else if (strnicmp(invPath.c_str(),"LOCAL:INVENTORY:HOTBAR",22) == 0) - { - inventory = INVENTORIES::hotbar; - fromString(invPath.substr(23,invPath.size()), invSlot); - } // Hands management : check if we have to unequip left hand because of incompatibility with right hand item sint16 oldRightIndexInBag = NLGUI::CDBManager::getInstance()->getDbProp(invPath + ":INDEX_IN_BAG")->getValue16(); @@ -1168,11 +1163,6 @@ void CInventoryManager::unequip(const std::string &invPath) inventory = INVENTORIES::equipment; fromString(invPath.substr(22,invPath.size()), invSlot); } - else if (strnicmp(invPath.c_str(),"LOCAL:INVENTORY:HOTBAR",22) == 0) - { - inventory = INVENTORIES::hotbar; - fromString(invPath.substr(23,invPath.size()), invSlot); - } // Hands management : check if we have to unequip left hand because of incompatibility with right hand item if (inventory == INVENTORIES::handling && invSlot == 0) @@ -1375,11 +1365,14 @@ void CInventoryManager::CDBEquipObs::update(ICDBNode* node) // Remove Last reference and update database sint16 oldVal = pNL->getOldValue16(); sint16 newVal = pNL->getValue16(); - if (oldVal != 0) - getInventory().unwearBagItem (oldVal-1); + if (sIE != CTRL_HOTBAR_1 && sIE != CTRL_HOTBAR_2 && sIE != CTRL_HOTBAR_3 && sIE != CTRL_HOTBAR_4 && sIE != CTRL_HOTBAR_5) + { + if (oldVal != 0) + getInventory().unwearBagItem (oldVal-1); - if (newVal != 0) - getInventory().wearBagItem (newVal-1); + if (newVal != 0) + getInventory().wearBagItem (newVal-1); + } // Update Display if (newVal == 0) @@ -3120,7 +3113,7 @@ class CHandlerInvDropTo : public IActionHandler { CInterfaceGroup *pIG = CWidgetManager::getInstance()->getModalWindow(); if (pIG == NULL) return; - if (pIG->getId() != "ui:interface:bag_choose" && pIG->getId() != "ui:interface:hotbar_choose") return; + if (pIG->getId() != "ui:interface:bag_choose") return; getInventory().beginDrag(NULL, CInventoryManager::TextList); // Special case for choose in bag dialog @@ -3282,40 +3275,173 @@ class CHandlerInvCannotDrop : public IActionHandler if (!getInventory().isDraggingFromTextList()) { CDBCtrlSheet *pCSDst = dynamic_cast(pCaller); - string invPath = getInventory().getDBIndexPath(pCSDst); - getInventory().unequip(invPath); + if (!pCSDst->isHotbarSlot()) { + string invPath = getInventory().getDBIndexPath(pCSDst); + getInventory().unequip(invPath); + } } getInventory().endDrag(); } }; REGISTER_ACTION_HANDLER( CHandlerInvCannotDrop, "inv_cannot_drop" ); -// ********************************************************************************************************** -class CCanDropToHotbar : public IActionHandler + +// *************************************************************************** +class CHandlerHotbarDropTo : public IActionHandler { virtual void execute (CCtrlBase *pCaller, const string &Params) { CInterfaceManager *pIM = CInterfaceManager::getInstance(); - nlinfo("hey"); + + // Check that we have drag'n'drop from inventory (list or slot) + // Or if we have launched the choose_bag modal + // To prevent other things to happens string src = getParam(Params, "src"); CInterfaceElement *pElt = CWidgetManager::getInstance()->getElementFromId(src); CDBCtrlSheet *pCSSrc = dynamic_cast(pElt); - CDBCtrlSheet *pCSDst = dynamic_cast(pCaller); - if (!pCSSrc || !pCSDst) return; - - // Exchange can only be done from bag to exchange inventories - uint32 srcInventory = pCSSrc->getSecondIndexInDB(); - if ( - srcInventory == INVENTORIES::bag - && getInventory().isInventoryAvailable((INVENTORIES::TInventory) pCSSrc->getSecondIndexInDB()) - && getInventory().isUsableItem(pCSSrc->getSheetId()) - ) - { - pCSDst->setCanDrop ( true ); - } + CDBCtrlSheet *pCSDst = dynamic_cast(pCaller); + CAHManager::getInstance()->runActionHandler("swap_item", pCSDst, "src="+toString(pCSSrc->getId())); + getInventory().endDrag(); + // if (!getInventory().isDragging()) + // { + // CInterfaceGroup *pIG = CWidgetManager::getInstance()->getModalWindow(); + // if (pIG == NULL) return; + // if (pIG->getId() != "ui:interface:bag_choose") return; + // getInventory().beginDrag(NULL, CInventoryManager::TextList); + + // // Special case for choose in bag dialog + // string src = getParam(Params, "src"); + // CInterfaceElement *pElt = CWidgetManager::getInstance()->getElementFromId(src); + // CDBCtrlSheet *pCSSrc = dynamic_cast(pElt); + // CDBCtrlSheet *pCSDst = dynamic_cast(pCaller); + + // string invPath = getInventory().getDBIndexPath(pCSSrc); + // string bagPath = pCSDst->getSheet(); + + // if (bagPath == "UI:EMPTY") + // CAHManager::getInstance()->runActionHandler("swap_item", pCSDst, "src="+toString(pCSSrc->getId())); + // else + // getInventory().equip (bagPath, invPath); + + // getInventory().endDrag(); + // return; + // } + + // string src = getParam(Params, "src"); + // CInterfaceElement *pElt = CWidgetManager::getInstance()->getElementFromId(src); + // CDBCtrlSheet *pCSSrc = dynamic_cast(pElt); + // CDBCtrlSheet *pCSDst = dynamic_cast(pCaller); + // if (pCSSrc == NULL) return; + + // // Is the dragged sheet comes from an inventory list + // if (getInventory().isDraggingFromTextList() || getInventory().isDraggingFromIconList()) + // { + // // If the destination is an equipment slot ? + // if (pCSDst != NULL) + // { + // string invPath = getInventory().getDBIndexPath(pCSDst); // Get the index in the equipment + // if (!invPath.empty()) + // { + // // Drop to the slot ie write the database with the index of the slot + // string bagPath = pCSSrc->getSheet(); // Get the database branch of the dragged sheet + + // if (pCSSrc && pCSSrc->getType() == CCtrlSheetInfo::SheetType_Item) + // if (pCSDst && pCSDst->getType() == CCtrlSheetInfo::SheetType_Item) + // { + // // If the destination slot match with the type of incoming item + // if (pCSDst->canDropItem(pCSSrc)) + // { + // // So directly equip + // getInventory().equip(bagPath, invPath); + // } + // else + // { + // // Else try to auto equip the player with the incoming item + // const string sTmp = bagPath.substr(bagPath.rfind(':')+1,bagPath.size()); + // sint index; + // fromString(sTmp, index); + // if (!getInventory().autoEquip(index, false)) + // getInventory().autoEquip(index, true); + // } + // } + // getInventory().endDrag(); + // return; + // } + // } + + // // If the destination is a list sheet + // IListSheetBase *pListDst = dynamic_cast(pCaller); + // if ((pListDst == NULL) && (pCSDst != NULL)) + // pListDst = IListSheetBase::getListContaining(pCSDst); + // IListSheetBase *pListSrc = IListSheetBase::getListContaining(pCSSrc); + // if ((pListDst != NULL) && (pListSrc != NULL)) + // { + // // If the source list and destination list are the same + // if (pListDst == pListSrc) + // { + // // no op + // getInventory().endDrag(); + // return; + // } + // else // Source list and destination list are not the same + // { + // // Move the item to the destination list using the procedure move_to_xxx + // CDBGroupListSheetBag *pListDstText = dynamic_cast(pListDst); + // CDBGroupIconListBag *pListDstIcon = dynamic_cast(pListDst); + + // if (((pListDstText != NULL) && (pListDstText->getInvType() == CInventoryManager::InvBag)) || + // ((pListDstIcon != NULL) && (pListDstIcon->getInvType() == CInventoryManager::InvBag))) + // { + // CAHManager::getInstance()->runActionHandler("proc", pCSSrc, "move_to_bag"); + // } + // else if (((pListDstText != NULL) && ((pListDstText->getInvType() == CInventoryManager::InvPA0) || + // (pListDstText->getInvType() == CInventoryManager::InvPA1) || + // (pListDstText->getInvType() == CInventoryManager::InvPA2) || + // (pListDstText->getInvType() == CInventoryManager::InvPA3) || + // (pListDstText->getInvType() == CInventoryManager::InvPA4) || + // (pListDstText->getInvType() == CInventoryManager::InvPA5) || + // (pListDstText->getInvType() == CInventoryManager::InvPA6) + // )) || + // ((pListDstIcon != NULL) && ((pListDstIcon->getInvType() == CInventoryManager::InvPA0) || + // (pListDstIcon->getInvType() == CInventoryManager::InvPA1) || + // (pListDstIcon->getInvType() == CInventoryManager::InvPA2) || + // (pListDstIcon->getInvType() == CInventoryManager::InvPA3) || + // (pListDstIcon->getInvType() == CInventoryManager::InvPA4) || + // (pListDstIcon->getInvType() == CInventoryManager::InvPA5) || + // (pListDstIcon->getInvType() == CInventoryManager::InvPA6) + // ))) + // { + // string sTmp; + // if (pListDstText != NULL) sTmp = toString("%d",pListDstText->getInvType()-CInventoryManager::InvPA0); + // if (pListDstIcon != NULL) sTmp = toString("%d",pListDstIcon->getInvType()-CInventoryManager::InvPA0); + // nlinfo("ici :%s", sTmp.c_str()); + // CAHManager::getInstance()->runActionHandler("proc", pCSSrc, "move_to_pa|"+sTmp); + // } + // else if (((pListDstText != NULL) && (pListDstText->getInvType() == CInventoryManager::InvGuild)) || + // ((pListDstIcon != NULL) && (pListDstIcon->getInvType() == CInventoryManager::InvGuild))) + // { + // CAHManager::getInstance()->runActionHandler("proc", pCSSrc, "move_to_guild"); + // } + // else if (((pListDstText != NULL) && (pListDstText->getInvType() == CInventoryManager::InvRoom)) || + // ((pListDstIcon != NULL) && (pListDstIcon->getInvType() == CInventoryManager::InvRoom))) + // { + // CAHManager::getInstance()->runActionHandler("proc", pCSSrc, "move_to_room"); + // } + // } + // } + // } + + // // Is the dragged sheet comes from another slot + // if (pCSDst != NULL) + // if (getInventory().isDraggingFromSlot()) + // { + // CAHManager::getInstance()->runActionHandler("swap_item", pCSDst, "src="+toString(pCSSrc->getId())); + // } + + // CAHManager::getInstance()->runActionHandler("inv_cannot_drop", pCSSrc); } }; -REGISTER_ACTION_HANDLER (CCanDropToHotbar, "can_drop_to_hotbar"); +REGISTER_ACTION_HANDLER( CHandlerHotbarDropTo, "hotbar_drop" ); // ********************************************************************************************************** class CHotbarLeftClickOnSlotHandler : public IActionHandler diff --git a/ryzom/common/src/game_share/inventories.cpp b/ryzom/common/src/game_share/inventories.cpp index bb867f992..f4ee24915 100644 --- a/ryzom/common/src/game_share/inventories.cpp +++ b/ryzom/common/src/game_share/inventories.cpp @@ -33,7 +33,6 @@ namespace INVENTORIES NL_STRING_CONVERSION_TABLE_ENTRY(handling) NL_STRING_CONVERSION_TABLE_ENTRY(temporary) NL_STRING_CONVERSION_TABLE_ENTRY(equipment) - NL_STRING_CONVERSION_TABLE_ENTRY(hotbar) NL_STRING_CONVERSION_TABLE_ENTRY(bag) NL_STRING_CONVERSION_TABLE_ENTRY(pet_animal1) NL_STRING_CONVERSION_TABLE_ENTRY(pet_animal2) @@ -50,6 +49,7 @@ namespace INVENTORIES NL_STRING_CONVERSION_TABLE_ENTRY(reward_sharing) NL_STRING_CONVERSION_TABLE_ENTRY(guild) NL_STRING_CONVERSION_TABLE_ENTRY(player_room) + NL_STRING_CONVERSION_TABLE_ENTRY(hotbar) NL_END_STRING_CONVERSION_TABLE(TInventory, InventoryToString, UNDEFINED) @@ -95,7 +95,6 @@ namespace INVENTORIES "TEMP", // temporary // "", // pick-up "EQUIP", // equipment - "HOTBAR", // hotbar "", // bag "", // pack_animal1 "", // pack_animal2 @@ -110,6 +109,7 @@ namespace INVENTORIES // "", // exchange_proposition "", // guild "", // player_room + "HOTBAR", // hotbar "" // unknown }; diff --git a/ryzom/common/src/game_share/inventories.h b/ryzom/common/src/game_share/inventories.h index 7142140f4..076038950 100644 --- a/ryzom/common/src/game_share/inventories.h +++ b/ryzom/common/src/game_share/inventories.h @@ -158,9 +158,8 @@ namespace INVENTORIES handling = 0, temporary, // 1 equipment, // 2 - hotbar, // 3 - bag, // 4 - pet_animal, // 5 Character can have 7 pack animal + bag, // 3 + pet_animal, // 4 Character can have 7 pack animal pet_animal1 = pet_animal, // for toString => TInventory convertion pet_animal2, pet_animal3, @@ -168,17 +167,18 @@ namespace INVENTORIES pet_animal5, pet_animal6, pet_animal7, - max_pet_animal, // 12 - NUM_INVENTORY = max_pet_animal, // 12 - UNDEFINED = NUM_INVENTORY, // 12 + max_pet_animal, // 11 + NUM_INVENTORY = max_pet_animal, // 11 + UNDEFINED = NUM_INVENTORY, // 11 - exchange, // 13 This is not a bug : exchange is a fake inventory - exchange_proposition, // 14 and should not count in the number of inventory + exchange, // 12 This is not a bug : exchange is a fake inventory + exchange_proposition, // 13 and should not count in the number of inventory // same for botChat trading. - trading, // 15 - reward_sharing, // 16 fake inventory, not in database.xml. Used by the item info protocol only - guild, // 17 (warning: number stored in guild saved file) - player_room, // 18 + trading, // 14 + reward_sharing, // 15 fake inventory, not in database.xml. Used by the item info protocol only + guild, // 16 (warning: number stored in guild saved file) + player_room, // 17 + hotbar, // 18 NUM_ALL_INVENTORY // warning: distinct from NUM_INVENTORY }; diff --git a/ryzom/common/src/game_share/object.h b/ryzom/common/src/game_share/object.h index 5e8868256..5b8c1c45d 100644 --- a/ryzom/common/src/game_share/object.h +++ b/ryzom/common/src/game_share/object.h @@ -291,40 +291,40 @@ public: explicit CObjectNumber(double value); explicit CObjectNumber(sint64 value); - virtual const char *getTypeAsString() const; + virtual const char *getTypeAsString() const NL_OVERRIDE; - virtual bool set(const std::string& key, sint64 value); - virtual bool set(const std::string& key, double value); - virtual bool set(const std::string& key, const std::string&value); + virtual bool set(const std::string& key, sint64 value) NL_OVERRIDE; + virtual bool set(const std::string& key, double value) NL_OVERRIDE; + virtual bool set(const std::string& key, const std::string&value) NL_OVERRIDE; - virtual bool setObject(const std::string& key, CObject* value); + virtual bool setObject(const std::string& key, CObject* value) NL_OVERRIDE; - virtual CObject* clone() const; + virtual CObject* clone() const NL_OVERRIDE; double getNumberValue() const { return m_IsInteger ? m_Value.Integer : m_Value.Number; } sint64 getIntegerValue() const { return m_IsInteger ? m_Value.Integer : m_Value.Number; } - virtual void dump(const std::string prefix = "", uint depth = 0) const; + virtual void dump(const std::string prefix = "", uint depth = 0) const NL_OVERRIDE; - virtual bool equal(const CObject* other) const; + virtual bool equal(const CObject* other) const NL_OVERRIDE; protected: - virtual void doSerialize(std::string& out, CSerializeContext& context) const; + virtual void doSerialize(std::string& out, CSerializeContext& context) const NL_OVERRIDE; - virtual bool doIsNumber() const; + virtual bool doIsNumber() const NL_OVERRIDE; - virtual double doToNumber() const; + virtual double doToNumber() const NL_OVERRIDE; - virtual bool doIsInteger() const; + virtual bool doIsInteger() const NL_OVERRIDE; - virtual sint64 doToInteger() const; + virtual sint64 doToInteger() const NL_OVERRIDE; - virtual std::string doToString() const; + virtual std::string doToString() const NL_OVERRIDE; - virtual void inPlaceCopyTo(CObject &dest) const; - virtual void inPlaceCopy(const CObjectNumber &src); + virtual void inPlaceCopyTo(CObject &dest) const NL_OVERRIDE; + virtual void inPlaceCopy(const CObjectNumber &src) NL_OVERRIDE; - virtual void visitInternal(IObjectVisitor &visitor); + virtual void visitInternal(IObjectVisitor &visitor) NL_OVERRIDE; private: bool m_IsInteger;