File diff r23482:de566f8c088d → r23483:3733e6b8ff17
src/toolbar_gui.cpp
Show inline comments
 
@@ -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