Game::Game(){ //initialise the invaders invader_group = new InvaderGroup(Position(50,450), Scale(20,15), 15, MoveDistance(0,5,5,5), MoveRange(700,230,10,790), 11, 5, 2); //invader group //initialise the tank theTank = Tank("image/tank.png", Position(400,60), Scale(25,15), MoveDistance(0,0,10,10), MoveRange(0,0,10,790),3); //tank for(int i = 0; i < 4; i++) { //initialise the shields theShield[i] = Shield("image/shield.png", Position(100+i*200,200), Scale(50,30), 10); } invader_last_time = -1; invader_current_time = -1; invader_step_time = 300; //300 ms bullet_last_time = -1; bullet_current_time = -1; bullet_step_time = 30; //30 ms //Assignment 4 tank_last_time = -1; tank_last_milli = -1; tank_current_time = -1; tank_current_milli = -1; tank_step_time = 500; // 500 ms conti = true; srand(time(NULL)); lose = false; theTank.readHighScore(); }
Shield ICharacter::unequipShield() { Shield returnShield = shield; updateStats(-shield.getStrength(), -shield.getDexterity(), -shield.getConstitution(), -shield.getIntelligence(), -shield.getWisdom(), -shield.getCharisma()); this -> shield = Shield(0, 0, 0, 0, 0, 0); return returnShield; }
std::string ChooseClassPanel::getClassShields(const CharacterClass &characterClass) const { int lengthCounter = 0; const int shieldCount = static_cast<int>(characterClass.getAllowedShields().size()); // Sort as they are listed in the CharacterClassParser. auto allowedShields = characterClass.getAllowedShields(); std::sort(allowedShields.begin(), allowedShields.end()); std::string shieldsString; // Decide what the shield string says. if (shieldCount == 0) { shieldsString = "None"; } else { // Collect all allowed shield display names for the class. for (int i = 0; i < shieldCount; ++i) { const auto shieldType = allowedShields.at(i); auto dummyMetal = MetalType::Iron; auto typeString = Shield(shieldType, dummyMetal).typeToString(); lengthCounter += static_cast<int>(typeString.size()); shieldsString.append(typeString); // If not the last element, add a comma. if (i < (shieldCount - 1)) { shieldsString.append(", "); // If too long, add a new line. if (lengthCounter > ChooseClassPanel::MAX_TOOLTIP_LINE_LENGTH) { lengthCounter = 0; shieldsString.append("\n "); } } } } shieldsString.append("."); return shieldsString; }
bool useskill() { if (status->objects[0].skill_level[SHIELD] != 0) if (danger_shield()) { Shield(-1); return true; }; /*int enemy=eat_player(kTeleportMaxDistance[status->objects[0].skill_level[TELEPORT]]); if (enemy!=-1) { if (status->objects[0].skill_level[TELEPORT]!=0) { Teleport(status->objects[0].id,map->objects[enemy].pos); return true; }; };*/ return false; };
void shield(PlayerObject obj){ if (!obj.skill_level[SHIELD]) return; if (obj.skill_cd[SHIELD]) return; Shield(obj.id); }
int update() { if (me.skill_cd[SHIELD] == 0 /*&& me.short_attack_casting == -1*/ && me.long_attack_casting == -1) { WAIT; Shield(me.id); GO; return 1; } else { if (me.skill_level[HEALTH_UP] < kMaxSkillLevel) { if (me.ability >= cost(HEALTH_UP)) { WAIT; UpgradeSkill(me.id, HEALTH_UP); GO; return 1; } else return 0; } else if (me.skill_level[SHIELD] < kMaxSkillLevel) { if (me.ability >= cost(SHIELD)) { WAIT; UpgradeSkill(me.id, SHIELD); GO; return 1; } else return 0; } else { AE_Parameter = MID_ADVANCED_VALUE;//1st step of update finish if (me.skill_level[SHORT_ATTACK] < kMaxSkillLevel) { if (me.skill_level[DASH] < kMaxSkillLevel) { if (me.ability >= cost(SHORT_ATTACK)) { WAIT; UpgradeSkill(me.id, SHORT_ATTACK); GO; return 1; } else if (me.ability >= cost(DASH)) { WAIT; UpgradeSkill(me.id, DASH); GO; return 1; } else return 0; } else { if (me.ability >= cost(SHORT_ATTACK)) { WAIT; UpgradeSkill(me.id, SHORT_ATTACK); GO; return 1; } else return 0; } } else if (me.skill_level[DASH] < kMaxSkillLevel) { if (me.ability >= cost(DASH)) { WAIT; UpgradeSkill(me.id, DASH); GO; return 1; } else return 0; } else { AE_Parameter = LOW_ADVANCED_VALUE;//2st step of update finish if (me.skill_level[LONG_ATTACK] < kMaxSkillLevel) { if (me.ability >= cost(LONG_ATTACK)) { WAIT; UpgradeSkill(me.id, LONG_ATTACK); GO; return 1; } else return 0; } else { AE_Parameter = TRASH;//all finish if (me.ability >= cost(VISION_UP)){ WAIT; UpgradeSkill(me.id, VISION_UP); GO; } return 0; } } return 0; } } }
void OnDamageTaken(Unit* mAttacker, uint32 fAmount) { if(GetHealthPercent() <= 50 && !m_bShielded) Shield(); };