Changeset - r20722:e079a68ef179
[Not reviewed]
master
0 5 0
zuu - 11 years ago 2013-09-13 12:45:25
zuu@openttd.org
(svn r25761) -Change: Disable story/goal buttons when there is no content to show instead of when there is zero companies
5 files changed with 41 insertions and 14 deletions:
0 comments (0 inline, 0 general)
src/company_cmd.cpp
Show inline comments
 
@@ -34,6 +34,8 @@
 
#include "vehicle_func.h"
 
#include "smallmap_gui.h"
 
#include "game/game.hpp"
 
#include "goal_base.h"
 
#include "story_base.h"
 

	
 
#include "table/strings.h"
 

	
 
@@ -934,6 +936,8 @@ CommandCost CmdCompanyCtrl(TileIndex til
 
			AI::BroadcastNewEvent(new ScriptEventCompanyBankrupt(c_index));
 
			Game::NewEvent(new ScriptEventCompanyBankrupt(c_index));
 
			CompanyAdminRemove(c_index, (CompanyRemoveReason)reason);
 

	
 
			if (StoryPage::GetNumItems() == 0 || Goal::GetNumItems() == 0) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
 
			break;
 
		}
 

	
src/goal.cpp
Show inline comments
 
@@ -85,6 +85,7 @@ CommandCost CmdCreateGoal(TileIndex tile
 
		g->completed = false;
 

	
 
		InvalidateWindowData(WC_GOALS_LIST, 0);
 
		if (Goal::GetNumItems() == 1) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
 

	
 
		_new_goal_id = g->index;
 
	}
 
@@ -111,6 +112,7 @@ CommandCost CmdRemoveGoal(TileIndex tile
 
		delete g;
 

	
 
		InvalidateWindowData(WC_GOALS_LIST, 0);
 
		if (Goal::GetNumItems() == 0) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
 
	}
 

	
 
	return CommandCost();
src/lang/english.txt
Show inline comments
 
@@ -2042,6 +2042,7 @@ STR_NETWORK_CLIENT                      
 
STR_NETWORK_SPECTATORS                                          :Spectators
 

	
 
STR_NETWORK_GIVE_MONEY_CAPTION                                  :{WHITE}Enter the amount of money you want to give
 
STR_NETWORK_TOOLBAR_LIST_SPECTATOR                              :{BLACK}Spectator
 

	
 
# Network set password
 
STR_COMPANY_PASSWORD_CANCEL                                     :{BLACK}Do not save the entered password
src/story.cpp
Show inline comments
 
@@ -128,6 +128,7 @@ CommandCost CmdCreateStoryPage(TileIndex
 
		}
 

	
 
		InvalidateWindowClassesData(WC_STORY_BOOK, -1);
 
		if (StoryPage::GetNumItems() == 1) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
 

	
 
		_new_story_page_id = s->index;
 
		_story_page_next_sort_value++;
 
@@ -300,6 +301,7 @@ CommandCost CmdRemoveStoryPage(TileIndex
 
		delete p;
 

	
 
		InvalidateWindowClassesData(WC_STORY_BOOK, -1);
 
		if (StoryPage::GetNumItems() == 0) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
 
	}
 

	
 
	return CommandCost();
src/toolbar_gui.cpp
Show inline comments
 
@@ -44,6 +44,8 @@
 
#include "engine_base.h"
 
#include "highscore.h"
 
#include "game/game.hpp"
 
#include "goal_base.h"
 
#include "story_base.h"
 

	
 
#include "widgets/toolbar_widget.h"
 

	
 
@@ -192,23 +194,36 @@ static void PopupMainToolbMenu(Window *w
 
static const int CTMN_CLIENT_LIST = -1; ///< Show the client list
 
static const int CTMN_NEW_COMPANY = -2; ///< Create a new company
 
static const int CTMN_SPECTATE    = -3; ///< Become spectator
 
static const int CTMN_SPECTATOR   = -4; ///< Show a company window as spectator
 

	
 
/**
 
 * 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.
 
 * @param include_spectator If true, a spectator option is included in the list.
 
 */
 
static void PopupMainCompanyToolbMenu(Window *w, int widget, int grey = 0)
 
static void PopupMainCompanyToolbMenu(Window *w, int widget, int grey = 0, bool include_spectator = false)
 
{
 
	DropDownList *list = new DropDownList();
 

	
 
#ifdef ENABLE_NETWORK
 
	if (widget == WID_TN_COMPANIES && _networking) {
 
		/* Add the client list button for the companies menu */
 
		list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_CLIENT_LIST, CTMN_CLIENT_LIST, false));
 
	if (_networking) {
 
		if (widget == WID_TN_COMPANIES) {
 
			/* Add the client list button for the companies menu */
 
			list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_CLIENT_LIST, CTMN_CLIENT_LIST, false));
 
		}
 

	
 
		if (_local_company == COMPANY_SPECTATOR) {
 
			list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_NEW_COMPANY, CTMN_NEW_COMPANY, NetworkMaxCompaniesReached()));
 
		} else {
 
			list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_SPECTATE, CTMN_SPECTATE, NetworkMaxSpectatorsReached()));
 
		if (include_spectator) {
 
			if (widget == WID_TN_COMPANIES) {
 
				if (_local_company == COMPANY_SPECTATOR) {
 
					list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_NEW_COMPANY, CTMN_NEW_COMPANY, NetworkMaxCompaniesReached()));
 
				} else {
 
					list->push_back(new DropDownListStringItem(STR_NETWORK_COMPANY_LIST_SPECTATE, CTMN_SPECTATE, NetworkMaxSpectatorsReached()));
 
				}
 
			} else {
 
				list->push_back(new DropDownListStringItem(STR_NETWORK_TOOLBAR_LIST_SPECTATOR, CTMN_SPECTATOR, false));
 
			}
 
		}
 
	}
 
#endif /* ENABLE_NETWORK */
 
@@ -565,7 +580,7 @@ static CallBackFunction MenuClickFinance
 

	
 
static CallBackFunction ToolbarCompaniesClick(Window *w)
 
{
 
	PopupMainCompanyToolbMenu(w, WID_TN_COMPANIES);
 
	PopupMainCompanyToolbMenu(w, WID_TN_COMPANIES, 0, true);
 
	return CBF_NONE;
 
}
 

	
 
@@ -611,7 +626,7 @@ static CallBackFunction MenuClickCompany
 

	
 
static CallBackFunction ToolbarStoryClick(Window *w)
 
{
 
	PopupMainCompanyToolbMenu(w, WID_TN_STORY);
 
	PopupMainCompanyToolbMenu(w, WID_TN_STORY, 0, true);
 
	return CBF_NONE;
 
}
 

	
 
@@ -623,7 +638,7 @@ static CallBackFunction ToolbarStoryClic
 
 */
 
static CallBackFunction MenuClickStory(int index)
 
{
 
	ShowStoryBook((CompanyID)index);
 
	ShowStoryBook(index == CTMN_SPECTATOR ? INVALID_COMPANY : (CompanyID)index);
 
	return CBF_NONE;
 
}
 

	
 
@@ -631,7 +646,7 @@ static CallBackFunction MenuClickStory(i
 

	
 
static CallBackFunction ToolbarGoalClick(Window *w)
 
{
 
	PopupMainCompanyToolbMenu(w, WID_TN_GOAL);
 
	PopupMainCompanyToolbMenu(w, WID_TN_GOAL, 0, true);
 
	return CBF_NONE;
 
}
 

	
 
@@ -643,7 +658,7 @@ static CallBackFunction ToolbarGoalClick
 
 */
 
static CallBackFunction MenuClickGoal(int index)
 
{
 
	ShowGoalsList((CompanyID)index);
 
	ShowGoalsList(index == CTMN_SPECTATOR ? INVALID_COMPANY : (CompanyID)index);
 
	return CBF_NONE;
 
}
 

	
 
@@ -1641,7 +1656,10 @@ 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, WID_TN_STORY, WID_TN_GOAL, 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, WIDGET_LIST_END);
 

	
 
		this->SetWidgetDisabledState(WID_TN_GOAL, Goal::GetNumItems() == 0);
 
		this->SetWidgetDisabledState(WID_TN_STORY, StoryPage::GetNumItems() == 0);
 

	
 
		this->SetWidgetDisabledState(WID_TN_RAILS, !CanBuildVehicleInfrastructure(VEH_TRAIN));
 
		this->SetWidgetDisabledState(WID_TN_AIR, !CanBuildVehicleInfrastructure(VEH_AIRCRAFT));
0 comments (0 inline, 0 general)