void BattleCharacterEquipment::removeEquipment(EquipmentPiece *equipment) {
	switch (equipment->getType()) {
	case EquipmentPiece::WEAPON:
		{
			Weapon *weapon = dynamic_cast<Weapon*>(equipment);
			switch (weapon->getSubtype()) {
			case Weapon::MAINHAND:
				setMainhand(0);
				break;
			case Weapon::OFFHAND:
				setOffhand(0);
				break;
			case Weapon::TWOHANDED:
				setTwohanded(0);
				break;
			}
		}
		break;
	case EquipmentPiece::ARMOR:
		{
			Armor *armor = dynamic_cast<Armor*>(equipment);
			switch (armor->getSubtype()) {
			case Armor::HELMET:
				setHelmet(0);
				break;
			case Armor::TORSO:
				setTorso(0);
				break;
			case Armor::LEGGINGS:
				setLeggings(0);
				break;
			case Armor::GLOVES:
				setGloves(0);
				break;
			case Armor::BOOTS:
				setBoots(0);
				break;
			}
		}
		break;
	case EquipmentPiece::ACCESSORY:
		{
			Accessory *accessory = dynamic_cast<Accessory*>(equipment);
			switch (accessory->getSubtype()) {
			case Accessory::EARRING:
				setEarring(0);
				break;
			case Accessory::NECKLACE:
				setNecklace(0);
				break;
			case Accessory::RING:
				setRing(0);
				break;
			}
		}
		break;
	}
}
bool MenuEquipmentScreen::equipmentFilter(EquipmentPiece *equipment) {
	// Filter by type (Weapon, Armor or Accessory)
	EquipmentPiece::Type typeFilter;
	if (_equippedEquipmentItems.indexOf(_currentEquippedEquipmentItem) < 2)
		typeFilter = EquipmentPiece::WEAPON;
	else if (_equippedEquipmentItems.indexOf(_currentEquippedEquipmentItem) < 7)
		typeFilter = EquipmentPiece::ARMOR;
	else
		typeFilter = EquipmentPiece::ACCESSORY;

	if (equipment->getType() != typeFilter)
		return false;

	// Filter by subtype
	if (typeFilter == EquipmentPiece::WEAPON) {
		Weapon *weapon = dynamic_cast<Weapon*>(equipment);
		int subTypeFilter = _equippedEquipmentItems.indexOf(_currentEquippedEquipmentItem);

		if ((weapon->getSubtype() != Weapon::TWOHANDED) && (subTypeFilter != weapon->getSubtype()))
			return false;

	} else if (typeFilter == EquipmentPiece::ARMOR) {
		Armor *armor = dynamic_cast<Armor*>(equipment);
		int subTypeFilter = _equippedEquipmentItems.indexOf(_currentEquippedEquipmentItem);

		if (subTypeFilter != armor->getSubtype())
			return false;

	} else if (typeFilter == EquipmentPiece::ACCESSORY) {
		Accessory *accessory = dynamic_cast<Accessory*>(equipment);
		int subTypeFilter = _equippedEquipmentItems.indexOf(_currentEquippedEquipmentItem);

		if (subTypeFilter != accessory->getSubtype())
			return false;
	}

	QVector<QPair<Class*, int>> classes = equipment->getClasses();
	for (int i = 0; i < classes.size(); i++) {
		QPair<Class*, int> it = classes.at(i);
		if ((it.first == _character->getClass()) && (it.second <= _character->getLevel()))
			return true;
	}

	return false;
}