2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8 /** @file town_cmd.h Command definitions related to towns. */
13 #include "command_type.h"
14 #include "company_type.h"
15 #include "town_type.h"
17 enum TownAcceptanceEffect
: uint8_t;
18 using HouseID
= uint16_t;
20 std::tuple
<CommandCost
, Money
, TownID
> CmdFoundTown(DoCommandFlag flags
, TileIndex tile
, TownSize size
, bool city
, TownLayout layout
, bool random_location
, uint32_t townnameparts
, const std::string
&text
);
21 CommandCost
CmdRenameTown(DoCommandFlag flags
, TownID town_id
, const std::string
&text
);
22 CommandCost
CmdDoTownAction(DoCommandFlag flags
, TownID town_id
, uint8_t action
);
23 CommandCost
CmdTownGrowthRate(DoCommandFlag flags
, TownID town_id
, uint16_t growth_rate
);
24 CommandCost
CmdTownRating(DoCommandFlag flags
, TownID town_id
, CompanyID company_id
, int16_t rating
);
25 CommandCost
CmdTownCargoGoal(DoCommandFlag flags
, TownID town_id
, TownAcceptanceEffect tae
, uint32_t goal
);
26 CommandCost
CmdTownSetText(DoCommandFlag flags
, TownID town_id
, const std::string
&text
);
27 CommandCost
CmdExpandTown(DoCommandFlag flags
, TownID town_id
, uint32_t grow_amount
);
28 CommandCost
CmdDeleteTown(DoCommandFlag flags
, TownID town_id
);
29 CommandCost
CmdPlaceHouse(DoCommandFlag flags
, TileIndex tile
, HouseID house
);
31 DEF_CMD_TRAIT(CMD_FOUND_TOWN
, CmdFoundTown
, CMD_DEITY
| CMD_NO_TEST
, CMDT_LANDSCAPE_CONSTRUCTION
) // founding random town can fail only in exec run
32 DEF_CMD_TRAIT(CMD_RENAME_TOWN
, CmdRenameTown
, CMD_DEITY
| CMD_SERVER
, CMDT_OTHER_MANAGEMENT
)
33 DEF_CMD_TRAIT(CMD_DO_TOWN_ACTION
, CmdDoTownAction
, CMD_LOCATION
, CMDT_LANDSCAPE_CONSTRUCTION
)
34 DEF_CMD_TRAIT(CMD_TOWN_CARGO_GOAL
, CmdTownCargoGoal
, CMD_DEITY
, CMDT_OTHER_MANAGEMENT
)
35 DEF_CMD_TRAIT(CMD_TOWN_GROWTH_RATE
, CmdTownGrowthRate
, CMD_DEITY
, CMDT_OTHER_MANAGEMENT
)
36 DEF_CMD_TRAIT(CMD_TOWN_RATING
, CmdTownRating
, CMD_DEITY
, CMDT_OTHER_MANAGEMENT
)
37 DEF_CMD_TRAIT(CMD_TOWN_SET_TEXT
, CmdTownSetText
, CMD_DEITY
| CMD_STR_CTRL
, CMDT_OTHER_MANAGEMENT
)
38 DEF_CMD_TRAIT(CMD_EXPAND_TOWN
, CmdExpandTown
, CMD_DEITY
, CMDT_LANDSCAPE_CONSTRUCTION
)
39 DEF_CMD_TRAIT(CMD_DELETE_TOWN
, CmdDeleteTown
, CMD_OFFLINE
, CMDT_LANDSCAPE_CONSTRUCTION
)
40 DEF_CMD_TRAIT(CMD_PLACE_HOUSE
, CmdPlaceHouse
, CMD_DEITY
, CMDT_OTHER_MANAGEMENT
)
42 CommandCallback CcFoundTown
;
43 void CcFoundRandomTown(Commands cmd
, const CommandCost
&result
, Money
, TownID town_id
);
45 #endif /* TOWN_CMD_H */