changeset 20411:e7cedda9420a draft

(svn r25369) -Add: allow opening a story window specific to a company
author zuu <zuu@openttd.org>
date Sun, 09 Jun 2013 13:13:47 +0000
parents edec82336031
children e846e1bbb959
files src/gui.h src/lang/english.txt src/story.cpp src/story_gui.cpp src/toolbar_gui.cpp
diffstat 5 files changed, 29 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui.h
+++ b/src/gui.h
@@ -17,6 +17,7 @@
 #include "tile_type.h"
 #include "transport_type.h"
 #include "story_type.h"
+#include "company_type.h"
 
 struct Window;
 
@@ -52,7 +53,7 @@
 void ShowSubsidiesList();
 void ShowGoalsList();
 void ShowGoalQuestion(uint16 id, byte type, uint32 button_mask, const char *question);
-void ShowStoryBook(uint16 page_id = INVALID_STORY_PAGE);
+void ShowStoryBook(CompanyID company, uint16 page_id = INVALID_STORY_PAGE);
 
 void ShowEstimatedCostOrIncome(Money cost, int x, int y);
 
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -2975,7 +2975,8 @@
 STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER                :{BLACK}Click on service to centre main view on industry/town. Ctrl+Click opens a new viewport on industry/town location
 
 # Story book window
-STR_STORY_BOOK_CAPTION                                          :{WHITE}Story Book
+STR_STORY_BOOK_CAPTION                                          :{WHITE}{COMPANY} Story Book
+STR_STORY_BOOK_SPECTATOR_CAPTION                                :{WHITE}Global Story Book
 STR_STORY_BOOK_TITLE                                            :{YELLOW}{RAW_STRING}
 STR_STORY_BOOK_GENERIC_PAGE_ITEM                                :Page {NUM}
 STR_STORY_BOOK_SEL_PAGE_TOOLTIP                                 :{BLACK}Jump to a specific page by selecting it in this drop down list.
--- a/src/story.cpp
+++ b/src/story.cpp
@@ -264,7 +264,7 @@
 
 	if (flags & DC_EXEC) {
 		StoryPage *g = StoryPage::Get(p1);
-		if ((g->company != INVALID_COMPANY && g->company == _local_company) || (g->company == INVALID_COMPANY && Company::IsValidID(_local_company))) ShowStoryBook(p1);
+		if ((g->company != INVALID_COMPANY && g->company == _local_company) || (g->company == INVALID_COMPANY && Company::IsValidID(_local_company))) ShowStoryBook(_local_company, p1);
 	}
 
 	return CommandCost();
--- a/src/story_gui.cpp
+++ b/src/story_gui.cpp
@@ -24,6 +24,7 @@
 #include "goal_base.h"
 #include "viewport_func.h"
 #include "window_func.h"
+#include "company_base.h"
 
 #include "widgets/story_widget.h"
 
@@ -107,7 +108,7 @@
 	 */
 	bool IsPageAvailable(const StoryPage *page) const
 	{
-		return page->company == INVALID_COMPANY || page->company == _local_company;
+		return page->company == INVALID_COMPANY || page->company == this->window_number;
 	}
 
 	/**
@@ -460,10 +461,21 @@
 
 	virtual void SetStringParameters(int widget) const
 	{
-		if (widget != WID_SB_SEL_PAGE) return;
-
-		StoryPage *page = this->GetSelPage();
-		SetDParamStr(0, page != NULL && page->title != NULL ? page->title : this->selected_generic_title);
+		switch (widget) {
+			case WID_SB_SEL_PAGE: {
+				StoryPage *page = this->GetSelPage();
+				SetDParamStr(0, page != NULL && page->title != NULL ? page->title : this->selected_generic_title);
+				break;
+			}
+			case WID_SB_CAPTION:
+				if (this->window_number == INVALID_COMPANY) {
+					SetDParam(0, STR_STORY_BOOK_SPECTATOR_CAPTION);
+				} else {
+					SetDParam(0, STR_STORY_BOOK_CAPTION);
+					SetDParam(1, this->window_number);
+				}
+				break;
+		}
 	}
 
 	virtual void DrawWidget(const Rect &r, int widget) const
@@ -697,7 +709,7 @@
 static const NWidgetPart _nested_story_book_widgets[] = {
 	NWidget(NWID_HORIZONTAL),
 		NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
-		NWidget(WWT_CAPTION, COLOUR_BROWN, WID_SB_CAPTION), SetDataTip(STR_STORY_BOOK_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
+		NWidget(WWT_CAPTION, COLOUR_BROWN, WID_SB_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
 		NWidget(WWT_SHADEBOX, COLOUR_BROWN),
 		NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
 		NWidget(WWT_STICKYBOX, COLOUR_BROWN),
@@ -726,11 +738,13 @@
 	_nested_story_book_widgets, lengthof(_nested_story_book_widgets)
 );
 
-void ShowStoryBook(uint16 page_id)
+void ShowStoryBook(CompanyID company, uint16 page_id)
 {
-	StoryBookWindow *w = AllocateWindowDescFront<StoryBookWindow>(&_story_book_desc, 0);
+	if (!Company::IsValidID(company)) company = (CompanyID)INVALID_COMPANY;
+
+	StoryBookWindow *w = AllocateWindowDescFront<StoryBookWindow>(&_story_book_desc, company);
 	if (page_id != INVALID_STORY_PAGE) {
-		if (w == NULL) w = (StoryBookWindow *)FindWindowById(WC_STORY_BOOK, 0);
+		if (w == NULL) w = (StoryBookWindow *)FindWindowById(WC_STORY_BOOK, company);
 		w->SetSelectedPage(page_id);
 	}
 }
--- a/src/toolbar_gui.cpp
+++ b/src/toolbar_gui.cpp
@@ -656,7 +656,7 @@
 {
 	switch (index) {
 		case 0: ShowGoalsList();               break;
-		case 1: ShowStoryBook();               break;
+		case 1: ShowStoryBook(_local_company); break;
 		case 2: ShowCompanyLeagueTable();      break;
 		case 3: ShowPerformanceRatingDetail(); break;
 		case 4: ShowHighscoreTable();          break;