Header and Source Files

Brief explanation of what each header and source file does. Read this if you are going to use the library to fully understand what there is and where it is.

Tool Library Project

Base64.hpp: This header is a modified header-only Base 64 library by Macaron on Github.

BitSet.hpp: This header defines all bit set classes used throughout the codebase. It defines the class BitSet, which is a fixed size bit set which is indexed by enums. There is also the widely used Flags class which is just a 32 bit integer flags wrapper class with enum-supporting template functions.

Callbacks.hpp: This header defines the callback system which is used to bind static functions, member functions and Lua functions. Internally the FastDelegate library is used for member functions. The FunctionBase struct is the abstract base. All callbacks can be called with Meta system instances (using CallMeta) or using parameter input type-erased C++ arguments. There is a maximum of 4 arguments supported. Callbacks can take 0 to 4 arguments. The Callbacks class is a set of callbacks which can be used to call multiple. FunctionDummy, LuaFunction<NumArguments>, Method<MethodObject, Arg1, Arg2, Arg3, Arg4> and Function<Arg1, Arg2, Arg3, Arg4> are the supported callback structures. See the macros are the bottom of this file for helpers which can create thees callbacks. They are all on the heap.

Config.hpp/Config.cpp: This is the main configuration header file which defines helper macros as well as version information. The source file defines various helper functions and utilities.

Context.hpp/Context.cpp: Defines and implements the tool context class used by the users of this sub-project.

GameCaps.hpp: This small header file defines all game capabilities which are specified for each game in the games registration script.

LinearHeap.hpp: This defines the linear heap class, a memory allocator which allocates like a stack and grows in pages. Supports object contexts, ie groups of objects which can be allocated together and freed and destructed together.

Math.hpp/Math.cpp: Defines all mathematical structures and constants used throughout the library such as Vector types, Matrix types, Colour, Sphere, BoundingBox, Quaternion, Transform and Frustrum as well as lots of functions and operators.

Symbol.hpp/Symbol.cpp: Defines the Symbol and SymbolMap (SYMMAP files) classes. Symbols are generalised hashes and symbol maps list a set of strings which are hashed and in use for getting the original string back.

Util.hpp: The utility header defines lots of utilities such as string manipulators, memory management, time utilities, template helpers, collection utilities, string mask helpers, float utilities and other miscellaneous macro helpers.

Meta.hpp/Meta.cpp: The main part of this sub-project is the Meta system which is mostly defined in these two files, all in the Meta namespace. Find here game registration information (Meta::RegGame), class instances, collection instances, lots of helper functions and more.

MetaCoersion.inl: This inline definition file defines all coercion code from Meta class Instances to C++ class/struct instances to Lua objects.

Blowfish.hpp/Blowfish.cpp: Defines and contains all encryption and decryption code including the modified Blowfish algorithm by Tellltale.

Compression.hpp/Compression.cpp: Find inside the Compression namespace compressor functions for Zlib and Oodle LZ which are used by Telltale.

DataStream.hpp/DataStream.cpp: All data stream implementation. See the page on data streams.

ISO9660.hpp/ISO9660.cpp: An implementation of the ISO-9660 ISO file format reader. Used in the resource register to read CD-ROMs for console game discs.

Pack2.hpp/Pack2.cpp: An implementation of the modified CSI: 3 Dimensions of Murder Playstation 2 archive format (which uses the Meta system but not here).

PropertySet.hpp/PropertySet.cpp: Defines the complete implementation, including Lua API, for property sets (PROP files).

ResourceRegistry.hpp/ResourceRegistry.cpp: Defines the resource register system, the Telltale asset management system which here supports the older resource system and newer system (which uses resource sets). This also defines the Handle<T> type, a handle to a common instance.

TTArchive.hpp/TTArchive.cpp: Simple reading and writing of Telltale archive TTARCH files.

TTArchive2.hpp/TTArchive2.cpp: Simple reading and writing of Telltale archive V2 TTARCH2 files.

JobScheduler.hpp/JobScheduler.cpp: The implementation of a thread-pool task system which supports task chaining, waiting and cancellation. Used by many other areas of the codebase most notably the renderer.

LuaManager.hpp/LuaManager.cpp: The main Lua VM class with access to the stack and modification of the environment.

ScriptManager.hpp/ScriptManager.cpp: A higher level version of the Lua manager class which adds more functionality similar to the Telltale API.

Lua502.cpp/Lua514.cpp/Lua523.cpp: These are the implementations of the Lua manager class for each Lua version. Telltale shipped all their games with one of these versions so all are included here such that they can be recompiled and compiled in the same format.

EngineLuaAPI.cpp: The exact matching Lua API of Telltale for systems in this sub-project: ie the resource registry (and file system) as well as the container API using the Meta system.

LibraryLuaAPI.cpp: The Lua API for this codebase including the Meta system, TTE functions and more.

Editor

Symbols.hpp: Contains many Telltale symbols which are used throughout and are of use.

TelltaleEditor.hpp/TelltaleEditor.cpp: Main files for the Telltale Editor, exposing the API which you should be using as a user of this project if building as a static library or adding to it.

EditorTasks.hpp/EditorTasks.cpp: All of the tasks which can be executed by the Telltale Editor asynchronously to aid development.

CommandLine.cpp: The implementation for parsing command line and delegating work to command executors.

Main.cpp: Main entry point for the Telltale Editor which just redirects to the command line main.

LuaGameEngine.cpp: The FULL matching Lua implementation (excluding code in the Engine API in Tool Library) of the Telltale engine.

AnimationManager.hpp/AnimationManager.cpp: Manages playing animations.

UI Folder: All code for UI related code in terms of the editor is found here.

Runtime Folder: Code for the Scene runtime is found here which plays and runs Telltale scenes and dialog.

Renderer Folder: All renderer code. See the renderer page for information.

Common Folder: All common class implementations, Lua API (In the cpp) as well as the Common.hpp header file which includes all common classes into one header.

Last updated