Files
@ r24498:e9114d9ab04a
Branch filter:
Location: cpp/openttd-patchpack/source/src/string_type.h - annotation
r24498:e9114d9ab04a
2.8 KiB
text/x-c
Fix #6468: don't store version of AIs-started-via-console in name
You can do: "startai myai.3", which starts version 3 of "myai".
This is very useful for testing save/load code between different
versions of your AI.
However, when using this syntax, the AI got saved as "myai.3" as
name of the AI, instead of "myai". This caused several problems,
like indicating to the user the AI could not be found, but still
load the AI. But in all cases, the AI never got the chance to
load the saved data, making the whole reason this exists pointless.
By splitting the name and version already in the console command,
the code becomes simpler and AIs started this way now follow the
normal flow after initialization.
You can do: "startai myai.3", which starts version 3 of "myai".
This is very useful for testing save/load code between different
versions of your AI.
However, when using this syntax, the AI got saved as "myai.3" as
name of the AI, instead of "myai". This caused several problems,
like indicating to the user the AI could not be found, but still
load the AI. But in all cases, the AI never got the chance to
load the saved data, making the whole reason this exists pointless.
By splitting the name and version already in the console command,
the code becomes simpler and AIs started this way now follow the
normal flow after initialization.
r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r8214:9a3935f9ef4e r8214:9a3935f9ef4e r8214:9a3935f9ef4e r8214:9a3935f9ef4e r8214:9a3935f9ef4e r18732:ad27548fd630 r23602:f83b6cbc2d6c r23602:f83b6cbc2d6c r18732:ad27548fd630 r15223:940035eb246e r24429:6c2ba6f29317 r15223:940035eb246e r16286:6872e2b14b04 r24429:6c2ba6f29317 r16286:6872e2b14b04 r8214:9a3935f9ef4e r8214:9a3935f9ef4e r8214:9a3935f9ef4e r8214:9a3935f9ef4e r8214:9a3935f9ef4e r8214:9a3935f9ef4e r13401:29797ae8905d r8214:9a3935f9ef4e r15067:d55116170d15 r8214:9a3935f9ef4e r8214:9a3935f9ef4e r17625:366001a31c88 r24210:b9baa2f1bb39 r8214:9a3935f9ef4e r16286:6872e2b14b04 r16286:6872e2b14b04 r16286:6872e2b14b04 r16286:6872e2b14b04 r16286:6872e2b14b04 r16286:6872e2b14b04 r16286:6872e2b14b04 r16286:6872e2b14b04 r16286:6872e2b14b04 r16286:6872e2b14b04 r18732:ad27548fd630 r18732:ad27548fd630 r18732:ad27548fd630 r18732:ad27548fd630 r18732:ad27548fd630 r18745:f30e2b3b8a58 r18732:ad27548fd630 r19072:680458fb56d9 r18732:ad27548fd630 r23602:f83b6cbc2d6c r23602:f83b6cbc2d6c r23602:f83b6cbc2d6c r23602:f83b6cbc2d6c r8214:9a3935f9ef4e | /*
* This file is part of OpenTTD.
* 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.
* 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.
* 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/>.
*/
/** @file string_type.h Types for strings. */
#ifndef STRING_TYPE_H
#define STRING_TYPE_H
#include "core/enum_type.hpp"
#include <vector>
#include <string>
/** A non-breaking space. */
#define NBSP u8"\u00a0"
/** A left-to-right marker, marks the next character as left-to-right. */
#define LRM u8"\u200e"
/**
* Valid filter types for IsValidChar.
*/
enum CharSetFilter {
CS_ALPHANUMERAL, ///< Both numeric and alphabetic and spaces and stuff
CS_NUMERAL, ///< Only numeric ones
CS_NUMERAL_SPACE, ///< Only numbers and spaces
CS_ALPHA, ///< Only alphabetic values
CS_HEXADECIMAL, ///< Only hexadecimal characters
};
/** Type for wide characters, i.e. non-UTF8 encoded unicode characters. */
typedef char32_t WChar;
/* The following are directional formatting codes used to get the LTR and RTL strings right:
* http://www.unicode.org/unicode/reports/tr9/#Directional_Formatting_Codes */
static const WChar CHAR_TD_LRM = 0x200E; ///< The next character acts like a left-to-right character.
static const WChar CHAR_TD_RLM = 0x200F; ///< The next character acts like a right-to-left character.
static const WChar CHAR_TD_LRE = 0x202A; ///< The following text is embedded left-to-right.
static const WChar CHAR_TD_RLE = 0x202B; ///< The following text is embedded right-to-left.
static const WChar CHAR_TD_LRO = 0x202D; ///< Force the following characters to be treated as left-to-right characters.
static const WChar CHAR_TD_RLO = 0x202E; ///< Force the following characters to be treated as right-to-left characters.
static const WChar CHAR_TD_PDF = 0x202C; ///< Restore the text-direction state to before the last LRE, RLE, LRO or RLO.
/** Settings for the string validation. */
enum StringValidationSettings {
SVS_NONE = 0, ///< Allow nothing and replace nothing.
SVS_REPLACE_WITH_QUESTION_MARK = 1 << 0, ///< Replace the unknown/bad bits with question marks.
SVS_ALLOW_NEWLINE = 1 << 1, ///< Allow newlines.
SVS_ALLOW_CONTROL_CODE = 1 << 2, ///< Allow the special control codes.
};
DECLARE_ENUM_AS_BIT_SET(StringValidationSettings)
/** Type for a list of strings. */
typedef std::vector<std::string> StringList;
#endif /* STRING_TYPE_H */
|