OpenTTD Source 20250312-master-gcdcc6b491d
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(DoCommandFlags 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.Test(DoCommandFlag::Execute)) {
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}
constexpr bool Test(Tvalue_type value) const
Test if the value-th bit is set.
Common return value for all commands.
bool Failed() const
Did this command fail?
Enum-as-bit-set wrapper.
Functions related to commands.
static const CommandCost CMD_ERROR
Define a default return value for a failed command.
@ Execute
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(DoCommandFlags 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:78
static const uint MAX_LENGTH_DEPOT_NAME_CHARS
The maximum length of a depot name in characters including '\0'.
Definition depot_type.h:18
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:377
Functions related to low-level strings.
Templated helper to make a PoolID a single POD value.
Definition pool_type.hpp:43
static Pool::IterateWrapper< Titem > Iterate(size_t from=0)
Returns an iterable ensemble of all valid Titem.
Tindex index
Index of this pool item.
static Titem * GetIfValid(auto index)
Returns Titem with given index.
The information about a vehicle list.
Definition vehiclelist.h:32
WindowNumber ToWindowNumber() const
Pack a VehicleListIdentifier in 32 bits so it can be used as unique WindowNumber.
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:246
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.
@ VL_DEPOT_LIST
Index is the destination (station for hangar of aircraft, depot for others)
Definition vehiclelist.h:26
void SetWindowClassesDirty(WindowClass cls)
Mark all windows of a particular class as dirty (in need of repainting)
Definition window.cpp:3132
void SetWindowDirty(WindowClass cls, WindowNumber number)
Mark window as dirty (in need of repainting)
Definition window.cpp:3106
Window functions not directly related to making/drawing windows.
@ WC_VEHICLE_ORDERS
Vehicle orders; Window numbers:
@ WC_VEHICLE_DEPOT
Depot view; Window numbers: