From a724a9924bb4b489370befce7dcf3c3a39c310bb Mon Sep 17 00:00:00 2001 From: zuu Date: Sun, 9 Jun 2013 13:37:04 +0000 Subject: (svn r25376) -Feature: Allow access to goal list and story book of other companies than your own --- src/toolbar_gui.cpp | 126 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 90 insertions(+), 36 deletions(-) (limited to 'src/toolbar_gui.cpp') diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index e506bfc3e..d143f07ca 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -608,6 +608,46 @@ static CallBackFunction MenuClickCompany(int index) return CBF_NONE; } +/* --- Story button menu --- */ + +static CallBackFunction ToolbarStoryClick(Window *w) +{ + PopupMainCompanyToolbMenu(w, WID_TN_STORY); + return CBF_NONE; +} + +/** + * Handle click on the entry in the Story menu + * + * @param index CompanyID to show story book for + * @return #CBF_NONE + */ +static CallBackFunction MenuClickStory(int index) +{ + ShowStoryBook((CompanyID)index); + return CBF_NONE; +} + +/* --- Goal button menu --- */ + +static CallBackFunction ToolbarGoalClick(Window *w) +{ + PopupMainCompanyToolbMenu(w, WID_TN_GOAL); + return CBF_NONE; +} + +/** + * Handle click on the entry in the Goal menu + * + * @param index CompanyID to show story book for + * @return #CBF_NONE + */ +static CallBackFunction MenuClickGoal(int index) +{ + ShowGoalsList((CompanyID)index); + return CBF_NONE; +} + /* --- Graphs button menu --- */ static CallBackFunction ToolbarGraphsClick(Window *w) @@ -1213,23 +1253,25 @@ static MenuClickedProc * const _menu_clicked_procs[] = { MenuClickStations, // 7 MenuClickFinances, // 8 MenuClickCompany, // 9 - MenuClickGraphs, // 10 - MenuClickLeague, // 11 - MenuClickIndustry, // 12 - MenuClickShowTrains, // 13 - MenuClickShowRoad, // 14 - MenuClickShowShips, // 15 - MenuClickShowAir, // 16 - MenuClickMap, // 17 - NULL, // 18 - MenuClickBuildRail, // 19 - MenuClickBuildRoad, // 20 - MenuClickBuildWater, // 21 - MenuClickBuildAir, // 22 - MenuClickForest, // 23 - MenuClickMusicWindow, // 24 - MenuClickNewspaper, // 25 - MenuClickHelp, // 26 + MenuClickStory, // 10 + MenuClickGoal, // 11 + MenuClickGraphs, // 12 + MenuClickLeague, // 13 + MenuClickIndustry, // 14 + MenuClickShowTrains, // 15 + MenuClickShowRoad, // 16 + MenuClickShowShips, // 17 + MenuClickShowAir, // 18 + MenuClickMap, // 19 + NULL, // 20 + MenuClickBuildRail, // 21 + MenuClickBuildRoad, // 22 + MenuClickBuildWater, // 23 + MenuClickBuildAir, // 24 + MenuClickForest, // 25 + MenuClickMusicWindow, // 26 + MenuClickNewspaper, // 27 + MenuClickHelp, // 28 }; /** Full blown container to make it behave exactly as we want :) */ @@ -1396,31 +1438,31 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { static const uint SMALLEST_ARRANGEMENT = 14; static const uint BIGGEST_ARRANGEMENT = 19; static const byte arrange14[] = { - 0, 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 24, 25, 26, 27, + 0, 1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 29, + 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 26, 27, 28, 29, }; static const byte arrange15[] = { - 0, 1, 4, 13, 14, 15, 16, 19, 20, 21, 22, 23, 17, 18, 27, - 0, 2, 4, 3, 5, 6, 7, 8, 9, 10, 12, 24, 25, 26, 27, + 0, 1, 4, 15, 16, 17, 18, 21, 22, 23, 24, 25, 19, 20, 29, + 0, 2, 4, 3, 5, 6, 7, 8, 9, 12, 14, 26, 27, 28, 29, }; static const byte arrange16[] = { - 0, 1, 2, 4, 13, 14, 15, 16, 19, 20, 21, 22, 23, 17, 18, 27, - 0, 1, 3, 5, 6, 7, 8, 9, 10, 12, 24, 25, 26, 17, 18, 27, + 0, 1, 2, 4, 15, 16, 17, 18, 21, 22, 23, 24, 25, 19, 20, 29, + 0, 1, 3, 5, 6, 7, 8, 9, 12, 14, 26, 27, 28, 19, 20, 29, }; static const byte arrange17[] = { - 0, 1, 2, 4, 6, 13, 14, 15, 16, 19, 20, 21, 22, 23, 17, 18, 27, - 0, 1, 3, 4, 6, 5, 7, 8, 9, 10, 12, 24, 25, 26, 17, 18, 27, + 0, 1, 2, 4, 6, 15, 16, 17, 18, 21, 22, 23, 24, 25, 19, 20, 29, + 0, 1, 3, 4, 6, 5, 7, 8, 9, 12, 14, 26, 27, 28, 19, 20, 29, }; static const byte arrange18[] = { - 0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 19, 20, 21, 22, 23, 17, 18, 27, - 0, 1, 3, 4, 5, 6, 7, 10, 13, 14, 15, 16, 24, 25, 26, 17, 18, 27, + 0, 1, 2, 4, 5, 6, 7, 8, 9, 14, 21, 22, 23, 24, 25, 19, 20, 29, + 0, 1, 3, 4, 5, 6, 7, 12, 15, 16, 17, 18, 26, 27, 28, 19, 20, 29, }; static const byte arrange19[] = { - 0, 1, 2, 4, 5, 6, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 27, - 0, 1, 3, 4, 7, 8, 9, 10, 12, 25, 19, 20, 21, 22, 23, 26, 17, 18, 27, + 0, 1, 2, 4, 5, 6, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 19, 20, 29, + 0, 1, 3, 4, 7, 8, 9, 12, 14, 27, 21, 22, 23, 24, 25, 28, 19, 20, 29, }; static const byte arrange_all[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 }; /* If at least BIGGEST_ARRANGEMENT fit, just spread all the buttons nicely */ @@ -1462,14 +1504,14 @@ class NWidgetScenarioToolbarContainer : public NWidgetToolbarContainer { /* virtual */ const byte *GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count) const { static const byte arrange_all[] = { - 0, 1, 2, 3, 4, 18, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 24, 26, + 0, 1, 2, 3, 4, 18, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 26, 28, }; static const byte arrange_nopanel[] = { - 0, 1, 2, 3, 18, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 24, 26, + 0, 1, 2, 3, 18, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 26, 28, }; static const byte arrange_switch[] = { - 18, 8, 11, 12, 13, 14, 15, 16, 17, 27, - 0, 1, 2, 3, 18, 9, 10, 24, 26, 27, + 18, 8, 11, 12, 13, 14, 15, 16, 17, 29, + 0, 1, 2, 3, 18, 9, 10, 26, 28, 29, }; /* If we can place all buttons *and* the panels, show them. */ @@ -1516,6 +1558,8 @@ static ToolbarButtonProc * const _toolbar_button_procs[] = { ToolbarStationsClick, ToolbarFinancesClick, ToolbarCompaniesClick, + ToolbarStoryClick, + ToolbarGoalClick, ToolbarGraphsClick, ToolbarLeagueClick, ToolbarIndustryClick, @@ -1548,6 +1592,8 @@ enum MainToolbarHotkeys { MTHK_STATIONS, MTHK_FINANCES, MTHK_COMPANIES, + MTHK_STORY, + MTHK_GOAL, MTHK_GRAPHS, MTHK_LEAGUE, MTHK_INDUSTRIES, @@ -1598,7 +1644,7 @@ struct MainToolbarWindow : Window { * Since enabled state is the default, just disable when needed */ this->SetWidgetsDisabledState(_local_company == COMPANY_SPECTATOR, WID_TN_RAILS, WID_TN_ROADS, WID_TN_WATER, WID_TN_AIR, WID_TN_LANDSCAPE, WIDGET_LIST_END); /* disable company list drop downs, if there are no companies */ - this->SetWidgetsDisabledState(Company::GetNumItems() == 0, WID_TN_STATIONS, WID_TN_FINANCES, WID_TN_TRAINS, WID_TN_ROADVEHS, WID_TN_SHIPS, WID_TN_AIRCRAFTS, WIDGET_LIST_END); + this->SetWidgetsDisabledState(Company::GetNumItems() == 0, WID_TN_STATIONS, WID_TN_FINANCES, WID_TN_TRAINS, WID_TN_ROADVEHS, WID_TN_SHIPS, WID_TN_AIRCRAFTS, WID_TN_STORY, WID_TN_GOAL, WIDGET_LIST_END); this->SetWidgetDisabledState(WID_TN_RAILS, !CanBuildVehicleInfrastructure(VEH_TRAIN)); this->SetWidgetDisabledState(WID_TN_AIR, !CanBuildVehicleInfrastructure(VEH_AIRCRAFT)); @@ -1631,6 +1677,8 @@ struct MainToolbarWindow : Window { case MTHK_STATIONS: ShowCompanyStations(_local_company); break; case MTHK_FINANCES: ShowCompanyFinances(_local_company); break; case MTHK_COMPANIES: ShowCompany(_local_company); break; + case MTHK_STORY: ShowStoryBook(_local_company); break; + case MTHK_GOAL: ShowGoalsList(_local_company); break; case MTHK_GRAPHS: ShowOperatingProfitGraph(); break; case MTHK_LEAGUE: ShowCompanyLeagueTable(); break; case MTHK_INDUSTRIES: ShowBuildIndustryWindow(); break; @@ -1734,6 +1782,8 @@ Hotkey MainToolbarWindow::maintoolbar_hotkeys[] = { Hotkey(WKC_F7, "station_list", MTHK_STATIONS), Hotkey(WKC_F8, "finances", MTHK_FINANCES), Hotkey(WKC_F9, "companies", MTHK_COMPANIES), + Hotkey((uint16)0, "story_book", MTHK_STORY), + Hotkey((uint16)0, "goal_list", MTHK_GOAL), Hotkey(WKC_F10, "graphs", MTHK_GRAPHS), Hotkey(WKC_F11, "league", MTHK_LEAGUE), Hotkey(WKC_F12, "industry_list", MTHK_INDUSTRIES), @@ -1779,6 +1829,8 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index) SPR_IMG_COMPANY_LIST, // WID_TN_STATIONS SPR_IMG_COMPANY_FINANCE, // WID_TN_FINANCES SPR_IMG_COMPANY_GENERAL, // WID_TN_COMPANIES + SPR_IMG_STORY_BOOK, // WID_TN_STORY + SPR_IMG_GOAL, // WID_TN_GOAL SPR_IMG_GRAPHS, // WID_TN_GRAPHS SPR_IMG_COMPANY_LEAGUE, // WID_TN_LEAGUE SPR_IMG_INDUSTRY, // WID_TN_INDUSTRIES @@ -1802,7 +1854,7 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index) NWidgetMainToolbarContainer *hor = new NWidgetMainToolbarContainer(); for (uint i = 0; i < WID_TN_END; i++) { switch (i) { - case 4: case 8: case 13: case 17: case 19: case 24: hor->Add(new NWidgetSpacer(0, 0)); break; + case 4: case 8: case 15: case 19: case 21: case 26: hor->Add(new NWidgetSpacer(0, 0)); break; } hor->Add(new NWidgetLeaf(i == WID_TN_SAVE ? WWT_IMGBTN_2 : WWT_IMGBTN, COLOUR_GREY, i, toolbar_button_sprites[i], STR_TOOLBAR_TOOLTIP_PAUSE_GAME + i)); } @@ -1850,6 +1902,8 @@ static ToolbarButtonProc * const _scen_toolbar_button_procs[] = { NULL, NULL, NULL, + NULL, + NULL, ToolbarMusicClick, NULL, ToolbarHelpClick, -- cgit v1.2.3-54-g00ecf