bool AttributeMap::Change( uint32 attributeID, EvilNumber& old_val, EvilNumber& new_val )
{
   Notify_OnModuleAttributeChange modChange;

	modChange.ownerID = mItem.ownerID();
	modChange.itemKey = mItem.itemID();
	modChange.attributeID = attributeID;
	modChange.time = Win32TimeNow();
	modChange.newValue = new_val.GetPyObject();
	modChange.oldValue = old_val.GetPyObject();

	return SendAttributeChanges(modChange.Encode());
}
bool AttributeMap::Change( uint32 attributeID, EvilNumber& old_val, EvilNumber& new_val )
{
    mChanged = true;
    PyTuple* AttrChange = new PyTuple(7);
    AttrChange->SetItem(0, new PyString("OnModuleAttributeChange"));
    AttrChange->SetItem(1, new PyInt(mItem.ownerID()));
    AttrChange->SetItem(2, new PyInt(mItem.itemID()));
    AttrChange->SetItem(3, new PyInt(attributeID));
    AttrChange->SetItem(4, new PyLong(Win32TimeNow()));
    AttrChange->SetItem(5, old_val.GetPyObject());
    AttrChange->SetItem(6, new_val.GetPyObject());

    return SendAttributeChanges(AttrChange);
}
Exemple #3
0
/*
 * InventoryEx
 */
void InventoryEx::ValidateAddItem(EVEItemFlags flag, InventoryItemRef item) const
{
    //double volume = item->quantity() * item->volume();
    EvilNumber volume = item->GetAttribute(AttrQuantity) * item->GetAttribute(AttrVolume);
    double capacity = GetRemainingCapacity( flag );
    if( volume > capacity )
    {
        std::map<std::string, PyRep *> args;

        args["available"] = new PyFloat( capacity );
        args["volume"] = volume.GetPyObject();

        throw PyException( MakeUserError( "NotEnoughCargoSpace", args ) );
    }
}