|
@@ -149,29 +149,27 @@ public:
|
|
|
{
|
|
|
CompanyID company = (CompanyID)this->result;
|
|
|
bool rtl = _current_text_dir == TD_RTL;
|
|
|
|
|
|
/* It's possible the company is deleted while the dropdown is open */
|
|
|
if (!Company::IsValidID(company)) return;
|
|
|
|
|
|
int icon_offset = (bottom - top - icon_size.height) / 2;
|
|
|
int text_offset = (bottom - top - FONT_HEIGHT_NORMAL) / 2;
|
|
|
int lock_offset = (bottom - top - lock_size.height) / 2;
|
|
|
|
|
|
DrawCompanyIcon(company, rtl ? right - this->icon_size.width - WD_FRAMERECT_RIGHT : left + WD_FRAMERECT_LEFT, top + icon_offset);
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
if (NetworkCompanyIsPassworded(company)) {
|
|
|
DrawSprite(SPR_LOCK, PAL_NONE, rtl ? left + WD_FRAMERECT_LEFT : right - this->lock_size.width - WD_FRAMERECT_RIGHT, top + lock_offset);
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
SetDParam(0, company);
|
|
|
SetDParam(1, company);
|
|
|
TextColour col;
|
|
|
if (this->greyed) {
|
|
|
col = (sel ? TC_SILVER : TC_GREY) | TC_NO_SHADE;
|
|
|
} else {
|
|
|
col = sel ? TC_WHITE : TC_BLACK;
|
|
|
}
|
|
|
DrawString(left + WD_FRAMERECT_LEFT + (rtl ? 3 + this->lock_size.width : 3 + this->icon_size.width), right - WD_FRAMERECT_RIGHT - (rtl ? 3 + this->icon_size.width : 3 + this->lock_size.width), top + text_offset, STR_COMPANY_NAME_COMPANY_NUM, col);
|
|
|
}
|
|
|
};
|
|
@@ -214,36 +212,34 @@ static const int CTMN_SPECTATOR = -4;
|
|
|
/**
|
|
|
* Pop up a generic company list menu.
|
|
|
* @param w The toolbar window.
|
|
|
* @param widget The button widget id.
|
|
|
* @param grey A bitbask of which items to mark as disabled.
|
|
|
*/
|
|
|
static void PopupMainCompanyToolbMenu(Window *w, int widget, int grey = 0)
|
|
|
{
|
|
|
DropDownList *list = new DropDownList();
|
|
|
|
|
|
switch (widget) {
|
|
|
case WID_TN_COMPANIES:
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
if (!_networking) break;
|
|
|
|
|
|
/* Add the client list button for the companies menu */
|
|
|
*list->Append() = new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_CLIENT_LIST, CTMN_CLIENT_LIST, false);
|
|
|
|
|
|
if (_local_company == COMPANY_SPECTATOR) {
|
|
|
*list->Append() = new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_NEW_COMPANY, CTMN_NEW_COMPANY, NetworkMaxCompaniesReached());
|
|
|
} else {
|
|
|
*list->Append() = new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_SPECTATE, CTMN_SPECTATE, NetworkMaxSpectatorsReached());
|
|
|
}
|
|
|
#endif /* ENABLE_NETWORK */
|
|
|
break;
|
|
|
|
|
|
case WID_TN_STORY:
|
|
|
*list->Append() = new DropDownListStringItem(STR_STORY_BOOK_SPECTATOR, CTMN_SPECTATOR, false);
|
|
|
break;
|
|
|
|
|
|
case WID_TN_GOAL:
|
|
|
*list->Append() = new DropDownListStringItem(STR_GOALS_SPECTATOR, CTMN_SPECTATOR, false);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
|
|
@@ -601,50 +597,48 @@ static CallBackFunction ToolbarCompanies
|
|
|
PopupMainCompanyToolbMenu(w, WID_TN_COMPANIES, 0);
|
|
|
return CBF_NONE;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Handle click on the entry in the Company menu.
|
|
|
*
|
|
|
* @param index Menu entry to handle.
|
|
|
* @return #CBF_NONE
|
|
|
*/
|
|
|
static CallBackFunction MenuClickCompany(int index)
|
|
|
{
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
if (_networking) {
|
|
|
switch (index) {
|
|
|
case CTMN_CLIENT_LIST:
|
|
|
ShowClientList();
|
|
|
return CBF_NONE;
|
|
|
|
|
|
case CTMN_NEW_COMPANY:
|
|
|
if (_network_server) {
|
|
|
DoCommandP(0, CCA_NEW, _network_own_client_id, CMD_COMPANY_CTRL);
|
|
|
} else {
|
|
|
NetworkSendCommand(0, CCA_NEW, 0, CMD_COMPANY_CTRL, NULL, NULL, _local_company);
|
|
|
}
|
|
|
return CBF_NONE;
|
|
|
|
|
|
case CTMN_SPECTATE:
|
|
|
if (_network_server) {
|
|
|
NetworkServerDoMove(CLIENT_ID_SERVER, COMPANY_SPECTATOR);
|
|
|
MarkWholeScreenDirty();
|
|
|
} else {
|
|
|
NetworkClientRequestMove(COMPANY_SPECTATOR);
|
|
|
}
|
|
|
return CBF_NONE;
|
|
|
}
|
|
|
}
|
|
|
#endif /* ENABLE_NETWORK */
|
|
|
ShowCompany((CompanyID)index);
|
|
|
return CBF_NONE;
|
|
|
}
|
|
|
|
|
|
/* --- Story button menu --- */
|
|
|
|
|
|
static CallBackFunction ToolbarStoryClick(Window *w)
|
|
|
{
|
|
|
PopupMainCompanyToolbMenu(w, WID_TN_STORY, 0);
|
|
|
return CBF_NONE;
|
|
|
}
|
|
|
|
|
@@ -2067,27 +2061,25 @@ struct MainToolbarWindow : Window {
|
|
|
case MTHK_BUILD_DOCKS: ShowBuildDocksToolbar(); break;
|
|
|
case MTHK_BUILD_AIRPORT: if (CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) ShowBuildAirToolbar(); break;
|
|
|
case MTHK_BUILD_TREES: ShowBuildTreesToolbar(); break;
|
|
|
case MTHK_MUSIC: ShowMusicWindow(); break;
|
|
|
case MTHK_AI_DEBUG: ShowAIDebugWindow(); break;
|
|
|
case MTHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break;
|
|
|
case MTHK_ZOOMEDIN_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_ZOOMEDIN); break;
|
|
|
case MTHK_DEFAULTZOOM_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_DEFAULTZOOM); break;
|
|
|
case MTHK_GIANT_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_WORLD); break;
|
|
|
case MTHK_CHEATS: if (!_networking) ShowCheatWindow(); break;
|
|
|
case MTHK_TERRAFORM: ShowTerraformToolbar(); break;
|
|
|
case MTHK_EXTRA_VIEWPORT: ShowExtraViewPortWindowForTileUnderCursor(); break;
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
case MTHK_CLIENT_LIST: if (_networking) ShowClientList(); break;
|
|
|
#endif
|
|
|
case MTHK_SIGN_LIST: ShowSignList(); break;
|
|
|
default: return ES_NOT_HANDLED;
|
|
|
}
|
|
|
return ES_HANDLED;
|
|
|
}
|
|
|
|
|
|
virtual void OnPlaceObject(Point pt, TileIndex tile)
|
|
|
{
|
|
|
switch (_last_started_action) {
|
|
|
case CBF_PLACE_SIGN:
|
|
|
PlaceProc_Sign(tile);
|
|
|
break;
|
|
@@ -2180,27 +2172,25 @@ static Hotkey maintoolbar_hotkeys[] = {
|
|
|
Hotkey(WKC_SHIFT | WKC_F9, "build_docks", MTHK_BUILD_DOCKS),
|
|
|
Hotkey(WKC_SHIFT | WKC_F10, "build_airport", MTHK_BUILD_AIRPORT),
|
|
|
Hotkey(WKC_SHIFT | WKC_F11, "build_trees", MTHK_BUILD_TREES),
|
|
|
Hotkey(WKC_SHIFT | WKC_F12, "music", MTHK_MUSIC),
|
|
|
Hotkey((uint16)0, "ai_debug", MTHK_AI_DEBUG),
|
|
|
Hotkey(WKC_CTRL | 'S', "small_screenshot", MTHK_SMALL_SCREENSHOT),
|
|
|
Hotkey(WKC_CTRL | 'P', "zoomedin_screenshot", MTHK_ZOOMEDIN_SCREENSHOT),
|
|
|
Hotkey(WKC_CTRL | 'D', "defaultzoom_screenshot", MTHK_DEFAULTZOOM_SCREENSHOT),
|
|
|
Hotkey((uint16)0, "giant_screenshot", MTHK_GIANT_SCREENSHOT),
|
|
|
Hotkey(WKC_CTRL | WKC_ALT | 'C', "cheats", MTHK_CHEATS),
|
|
|
Hotkey('L', "terraform", MTHK_TERRAFORM),
|
|
|
Hotkey('V', "extra_viewport", MTHK_EXTRA_VIEWPORT),
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
Hotkey((uint16)0, "client_list", MTHK_CLIENT_LIST),
|
|
|
#endif
|
|
|
Hotkey((uint16)0, "sign_list", MTHK_SIGN_LIST),
|
|
|
HOTKEY_LIST_END
|
|
|
};
|
|
|
HotkeyList MainToolbarWindow::hotkeys("maintoolbar", maintoolbar_hotkeys);
|
|
|
|
|
|
static NWidgetBase *MakeMainToolbar(int *biggest_index)
|
|
|
{
|
|
|
/** Sprites to use for the different toolbar buttons */
|
|
|
static const SpriteID toolbar_button_sprites[] = {
|
|
|
SPR_IMG_PAUSE, // WID_TN_PAUSE
|
|
|
SPR_IMG_FASTFORWARD, // WID_TN_FAST_FORWARD
|
|
|
SPR_IMG_SETTINGS, // WID_TN_SETTINGS
|