Object::Object(const char *model, float x, float y, float z, float heading, uint8 type, uint32 decay_time) : respawn_timer(0), decay_timer(decay_time) { user = nullptr; last_user = nullptr; ItemInst* inst = nullptr; inst = new ItemInst(ItemInstWorldContainer); // Initialize members m_id = 0; m_inst = (inst) ? inst->Clone() : nullptr; m_type = type; m_icon = 0; m_inuse = false; m_ground_spawn = false; // Set as much struct data as we can memset(&m_data, 0, sizeof(Object_Struct)); m_data.heading = heading; m_data.x = x; m_data.y = y; m_data.z = z; m_data.zone_id = zone->GetZoneID(); if (decay_time) decay_timer.Start(); respawn_timer.Disable(); if(model) strcpy(m_data.object_name, model); else strcpy(m_data.object_name, "IT64_ACTORDEF"); //default object name if model isn't specified for some unknown reason }
void ItemInst::PutItem(uint8 index, const ItemInst& inst) { // Clean up item already in slot (if exists) DeleteItem(index); // Delegate to internal method _PutItem(index, inst.Clone()); }
// Put an item snto specified slot sint16 Inventory::PutItem(sint16 slot_id, const ItemInst& inst) { // Clean up item already in slot (if exists) DeleteItem(slot_id); if (!inst) { // User is effectively deleting the item // in the slot, why hold a null ptr in map<>? return slot_id; } // Delegate to internal method return _PutItem(slot_id, inst.Clone()); }
sint16 Inventory::PushCursor(const ItemInst& inst) { m_cursor.push(inst.Clone()); return SLOT_CURSOR; }