again new morphing feature: better way to handle the blocked places for morphing units
This commit is contained in:
parent
a4ad1f5aea
commit
5b6ffbd361
|
@ -424,6 +424,7 @@ Unit::Unit(int id, UnitPathInterface *unitpath, const Vec2i &pos,
|
||||||
this->ignoreCheckCommand = false;
|
this->ignoreCheckCommand = false;
|
||||||
this->inBailOutAttempt = false;
|
this->inBailOutAttempt = false;
|
||||||
this->lastHarvestResourceTarget.first = Vec2i(0);
|
this->lastHarvestResourceTarget.first = Vec2i(0);
|
||||||
|
this->morphFieldsBlocked=false;
|
||||||
//this->lastBadHarvestListPurge = 0;
|
//this->lastBadHarvestListPurge = 0;
|
||||||
|
|
||||||
level= NULL;
|
level= NULL;
|
||||||
|
|
|
@ -345,6 +345,7 @@ private:
|
||||||
int progress2;
|
int progress2;
|
||||||
int kills;
|
int kills;
|
||||||
int enemyKills;
|
int enemyKills;
|
||||||
|
bool morphFieldsBlocked;
|
||||||
|
|
||||||
UnitReference targetRef;
|
UnitReference targetRef;
|
||||||
|
|
||||||
|
@ -562,6 +563,10 @@ public:
|
||||||
inline void setCurrField(Field currField) {this->currField= currField;}
|
inline void setCurrField(Field currField) {this->currField= currField;}
|
||||||
void setCurrSkill(const SkillType *currSkill);
|
void setCurrSkill(const SkillType *currSkill);
|
||||||
void setCurrSkill(SkillClass sc);
|
void setCurrSkill(SkillClass sc);
|
||||||
|
|
||||||
|
void setMorphFieldsBlocked ( bool value ) {this->morphFieldsBlocked=value;}
|
||||||
|
bool getMorphFieldsBlocked() const { return morphFieldsBlocked; }
|
||||||
|
|
||||||
inline void setLoadCount(int loadCount) {this->loadCount= loadCount;}
|
inline void setLoadCount(int loadCount) {this->loadCount= loadCount;}
|
||||||
inline void setLoadType(const ResourceType *loadType) {this->loadType= loadType;}
|
inline void setLoadType(const ResourceType *loadType) {this->loadType= loadType;}
|
||||||
inline void setProgress2(int progress2) {this->progress2= progress2;}
|
inline void setProgress2(int progress2) {this->progress2= progress2;}
|
||||||
|
|
|
@ -1390,9 +1390,8 @@ void Map::putUnitCells(Unit *unit, const Vec2i &pos, bool ignoreSkill) {
|
||||||
Command *command= unit->getCurrCommand();
|
Command *command= unit->getCurrCommand();
|
||||||
if(command != NULL && command->getCommandType()->commandTypeClass == ccMorph){
|
if(command != NULL && command->getCommandType()->commandTypeClass == ccMorph){
|
||||||
const MorphCommandType *mct= static_cast<const MorphCommandType*>(command->getCommandType());
|
const MorphCommandType *mct= static_cast<const MorphCommandType*>(command->getCommandType());
|
||||||
if(unit->getType()->getSize()<=mct->getMorphUnit()->getSize()){
|
putUnitCellsPrivate(unit, pos, mct->getMorphUnit(),true);
|
||||||
putUnitCellsPrivate(unit, pos, mct->getMorphUnit(),true);
|
unit->setMorphFieldsBlocked(true);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1490,12 +1489,14 @@ void Map::clearUnitCells(Unit *unit, const Vec2i &pos, bool ignoreSkill) {
|
||||||
|
|
||||||
if(ignoreSkill==false &&
|
if(ignoreSkill==false &&
|
||||||
unit->getCurrSkill() != NULL &&
|
unit->getCurrSkill() != NULL &&
|
||||||
unit->getCurrSkill()->getClass() == scMorph) {
|
unit->getCurrSkill()->getClass() == scMorph &&
|
||||||
|
unit->getMorphFieldsBlocked() == true) {
|
||||||
Command *command= unit->getCurrCommand();
|
Command *command= unit->getCurrCommand();
|
||||||
const MorphCommandType *mct= static_cast<const MorphCommandType*>(command->getCommandType());
|
const MorphCommandType *mct= static_cast<const MorphCommandType*>(command->getCommandType());
|
||||||
if(unit->getType()->getSize()<=mct->getMorphUnit()->getSize()){
|
if(unit->getType()->getSize()<=mct->getMorphUnit()->getSize()){
|
||||||
ut=mct->getMorphUnit();
|
ut=mct->getMorphUnit();
|
||||||
currentField=ut->getField();
|
currentField=ut->getField();
|
||||||
|
unit->setMorphFieldsBlocked(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue