RowSpells::RowSpells(const Point & pos, const Castle & castle, u8 lvl) { const MageGuild & guild = castle.GetMageGuild(); bool hide = castle.GetLevelMageGuild() < lvl; const Sprite & roll_show = AGG::GetICN(ICN::TOWNWIND, 0); const Sprite & roll_hide = AGG::GetICN(ICN::TOWNWIND, 1); const Sprite & roll = (hide ? roll_hide : roll_show); u8 count = 0; switch(lvl) { case 1: case 2: count = 3; break; case 3: case 4: count = 2; break; case 5: count = 1; break; default: break; } for(u8 ii = 0; ii < count; ++ii) coords.push_back(Rect(pos.x + coords.size() * (Settings::Get().QVGA() ? 72 : 110) - roll.w() / 2, pos.y, roll.w(), roll.h())); if(castle.HaveLibraryCapability()) { if(! hide && castle.isLibraryBuild()) coords.push_back(Rect(pos.x + coords.size() * (Settings::Get().QVGA() ? 72 : 110) - roll_show.w() / 2, pos.y, roll_show.w(), roll_show.h())); else coords.push_back(Rect(pos.x + coords.size() * (Settings::Get().QVGA() ? 72 : 110) - roll_hide.w() / 2, pos.y, roll_hide.w(), roll_hide.h())); } spells.reserve(6); spells = guild.GetSpells(castle.GetLevelMageGuild(), castle.isLibraryBuild(), lvl); spells.resize(coords.size(), Spell::NONE); }
Battle::Tower::Tower(const Castle & castle, int twr) : Unit(Troop(Monster::ARCHER, 0), -1, false), type(twr), color(castle.GetColor()), bonus(0), valid(true) { count += castle.CountBuildings(); count += castle.GetLevelMageGuild() - 1; if(count > 20) count = 20; if(TWR_CENTER != type) count /= 2; if(count == 0) count = 1; bonus = castle.GetLevelMageGuild(); SetModes(CAP_TOWER); }
Battle2::Tower::Tower(const Castle & castle, u8 twr, Arena & a) : Army::Troop(Monster::ARCHER), arena(a), type(twr), valid(true) { count += castle.CountBuildings(); count += castle.GetLevelMageGuild() - 1; if(count > 20) count = 20; if(TWR_CENTER != type) count /= 2; if(count == 0) count = 1; BattleInit(); Stats* b = GetBattleStats(); b->SetModes(CAP_TOWER); }