Strictify item variety enum
This commit is contained in:
@@ -95,17 +95,17 @@ unsigned char cItemRec::rec_treas_class() const {
|
||||
|
||||
short cItemRec::item_weight() const {
|
||||
short n = charges, w = weight;
|
||||
if (variety == 0)
|
||||
if (variety == eItemType::NO_ITEM)
|
||||
return 0;
|
||||
if(charges > 0){
|
||||
if((variety == 5) || (variety == 6) || (variety == 7) || (variety == 24))
|
||||
if((variety == eItemType::ARROW) || (variety == eItemType::THROWN_MISSILE) || (variety == eItemType::POTION) || (variety == eItemType::BOLTS))
|
||||
return n * w;
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
cItemRec::cItemRec(){
|
||||
variety = ITEM_TYPE_NO_ITEM;
|
||||
variety = eItemType::NO_ITEM;
|
||||
item_level = 0;
|
||||
awkward = 0;
|
||||
bonus = 0;
|
||||
@@ -147,7 +147,7 @@ cItemRec::cItemRec(long preset){
|
||||
reserved2 = 0;
|
||||
switch(preset){
|
||||
case 'nife':
|
||||
variety = ITEM_TYPE_ONE_HANDED;
|
||||
variety = eItemType::ONE_HANDED;
|
||||
item_level = 4;
|
||||
awkward = 0;
|
||||
bonus = 1;
|
||||
@@ -163,7 +163,7 @@ cItemRec::cItemRec(long preset){
|
||||
ident = true;
|
||||
break;
|
||||
case 'buck':
|
||||
variety = ITEM_TYPE_SHIELD;
|
||||
variety = eItemType::SHIELD;
|
||||
item_level = 1;
|
||||
awkward = 1;
|
||||
bonus = 0;
|
||||
@@ -179,7 +179,7 @@ cItemRec::cItemRec(long preset){
|
||||
ident = true;
|
||||
break;
|
||||
case 'bow ':
|
||||
variety = ITEM_TYPE_BOW;
|
||||
variety = eItemType::BOW;
|
||||
item_level = 0;
|
||||
awkward = 0;
|
||||
bonus = 0;
|
||||
@@ -195,7 +195,7 @@ cItemRec::cItemRec(long preset){
|
||||
ident = true;
|
||||
break;
|
||||
case 'arrw':
|
||||
variety = ITEM_TYPE_ARROW;
|
||||
variety = eItemType::ARROW;
|
||||
item_level = 12;
|
||||
awkward = 0;
|
||||
bonus = 0;
|
||||
@@ -211,7 +211,7 @@ cItemRec::cItemRec(long preset){
|
||||
ident = true;
|
||||
break;
|
||||
case 'pole':
|
||||
variety = ITEM_TYPE_TWO_HANDED;
|
||||
variety = eItemType::TWO_HANDED;
|
||||
item_level = 9;
|
||||
awkward = 0;
|
||||
bonus = 0;
|
||||
@@ -227,7 +227,7 @@ cItemRec::cItemRec(long preset){
|
||||
ident = true;
|
||||
break;
|
||||
case 'helm':
|
||||
variety = ITEM_TYPE_HELM;
|
||||
variety = eItemType::HELM;
|
||||
item_level = 1;
|
||||
awkward = 0;
|
||||
bonus = 0;
|
||||
@@ -243,7 +243,7 @@ cItemRec::cItemRec(long preset){
|
||||
ident = true;
|
||||
break;
|
||||
case 'food':
|
||||
variety = ITEM_TYPE_FOOD;
|
||||
variety = eItemType::FOOD;
|
||||
item_level = 0;
|
||||
awkward = 0;
|
||||
bonus = 0;
|
||||
@@ -259,7 +259,7 @@ cItemRec::cItemRec(long preset){
|
||||
ident = false;
|
||||
break;
|
||||
case 'spel':
|
||||
variety = ITEM_TYPE_NON_USE_OBJECT;
|
||||
variety = eItemType::NON_USE_OBJECT;
|
||||
item_level = 0;
|
||||
awkward = 0;
|
||||
bonus = 0;
|
||||
@@ -275,7 +275,7 @@ cItemRec::cItemRec(long preset){
|
||||
ident = false;
|
||||
break;
|
||||
case 'alch':
|
||||
variety = ITEM_TYPE_POTION;
|
||||
variety = eItemType::POTION;
|
||||
item_level = 0;
|
||||
awkward = 0;
|
||||
bonus = 0;
|
||||
@@ -427,12 +427,13 @@ std::istream& operator >> (std::istream& in, eWeapType& e){
|
||||
return in;
|
||||
}
|
||||
|
||||
// TODO: Perhaps this should understand symbolic names as well?
|
||||
std::istream& operator >> (std::istream& in, eItemType& e){
|
||||
int i;
|
||||
in >> i;
|
||||
if(i > 0 && i < 28)
|
||||
e = (eItemType) i;
|
||||
else e = ITEM_TYPE_NO_ITEM;
|
||||
else e = eItemType::NO_ITEM;
|
||||
return in;
|
||||
}
|
||||
|
||||
|
@@ -294,7 +294,7 @@ void cParty::writeTo(std::ostream& file){
|
||||
file << '\f';
|
||||
for(int i = 0; i < 5; i++)
|
||||
for(int j = 0; j < 10; j++)
|
||||
if(magic_store_items[i][j].variety > ITEM_TYPE_NO_ITEM){
|
||||
if(magic_store_items[i][j].variety != eItemType::NO_ITEM){
|
||||
file << "MAGICSTORE " << i << ' ' << j << '\n';
|
||||
magic_store_items[i][j].writeTo(file);
|
||||
file << '\f';
|
||||
@@ -328,7 +328,7 @@ void cParty::writeTo(std::ostream& file){
|
||||
file << '\f';
|
||||
for(int i = 0; i < 3; i++)
|
||||
for(int j = 0; j < 115; j++)
|
||||
if(stored_items[i][j].variety > ITEM_TYPE_NO_ITEM){
|
||||
if(stored_items[i][j].variety != eItemType::NO_ITEM){
|
||||
file << "STORED " << i << ' ' << j << '\n';
|
||||
stored_items[i][j].writeTo(file);
|
||||
file << '\f';
|
||||
|
@@ -278,7 +278,7 @@ void cPlayer::writeTo(std::ostream& file){
|
||||
file << "POISON " << weap_poisoned << '\n';
|
||||
file << '\f';
|
||||
for(int i; i < 24; i++)
|
||||
if(items[i].variety > ITEM_TYPE_NO_ITEM){
|
||||
if(items[i].variety != eItemType::NO_ITEM){
|
||||
file << "ITEM " << i << '\n';
|
||||
items[i].writeTo(file);
|
||||
file << '\f';
|
||||
|
@@ -250,41 +250,53 @@ enum eWeapType {
|
||||
};
|
||||
|
||||
/* items[i].variety a.k.a item type (in editor) */
|
||||
enum eItemType {
|
||||
ITEM_TYPE_NO_ITEM = 0,
|
||||
ITEM_TYPE_ONE_HANDED = 1,
|
||||
ITEM_TYPE_TWO_HANDED = 2,
|
||||
ITEM_TYPE_GOLD = 3,
|
||||
ITEM_TYPE_BOW = 4,
|
||||
ITEM_TYPE_ARROW = 5,
|
||||
ITEM_TYPE_THROWN_MISSILE = 6,
|
||||
ITEM_TYPE_POTION = 7, // potion/magic item
|
||||
ITEM_TYPE_SCROLL = 8, // scroll/magic item
|
||||
ITEM_TYPE_WAND = 9,
|
||||
ITEM_TYPE_TOOL = 10,
|
||||
ITEM_TYPE_FOOD = 11,
|
||||
ITEM_TYPE_SHIELD = 12,
|
||||
ITEM_TYPE_ARMOR = 13,
|
||||
ITEM_TYPE_HELM = 14,
|
||||
ITEM_TYPE_GLOVES = 15,
|
||||
ITEM_TYPE_SHIELD_2 = 16,
|
||||
enum class eItemType {
|
||||
NO_ITEM = 0,
|
||||
ONE_HANDED = 1,
|
||||
TWO_HANDED = 2,
|
||||
GOLD = 3,
|
||||
BOW = 4,
|
||||
ARROW = 5,
|
||||
THROWN_MISSILE = 6,
|
||||
POTION = 7, // potion/magic item
|
||||
SCROLL = 8, // scroll/magic item
|
||||
WAND = 9,
|
||||
TOOL = 10,
|
||||
FOOD = 11,
|
||||
SHIELD = 12,
|
||||
ARMOR = 13,
|
||||
HELM = 14,
|
||||
GLOVES = 15,
|
||||
SHIELD_2 = 16,
|
||||
// don't know why a second type of shield is used ; it is actually checked
|
||||
// in the armor code (item >= 12 and <= 17)
|
||||
// in the armor code -- see below
|
||||
// and you can't equip another (12) shield while wearing it ... I didn't
|
||||
// find a single item with this property in the bladbase.exs ...
|
||||
ITEM_TYPE_BOOTS = 17,
|
||||
ITEM_TYPE_RING = 18,
|
||||
ITEM_TYPE_NECKLACE = 19,
|
||||
ITEM_TYPE_WEAPON_POISON = 20,
|
||||
ITEM_TYPE_NON_USE_OBJECT = 21,
|
||||
ITEM_TYPE_PANTS = 22,
|
||||
ITEM_TYPE_CROSSBOW = 23,
|
||||
ITEM_TYPE_BOLTS = 24,
|
||||
ITEM_TYPE_MISSILE_NO_AMMO = 25, //e.g slings
|
||||
ITEM_TYPE_UNUSED1 = 26, // these are here solely because they are options in the editor
|
||||
ITEM_TYPE_UNUSED2 = 27,
|
||||
BOOTS = 17,
|
||||
RING = 18,
|
||||
NECKLACE = 19,
|
||||
WEAPON_POISON = 20,
|
||||
NON_USE_OBJECT = 21,
|
||||
PANTS = 22,
|
||||
CROSSBOW = 23,
|
||||
BOLTS = 24,
|
||||
MISSILE_NO_AMMO = 25, //e.g slings
|
||||
UNUSED1 = 26, // these are here solely because they are options in the editor
|
||||
UNUSED2 = 27,
|
||||
};
|
||||
|
||||
inline bool isArmourType(eItemType type) {
|
||||
int code = (int) type;
|
||||
return code >= 12 && code <= 17;
|
||||
}
|
||||
|
||||
inline bool isWeaponType(eItemType type) {
|
||||
if(type == eItemType::CROSSBOW || type == eItemType::BOLTS)
|
||||
return true;
|
||||
int code = (int) type;
|
||||
return code >= 1 && code <= 6 && code != 3;
|
||||
}
|
||||
|
||||
/* items[i].ability */
|
||||
enum eItemAbil {
|
||||
// Weapon abilities
|
||||
|
@@ -739,7 +739,7 @@ void cCurTown::writeTo(std::ostream& file){
|
||||
file << "AT " << p_loc.x << ' ' << p_loc.y << '\n';
|
||||
file << '\f';
|
||||
for(int i; i < 115; i++)
|
||||
if(items[i].variety > ITEM_TYPE_NO_ITEM){
|
||||
if(items[i].variety != eItemType::NO_ITEM){
|
||||
file << "ITEM " << i << '\n';
|
||||
items[i].writeTo(file);
|
||||
file << '\f';
|
||||
|
Reference in New Issue
Block a user