Index: toolbar_gui.cpp =================================================================== --- toolbar_gui.cpp (revision 27096) +++ toolbar_gui.cpp (working copy) @@ -73,6 +73,7 @@ CBF_NONE, CBF_PLACE_SIGN, CBF_PLACE_LANDINFO, + CBF_BUILD_HQ, }; /** @@ -252,6 +253,19 @@ } } +/* hq hotkey */ +static CallBackFunction BuildCompanyHQ(){ + if(_current_company == COMPANY_SPECTATOR) return CBF_NONE; + if (_cursor.sprite == SPR_CURSOR_HQ) { + ResetObjectToPlace(); + return CBF_NONE; + } else { + SetObjectToPlace(SPR_CURSOR_HQ, PAL_NONE, HT_RECT, WC_MAIN_TOOLBAR, 0); + SetTileSelectSize(2, 2); + return CBF_BUILD_HQ; + } +} + /* --- Pausing --- */ static CallBackFunction ToolbarPauseClick(Window *w) @@ -1648,6 +1662,10 @@ MTHK_EXTRA_VIEWPORT, MTHK_CLIENT_LIST, MTHK_SIGN_LIST, + MTHK_BUILD_HQ, + MTHK_TREES, + MTHK_SETTINGS_ADV, + MTHK_NEWGRF, }; /** Main toolbar. */ @@ -1737,12 +1755,31 @@ #ifdef ENABLE_NETWORK case MTHK_CLIENT_LIST: if (_networking) ShowClientList(); break; #endif + case MTHK_BUILD_HQ: this->last_started_action = CBF_BUILD_HQ; BuildCompanyHQ(); break; + case MTHK_TREES: BuildTreesWindow(); break; + case MTHK_SETTINGS_ADV: ShowGameSettings(); break; + case MTHK_NEWGRF: ShowNewGRFSettings(!_networking && _settings_client.gui.UserIsAllowedToChangeNewGRFs(), true, true, &_grfconfig); break; case MTHK_SIGN_LIST: ShowSignList(); break; default: return ES_NOT_HANDLED; } return ES_HANDLED; } + virtual void BuildTreesWindow(){ + ShowBuildTreesToolbar(); + Window *w = FindWindowById(WC_BUILD_TREES, 0); + if(w != NULL){ + if(w->IsWidgetLowered(WID_BT_TYPE_RANDOM)){ + w->RaiseWidget(WID_BT_TYPE_RANDOM); + ResetObjectToPlace(); + } + else{ + w->OnHotkey(WID_BT_TYPE_RANDOM); + } + + } + } + virtual void OnPlaceObject(Point pt, TileIndex tile) { switch (this->last_started_action) { @@ -1754,6 +1791,13 @@ ShowLandInfo(tile); break; + case CBF_BUILD_HQ: + if(DoCommandP(tile, OBJECT_HQ, 0, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS))){ + ResetObjectToPlace(); + this->RaiseButtons(); + } + break; + default: NOT_REACHED(); } } @@ -1842,6 +1886,10 @@ #ifdef ENABLE_NETWORK Hotkey((uint16)0, "client_list", MTHK_CLIENT_LIST), #endif + Hotkey(WKC_CTRL | 'H', "build_hq", MTHK_BUILD_HQ), + Hotkey('I', "trees", MTHK_TREES), + Hotkey((uint16)0, "settings_advanced", MTHK_SETTINGS_ADV), + Hotkey((uint16)0, "newgrf_window", MTHK_NEWGRF), Hotkey((uint16)0, "sign_list", MTHK_SIGN_LIST), HOTKEY_LIST_END };