Sprite SpriteFlag(const Heroes & hero, int index, bool reflect, bool rotate) { int icn_flag = ICN::UNKNOWN; int index_sprite = 0; switch(hero.GetColor()) { case Color::BLUE: icn_flag = hero.isShipMaster() ? ICN::B_BFLG32 : ICN::B_FLAG32; break; case Color::GREEN: icn_flag = hero.isShipMaster() ? ICN::G_BFLG32 : ICN::G_FLAG32; break; case Color::RED: icn_flag = hero.isShipMaster() ? ICN::R_BFLG32 : ICN::R_FLAG32; break; case Color::YELLOW: icn_flag = hero.isShipMaster() ? ICN::Y_BFLG32 : ICN::Y_FLAG32; break; case Color::ORANGE: icn_flag = hero.isShipMaster() ? ICN::O_BFLG32 : ICN::O_FLAG32; break; case Color::PURPLE: icn_flag = hero.isShipMaster() ? ICN::P_BFLG32 : ICN::P_FLAG32; break; default: DEBUG(DBG_GAME, DBG_WARN, "unknown color"); break; } if(rotate) index_sprite = 45; else switch(hero.GetDirection()) { case Direction::TOP: index_sprite = 0; break; case Direction::TOP_RIGHT: index_sprite = 9; break; case Direction::RIGHT: index_sprite = 18; break; case Direction::BOTTOM_RIGHT: index_sprite = 27; break; case Direction::BOTTOM: index_sprite = 36; break; case Direction::BOTTOM_LEFT: index_sprite = 27; break; case Direction::LEFT: index_sprite = 18; break; case Direction::TOP_LEFT: index_sprite = 9; break; default: DEBUG(DBG_GAME, DBG_WARN, "unknown direction"); break; } return AGG::GetICN(icn_flag, index_sprite + (index % 9), reflect); }
Sprite SpriteFroth(const Heroes & hero, int index, bool reflect) { int index_sprite = 0; switch(hero.GetDirection()) { case Direction::TOP: index_sprite = 0; break; case Direction::TOP_RIGHT: index_sprite = 9; break; case Direction::RIGHT: index_sprite = 18; break; case Direction::BOTTOM_RIGHT: index_sprite = 27; break; case Direction::BOTTOM: index_sprite = 36; break; case Direction::BOTTOM_LEFT: index_sprite = 27; break; case Direction::LEFT: index_sprite = 18; break; case Direction::TOP_LEFT: index_sprite = 9; break; default: DEBUG(DBG_GAME, DBG_WARN, "unknown direction"); break; } return AGG::GetICN(ICN::FROTH, index_sprite + (index % 9), reflect); }
Sprite SpriteShad(const Heroes & hero, int index) { int icn_shad = hero.isShipMaster() ? ICN::BOATSHAD : ICN::SHADOW32; int index_sprite = 0; switch(hero.GetDirection()) { case Direction::TOP: index_sprite = 0; break; case Direction::TOP_RIGHT: index_sprite = 9; break; case Direction::RIGHT: index_sprite = 18; break; case Direction::BOTTOM_RIGHT: index_sprite = 27; break; case Direction::BOTTOM: index_sprite = 36; break; case Direction::BOTTOM_LEFT: index_sprite = 45; break; case Direction::LEFT: index_sprite = 54; break; case Direction::TOP_LEFT: index_sprite = 63; break; default: DEBUG(DBG_GAME, DBG_WARN, "unknown direction"); break; } return AGG::GetICN(icn_shad, index_sprite + (index % 9)); }
Sprite SpriteHero(const Heroes & hero, int index, bool reflect, bool rotate) { int icn_hero = ICN::UNKNOWN; int index_sprite = 0; if(hero.isShipMaster()) icn_hero = ICN::BOAT32; else switch(hero.GetRace()) { case Race::KNGT: icn_hero = ICN::KNGT32; break; case Race::BARB: icn_hero = ICN::BARB32; break; case Race::SORC: icn_hero = ICN::SORC32; break; case Race::WRLK: icn_hero = ICN::WRLK32; break; case Race::WZRD: icn_hero = ICN::WZRD32; break; case Race::NECR: icn_hero = ICN::NECR32; break; default: DEBUG(DBG_GAME, DBG_WARN, "unknown race"); break; } if(rotate) index_sprite = 45; else switch(hero.GetDirection()) { case Direction::TOP: index_sprite = 0; break; case Direction::TOP_RIGHT: index_sprite = 9; break; case Direction::RIGHT: index_sprite = 18; break; case Direction::BOTTOM_RIGHT: index_sprite = 27; break; case Direction::BOTTOM: index_sprite = 36; break; case Direction::BOTTOM_LEFT: index_sprite = 27; break; case Direction::LEFT: index_sprite = 18; break; case Direction::TOP_LEFT: index_sprite = 9; break; default: DEBUG(DBG_GAME, DBG_WARN, "unknown direction"); break; } return AGG::GetICN(icn_hero, index_sprite + (index % 9), reflect); }