void ActionListPressRight(int & index) { Troop troop(Monster(index), 1); Dialog::ArmyInfo(troop, 0); };
void TestMonsterSprite(void) { // cursor Cursor & cursor = Cursor::Get(); cursor.Hide(); cursor.SetThemes(Cursor::POINTER); //Monster monster(Monster::PEASANT); Army::Troop troop(Monster::PEASANT, 1); troop.BattleInit(); const Battle2::Stats & b = *troop.GetBattleStats(); Background back; Rect pos; Display & display = Display::Get(); LocalEvent & le = LocalEvent::Get(); //std::string str; StatusBar speed_bar; StatusBar count_bar; StatusBar start_bar; StatusBar frame_bar; StatusBar info_bar; start_bar.SetCenter(100, display.h() - 15); count_bar.SetCenter(200, display.h() - 15); speed_bar.SetCenter(300, display.h() - 15); frame_bar.SetCenter(400, display.h() - 15); info_bar.SetCenter(550, display.h() - 15); u32 ticket = 0; u8 start = 0; u8 count = AGG::GetICNCount(b.ICNFile()); u8 frame = 0; u8 speed = 100; frame_bar.ShowMessage("frame: " + GetString(frame)); speed_bar.ShowMessage("speed: " + GetString(speed)); start_bar.ShowMessage("start: " + GetString(start)); count_bar.ShowMessage("count: " + GetString(count)); cursor.Show(); display.Flip(); // mainmenu loop while(le.HandleEvents()) { if(Game::HotKeyPress(Game::EVENT_DEFAULT_EXIT)) break; if(le.MouseClickLeft(pos)) { u32 mons = troop().GetID(); if(Dialog::SelectCount("Monster", Monster::PEASANT, Monster::WATER_ELEMENT, mons)) { cursor.Hide(); troop.SetMonster(Monster(mons)); start = 0; count = AGG::GetICNCount(b.ICNFile()); frame = 0; cursor.Show(); display.Flip(); } } if(le.MouseClickLeft(start_bar.GetRect())) { u32 start2 = start; if(Dialog::SelectCount("Start", 0, AGG::GetICNCount(b.ICNFile()) - 1, start2)) { cursor.Hide(); start = start2; if(start + count > AGG::GetICNCount(b.ICNFile())) count = AGG::GetICNCount(b.ICNFile()) - start; start_bar.ShowMessage("start: " + GetString(start)); cursor.Show(); display.Flip(); } } if(le.MouseClickLeft(count_bar.GetRect())) { u32 count2 = count; if(Dialog::SelectCount("Count", 1, AGG::GetICNCount(b.ICNFile()), count2)) { cursor.Hide(); count = count2; frame = start; count_bar.ShowMessage("count: " + GetString(count)); cursor.Show(); display.Flip(); } } if(le.MouseClickLeft(speed_bar.GetRect())) { u32 speed2 = speed; if(Dialog::SelectCount("Speed", 1, 50, speed2)) { cursor.Hide(); speed = speed2; frame = start; speed_bar.ShowMessage("speed: " + GetString(speed)); cursor.Show(); display.Flip(); } } if(0 == (ticket % speed)) { cursor.Hide(); const Sprite & sprite = AGG::GetICN(b.ICNFile(), frame); pos.x = 320 + sprite.x(); pos.y = 240 + sprite.y(); pos.w = sprite.w(); pos.h = sprite.h(); back.Restore(); back.Save(pos); sprite.Blit(pos); frame_bar.ShowMessage("frame: " + GetString(frame)); info_bar.ShowMessage("ox: " + GetString(sprite.x()) + ", oy: " + GetString(sprite.y())); cursor.Show(); display.Flip(); ++frame; if(frame >= start + count) frame = start; } ++ticket; } }