OpenTTD Source  13.2.1
story.cpp File Reference
#include "stdafx.h"
#include "story_base.h"
#include "core/pool_func.hpp"
#include "command_func.h"
#include "company_base.h"
#include "company_func.h"
#include "string_func.h"
#include "date_func.h"
#include "tile_map.h"
#include "goal_type.h"
#include "goal_base.h"
#include "window_func.h"
#include "gui.h"
#include "vehicle_base.h"
#include "game/game.hpp"
#include "script/api/script_story_page.hpp"
#include "script/api/script_event_types.hpp"
#include "story_cmd.h"
#include "safeguards.h"

Go to the source code of this file.

Functions

static bool VerifyElementContentParameters (StoryPageID page_id, StoryPageElementType type, TileIndex tile, uint32 reference, const char *text)
 This helper for Create/Update PageElement Cmd procedure verifies if the page element parameters are correct for the given page element type. More...
 
static void UpdateElement (StoryPageElement &pe, TileIndex tile, uint32 reference, const char *text)
 This helper for Create/Update PageElement Cmd procedure updates a page element with new content data. More...
 
std::tuple< CommandCost, StoryPageIDCmdCreateStoryPage (DoCommandFlag flags, CompanyID company, const std::string &text)
 Create a new story page. More...
 
std::tuple< CommandCost, StoryPageElementIDCmdCreateStoryPageElement (DoCommandFlag flags, TileIndex tile, StoryPageID page_id, StoryPageElementType type, uint32 reference, const std::string &text)
 Create a new story page element. More...
 
CommandCost CmdUpdateStoryPageElement (DoCommandFlag flags, TileIndex tile, StoryPageElementID page_element_id, uint32 reference, const std::string &text)
 Update a new story page element. More...
 
CommandCost CmdSetStoryPageTitle (DoCommandFlag flags, StoryPageID page_id, const std::string &text)
 Update title of a story page. More...
 
CommandCost CmdSetStoryPageDate (DoCommandFlag flags, StoryPageID page_id, Date date)
 Update date of a story page. More...
 
CommandCost CmdShowStoryPage (DoCommandFlag flags, StoryPageID page_id)
 Display a story page for all clients that are allowed to view the story page. More...
 
CommandCost CmdRemoveStoryPage (DoCommandFlag flags, StoryPageID page_id)
 Remove a story page and associated story page elements. More...
 
CommandCost CmdRemoveStoryPageElement (DoCommandFlag flags, StoryPageElementID page_element_id)
 Remove a story page element. More...
 
CommandCost CmdStoryPageButton (DoCommandFlag flags, TileIndex tile, StoryPageElementID page_element_id, VehicleID reference)
 Clicked/used a button on a story page. More...
 

Variables

uint32 _story_page_element_next_sort_value
 
uint32 _story_page_next_sort_value
 
StoryPageElementPool _story_page_element_pool ("StoryPageElement")
 
StoryPagePool _story_page_pool ("StoryPage")
 

Detailed Description

Handling of stories.

Definition in file story.cpp.

Function Documentation

◆ CmdCreateStoryPage()

std::tuple<CommandCost, StoryPageID> CmdCreateStoryPage ( DoCommandFlag  flags,
CompanyID  company,
const std::string &  text 
)

Create a new story page.

Parameters
flagstype of operation
companyCompany for which this story page belongs to.
textTitle of the story page. Null is allowed in which case a generic page title is provided by OpenTTD.
Returns
the cost of this operation or an error

Definition at line 206 of file story.cpp.

References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_pool >::CanAllocateItem(), CMD_ERROR, DC_EXEC, INVALID_COMPANY, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and OWNER_DEITY.

◆ CmdCreateStoryPageElement()

std::tuple<CommandCost, StoryPageElementID> CmdCreateStoryPageElement ( DoCommandFlag  flags,
TileIndex  tile,
StoryPageID  page_id,
StoryPageElementType  type,
uint32  reference,
const std::string &  text 
)

Create a new story page element.

Parameters
flagstype of operation
tileTile location if it is a location page element, otherwise unused.
page_idThe page which the element belongs to.
typePage element type
referenceId of referenced object
textText content in case it is a text or location page element
Returns
the cost of this operation or an error

Definition at line 249 of file story.cpp.

References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_element_pool >::CanAllocateItem(), CMD_ERROR, DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_element_pool >::Iterate(), OWNER_DEITY, and VerifyElementContentParameters().

◆ CmdRemoveStoryPage()

◆ CmdRemoveStoryPageElement()

CommandCost CmdRemoveStoryPageElement ( DoCommandFlag  flags,
StoryPageElementID  page_element_id 
)

◆ CmdSetStoryPageDate()

CommandCost CmdSetStoryPageDate ( DoCommandFlag  flags,
StoryPageID  page_id,
Date  date 
)

◆ CmdSetStoryPageTitle()

CommandCost CmdSetStoryPageTitle ( DoCommandFlag  flags,
StoryPageID  page_id,
const std::string &  text 
)

Update title of a story page.

Parameters
flagstype of operation
page_idStoryPageID to update.
texttitle text of the story page.
Returns
the cost of this operation or an error

Definition at line 321 of file story.cpp.

References _current_company, CMD_ERROR, DC_EXEC, free(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_pool >::Get(), InvalidateWindowClassesData(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_pool >::IsValidID(), OWNER_DEITY, stredup(), StoryPage::title, and WC_STORY_BOOK.

◆ CmdShowStoryPage()

◆ CmdStoryPageButton()

◆ CmdUpdateStoryPageElement()

CommandCost CmdUpdateStoryPageElement ( DoCommandFlag  flags,
TileIndex  tile,
StoryPageElementID  page_element_id,
uint32  reference,
const std::string &  text 
)

Update a new story page element.

Parameters
flagstype of operation
tileTile location if it is a location page element, otherwise unused.
page_element_idThe page element to update.
referenceId of referenced object
textText content in case it is a text or location page element
Returns
the cost of this operation or an error

Definition at line 295 of file story.cpp.

References _current_company, CMD_ERROR, DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_element_pool >::Get(), InvalidateWindowClassesData(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_element_pool >::IsValidID(), OWNER_DEITY, StoryPageElement::page, StoryPageElement::type, UpdateElement(), VerifyElementContentParameters(), and WC_STORY_BOOK.

◆ UpdateElement()

static void UpdateElement ( StoryPageElement pe,
TileIndex  tile,
uint32  reference,
const char *  text 
)
static

This helper for Create/Update PageElement Cmd procedure updates a page element with new content data.

Parameters
peThe page element to update
tileThe tile parameter of the DoCommand proc
referenceThe reference parameter of the DoCommand proc (p2)
textThe text parameter of the DoCommand proc

Definition at line 94 of file story.cpp.

References StoryPageElement::referenced_id, SPET_BUTTON_PUSH, SPET_BUTTON_TILE, SPET_BUTTON_VEHICLE, SPET_GOAL, SPET_LOCATION, SPET_TEXT, stredup(), StoryPageElement::text, and StoryPageElement::type.

Referenced by CmdUpdateStoryPageElement().

◆ VerifyElementContentParameters()

static bool VerifyElementContentParameters ( StoryPageID  page_id,
StoryPageElementType  type,
TileIndex  tile,
uint32  reference,
const char *  text 
)
static

This helper for Create/Update PageElement Cmd procedure verifies if the page element parameters are correct for the given page element type.

Parameters
page_idThe page id of the page which the page element (will) belong to
typeThe type of the page element to create/update
tileThe tile parameter of the DoCommand proc
referenceThe reference parameter of the DoCommand proc (p2)
textThe text parameter of the DoCommand proc
Returns
true, if and only if the given parameters are valid for the given page element type and page id.

Definition at line 50 of file story.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_goal_pool >::Get(), INVALID_COMPANY, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_goal_pool >::IsValidID(), IsValidTile(), SPET_BUTTON_PUSH, SPET_BUTTON_TILE, SPET_BUTTON_VEHICLE, SPET_GOAL, SPET_LOCATION, SPET_TEXT, and StrEmpty().

Referenced by CmdCreateStoryPageElement(), and CmdUpdateStoryPageElement().