OpenTTD
ScriptScanner Class Referenceabstract

Scanner to help finding scripts. More...

#include <script_scanner.hpp>

Inheritance diagram for ScriptScanner:
FileScanner AIScannerInfo AIScannerLibrary GameScannerInfo GameScannerLibrary

Public Member Functions

virtual void Initialize ()=0
 
class Squirrel * GetEngine ()
 Get the engine of the main squirrel handler (it indexes all available scripts).
 
const char * GetMainScript ()
 Get the current main script the ScanDir is currently tracking.
 
const char * 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 (class ScriptInfo *info)
 Register a ScriptInfo to the scanner.
 
char * GetConsoleList (char *p, const char *last, 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. More...
 
const char * FindMainScript (const ContentInfo *ci, bool md5sum)
 Find a script of a ContentInfo. More...
 
bool AddFile (const char *filename, size_t basepath_length, const char *tar_filename) override
 Add a file with the given filename. More...
 
void RescanDir ()
 Rescan the script dir.
 
- Public Member Functions inherited from FileScanner
virtual ~FileScanner ()
 Destruct the proper one... More...
 
uint Scan (const char *extension, Subdirectory sd, bool tars=true, bool recursive=true)
 Scan for files with the given extension in the given search path. More...
 
uint Scan (const char *extension, const char *directory, bool recursive=true)
 Scan for files with the given extension in the given search path. More...
 

Protected Member Functions

void Initialize (const char *name)
 Initialize the scanner. More...
 
virtual void GetScriptName (ScriptInfo *info, char *name, const char *last)=0
 Get the script name how to store the script in memory.
 
virtual const char * 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 const char * 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

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.
 
- Protected Attributes inherited from FileScanner
Subdirectory subdir
 The current sub directory we are searching through.
 

Detailed Description

Scanner to help finding scripts.

Definition at line 20 of file script_scanner.hpp.

Member Function Documentation

◆ AddFile()

bool ScriptScanner::AddFile ( const char *  filename,
size_t  basepath_length,
const char *  tar_filename 
)
overridevirtual

Add a file with the given filename.

Parameters
filenamethe full path to the file to read
basepath_lengthamount of characters to chop of before to get a filename relative to the search path.
tar_filenamethe name of the tar file the file is read from.
Returns
true if the file is added.

Implements FileScanner.

Definition at line 26 of file script_scanner.cpp.

References free(), main_script, stredup(), and tar_file.

Referenced by GetUniqueInfoList().

◆ FindMainScript()

const char * ScriptScanner::FindMainScript ( const ContentInfo *  ci,
bool  md5sum 
)

Find a script of a ContentInfo.

Parameters
ciThe information to compare to.
md5sumWhether to check the MD5 checksum.
Returns
A filename of a file of the content, else nullptr.

Definition at line 282 of file script_scanner.cpp.

References info_list, and IsSameScript().

Referenced by GetUniqueInfoList().

◆ HasScript()

bool ScriptScanner::HasScript ( const struct ContentInfo *  ci,
bool  md5sum 
)

Check whether we have a script with the exact characteristics as ci.

Parameters
ciThe characteristics to search on (shortname and md5sum).
md5sumWhether to check the MD5 checksum.
Returns
True iff we have a script matching.

Definition at line 274 of file script_scanner.cpp.

References info_list, and IsSameScript().

Referenced by GetUniqueInfoList(), AI::HasAI(), and Game::HasGame().

◆ Initialize()

void ScriptScanner::Initialize ( const char *  name)
protected

Initialize the scanner.

Parameters
nameThe name of the scanner ("AIScanner", "GSScanner", ..).

Definition at line 77 of file script_scanner.cpp.

References engine, free(), main_script, RescanDir(), Reset(), ResetEngine(), and tar_file.


The documentation for this class was generated from the following files: