|
OpenTTD Source 20251116-master-g21329071df
|
Scanner to help finding scripts. More...
#include <script_scanner.hpp>
Public Member Functions | |
| virtual void | Initialize ()=0 |
| class Squirrel * | GetEngine () |
| Get the engine of the main squirrel handler (it indexes all available scripts). | |
| std::string | GetMainScript () |
| Get the current main script the ScanDir is currently tracking. | |
| std::string | GetTarFile () |
| Get the current tar file the ScanDir is currently tracking. | |
| const ScriptInfoList * | GetInfoList () |
| Get the list of all registered scripts. | |
| const ScriptInfoList * | GetUniqueInfoList () |
| Get the list of the latest version of all registered scripts. | |
| void | RegisterScript (std::unique_ptr< class ScriptInfo > &&info) |
| Register a ScriptInfo to the scanner. | |
| void | GetConsoleList (std::back_insert_iterator< std::string > &output_iterator, bool newest_only) const |
| Get the list of registered scripts to print on the console. | |
| bool | HasScript (const struct ContentInfo &ci, bool md5sum) |
| Check whether we have a script with the exact characteristics as ci. | |
| std::optional< std::string_view > | FindMainScript (const ContentInfo &ci, bool md5sum) |
| Find a script of a ContentInfo. | |
| bool | AddFile (const std::string &filename, size_t basepath_length, const std::string &tar_filename) override |
| Add a file with the given filename. | |
| void | RescanDir () |
| Rescan the script dir. | |
Public Member Functions inherited from FileScanner | |
| virtual | ~FileScanner ()=default |
| Destruct the proper one... | |
| uint | Scan (std::string_view extension, Subdirectory sd, bool tars=true, bool recursive=true) |
| Scan for files with the given extension in the given search path. | |
| uint | Scan (std::string_view extension, const std::string &directory, bool recursive=true) |
| Scan for files with the given extension in the given search path. | |
Protected Member Functions | |
| void | Initialize (std::string_view name) |
| Initialize the scanner. | |
| virtual std::string | GetScriptName (ScriptInfo &info)=0 |
| Get the script name how to store the script in memory. | |
| virtual std::string_view | GetFileName () const =0 |
| Get the filename to scan for this type of script. | |
| virtual Subdirectory | GetDirectory () const =0 |
| Get the directory to scan in. | |
| virtual void | RegisterAPI (class Squirrel &engine)=0 |
| Register the API for this ScriptInfo. | |
| virtual std::string_view | GetScannerName () const =0 |
| Get the type of the script, in plural. | |
| void | Reset () |
| Reset all allocated lists. | |
| void | ResetEngine () |
| Reset the engine to ensure a clean environment for further steps. | |
Protected Attributes | |
| std::unique_ptr< class Squirrel > | engine |
| The engine we're scanning with. | |
| std::string | main_script |
| The full path of the script. | |
| std::string | tar_file |
| If, which tar file the script was in. | |
| std::vector< std::unique_ptr< ScriptInfo > > | info_vector |
| 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. | |
Protected Attributes inherited from FileScanner | |
| Subdirectory | subdir |
| The current sub directory we are searching through. | |
Scanner to help finding scripts.
Definition at line 19 of file script_scanner.hpp.
|
virtual |
Definition at line 65 of file script_scanner.cpp.
|
overridevirtual |
Add a file with the given filename.
| filename | the full path to the file to read |
| basepath_length | amount of characters to chop of before to get a filename relative to the search path. |
| tar_filename | the name of the tar file the file is read from. |
Implements FileScanner.
Definition at line 26 of file script_scanner.cpp.
References Debug, engine, FioCheckFileExists(), Script_FatalError::GetErrorMessage(), main_script, ResetEngine(), FileScanner::subdir, and tar_file.
| std::optional< std::string_view > ScriptScanner::FindMainScript | ( | const ContentInfo & | ci, |
| bool | md5sum | ||
| ) |
Find a script of a ContentInfo.
| ci | The information to compare to. |
| md5sum | Whether to check the MD5 checksum. |
nullptr. Definition at line 233 of file script_scanner.cpp.
References info_list, and IsSameScript().
Referenced by ContentInfo::GetTextfile().
| void ScriptScanner::GetConsoleList | ( | std::back_insert_iterator< std::string > & | output_iterator, |
| bool | newest_only | ||
| ) | const |
Get the list of registered scripts to print on the console.
| output_iterator | The iterator to write the output to. |
| newest_only | Whether to only show the newest scripts. |
Definition at line 131 of file script_scanner.cpp.
References ScriptInfo::GetDescription(), ScriptInfo::GetName(), GetScannerName(), ScriptInfo::GetVersion(), info_list, and info_single_list.
|
protectedpure virtual |
Get the directory to scan in.
Implemented in AIScannerInfo, AIScannerLibrary, GameScannerInfo, and GameScannerLibrary.
Referenced by RescanDir().
|
inline |
Get the engine of the main squirrel handler (it indexes all available scripts).
Definition at line 29 of file script_scanner.hpp.
References engine.
Referenced by ScriptInfo::Constructor().
|
protectedpure virtual |
Get the filename to scan for this type of script.
Implemented in AIScannerInfo, AIScannerLibrary, GameScannerInfo, and GameScannerLibrary.
Referenced by RescanDir().
|
inline |
Get the list of all registered scripts.
Definition at line 44 of file script_scanner.hpp.
References info_list.
|
inline |
Get the current main script the ScanDir is currently tracking.
Definition at line 34 of file script_scanner.hpp.
References main_script.
Referenced by ScriptInfo::Constructor().
|
protectedpure virtual |
Get the type of the script, in plural.
Implemented in AIScannerInfo, AIScannerLibrary, GameScannerInfo, and GameScannerLibrary.
Referenced by GetConsoleList().
|
protectedpure virtual |
Get the script name how to store the script in memory.
Implemented in AIScannerInfo, AIScannerLibrary, GameScannerInfo, and GameScannerLibrary.
Referenced by RegisterScript().
|
inline |
Get the current tar file the ScanDir is currently tracking.
Definition at line 39 of file script_scanner.hpp.
References tar_file.
Referenced by ScriptInfo::Constructor().
|
inline |
Get the list of the latest version of all registered scripts.
Definition at line 49 of file script_scanner.hpp.
References info_single_list.
| bool ScriptScanner::HasScript | ( | const struct ContentInfo & | ci, |
| bool | md5sum | ||
| ) |
Check whether we have a script with the exact characteristics as ci.
| ci | The characteristics to search on (shortname and md5sum). |
| md5sum | Whether to check the MD5 checksum. |
Definition at line 225 of file script_scanner.cpp.
References info_list, and IsSameScript().
|
protected |
Initialize the scanner.
| name | The name of the scanner ("AIScanner", "GSScanner", ..). |
Definition at line 56 of file script_scanner.cpp.
References engine, RescanDir(), and ResetEngine().
|
protectedpure virtual |
Register the API for this ScriptInfo.
Implemented in AIScannerInfo, AIScannerLibrary, GameScannerInfo, and GameScannerLibrary.
Referenced by ResetEngine().
| void ScriptScanner::RegisterScript | ( | std::unique_ptr< class ScriptInfo > && | info | ) |
Register a ScriptInfo to the scanner.
Definition at line 86 of file script_scanner.cpp.
References _settings_client, GUISettings::ai_developer_tools, Debug, GetScriptName(), ScriptInfo::GetVersion(), ClientSettings::gui, info_list, info_single_list, ScriptInfo::IsDeveloperOnly(), and StrEqualsIgnoreCase().
Referenced by AIInfo::Constructor(), AILibrary::Constructor(), GameInfo::Constructor(), and GameLibrary::Constructor().
| void ScriptScanner::RescanDir | ( | ) |
Rescan the script dir.
Definition at line 70 of file script_scanner.cpp.
References GetDirectory(), GetFileName(), Reset(), and FileScanner::Scan().
Referenced by Initialize().
|
protected |
Reset all allocated lists.
Definition at line 79 of file script_scanner.cpp.
References info_list, and info_single_list.
Referenced by RescanDir().
|
protected |
Reset the engine to ensure a clean environment for further steps.
Definition at line 49 of file script_scanner.cpp.
References engine, and RegisterAPI().
Referenced by AddFile(), and Initialize().
|
protected |
The engine we're scanning with.
Definition at line 87 of file script_scanner.hpp.
Referenced by AddFile(), GetEngine(), Initialize(), AIScannerInfo::RegisterAPI(), AIScannerLibrary::RegisterAPI(), GameScannerInfo::RegisterAPI(), GameScannerLibrary::RegisterAPI(), and ResetEngine().
|
protected |
The list of all script.
Definition at line 93 of file script_scanner.hpp.
Referenced by AIScannerInfo::FindInfo(), GameScannerInfo::FindInfo(), AIScannerLibrary::FindLibrary(), GameScannerLibrary::FindLibrary(), FindMainScript(), GetConsoleList(), GetInfoList(), HasScript(), RegisterScript(), and Reset().
|
protected |
The list of all unique script. The best script (highest version) is shown.
Definition at line 94 of file script_scanner.hpp.
Referenced by AIScannerInfo::FindInfo(), GameScannerInfo::FindInfo(), GetConsoleList(), GetUniqueInfoList(), RegisterScript(), Reset(), and AIScannerInfo::SelectRandomAI().
|
protected |
Definition at line 91 of file script_scanner.hpp.
|
protected |
The full path of the script.
Definition at line 88 of file script_scanner.hpp.
Referenced by AddFile(), GetMainScript(), and IsSameScript().
|
protected |
If, which tar file the script was in.
Definition at line 89 of file script_scanner.hpp.
Referenced by AddFile(), and GetTarFile().