Added to booleans
1. selectable | if this is false, you cant select the unit. 2. commandable | if this is false, you cant give the units commands. I advise to set a non-selectable unit to non-commandable too if you want to make a normal unit morph into it.
This commit is contained in:
parent
6fc59dc5f2
commit
72828c39a3
|
@ -71,6 +71,16 @@ bool Selection::select(Unit *unit) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if selectable
|
||||||
|
if(unit->getType()->isSelectable() == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if selectable
|
||||||
|
if(unit->getType()->isCommandable() == false && isEmpty() == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//check if multisel
|
//check if multisel
|
||||||
if(unit->getType()->getMultiSelect() == false && isEmpty() == false) {
|
if(unit->getType()->getMultiSelect() == false && isEmpty() == false) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -181,7 +191,8 @@ bool Selection::isCommandable() const {
|
||||||
return
|
return
|
||||||
isEmpty() == false &&
|
isEmpty() == false &&
|
||||||
isEnemy() == false &&
|
isEnemy() == false &&
|
||||||
(selectedUnits.size() == 1 && selectedUnits.front()->isAlive() == false) == false;
|
(selectedUnits.size() == 1 && selectedUnits.front()->isAlive() == false) == false &&
|
||||||
|
selectedUnits.front()->getType()->isCommandable();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Selection::isCancelable() const {
|
bool Selection::isCancelable() const {
|
||||||
|
|
|
@ -89,6 +89,8 @@ UnitType::UnitType() : ProducibleType() {
|
||||||
lightColor= Vec3f(0.f);
|
lightColor= Vec3f(0.f);
|
||||||
light= false;
|
light= false;
|
||||||
multiSelect= false;
|
multiSelect= false;
|
||||||
|
selectable= true;
|
||||||
|
commandable= true;
|
||||||
armorType= NULL;
|
armorType= NULL;
|
||||||
rotatedBuildPos=0;
|
rotatedBuildPos=0;
|
||||||
|
|
||||||
|
@ -333,6 +335,14 @@ void UnitType::loaddd(int id,const string &dir, const TechTree *techTree,
|
||||||
//multi selection
|
//multi selection
|
||||||
multiSelect= parametersNode->getChild("multi-selection")->getAttribute("value")->getBoolValue();
|
multiSelect= parametersNode->getChild("multi-selection")->getAttribute("value")->getBoolValue();
|
||||||
|
|
||||||
|
//selectable
|
||||||
|
if(parametersNode->hasChild("selectable")){
|
||||||
|
selectable= parametersNode->getChild("selectable")->getAttribute("value")->getBoolValue();
|
||||||
|
}
|
||||||
|
//commandable
|
||||||
|
if(parametersNode->hasChild("commandable")){
|
||||||
|
commandable= parametersNode->getChild("commandable")->getAttribute("value")->getBoolValue();
|
||||||
|
}
|
||||||
//cellmap
|
//cellmap
|
||||||
allowEmptyCellMap = false;
|
allowEmptyCellMap = false;
|
||||||
const XmlNode *cellMapNode= parametersNode->getChild("cellmap");
|
const XmlNode *cellMapNode= parametersNode->getChild("cellmap");
|
||||||
|
@ -1240,6 +1250,8 @@ std::string UnitType::toString() const {
|
||||||
result += " light = " + intToStr(light);
|
result += " light = " + intToStr(light);
|
||||||
result += " lightColor = " + lightColor.getString();
|
result += " lightColor = " + lightColor.getString();
|
||||||
result += " multiSelect = " + intToStr(multiSelect);
|
result += " multiSelect = " + intToStr(multiSelect);
|
||||||
|
result += " selectable = " + intToStr(selectable);
|
||||||
|
result += " commandable = " + intToStr(commandable);
|
||||||
result += " sight = " + intToStr(sight);
|
result += " sight = " + intToStr(sight);
|
||||||
result += " size = " + intToStr(size);
|
result += " size = " + intToStr(size);
|
||||||
result += " height = " + intToStr(height);
|
result += " height = " + intToStr(height);
|
||||||
|
|
|
@ -171,6 +171,8 @@ private:
|
||||||
bool light;
|
bool light;
|
||||||
Vec3f lightColor;
|
Vec3f lightColor;
|
||||||
bool multiSelect;
|
bool multiSelect;
|
||||||
|
bool selectable;
|
||||||
|
bool commandable;
|
||||||
int sight;
|
int sight;
|
||||||
int size; //size in cells
|
int size; //size in cells
|
||||||
int renderSize; //size to render in cells
|
int renderSize; //size to render in cells
|
||||||
|
@ -255,6 +257,8 @@ public:
|
||||||
inline bool getRotationAllowed() const {return rotationAllowed;}
|
inline bool getRotationAllowed() const {return rotationAllowed;}
|
||||||
inline Vec3f getLightColor() const {return lightColor;}
|
inline Vec3f getLightColor() const {return lightColor;}
|
||||||
inline bool getMultiSelect() const {return multiSelect;}
|
inline bool getMultiSelect() const {return multiSelect;}
|
||||||
|
inline bool isSelectable() const {return selectable;}
|
||||||
|
inline bool isCommandable() const {return commandable;}
|
||||||
inline int getSight() const {return sight;}
|
inline int getSight() const {return sight;}
|
||||||
inline int getSize() const {return size;}
|
inline int getSize() const {return size;}
|
||||||
inline int getRenderSize() const {return renderSize;}
|
inline int getRenderSize() const {return renderSize;}
|
||||||
|
|
Loading…
Reference in New Issue