Esempio n. 1
0
	bool ActorInventory::equip(int id, int count) {
		DASSERT(isValidId(id) && count > 0);

		Item item = m_entries[id].item;
		ItemType::Type type = item.type();
		if((type != ItemType::weapon && type != ItemType::armour && type != ItemType::ammo) || !count)
			return false;
		if(type == ItemType::ammo && m_weapon.proto().ammo_class_id != Ammo(item).classId())
			return false;

		Entry old_ammo = m_ammo;
		unequip(type);

		if(type == ItemType::ammo) {
			if(old_ammo.item == item)
				count += old_ammo.count;
			count = min(count, m_weapon.maxAmmo());
		}
		else
			count = min(count, 1);
		count = min(count, m_entries[id].count);

		remove(id, count);

		if(type == ItemType::weapon)
			m_weapon = item;
		else if(type == ItemType::armour)
			m_armour = item;
		else if(type == ItemType::ammo) {
			m_ammo.item = item;
			m_ammo.count = count;
		}

		return true;
	}
Esempio n. 2
0
bool DataMapper<Subclass, T, I>::save(T * model)
{
    if (!model)
    {
        return false;
    }

    Identity id = idOf(model);
    QVariantMap record;
    buildRecordFrom(model, record);

    QList<QString> variables = record.keys();

    if (isValidId(id))
    {
        record[identityFieldName()] = id;

        QSqlQuery query = getDatabase().build(UPDATE(table()).SET(variables).WHERE(identityFieldName() + " = :" + identityFieldName()), record);

        query.exec();
    }
    else
    {
        QSqlQuery query = getDatabase().build(INSERT().INTO(table()).SET(variables, true), record);

        if (query.exec())
        {
            Identity id = query.lastInsertId().value<Identity>();

            if (isValidId(id))
            {
                m_identities.registerModel(id, model);
            }
        }
    }

    saveRelationsOf(model);

    return true;
}
Esempio n. 3
0
void ModelNode::setId(const QString& id)
{
    Internal::WriteLocker locker(m_model.data());
    if (!isValid()) {
        Q_ASSERT_X(isValid(), Q_FUNC_INFO, "model node is invalid");
        throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
    }

    if (!isValidId(id))
        throw InvalidIdException(__LINE__, __FUNCTION__, __FILE__, id, InvalidIdException::InvalidCharacters);

    if (id == ModelNode::id())
        return;

    if (view()->hasId(id))
        throw InvalidIdException(__LINE__, __FUNCTION__, __FILE__, id, InvalidIdException::DuplicateId);

    m_model.data()->d->changeNodeId(internalNode(), id);
}
Esempio n. 4
0
void Teacher::setEmployeeID(string employeeID) {
	if (isValidId(employeeID)) {
		m_employeeID = employeeID;
	}
}