1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-26 03:52:01 +02:00

Garrison: Clarify upg by turning into a class enum

This commit is contained in:
Sandy Carter 2015-08-24 17:40:12 -04:00
parent b008d24c68
commit cd13807115
2 changed files with 26 additions and 21 deletions

View File

@ -71,7 +71,7 @@ void CGarrisonSlot::hover (bool on)
}
else
{
if(upg)
if(upg == EGarrisonType::UP)
{
temp = CGI->generaltexth->tcommands[32]; //Select %s (visiting)
}
@ -119,13 +119,13 @@ void CGarrisonSlot::hover (bool on)
const CArmedInstance * CGarrisonSlot::getObj() const
{
return (!upg)?(owner->armedObjs[0]):(owner->armedObjs[1]);
return owner->armedObjs[upg];
}
/// @return Whether the unit in the slot belongs to the current player.
bool CGarrisonSlot::our() const
{
return upg?(owner->owned[1]):(owner->owned[0]);
return owner->owned[upg];
}
/// @return Whether the unit in the slot belongs to an ally but not to the current player.
@ -255,8 +255,8 @@ void CGarrisonSlot::clickLeft(tribool down, bool previousState)
else if (!( ( selection->our()//our creature is selected
|| selection->creature == creature )//or we are rebalancing army
&& ( owner->removableUnits
|| (upg == 0 && ( selection->upg == 1 && !creature ) )
|| (upg == 1 && selection->upg == 1 ) ) ))
|| (upg == EGarrisonType::UP && ( selection->upg == EGarrisonType::down && !creature ) )
|| (upg == EGarrisonType::down && selection->upg == EGarrisonType::down ) ) ))
{
// Highlight
if(creature)
@ -270,17 +270,16 @@ void CGarrisonSlot::clickLeft(tribool down, bool previousState)
refr = split();
// swap
else if(creature != selection->creature)
LOCPLINT->cb->swapCreatures(
(!upg)?(owner->armedObjs[0]):(owner->armedObjs[1]),
(!selection->upg)?(owner->armedObjs[0]):(owner->armedObjs[1]),
ID,selection->ID);
LOCPLINT->cb->swapCreatures(owner->armedObjs[upg], owner->armedObjs[selection->upg], ID, selection->ID);
// merge
else
LOCPLINT->cb->mergeStacks(
(!selection->upg)?(owner->armedObjs[0]):(owner->armedObjs[1]),
(!upg)?(owner->armedObjs[0]):(owner->armedObjs[1]),
selection->ID,ID);
if(refr) {hover(false); hover(true); } //to refresh statusbar
LOCPLINT->cb->mergeStacks(owner->armedObjs[selection->upg], owner->armedObjs[upg], selection->ID, ID);
if(refr)
{
// Refresh Statusbar
hover(false);
hover(true);
}
}
}
@ -314,7 +313,7 @@ void CGarrisonSlot::update()
}
}
CGarrisonSlot::CGarrisonSlot(CGarrisonInt *Owner, int x, int y, SlotID IID, int Upg, const CStackInstance * Creature):
CGarrisonSlot::CGarrisonSlot(CGarrisonInt *Owner, int x, int y, SlotID IID, CGarrisonSlot::EGarrisonType Upg, const CStackInstance * Creature):
ID(IID),
owner(Owner),
myStack(Creature),
@ -362,7 +361,7 @@ void CGarrisonInt::addSplitBtn(CButton * button)
button->block(getSelection() == nullptr);
}
void CGarrisonInt::createSet(std::vector<CGarrisonSlot*> &ret, const CCreatureSet * set, int posX, int posY, int distance, int Upg )
void CGarrisonInt::createSet(std::vector<CGarrisonSlot*> &ret, const CCreatureSet * set, int posX, int posY, int distance, CGarrisonSlot::EGarrisonType Upg )
{
ret.resize(7);
@ -392,8 +391,8 @@ void CGarrisonInt::createSlots()
int width = smallIcons? 32 : 58;
createSet(slotsUp, armedObjs[0], 0, 0, width+interx, 0);
createSet(slotsDown, armedObjs[1], garOffset.x, garOffset.y, width+interx, 1);
createSet(slotsUp, armedObjs[0], 0, 0, width+interx, CGarrisonSlot::EGarrisonType::UP);
createSet(slotsDown, armedObjs[1], garOffset.x, garOffset.y, width+interx, CGarrisonSlot::EGarrisonType::DOWN);
}
void CGarrisonInt::recreateSlots()

View File

@ -28,7 +28,13 @@ class CGarrisonSlot : public CIntObject
CGarrisonInt *owner;
const CStackInstance *myStack; //nullptr if slot is empty
const CCreature *creature;
int upg; //0 - up garrison, 1 - down garrison
/// Type of Garrison for slot (up or down)
enum EGarrisonType
{
UP=0, ///< 0 - up garrison (Garrisoned)
DOWN, ///< 1 - down garrison (Visiting)
} upg; ///< Flag indicating if it is the up or down garrison
CAnimImage * creatureImage;
CAnimImage * selectionImage; // image for selection, not always visible
@ -47,7 +53,7 @@ public:
void clickRight(tribool down, bool previousState);
void clickLeft(tribool down, bool previousState);
void update();
CGarrisonSlot(CGarrisonInt *Owner, int x, int y, SlotID IID, int Upg=0, const CStackInstance * Creature=nullptr);
CGarrisonSlot(CGarrisonInt *Owner, int x, int y, SlotID IID, EGarrisonType Upg=EGarrisonType::UP, const CStackInstance * Creature=nullptr);
friend class CGarrisonInt;
};
@ -87,7 +93,7 @@ public:
void setArmy(const CArmedInstance *army, bool bottomGarrison);
void addSplitBtn(CButton * button);
void createSet(std::vector<CGarrisonSlot*> &ret, const CCreatureSet * set, int posX, int distance, int posY, int Upg );
void createSet(std::vector<CGarrisonSlot*> &ret, const CCreatureSet * set, int posX, int distance, int posY, CGarrisonSlot::EGarrisonType Upg );
void createSlots();
void recreateSlots();