Files
@ r24498:e9114d9ab04a
Branch filter:
Location: cpp/openttd-patchpack/source/src/tar_type.h - annotation
r24498:e9114d9ab04a
1.6 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 r10560:8bdfc4b8040a r10560:8bdfc4b8040a r9581:57d6f584b7ea r9591:8a2719f40368 r9581:57d6f584b7ea r9581:57d6f584b7ea r9581:57d6f584b7ea r9581:57d6f584b7ea r18876:3403b9c464f9 r18876:3403b9c464f9 r9581:57d6f584b7ea r9581:57d6f584b7ea r9581:57d6f584b7ea r10696:8dfe83e30d01 r9702:6f5b71553617 r9703:dd910442ef0b r9703:dd910442ef0b r9703:dd910442ef0b r23607:36c15679007d r18352:6c15d75d1ab9 r9581:57d6f584b7ea r9581:57d6f584b7ea r9581:57d6f584b7ea r9702:6f5b71553617 r9581:57d6f584b7ea r9581:57d6f584b7ea r9581:57d6f584b7ea r9581:57d6f584b7ea r9702:6f5b71553617 r9581:57d6f584b7ea r18370:7fbb35cad336 r18370:7fbb35cad336 r9581:57d6f584b7ea r18370:7fbb35cad336 r9581:57d6f584b7ea r9581:57d6f584b7ea | /*
* 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 tar_type.h Structs, typedefs and macros used for TAR file handling. */
#ifndef TAR_TYPE_H
#define TAR_TYPE_H
#include <map>
#include <string>
#include "fileio_type.h"
/** The define of a TarList. */
struct TarListEntry {
const char *filename;
const char *dirname;
/* MSVC goes copying around this struct after initialisation, so it tries
* to free filename, which isn't set at that moment... but because it
* initializes the variable with garbage, it's going to segfault. */
TarListEntry() : filename(nullptr), dirname(nullptr) {}
~TarListEntry() { free(this->filename); free(this->dirname); }
};
struct TarFileListEntry {
const char *tar_filename;
size_t size;
size_t position;
};
typedef std::map<std::string, TarListEntry> TarList;
typedef std::map<std::string, TarFileListEntry> TarFileList;
extern TarList _tar_list[NUM_SUBDIRS];
extern TarFileList _tar_filelist[NUM_SUBDIRS];
#define FOR_ALL_TARS(tar, sd) for (tar = _tar_filelist[sd].begin(); tar != _tar_filelist[sd].end(); tar++)
#endif /* TAR_TYPE_H */
|