mirror of https://github.com/OpenTTD/OpenTTD
(svn r25369) -Add: allow opening a story window specific to a company
parent
f373d29d62
commit
8980cb427d
|
@ -17,6 +17,7 @@
|
||||||
#include "tile_type.h"
|
#include "tile_type.h"
|
||||||
#include "transport_type.h"
|
#include "transport_type.h"
|
||||||
#include "story_type.h"
|
#include "story_type.h"
|
||||||
|
#include "company_type.h"
|
||||||
|
|
||||||
struct Window;
|
struct Window;
|
||||||
|
|
||||||
|
@ -52,7 +53,7 @@ void ShowIndustryCargoesWindow();
|
||||||
void ShowSubsidiesList();
|
void ShowSubsidiesList();
|
||||||
void ShowGoalsList();
|
void ShowGoalsList();
|
||||||
void ShowGoalQuestion(uint16 id, byte type, uint32 button_mask, const char *question);
|
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);
|
void ShowEstimatedCostOrIncome(Money cost, int x, int y);
|
||||||
|
|
||||||
|
|
|
@ -2975,7 +2975,8 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
|
||||||
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
|
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
|
# 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_TITLE :{YELLOW}{RAW_STRING}
|
||||||
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Page {NUM}
|
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.
|
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Jump to a specific page by selecting it in this drop down list.
|
||||||
|
|
|
@ -264,7 +264,7 @@ CommandCost CmdShowStoryPage(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
|
||||||
|
|
||||||
if (flags & DC_EXEC) {
|
if (flags & DC_EXEC) {
|
||||||
StoryPage *g = StoryPage::Get(p1);
|
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();
|
return CommandCost();
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "goal_base.h"
|
#include "goal_base.h"
|
||||||
#include "viewport_func.h"
|
#include "viewport_func.h"
|
||||||
#include "window_func.h"
|
#include "window_func.h"
|
||||||
|
#include "company_base.h"
|
||||||
|
|
||||||
#include "widgets/story_widget.h"
|
#include "widgets/story_widget.h"
|
||||||
|
|
||||||
|
@ -107,7 +108,7 @@ protected:
|
||||||
*/
|
*/
|
||||||
bool IsPageAvailable(const StoryPage *page) const
|
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 @@ public:
|
||||||
|
|
||||||
virtual void SetStringParameters(int widget) const
|
virtual void SetStringParameters(int widget) const
|
||||||
{
|
{
|
||||||
if (widget != WID_SB_SEL_PAGE) return;
|
switch (widget) {
|
||||||
|
case WID_SB_SEL_PAGE: {
|
||||||
StoryPage *page = this->GetSelPage();
|
StoryPage *page = this->GetSelPage();
|
||||||
SetDParamStr(0, page != NULL && page->title != NULL ? page->title : this->selected_generic_title);
|
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
|
virtual void DrawWidget(const Rect &r, int widget) const
|
||||||
|
@ -697,7 +709,7 @@ GUIStoryPageElementList::SortFunction * const StoryBookWindow::page_element_sort
|
||||||
static const NWidgetPart _nested_story_book_widgets[] = {
|
static const NWidgetPart _nested_story_book_widgets[] = {
|
||||||
NWidget(NWID_HORIZONTAL),
|
NWidget(NWID_HORIZONTAL),
|
||||||
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
|
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_SHADEBOX, COLOUR_BROWN),
|
||||||
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
|
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
|
||||||
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
|
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
|
||||||
|
@ -726,11 +738,13 @@ static WindowDesc _story_book_desc(
|
||||||
_nested_story_book_widgets, lengthof(_nested_story_book_widgets)
|
_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 (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);
|
w->SetSelectedPage(page_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -656,7 +656,7 @@ static CallBackFunction MenuClickLeague(int index)
|
||||||
{
|
{
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0: ShowGoalsList(); break;
|
case 0: ShowGoalsList(); break;
|
||||||
case 1: ShowStoryBook(); break;
|
case 1: ShowStoryBook(_local_company); break;
|
||||||
case 2: ShowCompanyLeagueTable(); break;
|
case 2: ShowCompanyLeagueTable(); break;
|
||||||
case 3: ShowPerformanceRatingDetail(); break;
|
case 3: ShowPerformanceRatingDetail(); break;
|
||||||
case 4: ShowHighscoreTable(); break;
|
case 4: ShowHighscoreTable(); break;
|
||||||
|
|
Loading…
Reference in New Issue