Files
@ r18945:92861bb10006
Branch filter:
Location: cpp/openttd-patchpack/source/src/script/script_scanner.hpp
r18945:92861bb10006
3.6 KiB
text/x-c++hdr
(svn r23809) -Feature: Enhance some fatal NewGRF errors with the spritenumber that caused the problem.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | /* $Id$ */
/*
* 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 script_scanner.hpp Declarations of the class for the script scanner. */
#ifndef SCRIPT_SCANNER_HPP
#define SCRIPT_SCANNER_HPP
#include <map>
#include "../fileio_func.h"
#include "../core/string_compare_type.hpp"
typedef std::map<const char *, class ScriptInfo *, StringCompare> ScriptInfoList; ///< Type for the list of scripts.
/** Scanner to help finding scripts. */
class ScriptScanner : public FileScanner {
public:
ScriptScanner();
virtual ~ScriptScanner();
/**
* Initialize the scanner.
* @param name The name of the scanner ("AIScanner", "GSScanner", ..).
*/
virtual void Initialize(const char *name);
/**
* Get the engine of the main squirrel handler (it indexes all available scripts).
*/
class Squirrel *GetEngine() { return this->engine; }
/**
* Get the current main script the ScanDir is currently tracking.
*/
const char *GetMainScript() { return this->main_script; }
/**
* Get the current tar file the ScanDir is currently tracking.
*/
const char *GetTarFile() { return this->tar_file; }
/**
* Get the list of all registered scripts.
*/
const ScriptInfoList *GetInfoList() { return &this->info_list; }
/**
* Get the list of the latest version of all registered scripts.
*/
const ScriptInfoList *GetUniqueInfoList() { return &this->info_single_list; }
/**
* Register a ScriptInfo to the scanner.
*/
void RegisterScript(class ScriptInfo *info);
/**
* Get the list of registered scripts to print on the console.
*/
char *GetConsoleList(char *p, const char *last, bool newest_only) const;
/**
* Check whether we have a script with the exact characteristics as ci.
* @param ci The characteristics to search on (shortname and md5sum).
* @param md5sum Whether to check the MD5 checksum.
* @return True iff we have a script matching.
*/
bool HasScript(const struct ContentInfo *ci, bool md5sum);
/* virtual */ bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename);
/**
* Rescan the script dir.
*/
void RescanDir();
protected:
class Squirrel *engine; ///< The engine we're scanning with.
char *main_script; ///< The full path of the script.
char *tar_file; ///< If, which tar file the script was in.
ScriptInfoList info_list; ///< The list of all script.
ScriptInfoList info_single_list; ///< The list of all unique script. The best script (highest version) is shown.
/**
* Get the script name how to store the script in memory.
*/
virtual void GetScriptName(ScriptInfo *info, char *name, int len) = 0;
/**
* Get the filename to scan for this type of script.
*/
virtual const char *GetFileName() const = 0;
/**
* Get the directory to scan in.
*/
virtual Subdirectory GetDirectory() const = 0;
/**
* Register the API for this ScriptInfo.
*/
virtual void RegisterAPI(class Squirrel *engine) = 0;
/**
* Get the type of the script, in plural.
*/
virtual const char *GetScannerName() const = 0;
/**
* Reset all allocated lists.
*/
void Reset();
};
#endif /* SCRIPT_SCANNER_HPP */
|