void TColumnDataElement::storeColumn(TXsheet *xsh, int index, int fxFlags)
{
	if (index < 0)
		return;

	bool doClone = (fxFlags & eDoClone);
	bool resetFxDagPositions = (fxFlags & eResetFxDagPositions);

	// Fetch the specified column (if none, return)
	TStageObject *obj = xsh->getStageObject(TStageObjectId::ColumnId(index));
	assert(obj);

	TXshColumn *column = xsh->getColumn(index);
	if (!column)
		return;

	TFx *fx = column->getFx();
	TPointD dagPos;

	if (fx)
		dagPos = fx->getAttributes()->getDagNodePos();
	if (doClone)
		column = column->clone(); // Zerary fxs clone the associated fx (drawn levels do not)
	if (fx && !resetFxDagPositions)
		column->getFx()->getAttributes()->setDagNodePos(dagPos);

	m_column = column;
	storeObject(obj->getId(), xsh);
}
Beispiel #2
0
//=============================================================================
// METHOD    : SPELLwsStorage::storeObjectOrNone
//=============================================================================
void SPELLwsStorage::storeObjectOrNone( PyObject* object )
{
	if (!m_file.is_open()) return;
    if (m_mode == MODE_READ)
    {
        THROW_EXCEPTION("Unable to store object", "Initialized in read mode", SPELL_ERROR_WSTART);
    }
    if (object == NULL)
    {
        // Marshal None to the file
    	storeObject(Py_None);
    }
    else
    {
        storeObject(object);
    }
}
Beispiel #3
0
static status
storeChain(Chain ch, FileObj file)
{ Cell cell;

  TRY(storeSlotsObject(ch, file));
  for_cell(cell, ch)
  { storeCharFile(file, cell == ch->current ? 'E' : 'e');
    TRY( storeObject(cell->value, file) );
  }
Beispiel #4
0
static status
SaveRelationHyper(Hyper h, FileObj f)
{ if ( isSavedObject(h->from) && isSavedObject(h->to) )
  { storeCharFile(f, 's');
    return storeObject(h, f);
  }

  succeed;
}
Beispiel #5
0
static status
storeVector(Vector v, FileObj file)
{ int n;

  TRY(storeSlotsObject(v, file));
  for(n = 0; n < valInt(v->size); n++)
    TRY(storeObject(v->elements[n], file));

  succeed;
}
Beispiel #6
0
//=============================================================================
// METHOD    : SPELLwsStorage::storeLong
//=============================================================================
void SPELLwsStorage::storeLong( long value )
{
	if (!m_file.is_open()) return;
    if (m_mode == MODE_READ)
    {
        THROW_EXCEPTION("Unable to store long value", "Initialized in read mode", SPELL_ERROR_WSTART);
    }
    PyObject* longObject = PyLong_FromLong(value);
    storeObject(longObject);
    Py_XDECREF(longObject);
}
int PetControlDeviceImplementation::handleObjectMenuSelect(CreatureObject* player, byte selectedID) {
	//Logger::info("selected call");

	Reference<TangibleObject*> strongRef = controlledObject.get();

	if (strongRef == NULL)
		return 1;

	AiAgent* pet = cast<AiAgent*>(strongRef.get());

	Reference<PlayerObject*> ghost = player->getPlayerObject();

	if (selectedID == 44) {
		if (pet == NULL) {
			error("null controlled object in pet control device");
			return 1;
		} else {
			Locker crossLocker(pet, player);

			callObject(player);
		}
	} else if (selectedID == 59) {
		if (pet == NULL) {
			error("null controlled object in pet control device");
			return 1;
		} else {
			if (status == 1 && !ghost->hasActivePet(pet)) {
				Locker crossLocker(pet, player);

				callObject(player);
			} else {
				Locker crossLocker(pet, player);

				storeObject(player);
			}
		}
	}

	return 0;
}