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;
}
Ejemplo n.º 3
0
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;
}