OpenTTD Source 20241224-master-gf74b0cf984
depot_cmd.cpp
Go to the documentation of this file.
1/*
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/>.
6 */
7
10#include "stdafx.h"
11#include "command_func.h"
12#include "depot_base.h"
13#include "company_func.h"
14#include "string_func.h"
15#include "town.h"
16#include "vehicle_gui.h"
17#include "vehiclelist.h"
18#include "window_func.h"
19#include "depot_cmd.h"
20
21#include "table/strings.h"
22
23#include "safeguards.h"
24
30static bool IsUniqueDepotName(const std::string &name)
31{
32 for (const Depot *d : Depot::Iterate()) {
33 if (!d->name.empty() && d->name == name) return false;
34 }
35
36 return true;
37}
38
46CommandCost CmdRenameDepot(DoCommandFlag flags, DepotID depot_id, const std::string &text)
47{
48 Depot *d = Depot::GetIfValid(depot_id);
49 if (d == nullptr) return CMD_ERROR;
50
52 if (ret.Failed()) return ret;
53
54 bool reset = text.empty();
55
56 if (!reset) {
58 if (!IsUniqueDepotName(text)) return CommandCost(STR_ERROR_NAME_MUST_BE_UNIQUE);
59 }
60
61 if (flags & DC_EXEC) {
62 if (reset) {
63 d->name.clear();
65 } else {
66 d->name = text;
67 }
68
69 /* Update the orders and depot */
72
73 /* Update the depot list */
76 }
77 return CommandCost();
78}
Common return value for all commands.
bool Failed() const
Did this command fail?
Functions related to commands.
static const CommandCost CMD_ERROR
Define a default return value for a failed command.
DoCommandFlag
List of flags for a command.
@ DC_EXEC
execute the given command
CommandCost CheckTileOwnership(TileIndex tile)
Check whether the current owner owns the stuff on the given tile.
Functions related to companies.
Base for all depots (except hangars)
static bool IsUniqueDepotName(const std::string &name)
Check whether the given name is globally unique amongst depots.
Definition depot_cmd.cpp:30
CommandCost CmdRenameDepot(DoCommandFlag flags, DepotID depot_id, const std::string &text)
Rename a depot.
Definition depot_cmd.cpp:46
Command definitions related to depots.
VehicleType GetDepotVehicleType(Tile t)
Get the type of vehicles that can use a depot.
Definition depot_map.h:65
static const uint MAX_LENGTH_DEPOT_NAME_CHARS
The maximum length of a depot name in characters including '\0'.
Definition depot_type.h:18
uint16_t DepotID
Type for the unique identifier of depots.
Definition depot_type.h:13
A number of safeguards to prevent using unsafe methods.
Definition of base types and functions in a cross-platform compatible way.
size_t Utf8StringLength(const char *s)
Get the length of an UTF-8 encoded string in number of characters and thus not the number of bytes th...
Definition string.cpp:359
Functions related to low-level strings.
Tindex index
Index of this pool item.
static Pool::IterateWrapper< Titem > Iterate(size_t from=0)
Returns an iterable ensemble of all valid Titem.
static Titem * GetIfValid(size_t index)
Returns Titem with given index.
The information about a vehicle list.
Definition vehiclelist.h:28
uint32_t Pack() const
Pack a VehicleListIdentifier in a single uint32.
Owner GetTileOwner(Tile tile)
Returns the owner of a tile.
Definition tile_map.h:178
Base of the town class.
void MakeDefaultName(T *obj)
Set the default name for a depot/waypoint.
Definition town.h:254
Functions related to the vehicle's GUIs.
WindowClass GetWindowClassForVehicleType(VehicleType vt)
Get WindowClass for vehicle list of given vehicle type.
Definition vehicle_gui.h:97
VehicleType
Available vehicle types.
Functions and type for generating vehicle lists.
void SetWindowClassesDirty(WindowClass cls)
Mark all windows of a particular class as dirty (in need of repainting)
Definition window.cpp:3127
void SetWindowDirty(WindowClass cls, WindowNumber number)
Mark window as dirty (in need of repainting)
Definition window.cpp:3101
Window functions not directly related to making/drawing windows.
@ WC_VEHICLE_ORDERS
Vehicle orders; Window numbers:
@ WC_VEHICLE_DEPOT
Depot view; Window numbers: