bool InventoryReference::SetEquipped(bool bEquipped) { if (m_data.xData) { if (m_data.xData->IsWorn() != bEquipped) { QueueAction(new DeferredEquipAction(m_data)); return true; } } else if (bEquipped) { QueueAction(new DeferredEquipAction(m_data)); return true; } return false; }
bool InventoryReference::MoveToContainer(TESObjectREFR* dest) { ExtraContainerChanges* xChanges = ExtraContainerChanges::GetForRef(dest); if (xChanges && Validate() && m_tempRef && m_containerRef) { //if (m_data.xData && m_data.xData->IsWorn()) { QueueAction(new DeferredRemoveAction(m_data, dest)); return true; //} //else { // //if (m_data.entry->extendData->RemoveIf(ExtraDataListInExtendDataListMatcher(m_data.xData))) { // // SetRemoved(); // // ExtraDataList* newDataList = ExtraDataList::Create(); // // newDataList->Copy(&m_tempRef->extraDataList); // // m_data.entry->Remove(m_data.xData, true); // // return xChanges->Add(m_tempRef->baseForm, newDataList) ? true : false; // //} // SetRemoved(); // ExtraDataList* newDataList = ExtraDataList::Create(); // newDataList->Copy(&m_tempRef->extraDataList); // m_data.entry->Remove(m_data.xData, false); // return xChanges->Add(m_tempRef->baseForm, newDataList) ? true : false; //} } return false; }
void ServerModel::ReceiveAction(ActionPtr spAction) { // apply to this model QueueAction(spAction); // send to client ActionMessage msg(spAction); SendMessage(msg); }
bool InventoryReference::RemoveFromContainer() { if (Validate() && m_tempRef && m_containerRef) { if (m_data.xData && m_data.xData->IsWorn()) { QueueAction(new DeferredRemoveAction(m_data)); return true; } SetRemoved(); if (m_data.xData) return m_data.entry->Remove(m_data.xData, true); else { ExtraContainerChanges* xcc = (ExtraContainerChanges*)m_containerRef->extraDataList.GetByType(0x015); return xcc->Remove(m_data.type); } } return false; }