-- TEN 1.11.1.1 API
-- This file is auto-generated and for IntelliSense purposes only!
-- Any changes made here will not be reflected in the engine.
---@meta
---Flow module for Tomb Engine
---@class Flow
Flow = {}
---Constants for error modes.
---To be used in Flow.Settings.System.errorMode setting.
---
In all of these modes, an *unrecoverable* error will boot you to the title level.
---If the title level itself has an unrecoverable error, the game will close.
---@enum ErrorMode
ErrorMode = {
---Do nothing when a recoverable script error is hit.
SILENT = "SILENT",
---Print to the log file and continue running the application when a recoverable script error is hit.
WARN = "WARN",
---Print to the log file and return to the title level when any script error is hit.
TERMINATE = "TERMINATE",
}
---Module-prefixed alias for ErrorMode
Flow.ErrorMode = ErrorMode
---Constants for freeze modes.
---To be used with Flow.GetFreezeMode and Flow.SetFreezeMode functions.
---@enum FreezeMode
FreezeMode = {
---Normal in-game operation.
NONE = "NONE",
---Game is completely frozen, as in pause or inventory menus.
FULL = "FULL",
---Game is completely frozen, but with ability to control camera.
SPECTATOR = "SPECTATOR",
---Game is completely frozen, but with ability to control player.
PLAYER = "PLAYER",
}
---Module-prefixed alias for FreezeMode
Flow.FreezeMode = FreezeMode
---Constants for game statuses.
---To be used with Flow.GetGameStatus function.
---@enum GameStatus
GameStatus = {
---Normal game status.
NORMAL = "NORMAL",
---New game status.
NEW_GAME = "NEW_GAME",
---Load game status.
LOAD_GAME = "LOAD_GAME",
---Exit to title status.
EXIT_TO_TITLE = "EXIT_TO_TITLE",
---Exit game status.
EXIT_GAME = "EXIT_GAME",
---Player dead status.
LARA_DEAD = "LARA_DEAD",
---Level complete status.
LEVEL_COMPLETE = "LEVEL_COMPLETE",
}
---Module-prefixed alias for GameStatus
Flow.GameStatus = GameStatus
---Constants for item actions.
---To be used with Flow.InventoryItem class.
---@enum ItemAction
ItemAction = {
---Use the item.
USE = "USE",
---Equip the item.
EQUIP = "EQUIP",
---Examine the item.
EXAMINE = "EXAMINE",
---Combine the item with another item.
COMBINE = "COMBINE",
---Separate items.
SEPARATE = "SEPARATE",
---Load game.
LOAD = "LOAD",
---Save game.
SAVE = "SAVE",
---Show statistics screen.
STATISTICS = "STATISTICS",
---Choose ammo type for the shotgun.
CHOOSE_AMMO_SHOTGUN = "CHOOSE_AMMO_SHOTGUN",
---Choose ammo type for the crossbow.
CHOOSE_AMMO_CROSSBOW = "CHOOSE_AMMO_CROSSBOW",
---Choose ammo type for the grenade launcher.
CHOOSE_AMMO_GRENADEGUN = "CHOOSE_AMMO_GRENADEGUN",
---Choose ammo type for the Uzi.
CHOOSE_AMMO_UZI = "CHOOSE_AMMO_UZI",
---Choose ammo type for the pistols.
CHOOSE_AMMO_PISTOLS = "CHOOSE_AMMO_PISTOLS",
---Choose ammo type for the revolver.
CHOOSE_AMMO_REVOLVER = "CHOOSE_AMMO_REVOLVER",
---Choose ammo type for the HK gun.
CHOOSE_AMMO_HK = "CHOOSE_AMMO_HK",
---Choose ammo type for the harpoon gun.
CHOOSE_AMMO_HARPOON = "CHOOSE_AMMO_HARPOON",
---Choose ammo type for the rocket launcher.
CHOOSE_AMMO_ROCKET = "CHOOSE_AMMO_ROCKET",
}
---Module-prefixed alias for ItemAction
Flow.ItemAction = ItemAction
---Constants for player types.
---@enum LaraType
LaraType = {
---Normal Lara with a single braid.
Normal = "Normal",
---Young Lara with two ponytails.
Young = "Young",
---Divesuit Lara.
Divesuit = "Divesuit",
}
---Module-prefixed alias for LaraType
Flow.LaraType = LaraType
---Constants for pathfinding modes.
---To be used in Flow.Settings.Pathfinding.mode setting.
---@enum PathfindingMode
PathfindingMode = {
---Breadth-first search or BFS (original Core algorithm).
BFS = "BFS",
---Dijkstra's algorithm with distance weights.
DIJKSTRA = "DIJKSTRA",
---A* algorithm with distance weights and heuristic (default).
ASTAR = "ASTAR",
}
---Module-prefixed alias for PathfindingMode
Flow.PathfindingMode = PathfindingMode
---Constants for weather types.
---@enum WeatherType
WeatherType = {
---No weather.
None = "None",
---Rain weather.
Rain = "Rain",
---Snow weather.
Snow = "Snow",
}
---Module-prefixed alias for WeatherType
Flow.WeatherType = WeatherType
---Represesnts distance fog.
---To be used with Flow.Level.fog property.
---@class Fog
---@field color Color # RGB fog color.
---@field minDistance number # Minimum distance.
---@field maxDistance number # Maximum distance.
Fog = {}
---Module-prefixed alias for Fog
Flow.Fog = Fog
---@param color Color # RGB color
---@param min integer # Distance at which fog starts (in sectors).
---@param max integer # Distance at which fog reaches the maximum strength (in sectors).
---@return Fog # A fog object.
function Fog.new(color, min, max) end
---@param color Color # RGB color
---@param min integer # Distance at which fog starts (in sectors).
---@param max integer # Distance at which fog reaches the maximum strength (in sectors).
---@return Fog # A fog object.
function Flow.Fog.new(color, min, max) end
---Constructor function for Fog (alias for Fog.new)
---@param color Color # RGB color
---@param min integer # Distance at which fog starts (in sectors).
---@param max integer # Distance at which fog reaches the maximum strength (in sectors).
---@return Fog # A fog object.
function Fog(color, min, max) end
---Constructor function for Flow.Fog (alias for Flow.Fog.new)
---@param color Color # RGB color
---@param min integer # Distance at which fog starts (in sectors).
---@param max integer # Distance at which fog reaches the maximum strength (in sectors).
---@return Fog # A fog object.
function Flow.Fog(color, min, max) end
---Represents a horizon.
---To be used with Flow.Level.horizon1 and Flow.Level.horizon2 properties.
---@class Horizon
---@field enabled boolean # Horizon enabled state.
---@field objectID ObjID # Horizon object ID.
---@field position Vec3 # Horizon position.
---@field rotation Rotation # Horizon rotation.
---@field transparency number # Horizon transparency.
Horizon = {}
---Module-prefixed alias for Horizon
Flow.Horizon = Horizon
---Create a horizon object.
---@param objectID ObjID # Object ID for the horizon to use.
---@return Horizon # A new Horizon object.
function Horizon.new(objectID) end
---Create a horizon object.
---@param objectID ObjID # Object ID for the horizon to use.
---@return Horizon # A new Horizon object.
function Flow.Horizon.new(objectID) end
---Constructor function for Horizon (alias for Horizon.new)
---@param objectID ObjID # Object ID for the horizon to use.
---@return Horizon # A new Horizon object.
function Horizon(objectID) end
---Constructor function for Flow.Horizon (alias for Flow.Horizon.new)
---@param objectID ObjID # Object ID for the horizon to use.
---@return Horizon # A new Horizon object.
function Flow.Horizon(objectID) end
---Represents the properties of an object as it appears in the inventory.
---To be used in Flow.Level.objects list.
---@class InventoryItem
InventoryItem = {}
---Module-prefixed alias for InventoryItem
Flow.InventoryItem = InventoryItem
---Create an InventoryItem.
---@param nameKey string # key for the item's (localised) name. Corresponds to an entry in strings.lua.
---@param objectID ObjID # object ID of the inventory object to change
---@param yOffset number # y-axis offset (positive values move the item down).
A value of about 100 will cause the item to display directly below its usual position.
---@param scale number # item size (1 being standard size).
A value of 0.5 will cause the item to render at half the size, and a value of 2 will cause the item to render at twice the size.
---@param rot Rotation # rotation around x, y, and z axes.
---@param axis RotationAxis # Axis to rotate around when the item is observed at in the inventory.
Note that this is entirely separate from the `rot` field described above. Must one of the following: X Y Z e.g. `myItem.rotAxisWhenCurrent = RotationAxis.X`
---@param meshBits integer # _Not currently implemented_ (will have no effect regardless of what you set it to).
---@param action ItemAction # Item action or set of actions to assign. Item actions can be combined, for example: `ItemAction.USE | ItemAction.SAVE`.
---@return InventoryItem # an InventoryItem.
function InventoryItem.new(nameKey, objectID, yOffset, scale, rot, axis, meshBits, action) end
---Create an InventoryItem.
---@param nameKey string # key for the item's (localised) name. Corresponds to an entry in strings.lua.
---@param objectID ObjID # object ID of the inventory object to change
---@param yOffset number # y-axis offset (positive values move the item down).
A value of about 100 will cause the item to display directly below its usual position.
---@param scale number # item size (1 being standard size).
A value of 0.5 will cause the item to render at half the size, and a value of 2 will cause the item to render at twice the size.
---@param rot Rotation # rotation around x, y, and z axes.
---@param axis RotationAxis # Axis to rotate around when the item is observed at in the inventory.
Note that this is entirely separate from the `rot` field described above. Must one of the following: X Y Z e.g. `myItem.rotAxisWhenCurrent = RotationAxis.X`
---@param meshBits integer # _Not currently implemented_ (will have no effect regardless of what you set it to).
---@param action ItemAction # Item action or set of actions to assign. Item actions can be combined, for example: `ItemAction.USE | ItemAction.SAVE`.
---@return InventoryItem # an InventoryItem.
function Flow.InventoryItem.new(nameKey, objectID, yOffset, scale, rot, axis, meshBits, action) end
---Constructor function for InventoryItem (alias for InventoryItem.new)
---@param nameKey string # key for the item's (localised) name. Corresponds to an entry in strings.lua.
---@param objectID ObjID # object ID of the inventory object to change
---@param yOffset number # y-axis offset (positive values move the item down).
A value of about 100 will cause the item to display directly below its usual position.
---@param scale number # item size (1 being standard size).
A value of 0.5 will cause the item to render at half the size, and a value of 2 will cause the item to render at twice the size.
---@param rot Rotation # rotation around x, y, and z axes.
---@param axis RotationAxis # Axis to rotate around when the item is observed at in the inventory.
Note that this is entirely separate from the `rot` field described above. Must one of the following: X Y Z e.g. `myItem.rotAxisWhenCurrent = RotationAxis.X`
---@param meshBits integer # _Not currently implemented_ (will have no effect regardless of what you set it to).
---@param action ItemAction # Item action or set of actions to assign. Item actions can be combined, for example: `ItemAction.USE | ItemAction.SAVE`.
---@return InventoryItem # an InventoryItem.
function InventoryItem(nameKey, objectID, yOffset, scale, rot, axis, meshBits, action) end
---Constructor function for Flow.InventoryItem (alias for Flow.InventoryItem.new)
---@param nameKey string # key for the item's (localised) name. Corresponds to an entry in strings.lua.
---@param objectID ObjID # object ID of the inventory object to change
---@param yOffset number # y-axis offset (positive values move the item down).
A value of about 100 will cause the item to display directly below its usual position.
---@param scale number # item size (1 being standard size).
A value of 0.5 will cause the item to render at half the size, and a value of 2 will cause the item to render at twice the size.
---@param rot Rotation # rotation around x, y, and z axes.
---@param axis RotationAxis # Axis to rotate around when the item is observed at in the inventory.
Note that this is entirely separate from the `rot` field described above. Must one of the following: X Y Z e.g. `myItem.rotAxisWhenCurrent = RotationAxis.X`
---@param meshBits integer # _Not currently implemented_ (will have no effect regardless of what you set it to).
---@param action ItemAction # Item action or set of actions to assign. Item actions can be combined, for example: `ItemAction.USE | ItemAction.SAVE`.
---@return InventoryItem # an InventoryItem.
function Flow.InventoryItem(nameKey, objectID, yOffset, scale, rot, axis, meshBits, action) end
---Represents a global lens flare (not to be confused with the lens flare object).
---To be used with Flow.Level.lensFlare property.
---@class LensFlare
---@field enabled boolean # Lens flare enabled state.
---@field spriteID integer # Lens flare's sun sprite ID in DEFAULT_SPRITES sequence.
---@field pitch number # Lens flare's pitch (vertical) angle in degrees.
---@field yaw number # Lens flare's yaw (horizontal) angle in degrees.
---@field color Color # Lens flare's color.
LensFlare = {}
---Module-prefixed alias for LensFlare
Flow.LensFlare = LensFlare
---Create a LensFlare object.
---@param pitch number # Pitch angle in degrees.
---@param yaw number # Yaw angle in degrees.
---@param color Color # Color of the lensflare.
---@return LensFlare # A new LensFlare object.
function LensFlare.new(pitch, yaw, color) end
---Create a LensFlare object.
---@param pitch number # Pitch angle in degrees.
---@param yaw number # Yaw angle in degrees.
---@param color Color # Color of the lensflare.
---@return LensFlare # A new LensFlare object.
function Flow.LensFlare.new(pitch, yaw, color) end
---Constructor function for LensFlare (alias for LensFlare.new)
---@param pitch number # Pitch angle in degrees.
---@param yaw number # Yaw angle in degrees.
---@param color Color # Color of the lensflare.
---@return LensFlare # A new LensFlare object.
function LensFlare(pitch, yaw, color) end
---Constructor function for Flow.LensFlare (alias for Flow.LensFlare.new)
---@param pitch number # Pitch angle in degrees.
---@param yaw number # Yaw angle in degrees.
---@param color Color # Color of the lensflare.
---@return LensFlare # A new LensFlare object.
function Flow.LensFlare(pitch, yaw, color) end
---Stores level metadata.
---These are things things which aren't present in the compiled level file itself.
---@class Level
---@field nameKey string # String key for the level's name.
---@field scriptFile string # Level-specific Lua script file.
---@field levelFile string # Compiled file path.
---@field loadScreenFile string # Load screen image.
---@field ambientTrack string # Initial ambient sound track to play.
---@field layer1 SkyLayer # Primary sky cloud layer.
---@field layer2 SkyLayer # Secondary sky cloud layer.
---@field horizon1 Horizon # Primary horizon object.
---@field horizon2 Horizon # Secondary horizon object.
---@field starfield Starfield # Starfield in the sky.
---@field lensFlare LensFlare # Global lens flare.
---@field fog Fog # Global distance fog, with specified RGB color and distance.
---@field storm boolean # Enable flickering lightning in the sky.
---@field weather WeatherType # Choose weather effect.
---@field weatherStrength number # Choose weather strength.
---@field weatherClustering boolean # Choose if weather should be clustered or not.
---@field laraType LaraType # Appearance of Lara.
---@field rumble boolean # Enable occasional screen shake effect.
---@field farView integer # The maximum draw distance for level.
---@field resetHub boolean # Reset hub data.
---@field objects InventoryItem[] # A table of inventory object layout overrides.
---@field secrets integer # Set total secret count for current level.
Level = {}
---Module-prefixed alias for Level
Flow.Level = Level
---Make a new Level object.
---@return Level # a Level object.
function Level.new() end
---Make a new Level object.
---@return Level # a Level object.
function Flow.Level.new() end
---Constructor function for Level (alias for Level.new)
---@return Level # a Level object.
function Level() end
---Constructor function for Flow.Level (alias for Flow.Level.new)
---@return Level # a Level object.
function Flow.Level() end
---Describes a layer of moving clouds.
---To be used with Flow.Level.layer1 and Flow.Level.layer2 properties.
---@class SkyLayer
---@field color Color # RGB sky color.
---@field speed integer # Cloud speed.
SkyLayer = {}
---Module-prefixed alias for SkyLayer
Flow.SkyLayer = SkyLayer
---@param color Color # RGB color.
---@param speed integer # Cloud speed.
---@return SkyLayer # A SkyLayer object.
function SkyLayer.new(color, speed) end
---@param color Color # RGB color.
---@param speed integer # Cloud speed.
---@return SkyLayer # A SkyLayer object.
function Flow.SkyLayer.new(color, speed) end
---Constructor function for SkyLayer (alias for SkyLayer.new)
---@param color Color # RGB color.
---@param speed integer # Cloud speed.
---@return SkyLayer # A SkyLayer object.
function SkyLayer(color, speed) end
---Constructor function for Flow.SkyLayer (alias for Flow.SkyLayer.new)
---@param color Color # RGB color.
---@param speed integer # Cloud speed.
---@return SkyLayer # A SkyLayer object.
function Flow.SkyLayer(color, speed) end
---Represents a star field in the sky.
---To be used with Flow.Level.starfield property.
---@class Starfield
---@field starCount integer # Amount of visible stars.
---@field meteorCount integer # Amount of visible meteors.
---@field meteorSpawnDensity integer # Meteor spawn density.
---@field meteorVelocity integer # Meteor velocity.
Starfield = {}
---Module-prefixed alias for Starfield
Flow.Starfield = Starfield
---Create a starfield object with only stars.
---@param starCount integer # Star count.
---@return Starfield # A new Starfield object.
function Starfield.new(starCount) end
---Create a starfield object with only stars.
---@param starCount integer # Star count.
---@return Starfield # A new Starfield object.
function Flow.Starfield.new(starCount) end
---Create a starfield object with stars and meteors.
---@param starCount integer # Star count. __Max: 6000__
---@param meteorCount integer # Meteor count. __Max: 100__
---@param meteorSpawnDensity integer # Meteor spawn density.
---@param meteorVel integer # Meteor velocity.
---@return Starfield # A new Starfield object.
function Starfield.new(starCount, meteorCount, meteorSpawnDensity, meteorVel) end
---Create a starfield object with stars and meteors.
---@param starCount integer # Star count. __Max: 6000__
---@param meteorCount integer # Meteor count. __Max: 100__
---@param meteorSpawnDensity integer # Meteor spawn density.
---@param meteorVel integer # Meteor velocity.
---@return Starfield # A new Starfield object.
function Flow.Starfield.new(starCount, meteorCount, meteorSpawnDensity, meteorVel) end
---Constructor function for Starfield (alias for Starfield.new)
---@param starCount integer # Star count.
---@return Starfield # A new Starfield object.
function Starfield(starCount) end
---@param starCount integer # Star count. __Max: 6000__
---@param meteorCount integer # Meteor count. __Max: 100__
---@param meteorSpawnDensity integer # Meteor spawn density.
---@param meteorVel integer # Meteor velocity.
---@return Starfield # A new Starfield object.
function Starfield(starCount, meteorCount, meteorSpawnDensity, meteorVel) end
---Constructor function for Flow.Starfield (alias for Flow.Starfield.new)
---@param starCount integer # Star count.
---@return Starfield # A new Starfield object.
function Flow.Starfield(starCount) end
---@param starCount integer # Star count. __Max: 6000__
---@param meteorCount integer # Meteor count. __Max: 100__
---@param meteorSpawnDensity integer # Meteor spawn density.
---@param meteorVel integer # Meteor velocity.
---@return Starfield # A new Starfield object.
function Flow.Starfield(starCount, meteorCount, meteorSpawnDensity, meteorVel) end
---A set of gameplay statistics.
---Can be accessed using Flow.GetStatistics and Flow.SetStatistics functions.
---@class Statistics
---@field ammoHits any # Ammo hits.
---@field ammoUsed any # Ammo used.
---@field distanceTraveled any # Distance traveled.
---@field healthPacksUsed any # Health packs used.
---@field damageTaken any # Damage taken.
---@field kills any # Kills.
---@field pickups any # Pickups.
---@field secrets any # Secrets.
---@field timeTaken any # Time taken.
Statistics = {}
---Module-prefixed alias for Statistics
Flow.Statistics = Statistics
---Constructor for Statistics
---@return Statistics # A new Statistics object.
function Statistics.new() end
---Constructor for Flow.Statistics
---@return Statistics # A new Statistics object.
function Flow.Statistics.new() end
---Constructor for Statistics (alias for Statistics.new)
---@return Statistics # A new Statistics object.
function Statistics() end
---Constructor for Flow.Statistics (alias for Flow.Statistics.new)
---@return Statistics # A new Statistics object.
function Flow.Statistics() end
---These settings determine whether a specific moveset is available in-game.
---@class AnimSettings
---@field crawlExtended boolean? # Extended crawl moveset. (default: `true`)
---@field crouchRoll boolean? # Crouch roll. (default: `true`)
---@field crawlspaceSwandive boolean? # Crawlspace dive. (default: `true`)
---@field overhangClimb boolean # Enables overhang climbing feature. Currently does not work. Overhang climbing.
---@field slideExtended boolean # If enabled, player will be able to change slide direction with controls. Currently does not work. Extended slide mechanics.
---@field sprintJump boolean? # Sprint jump. (default: `false`)
---@field ledgeJumps boolean? # Ledge jumps. (default: `false`)
---@field poseTimeout integer? # Pose timeout. (default: `20`)
AnimSettings = {}
---Module-prefixed alias for AnimSettings
Flow.AnimSettings = AnimSettings
---These settings change appearance and behaviour of a flare.
---@class FlareSettings
---@field color Color? # Flare color. (default: `TEN.Color(128, 64, 0)`)
---@field offset Vec3? # Muzzle offset. (default: `Vec3(0, 0, 41)`)
---@field range integer? # Light range. (default: `9`)
---@field timeout integer? # Burn timeout. (default: `60`)
---@field pickupCount integer? # Default flare pickup count. (default: `12`)
---@field lensflareBrightness number? # Lens flare brightness. (default: `0.5`)
---@field sparks boolean? # Toggle spark effect. (default: `true`)
---@field smoke boolean? # Toggle smoke effect. (default: `true`)
---@field muzzleGlow boolean? # Toggle muzzle glow effect. (default: `false`)
---@field flicker boolean? # Toggle flicker effect. (default: `true`)
FlareSettings = {}
---Module-prefixed alias for FlareSettings
Flow.FlareSettings = FlareSettings
---This is a table of braid object settings.
---
Table consists of three entries, with first one representing classic Lara braid, and 2 and 3 representing left and right young Lara braids respectively.
---Therefore, if you want to access classic Lara braid settings, use `settings.Hair[1]`, and so on.
---@class HairSettings
---@field rootMesh integer? # Root mesh to which hair object will attach to. (default: `14`)
---@field offset Vec3 # Relative braid offset to a headmesh. Not used with skinned hair mesh.
---@field indices table # Braid connection indices. Not used with skinned hair mesh.
HairSettings = {}
---Module-prefixed alias for HairSettings
Flow.HairSettings = HairSettings
---This is a table of weapon settings, with several parameters available for every weapon.
---Access particular weapon's settings by using Objects.WeaponType as an index for this table, e.g.
---`settings.Weapons[Flow.WeaponType.PISTOLS]`.
---Default values for these settings are different for different weapons.
---Refer to *settings.lua* file to see them.
---@class WeaponSettings
---@field accuracy number # Shooting accuracy.
---@field targetingDistance number # Targeting distance.
---@field interval number # Shooting interval.
---@field damage integer # Damage.
---@field alternateDamage integer # Alternate damage.
---@field waterLevel integer # Water level.
---@field pickupCount integer # Default ammo pickup count.
---@field flashColor Color # Gunflash color.
---@field flashRange integer # Gunflash range.
---@field flashDuration integer # Gunflash duration.
---@field smoke boolean # Gun smoke.
---@field shell boolean # Gun shell.
---@field muzzleFlash boolean # Display muzzle flash.
---@field muzzleGlow boolean # Display muzzle glow.
---@field colorizeMuzzleFlash boolean # Colorize muzzle flash.
---@field muzzleOffset Vec3 # Muzzle offset.
WeaponSettings = {}
---Module-prefixed alias for WeaponSettings
Flow.WeaponSettings = WeaponSettings
---System-wide user interface settings.
---@class UISettings
---@field headerTextColor Color? # Header text color. (default: `TEN.Color(216, 117, 49)`)
---@field optionTextColor Color? # Option text color. (default: `TEN.Color(240, 220, 32)`)
---@field plainTextColor Color? # Plain text color. (default: `TEN.Color(255, 255, 255)`)
---@field disabledTextColor Color? # Disabled text color. (default: `TEN.Color(128, 128, 128)`)
---@field shadowTextColor Color? # Shadow text color. (default: `TEN.Color(0, 0, 0)`)
---@field titleLogoPosition Vec2? # Title logo center point position. (default: `TEN.Vec2(50, 20)`)
---@field titleLogoScale number? # Title logo scale. (default: `0.38`)
---@field titleLogoColor Color? # Title logo color. (default: `TEN.Color(255, 255, 255)`)
---@field titleMenuPosition Vec2? # Title menu position. (default: `TEN.Vec2(50, 66)`)
---@field titleMenuScale number? # Title menu scale. (default: `1.0`)
---@field titleMenuAlignment DisplayStringOption? # Title menu alignment. (default: `Strings.DisplayStringOption.CENTER`)
UISettings = {}
---Module-prefixed alias for UISettings
Flow.UISettings = UISettings
---Global system settings that is not directly related to gameplay.
---@class SystemSettings
---@field errorMode ErrorMode? # How should the application respond to script errors? (default: `Flow.ErrorMode.WARN`)
---@field multithreaded boolean? # Use multithreading in certain calculations.
(default: `true`)
---@field fastReload boolean? # Can the game utilize the fast reload feature?
(default: `true`)
SystemSettings = {}
---Module-prefixed alias for SystemSettings
Flow.SystemSettings = SystemSettings
---These settings are used to enable or disable certain graphics features.
---@class GraphicsSettings
---@field ambientOcclusion boolean? # Enable ambient occlusion. (default: `true`)
---@field skinning boolean? # Enable skinning. (default: `true`)
GraphicsSettings = {}
---Module-prefixed alias for GraphicsSettings
Flow.GraphicsSettings = GraphicsSettings
---Here you will find various settings for game world physics.
---@class PhysicsSettings
---@field gravity number? # Global world gravity. (default: `6.0`)
---@field swimVelocity number? # Swim velocity. (default: `50.0`)
PhysicsSettings = {}
---Module-prefixed alias for PhysicsSettings
Flow.PhysicsSettings = PhysicsSettings
---These settings determine visibility of particular in-game HUD elements.
---@class HudSettings
---@field statusBars boolean? # Toggle in-game status bars visibility. (default: `true`)
---@field loadingBar boolean? # Toggle loading bar visibility. (default: `true`)
---@field speedometer boolean? # Toggle speedometer visibility. (default: `true`)
---@field pickupNotifier boolean? # Toggle pickup notifier visibility. (default: `true`)
HudSettings = {}
---Module-prefixed alias for HudSettings
Flow.HudSettings = HudSettings
---Parameters to customize camera and everything related to it.
---@class CameraSettings
---@field binocularLightColor Color? # Determines highlight color in binocular mode. (default: `TEN.Color(192, 192, 96)`)
---@field lasersightLightColor Color? # Determines highlight color in lasersight mode. (default: `TEN.Color(255, 0, 0)`)
---@field objectCollision boolean? # Specify whether camera can collide with objects. (default: `true`)
CameraSettings = {}
---Module-prefixed alias for CameraSettings
Flow.CameraSettings = CameraSettings
---Features and enhancements that modify enemy behaviour during pathfinding and while tracking player and other enemies.
---@class PathfindingSettings
---@field mode PathfindingMode? # Pathfinding mode. (default: `Flow.PathfindingMode.ASTAR`)
---@field searchDepth integer? # Pathfinding graph search depth. (default: `5`)
---@field escapeDistance integer? # Escape distance. (default: `5`)
---@field stalkDistance integer? # Stalk distance. (default: `3`)
---@field predictionFactor number? # Path prediction scale factor. (default: `15.0`)
---@field collisionPenaltyThreshold number? # Collision penalty threshold. (default: `1.0`)
---@field collisionPenaltyCooldown number? # Collision penalty cooldown. (default: `6.0`)
---@field moveableAvoidance boolean? # Moveable avoidance. (default: `false`)
---@field staticMeshAvoidance boolean? # Static mesh avoidance. (default: `false`)
---@field verticalGeometryAvoidance boolean? # Vertical geometry avoidance for swimming and flying enemies. (default: `true`)
---@field waterSurfaceAvoidance boolean? # Water surface avoidance for swimming and flying enemies. (default: `true`)
---@field verticalMovementSmoothing boolean? # Vertical movement smoothing for swimming and flying enemies. (default: `true`)
PathfindingSettings = {}
---Module-prefixed alias for PathfindingSettings
Flow.PathfindingSettings = PathfindingSettings
---These settings are used to enable or disable certain gameplay features.
---@class GameplaySettings
---@field enableInventory boolean? # Enable or disable original linear inventory functionality. Can be used to completely disable inventory handling (default: `true`)
---@field killPoisonedEnemies boolean? # Kill enemies which were poisoned by a crossbow poisoned ammo or by any other means. If disabled, enemy hit points will (default: `true`)
---@field targetObjectOcclusion boolean? # Enable target occlusion by moveables and static meshes. (default: `true`)
GameplaySettings = {}
---Module-prefixed alias for GameplaySettings
Flow.GameplaySettings = GameplaySettings
---Global engine settings which don't fall into particular category or can't be assigned to a specific object.
---Flow.Settings is composed of several sub-tables, and each section of the Flow.Settings documentation corresponds to one of these sub-tables.
---These configuration groups are located in *settings.lua* script file.
---It is possible to change settings on a per-level basis via Flow.GetSettings and Flow.SetSettings functions, but keep in mind that _settings.lua is reread every time the level is reloaded_.
---Therefore, you need to implement custom settings management in your level script if you want to override global settings.
---@class Settings
---@field Animations AnimSettings # These settings determine whether a specific moveset is available in-game.
---@field Camera CameraSettings # Parameters to customize camera and everything related to it.
---@field Flare FlareSettings # These settings change appearance and behaviour of a flare.
---@field Gameplay GameplaySettings # These settings are used to enable or disable certain gameplay features.
---@field Graphics GraphicsSettings # These settings are used to enable or disable certain graphics features.
---@field Hair HairSettings[] # This is a table of braid object settings.
Table consists of three entries, with first one representing classic Lara braid, and 2 and 3 representing left and right young Lara braids respectively. Therefore, if you want to access classic Lara braid settings, use `settings.Hair[1]`, and so on.
---@field Hud HudSettings # These settings determine visibility of particular in-game HUD elements.
---@field Pathfinding PathfindingSettings # Features and enhancements that modify enemy behaviour during pathfinding and while tracking player and other enemies.
---@field Physics PhysicsSettings # Here you will find various settings for game world physics.
---@field System SystemSettings # Global system settings that is not directly related to gameplay.
---@field UI UISettings # System-wide user interface settings.
---@field Weapons { [WeaponType]: WeaponSettings } # This is a table of weapon settings, with several parameters available for every weapon. Access particular weapon's settings by using Objects.WeaponType as an index for this table, e.g. `settings.Weapons[Flow.WeaponType.PISTOLS]`. Default values for these settings are different for different weapons. Refer to *settings.lua* file to see them.
Settings = {}
---Module-prefixed alias for Settings
Flow.Settings = Settings
---Constructor for Settings
---@return Settings # A new Settings object.
function Settings.new() end
---Constructor for Flow.Settings
---@return Settings # A new Settings object.
function Flow.Settings.new() end
---Constructor for Settings (alias for Settings.new)
---@return Settings # A new Settings object.
function Settings() end
---Constructor for Flow.Settings (alias for Flow.Settings.new)
---@return Settings # A new Settings object.
function Flow.Settings() end
---Add a level to the Flow.
---@param level Level # A level object.
function Flow.AddLevel(level) end
---Image to show when loading the game.
---Must be a .jpg or .png image.
---@param path string # The path to the image, relative to the TombEngine executable.
function Flow.SetIntroImagePath(path) end
---Video to show when loading the game.
---Must be a common video format, such as mp4, mkv, mov or avi.
---@param path string # the path to the video, relative to the TombEngine exe
function Flow.SetIntroVideoPath(path) end
---Image to show in the background of the title screen.
---Must be a .jpg or .png image.
---_Not yet implemented._.
---@param path string # The path to the image, relative to the TombEngine executable.
function Flow.SetTitleScreenImagePath(path) end
---Enable or disable Lara drawing in title flyby.
---Must be true or false.
---@param enabled boolean # True or false.
function Flow.EnableLaraInTitle(enabled) end
---Enable or disable level selection in title flyby.
---Must be true or false.
---@param enabled boolean # True or false.
function Flow.EnableLevelSelect(enabled) end
---Enable or disable Home Level entry in the main menu.
---@param enabled boolean # True or false.
function Flow.EnableHomeLevel(enabled) end
---Enable or disable saving and loading of savegames.
---@param enabled boolean # True or false.
function Flow.EnableLoadSave(enabled) end
---Enable or disable the fly cheat.
---@param enabled boolean # True or false.
function Flow.EnableFlyCheat(enabled) end
---Enable or disable point texture filter.
---Must be true or false.
---@param enabled boolean # True or false.
function Flow.EnablePointFilter(enabled) end
---Enable or disable mass pickup.
---Must be true or false.
---@param enabled boolean # True or false.
function Flow.EnableMassPickup(enabled) end
---Returns the level by index.
---Indices depend on the order in which AddLevel was called; the first added will have an index of 0, the second an index of 1, and so on.
---@param index integer # Index of the level.
---@return Level # The level indicated by the index.
function Flow.GetLevel(index) end
---Returns the level that the game control is running in that moment.
---@return Level # The current level.
function Flow.GetCurrentLevel() end
---Finishes the current level, with optional level index and start position index provided.
---If level index is not provided or is zero, jumps to next level.
---If level index is more than level count, jumps to title.
---If LARA\_START\_POS objects are present in level, player will be teleported to such object with OCB similar to provided second argument.
---@param index integer? # Level index. (default: `0`)
---@param startPos integer? # Player start position in the next level. Should correspond to OCB of `Objects.ObjID.LARA_START_POS` object in the next level. (default: `0`)
function Flow.EndLevel(index, startPos) end
---Get game or level statistics.
---For reference about statistics class, see Flow.Statistics.
---@param game boolean? # If true, returns overall game statistics, otherwise returns current level statistics. (default: `false`)
---@return Statistics # Statistics structure representing game or level statistics.
function Flow.GetStatistics(game) end
---Set game or level statistics.
---For reference about statistics class, see Flow.Statistics.
---@param statistics Statistics # Statistic object to set.
---@param game boolean? # If true, sets overall game statistics, otherwise sets current level statistics. (default: `false`)
function Flow.SetStatistics(statistics, game) end
---Get current game status, such as normal game loop, exiting to title, etc.
---@return GameStatus # The current game status.
function Flow.GetGameStatus() end
---Get current freeze mode, such as none, full, spectator or player.
---@return FreezeMode # The current freeze mode.
function Flow.GetFreezeMode() end
---Set current freeze mode, such as none, full, spectator or player.
---Freeze mode specifies whether game is in normal mode or paused in a particular way to allow custom menu creation, photo mode or time freeze.
---@param freezeMode FreezeMode # New freeze mode to set.
function Flow.SetFreezeMode(freezeMode) end
---Save the game to a savegame slot.
---@param slotID integer # ID of the savegame slot to save to.
function Flow.SaveGame(slotID) end
---Load the game from a savegame slot.
---@param slotID integer # ID of the savegame slot to load from.
function Flow.LoadGame(slotID) end
---Delete a savegame.
---@param slotID integer # ID of the savegame slot to clear.
function Flow.DeleteSaveGame(slotID) end
---Check if a savegame exists.
---@param slotID integer # ID of the savegame slot to check.
---@return boolean # true if the savegame exists, false if not.
function Flow.DoesSaveGameExist(slotID) end
---Get the header of all savegames.
---@return SaveData # A table with save data headers.
function Flow.GetSaveHeaders() end
---Returns the player's current per-game secret count.
---@return integer # Current game secret count.
function Flow.GetSecretCount() end
---Sets the player's current per-game secret count.
---@param count integer # New secret count.
function Flow.SetSecretCount(count) end
---Adds one secret to current level secret count and also plays secret music track.
---The index argument corresponds to the secret's unique ID, the same that would go in a secret trigger's Param.
---@param index integer # An index of current level's secret (must be from 0 to 31).
function Flow.AddSecret(index) end
---Get total number of secrets in the game.
---@return integer # Total number of secrets in the game.
function Flow.GetTotalSecretCount() end
---Set total number of secrets in the game.
---Must be an integer value (0 means no secrets).
---@param count integer # Total number of secrets in the game.
function Flow.SetTotalSecretCount(count) end
---Get global game session time.
---Represents a global session time elapsed since the game launch.
---Does not correspond to time values in level or game statistics.
---@return Time # Global game session time elapsed since the game launch.
function Flow.GetGlobalGameTime() end
---Do FlipMap with specific group ID.
---@param flipmap integer # ID of flipmap group to actuvate / deactivate.
function Flow.FlipMap(flipmap) end
---Get current FlipMap status for specific group ID.
---@param index integer? # Flipmap group ID to check. If no group specified or group is -1, function returns overall flipmap status (on or off). (optional)
---@return boolean # Status of the flipmap group (true means on, false means off).
function Flow.GetFlipMapStatus(index) end
---Set provided settings table to an engine.
---@param settings Settings # A settings table.
function Flow.SetSettings(settings) end
---Get settings table from an engine.
---@return Settings # Current settings table.
function Flow.GetSettings() end
---Set string variable keys and their translations.
---@param table table # Array-style table with strings.
function Flow.SetStrings(table) end
---Get translated string.
---@param key string # Key for translated string.
function Flow.GetString(key) end
---Check if translated string is present.
---@param key string # Key for translated string.
function Flow.IsStringPresent(key) end
---Set language names for translations.
---Specify which translations in the strings table correspond to which languages.
---@param table table # Array-style table with language names.
function Flow.SetLanguageNames(table) end
return Flow