void Kingdom::OverviewDialog(void) { Display & display = Display::Get(); Cursor & cursor = Cursor::Get(); cursor.Hide(); cursor.SetThemes(cursor.POINTER); Dialog::FrameBorder background; background.SetPosition((display.w() - 640 - BORDERWIDTH * 2) / 2, (display.h() - 480 - BORDERWIDTH * 2) / 2, 640, 480); background.Redraw(); const Point cur_pt(background.GetArea().x, background.GetArea().y); Point dst_pt(cur_pt); AGG::GetICN(ICN::STONEBAK, 0).Blit(dst_pt); AGG::GetICN(ICN::OVERBACK, 0).Blit(dst_pt); RedrawIncomeInfo(cur_pt, *this); StatsHeroesList listHeroes(dst_pt, heroes); StatsCastlesList listCastles(dst_pt, castles); // buttons dst_pt.x = cur_pt.x + 540; dst_pt.y = cur_pt.y + 360; Button buttonHeroes(dst_pt, ICN::OVERVIEW, 0, 1); dst_pt.x = cur_pt.x + 540; dst_pt.y = cur_pt.y + 405; Button buttonCastle(dst_pt, ICN::OVERVIEW, 2, 3); dst_pt.x = cur_pt.x + 540; dst_pt.y = cur_pt.y + 453; Button buttonExit(dst_pt, ICN::OVERVIEW, 4, 5); // set state view: heroes buttonHeroes.Press(); buttonCastle.Release(); Interface::ListBasic* listStats = &listHeroes; listStats->Redraw(); buttonHeroes.Draw(); buttonCastle.Draw(); buttonExit.Draw(); cursor.Show(); display.Flip(); LocalEvent & le = LocalEvent::Get(); // dialog menu loop while(le.HandleEvents()) { le.MousePressLeft(buttonExit) ? buttonExit.PressDraw() : buttonExit.ReleaseDraw(); // switch view: heroes/castle if(buttonHeroes.isReleased() && le.MouseClickLeft(buttonHeroes)) { cursor.Hide(); buttonHeroes.Press(); buttonCastle.Release(); buttonHeroes.Draw(); buttonCastle.Draw(); listStats = &listHeroes; } else if(buttonCastle.isReleased() && le.MouseClickLeft(buttonCastle)) { cursor.Hide(); buttonCastle.Press(); buttonHeroes.Release(); buttonHeroes.Draw(); buttonCastle.Draw(); listStats = &listCastles; } // exit event if(le.MouseClickLeft(buttonExit) || Game::HotKeyPress(Game::EVENT_DEFAULT_EXIT)) break; listStats->QueueEventProcessing(); // redraw if(! cursor.isVisible()) { listStats->Redraw(); cursor.Show(); display.Flip(); } } }
void Kingdom::OverviewDialog(void) { Display & display = Display::Get(); Cursor & cursor = Cursor::Get(); cursor.Hide(); cursor.SetThemes(cursor.POINTER); Dialog::FrameBorder background(Size(640, 480)); const Point & cur_pt = background.GetArea(); Point dst_pt(cur_pt); AGG::GetICN(ICN::OVERBACK, 0).Blit(dst_pt); RedrawIncomeInfo(cur_pt, *this); RedrawFundsInfo(cur_pt, *this); StatsHeroesList listHeroes(dst_pt, heroes); StatsCastlesList listCastles(dst_pt, castles); // buttons dst_pt.x = cur_pt.x + 540; dst_pt.y = cur_pt.y + 360; Button buttonHeroes(dst_pt.x, dst_pt.y, ICN::OVERVIEW, 0, 1); dst_pt.x = cur_pt.x + 540; dst_pt.y = cur_pt.y + 405; Button buttonCastle(dst_pt.x, dst_pt.y, ICN::OVERVIEW, 2, 3); dst_pt.x = cur_pt.x + 540; dst_pt.y = cur_pt.y + 453; Button buttonExit(dst_pt.x, dst_pt.y, ICN::OVERVIEW, 4, 5); const Rect rectIncome(cur_pt.x + 1, cur_pt.y + 360, 535, 60); Interface::ListBasic* listStats = NULL; // set state view: castles if(Modes(OVERVIEWCSTL)) { buttonCastle.Press(); buttonHeroes.Release(); listStats = &listCastles; } else // set state view: heroes { buttonHeroes.Press(); buttonCastle.Release(); listStats = &listHeroes; } listStats->Redraw(); buttonHeroes.Draw(); buttonCastle.Draw(); buttonExit.Draw(); cursor.Show(); display.Flip(); LocalEvent & le = LocalEvent::Get(); // dialog menu loop while(le.HandleEvents()) { le.MousePressLeft(buttonExit) ? buttonExit.PressDraw() : buttonExit.ReleaseDraw(); // switch view: heroes/castle if(buttonHeroes.isReleased() && le.MouseClickLeft(buttonHeroes)) { cursor.Hide(); buttonHeroes.Press(); buttonCastle.Release(); buttonHeroes.Draw(); buttonCastle.Draw(); listStats = &listHeroes; ResetModes(OVERVIEWCSTL); } else if(buttonCastle.isReleased() && le.MouseClickLeft(buttonCastle)) { cursor.Hide(); buttonCastle.Press(); buttonHeroes.Release(); buttonHeroes.Draw(); buttonCastle.Draw(); listStats = &listCastles; SetModes(OVERVIEWCSTL); } // exit event if(le.MouseClickLeft(buttonExit) || Game::HotKeyPressEvent(Game::EVENT_DEFAULT_EXIT)) break; listStats->QueueEventProcessing(); if(le.MouseClickLeft(rectIncome)) Dialog::ResourceInfo("", "income:", GetIncome(INCOME_ALL), Dialog::OK); else if(le.MousePressRight(rectIncome)) Dialog::ResourceInfo("", "income:", GetIncome(INCOME_ALL), 0); // redraw if(! cursor.isVisible()) { listStats->Redraw(); RedrawFundsInfo(cur_pt, *this); cursor.Show(); display.Flip(); } } }