mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-28 15:57:59 +03:00
Merge branch 'develop' into refactor_flow_data_types
This commit is contained in:
commit
0492fccfed
16 changed files with 650 additions and 412 deletions
|
@ -200,7 +200,7 @@
|
|||
<h3>Parameters:</h3>
|
||||
<ul>
|
||||
<li><span class="parameter">ID</span>
|
||||
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
|
||||
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#SpriteConstants">SpriteConstants</a></span>
|
||||
of the sprite sequence object.
|
||||
</li>
|
||||
<li><span class="parameter">int</span>
|
||||
|
@ -250,7 +250,7 @@
|
|||
<h3>Returns:</h3>
|
||||
<ol>
|
||||
|
||||
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
|
||||
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#SpriteConstants">SpriteConstants</a></span>
|
||||
Sprite sequence object ID.
|
||||
</ol>
|
||||
|
||||
|
@ -368,14 +368,14 @@
|
|||
<strong>DisplaySprite:SetObjectID(New)</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Set the sprite sequence object ID used by the display sprite. (Objects.ObjID)
|
||||
Set the sprite sequence object ID used by the display sprite. (Objects.ObjID.SpriteConstants)
|
||||
|
||||
|
||||
|
||||
<h3>Parameters:</h3>
|
||||
<ul>
|
||||
<li><span class="parameter">New</span>
|
||||
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
|
||||
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#SpriteConstants">SpriteConstants</a></span>
|
||||
sprite sequence object ID.
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -131,6 +131,10 @@
|
|||
<td class="name" ><a href="#PickupConstants">PickupConstants</a></td>
|
||||
<td class="summary">Objects.ObjID pickup constants.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" ><a href="#SpriteConstants">SpriteConstants</a></td>
|
||||
<td class="summary">Objects.ObjID sprite constants.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
|
@ -145,7 +149,8 @@
|
|||
<strong>Members</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Objects.ObjID constants. </p>
|
||||
|
||||
<p>Objects.ObjID constants. </p>
|
||||
|
||||
<p>The following constants are inside ObjID.</p>
|
||||
|
||||
|
@ -298,6 +303,7 @@ GLADIATOR
|
|||
CYBORG
|
||||
SNIPER
|
||||
CHEF
|
||||
KOLD
|
||||
WINGED_MUMMY
|
||||
CENTAUR_MUTANT
|
||||
DOPPELGANGER
|
||||
|
@ -322,14 +328,14 @@ SWORD_GUARDIAN
|
|||
SWORD_GUARDIAN_STATUE
|
||||
SHIVA
|
||||
SHIVA_STATUE
|
||||
TRIBEBOSS
|
||||
WILLARD
|
||||
CIVVY
|
||||
MUTANT2
|
||||
LIZARD
|
||||
TONY_BOSS
|
||||
TONY_BOSS_FLAME
|
||||
PUNA_BOSS
|
||||
SOPHIA_LEE_BOSS
|
||||
SOPHIA_LEIGH_BOSS
|
||||
LASER_BOLT
|
||||
SKELETON
|
||||
MUMMY
|
||||
|
@ -361,7 +367,7 @@ ATTACK_SUB
|
|||
IMP
|
||||
IMP_ROCK
|
||||
GUNSHIP
|
||||
AUTOGUN
|
||||
AUTO_GUN_VCI
|
||||
ROMAN_GOD1
|
||||
ROMAN_GOD2
|
||||
LAGOON_WITCH
|
||||
|
@ -370,6 +376,7 @@ BOSS_EXPLOSION_SHOCKWAVE
|
|||
BOSS_EXPLOSION_RING
|
||||
CLAW_MUTANT
|
||||
WASP_MUTANT
|
||||
TWIN_AUTO_GUN
|
||||
SKATEBOARD
|
||||
SKATEBOARD_KID
|
||||
WINSTON
|
||||
|
@ -505,11 +512,6 @@ DAMOCLES_SWORD
|
|||
ELECTRIC_CLEANER
|
||||
SLAMMING_DOORS
|
||||
SWINGING_BLADE
|
||||
ELECTRIC_BALL
|
||||
ELECTRIC_BALL_IMPACT_POINT
|
||||
THOR_HAMMER_HANDLE
|
||||
THOR_HAMMER_HEAD
|
||||
MOVING_LASER
|
||||
PUZZLE_ITEM1
|
||||
PUZZLE_ITEM2
|
||||
PUZZLE_ITEM3
|
||||
|
@ -742,7 +744,6 @@ BURNING_TORCH_ITEM
|
|||
CLOCKWORK_BEETLE
|
||||
CLOCKWORK_BEETLE_COMBO1
|
||||
CLOCKWORK_BEETLE_COMBO2
|
||||
|
||||
SWITCH_TYPE1
|
||||
SWITCH_TYPE2
|
||||
SWITCH_TYPE3
|
||||
|
@ -764,10 +765,10 @@ SHOOT_SWITCH2
|
|||
SHOOT_SWITCH3
|
||||
SHOOT_SWITCH4
|
||||
AIRLOCK_SWITCH
|
||||
ID_UNDERWATER_WALL_SWITCH_1
|
||||
ID_UNDERWATER_WALL_SWITCH_2
|
||||
ID_UNDERWATER_CEILING_SWITCH_1
|
||||
ID_UNDERWATER_CEILING_SWITCH_2
|
||||
UNDERWATER_WALL_SWITCH1
|
||||
UNDERWATER_WALL_SWITCH2
|
||||
UNDERWATER_CEILING_SWITCH1
|
||||
UNDERWATER_CEILING_SWITCH2
|
||||
TURN_SWITCH
|
||||
COG_SWITCH
|
||||
LEVER_SWITCH
|
||||
|
@ -914,7 +915,7 @@ FLOOR_LASERS
|
|||
KILL_ALL_TRIGGERS
|
||||
TRIGGER_TRIGGERER
|
||||
HIGH_OBJECT1
|
||||
HIGH_OBJECT2
|
||||
EMBER_EMITTER
|
||||
SMASH_OBJECT1
|
||||
SMASH_OBJECT2
|
||||
SMASH_OBJECT3
|
||||
|
@ -945,7 +946,6 @@ FISHTANK
|
|||
DOPPELGANGER_ORIGIN
|
||||
CORPSE
|
||||
WRAITH_TRAP
|
||||
WATERFALL_EMITTER
|
||||
MESHSWAP1
|
||||
MESHSWAP2
|
||||
MESHSWAP3
|
||||
|
@ -1103,8 +1103,6 @@ BRIDGE_TILT3
|
|||
BRIDGE_TILT4
|
||||
BRIDGE_CUSTOM
|
||||
HORIZON
|
||||
BINOCULAR_GRAPHICS
|
||||
TARGET_GRAPHICS
|
||||
SKY_GRAPHICS
|
||||
DEFAULT_SPRITES
|
||||
MISC_SPRITES
|
||||
|
@ -1119,31 +1117,20 @@ RUBBER_BOAT_WAVE_SPRITES
|
|||
SKIDOO_SNOW_TRAIL_SPRITES
|
||||
KAYAK_PADDLE_TRAIL_SPRITE
|
||||
KAYAK_WAKE_SPRTIES
|
||||
BINOCULAR_GRAPHIC
|
||||
LASER_SIGHT_GRAPHIC
|
||||
CAUSTICS_TEXTURES
|
||||
BAR_BORDER_GRAPHIC
|
||||
BINOCULAR_GRAPHICS
|
||||
LASERSIGHT_GRAPHICS
|
||||
CAUSTIC_TEXTURES
|
||||
BAR_BORDER_GRAPHICS
|
||||
HEALTH_BAR_TEXTURE
|
||||
AIR_BAR_TEXTURE
|
||||
DASH_BAR_TEXTURE
|
||||
SFX_BAR_TEXTURE
|
||||
SPEEDOMETER
|
||||
WATERFALL
|
||||
CUSTOM_BAR_GRAPHIC
|
||||
CUSTOM_AMMO_GRAPHIC
|
||||
DIARY_SPRITES
|
||||
DIARY_ENTRY_SPRITES
|
||||
|
||||
PANEL_BORDER
|
||||
PANEL_MIDDLE
|
||||
PANEL_CORNER
|
||||
PANEL_DIAGONAL
|
||||
PANEL_STRIP
|
||||
PANEL_HALF_BORDER1
|
||||
PANEL_HALF_BORDER2
|
||||
PANEL_MIDDLE_CORNER
|
||||
CROSSHAIR_GRAPHICS
|
||||
SPEEDOMETER_GRAPHICS
|
||||
CUSTOM_BAR_GRAPHICS
|
||||
CUSTOM_AMMO_GRAPHICS
|
||||
</code></pre>
|
||||
<p>Table of constants.
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1158,7 +1145,8 @@ PANEL_MIDDLE_CORNER
|
|||
<strong>PickupConstants</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Objects.ObjID pickup constants. </p>
|
||||
|
||||
<p>Objects.ObjID pickup constants. </p>
|
||||
|
||||
<p>The following ObjID members refer to pickups.</p>
|
||||
|
||||
|
@ -1306,6 +1294,30 @@ PICKUP_ITEM15_COMBO1
|
|||
PICKUP_ITEM15_COMBO2
|
||||
PICKUP_ITEM16_COMBO1
|
||||
PICKUP_ITEM16_COMBO2
|
||||
EXAMINE1
|
||||
EXAMINE2
|
||||
EXAMINE3
|
||||
EXAMINE4
|
||||
EXAMINE5
|
||||
EXAMINE6
|
||||
EXAMINE7
|
||||
EXAMINE8
|
||||
EXAMINE1_COMBO1
|
||||
EXAMINE1_COMBO2
|
||||
EXAMINE2_COMBO1
|
||||
EXAMINE2_COMBO2
|
||||
EXAMINE3_COMBO1
|
||||
EXAMINE3_COMBO2
|
||||
EXAMINE4_COMBO1
|
||||
EXAMINE4_COMBO2
|
||||
EXAMINE5_COMBO1
|
||||
EXAMINE5_COMBO2
|
||||
EXAMINE6_COMBO1
|
||||
EXAMINE6_COMBO2
|
||||
EXAMINE7_COMBO1
|
||||
EXAMINE7_COMBO2
|
||||
EXAMINE8_COMBO1
|
||||
EXAMINE8_COMBO2
|
||||
HAMMER_ITEM
|
||||
CROWBAR_ITEM
|
||||
BURNING_TORCH_ITEM
|
||||
|
@ -1343,10 +1355,57 @@ FLARE_INV_ITEM
|
|||
COMPASS_ITEM
|
||||
DIARY_ITEM
|
||||
STOPWATCH_ITEM
|
||||
MEMCARD_LOAD_INV_ITEM
|
||||
MEMCARD_SAVE_INV_ITEM
|
||||
PC_LOAD_INV_ITEM
|
||||
PC_SAVE_INV_ITEM
|
||||
</code></pre>
|
||||
<p>Table of constants.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
<dt>
|
||||
<a name = "SpriteConstants"></a>
|
||||
<strong>SpriteConstants</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<p>Objects.ObjID sprite constants. </p>
|
||||
|
||||
<p>The following ObjID members refer to sprites.</p>
|
||||
|
||||
<pre><code>SKY_GRAPHICS
|
||||
DEFAULT_SPRITES
|
||||
MISC_SPRITES
|
||||
CUSTOM_SPRITES
|
||||
FIRE_SPRITES
|
||||
SMOKE_SPRITES
|
||||
SPARK_SPRITE
|
||||
DRIP_SPRITE
|
||||
EXPLOSION_SPRITES
|
||||
MOTORBOAT_FOAM_SPRITES
|
||||
RUBBER_BOAT_WAVE_SPRITES
|
||||
SKIDOO_SNOW_TRAIL_SPRITES
|
||||
KAYAK_PADDLE_TRAIL_SPRITE
|
||||
LASERSIGHT_GRAPHICS
|
||||
CAUSTIC_TEXTURES
|
||||
BAR_BORDER_GRAPHICS
|
||||
HEALTH_BAR_TEXTURE
|
||||
AIR_BAR_TEXTURE
|
||||
DASH_BAR_TEXTURE
|
||||
SFX_BAR_TEXTURE
|
||||
CROSSHAIR_GRAPHICS
|
||||
SPEEDOMETER_GRAPHICS
|
||||
CUSTOM_BAR_GRAPHICS
|
||||
CUSTOM_AMMO_GRAPHICS
|
||||
</code></pre>
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
148
Documentation/generate_objectlist.ps1
Normal file
148
Documentation/generate_objectlist.ps1
Normal file
|
@ -0,0 +1,148 @@
|
|||
# PowerShell script to generate ObjectIDs.h from game_object_ids.h
|
||||
|
||||
$inputFile = "../TombEngine/Objects/game_object_ids.h" # Adjust path if necessary.
|
||||
$tempOutputFile = "../TombEngine/Scripting/Internal/TEN/Objects/temp.h"
|
||||
$outputFile = "../TombEngine/Scripting/Internal/TEN/Objects/ObjectIDs.h"
|
||||
|
||||
# Read the input file
|
||||
if (-Not (Test-Path $inputFile))
|
||||
{
|
||||
Write-Host "Error: File '$inputFile' not found."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Get the last modified times for both files.
|
||||
$inputFileLastModified = (Get-Item $inputFile).LastWriteTime
|
||||
if (Test-Path $outputFile) {
|
||||
$outputFileLastModified = (Get-Item $outputFile).LastWriteTime
|
||||
} else {
|
||||
$outputFileLastModified = [datetime]::MinValue # If output file doesn't exist, treat it as very old.
|
||||
}
|
||||
|
||||
# Exit early if the output file is newer than the input file.
|
||||
if ($outputFileLastModified -ge $inputFileLastModified) {
|
||||
Write-Host "$outputFile is up to date. No changes made."
|
||||
exit 0
|
||||
}
|
||||
|
||||
$content = Get-Content $inputFile
|
||||
|
||||
# Extract enum values and categorize them.
|
||||
$enumValues = @()
|
||||
$pickupConstants = @()
|
||||
$spriteConstants = @()
|
||||
|
||||
$inPickupSection = $false
|
||||
$inSpriteSection = $false
|
||||
|
||||
foreach ($line in $content)
|
||||
{
|
||||
if ($line -match "^\s*ID_([A-Za-z0-9_]+)")
|
||||
{
|
||||
$enumName = $matches[1]
|
||||
$enumValues += $enumName
|
||||
|
||||
if ($enumName -match "_ITEM|EXAMINE")
|
||||
{
|
||||
$pickupConstants += $enumName
|
||||
}
|
||||
elseif ($enumName -match "_SPRITE|_GRAPHIC|TEXTURE")
|
||||
{
|
||||
# These two object IDs are deprecated 3D objects, not sprites.
|
||||
if ($enumName -in @("BINOCULAR_GRAPHICS", "TARGET_GRAPHICS"))
|
||||
{
|
||||
continue
|
||||
}
|
||||
|
||||
$spriteConstants += $enumName
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if ($enumValues.Count -gt 0) { $enumValues = $enumValues[1..($enumValues.Count - 2)] }
|
||||
|
||||
# Generate ObjectIDs.h content.
|
||||
$header = @"
|
||||
#pragma once
|
||||
|
||||
// Last generated on $(Get-Date -Format "dd/MM/yyyy")
|
||||
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
#include "Objects/game_object_ids.h"
|
||||
|
||||
/***
|
||||
Constants for object IDs.
|
||||
@enum Objects.ObjID
|
||||
@pragma nostrip
|
||||
*/
|
||||
|
||||
/*** Objects.ObjID constants.
|
||||
|
||||
The following constants are inside ObjID.
|
||||
|
||||
"@
|
||||
|
||||
$body = $enumValues | ForEach-Object { "`t$_" }
|
||||
$footer = @"
|
||||
@table Members
|
||||
*/
|
||||
"@
|
||||
|
||||
# Pickup Constants Section.
|
||||
$pickupHeader = @"
|
||||
|
||||
/*** Objects.ObjID pickup constants.
|
||||
|
||||
The following ObjID members refer to pickups.
|
||||
|
||||
"@
|
||||
|
||||
$pickupBody = $pickupConstants | ForEach-Object { "`t$_" }
|
||||
$pickupFooter = @"
|
||||
@table PickupConstants
|
||||
*/
|
||||
"@
|
||||
|
||||
# Sprite Constants Section.
|
||||
$spriteHeader = @"
|
||||
|
||||
/*** Objects.ObjID sprite constants.
|
||||
|
||||
The following ObjID members refer to sprites.
|
||||
|
||||
"@
|
||||
|
||||
$spriteBody = $spriteConstants | ForEach-Object { "`t$_" }
|
||||
$spriteFooter = @"
|
||||
@table SpriteConstants
|
||||
*/
|
||||
"@
|
||||
|
||||
# Map definition.
|
||||
$mapHeader = "static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {"
|
||||
$mapBody = ($enumValues | ForEach-Object { "`t" + '{ "' + "$_" + '", ID_' + "$_" + ' }' }) -join ",`r`n"
|
||||
$mapFooter = "};"
|
||||
|
||||
# Write to output file
|
||||
$header | Set-Content $tempOutputFile
|
||||
$body | Add-Content $tempOutputFile
|
||||
$footer | Add-Content $tempOutputFile
|
||||
$pickupHeader | Add-Content $tempOutputFile
|
||||
$pickupBody | Add-Content $tempOutputFile
|
||||
$pickupFooter | Add-Content $tempOutputFile
|
||||
$spriteHeader | Add-Content $tempOutputFile
|
||||
$spriteBody | Add-Content $tempOutputFile
|
||||
$spriteFooter | Add-Content $tempOutputFile
|
||||
$mapHeader | Add-Content $tempOutputFile
|
||||
$mapBody | ForEach-Object { Add-Content $tempOutputFile $_ }
|
||||
$mapFooter | Add-Content $tempOutputFile
|
||||
|
||||
# Rename the temporary file to the final name.
|
||||
if (Test-Path $outputFile) {
|
||||
Remove-Item $outputFile -Force
|
||||
}
|
||||
Move-Item -Path $tempOutputFile -Destination $outputFile -Force
|
||||
|
||||
Write-Host "Generated $outputFile successfully."
|
|
@ -70,14 +70,14 @@ namespace TEN::Hud
|
|||
|
||||
// Draw dial.
|
||||
AddDisplaySprite(
|
||||
ID_SPEEDOMETER, DIAL_ELEMENT_SPRITE_ID,
|
||||
ID_SPEEDOMETER_GRAPHICS, DIAL_ELEMENT_SPRITE_ID,
|
||||
POS, 0, SCALE, color,
|
||||
DIAL_PRIORITY, DisplaySpriteAlignMode::Center, DisplaySpriteScaleMode::Fit, BlendMode::AlphaBlend,
|
||||
DisplaySpritePhase::Draw);
|
||||
|
||||
// Draw pointer.
|
||||
AddDisplaySprite(
|
||||
ID_SPEEDOMETER, POINTER_ELEMENT_SPRITE_ID,
|
||||
ID_SPEEDOMETER_GRAPHICS, POINTER_ELEMENT_SPRITE_ID,
|
||||
POS, pointerAngle + POINTER_ANGLE_OFFSET, SCALE, color,
|
||||
POINTER_PRIORITY, DisplaySpriteAlignMode::Center, DisplaySpriteScaleMode::Fit, BlendMode::AlphaBlend,
|
||||
DisplaySpritePhase::Draw);
|
||||
|
|
|
@ -132,7 +132,7 @@ namespace TEN::Hud
|
|||
|
||||
void CrosshairData::Draw() const
|
||||
{
|
||||
constexpr auto SPRITE_SEQUENCE_OBJECT_ID = ID_CROSSHAIR;
|
||||
constexpr auto SPRITE_SEQUENCE_OBJECT_ID = ID_CROSSHAIR_GRAPHICS;
|
||||
constexpr auto STATIC_ELEMENT_SPRITE_ID = 0;
|
||||
constexpr auto SEGMENT_ELEMENT_SPRITE_ID = 1;
|
||||
constexpr auto PRIORITY = 0; // TODO: Check later. May interfere with Lua display sprites. -- Sezz 2023.10.06
|
||||
|
|
|
@ -176,7 +176,7 @@ void StartSwitches(ObjectInfo* object)
|
|||
object->shadowType = ShadowMode::All;
|
||||
}
|
||||
|
||||
for (int objectID = ID_UNDERWATER_WALL_SWITCH_1; objectID <= ID_UNDERWATER_WALL_SWITCH_2; objectID++)
|
||||
for (int objectID = ID_UNDERWATER_WALL_SWITCH1; objectID <= ID_UNDERWATER_WALL_SWITCH2; objectID++)
|
||||
{
|
||||
object = &Objects[objectID];
|
||||
if (object->loaded)
|
||||
|
@ -186,7 +186,7 @@ void StartSwitches(ObjectInfo* object)
|
|||
}
|
||||
}
|
||||
|
||||
for (int objectID = ID_UNDERWATER_CEILING_SWITCH_1; objectID <= ID_UNDERWATER_CEILING_SWITCH_2; objectID++)
|
||||
for (int objectID = ID_UNDERWATER_CEILING_SWITCH1; objectID <= ID_UNDERWATER_CEILING_SWITCH2; objectID++)
|
||||
{
|
||||
object = &Objects[objectID];
|
||||
if (object->loaded)
|
||||
|
|
|
@ -630,10 +630,10 @@ enum GAME_OBJECT_ID : short
|
|||
ID_SHOOT_SWITCH3,
|
||||
ID_SHOOT_SWITCH4,
|
||||
ID_AIRLOCK_SWITCH,
|
||||
ID_UNDERWATER_WALL_SWITCH_1,
|
||||
ID_UNDERWATER_WALL_SWITCH_2,
|
||||
ID_UNDERWATER_CEILING_SWITCH_1,
|
||||
ID_UNDERWATER_CEILING_SWITCH_2,
|
||||
ID_UNDERWATER_WALL_SWITCH1,
|
||||
ID_UNDERWATER_WALL_SWITCH2,
|
||||
ID_UNDERWATER_CEILING_SWITCH1,
|
||||
ID_UNDERWATER_CEILING_SWITCH2,
|
||||
ID_TURN_SWITCH,
|
||||
ID_COG_SWITCH,
|
||||
ID_LEVER_SWITCH,
|
||||
|
@ -979,9 +979,10 @@ enum GAME_OBJECT_ID : short
|
|||
ID_BRIDGE_CUSTOM,
|
||||
|
||||
ID_HORIZON = 1350,
|
||||
ID_BINOCULAR_GRAPHICS,
|
||||
ID_TARGET_GRAPHICS,
|
||||
ID_SKY_GRAPHICS,
|
||||
|
||||
// Sprite sequences.
|
||||
|
||||
ID_SKY_GRAPHICS = 1353,
|
||||
ID_DEFAULT_SPRITES,
|
||||
ID_MISC_SPRITES,
|
||||
ID_CUSTOM_SPRITES,
|
||||
|
@ -996,30 +997,22 @@ enum GAME_OBJECT_ID : short
|
|||
ID_SKIDOO_SNOW_TRAIL_SPRITES,
|
||||
ID_KAYAK_PADDLE_TRAIL_SPRITE,
|
||||
ID_KAYAK_WAKE_SPRTIES,
|
||||
ID_BINOCULAR_GRAPHIC,
|
||||
ID_LASER_SIGHT_GRAPHIC,
|
||||
ID_CAUSTICS_TEXTURES,
|
||||
ID_BAR_BORDER_GRAPHIC,
|
||||
ID_BINOCULAR_GRAPHICS,
|
||||
ID_LASERSIGHT_GRAPHICS,
|
||||
ID_CAUSTIC_TEXTURES,
|
||||
ID_BAR_BORDER_GRAPHICS,
|
||||
ID_HEALTH_BAR_TEXTURE,
|
||||
ID_AIR_BAR_TEXTURE,
|
||||
ID_DASH_BAR_TEXTURE,
|
||||
ID_SFX_BAR_TEXTURE,
|
||||
ID_WATERFALL_SPRITES,
|
||||
// 1379
|
||||
ID_CROSSHAIR = 1380,
|
||||
ID_SPEEDOMETER,
|
||||
ID_CUSTOM_BAR_GRAPHIC,
|
||||
ID_CUSTOM_AMMO_GRAPHIC,
|
||||
ID_CROSSHAIR_GRAPHICS = 1380,
|
||||
ID_SPEEDOMETER_GRAPHICS,
|
||||
ID_CUSTOM_BAR_GRAPHICS,
|
||||
ID_CUSTOM_AMMO_GRAPHICS,
|
||||
ID_DIARY_SPRITES,
|
||||
ID_DIARY_ENTRY_SPRITES,
|
||||
|
||||
ID_PANEL_BORDER = 1400,
|
||||
ID_PANEL_MIDDLE,
|
||||
ID_PANEL_CORNER,
|
||||
ID_PANEL_DIAGONAL,
|
||||
ID_PANEL_STRIP,
|
||||
ID_PANEL_HALF_BORDER1,
|
||||
ID_PANEL_HALF_BORDER2,
|
||||
ID_PANEL_MIDDLE_CORNER,
|
||||
ID_NUMBER_OBJECTS
|
||||
};
|
||||
|
|
|
@ -883,7 +883,7 @@ namespace TEN::Renderer
|
|||
|
||||
_spriteSequences[SpriteSequencesIds[i]] = sequence;
|
||||
|
||||
if (SpriteSequencesIds[i] == ID_CAUSTICS_TEXTURES)
|
||||
if (SpriteSequencesIds[i] == ID_CAUSTIC_TEXTURES)
|
||||
{
|
||||
_causticTextures.clear();
|
||||
for (int j = 0; j < sequence.SpritesList.size(); j++)
|
||||
|
|
|
@ -2704,8 +2704,8 @@ namespace TEN::Renderer
|
|||
// Bind caustics texture.
|
||||
if (_causticTextures.size() > 0)
|
||||
{
|
||||
int nmeshes = -Objects[ID_CAUSTICS_TEXTURES].nmeshes;
|
||||
int meshIndex = Objects[ID_CAUSTICS_TEXTURES].meshIndex;
|
||||
int nmeshes = -Objects[ID_CAUSTIC_TEXTURES].nmeshes;
|
||||
int meshIndex = Objects[ID_CAUSTIC_TEXTURES].meshIndex;
|
||||
int causticsFrame = GlobalCounter % _causticTextures.size();
|
||||
BindTexture(TextureRegister::CausticsMap, &_causticTextures[causticsFrame], SamplerStateRegister::AnisotropicClamp);
|
||||
}
|
||||
|
|
|
@ -119,7 +119,7 @@ namespace TEN::Renderer
|
|||
|
||||
void Renderer::DrawBar(float percent, const RendererHudBar& bar, GAME_OBJECT_ID textureSlot, int frame, bool isPoisoned)
|
||||
{
|
||||
if (!CheckIfSlotExists(ID_BAR_BORDER_GRAPHIC, "Bar rendering"))
|
||||
if (!CheckIfSlotExists(ID_BAR_BORDER_GRAPHICS, "Bar rendering"))
|
||||
return;
|
||||
|
||||
unsigned int strides = sizeof(Vertex);
|
||||
|
@ -141,7 +141,7 @@ namespace TEN::Renderer
|
|||
|
||||
BindConstantBufferVS(ConstantBufferRegister::Hud, _cbHUD.get());
|
||||
|
||||
RendererSprite* borderSprite = &_sprites[Objects[ID_BAR_BORDER_GRAPHIC].meshIndex];
|
||||
RendererSprite* borderSprite = &_sprites[Objects[ID_BAR_BORDER_GRAPHICS].meshIndex];
|
||||
_stHUDBar.BarStartUV = borderSprite->UV[0];
|
||||
_stHUDBar.BarScale = Vector2(borderSprite->Width / (float)borderSprite->Texture->Width, borderSprite->Height / (float)borderSprite->Texture->Height);
|
||||
_cbHUDBar.UpdateData(_stHUDBar, _context.Get());
|
||||
|
@ -266,11 +266,11 @@ namespace TEN::Renderer
|
|||
|
||||
if (Lara.Control.Look.OpticRange != 0 && !Lara.Control.Look.IsUsingLasersight)
|
||||
{
|
||||
DrawFullScreenSprite(&_sprites[Objects[ID_BINOCULAR_GRAPHIC].meshIndex], Vector3::One, false);
|
||||
DrawFullScreenSprite(&_sprites[Objects[ID_BINOCULAR_GRAPHICS].meshIndex], Vector3::One, false);
|
||||
}
|
||||
else if (Lara.Control.Look.OpticRange != 0 && Lara.Control.Look.IsUsingLasersight)
|
||||
{
|
||||
DrawFullScreenSprite(&_sprites[Objects[ID_LASER_SIGHT_GRAPHIC].meshIndex], Vector3::One);
|
||||
DrawFullScreenSprite(&_sprites[Objects[ID_LASERSIGHT_GRAPHICS].meshIndex], Vector3::One);
|
||||
|
||||
SetBlendMode(BlendMode::Opaque);
|
||||
|
||||
|
|
|
@ -194,11 +194,11 @@ sol::object GetVariable(sol::table tab, sol::object key)
|
|||
return tab.raw_get<sol::object>(key);
|
||||
}
|
||||
|
||||
LogicHandler::LogicHandler(sol::state* lua, sol::table & parent) : m_handler{ lua }
|
||||
LogicHandler::LogicHandler(sol::state* lua, sol::table& parent) : _handler{ lua }
|
||||
{
|
||||
m_handler.GetState()->set_function("print", &LogicHandler::LogPrint, this);
|
||||
_handler.GetState()->set_function("print", &LogicHandler::LogPrint, this);
|
||||
|
||||
sol::table tableLogic{ m_handler.GetState()->lua_state(), sol::create };
|
||||
auto tableLogic = sol::table(_handler.GetState()->lua_state(), sol::create);
|
||||
|
||||
parent.set(ScriptReserved_Logic, tableLogic);
|
||||
|
||||
|
@ -208,24 +208,24 @@ LogicHandler::LogicHandler(sol::state* lua, sol::table & parent) : m_handler{ lu
|
|||
tableLogic.set_function(ScriptReserved_EnableEvent, &LogicHandler::EnableEvent, this);
|
||||
tableLogic.set_function(ScriptReserved_DisableEvent, &LogicHandler::DisableEvent, this);
|
||||
|
||||
m_handler.MakeReadOnlyTable(tableLogic, ScriptReserved_EndReason, LEVEL_END_REASONS);
|
||||
m_handler.MakeReadOnlyTable(tableLogic, ScriptReserved_CallbackPoint, CALLBACK_POINTS);
|
||||
m_handler.MakeReadOnlyTable(tableLogic, ScriptReserved_EventType, EVENT_TYPES);
|
||||
_handler.MakeReadOnlyTable(tableLogic, ScriptReserved_EndReason, LEVEL_END_REASONS);
|
||||
_handler.MakeReadOnlyTable(tableLogic, ScriptReserved_CallbackPoint, CALLBACK_POINTS);
|
||||
_handler.MakeReadOnlyTable(tableLogic, ScriptReserved_EventType, EVENT_TYPES);
|
||||
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PreStart, &m_callbacksPreStart));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PostStart, &m_callbacksPostStart));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PreLoad, &m_callbacksPreLoad));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PostLoad, &m_callbacksPostLoad));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PreLoop, &m_callbacksPreLoop));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PostLoop, &m_callbacksPostLoop));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PreSave, &m_callbacksPreSave));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PostSave, &m_callbacksPostSave));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PreEnd, &m_callbacksPreEnd));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PostEnd, &m_callbacksPostEnd));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PreUseItem, &m_callbacksPreUseItem));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PostUseItem, &m_callbacksPostUseItem));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PreFreeze, &m_callbacksPreFreeze));
|
||||
m_callbacks.insert(std::make_pair(CallbackPoint::PostFreeze, &m_callbacksPostFreeze));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PreStart, &_callbacksPreStart));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PostStart, &_callbacksPostStart));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PreLoad, &_callbacksPreLoad));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PostLoad, &_callbacksPostLoad));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PreLoop, &_callbacksPreLoop));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PostLoop, &_callbacksPostLoop));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PreSave, &_callbacksPreSave));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PostSave, &_callbacksPostSave));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PreEnd, &_callbacksPreEnd));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PostEnd, &_callbacksPostEnd));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PreUseItem, &_callbacksPreUseItem));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PostUseItem, &_callbacksPostUseItem));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PreFreeze, &_callbacksPreFreeze));
|
||||
_callbacks.insert(std::make_pair(CallbackPoint::PostFreeze, &_callbacksPostFreeze));
|
||||
|
||||
LevelFunc::Register(tableLogic);
|
||||
|
||||
|
@ -234,10 +234,10 @@ LogicHandler::LogicHandler(sol::state* lua, sol::table & parent) : m_handler{ lu
|
|||
|
||||
void LogicHandler::ResetGameTables()
|
||||
{
|
||||
auto state = m_handler.GetState();
|
||||
auto state = _handler.GetState();
|
||||
MakeSpecialTable(state, ScriptReserved_GameVars, &GetVariable, &SetVariable);
|
||||
|
||||
(*state)[ScriptReserved_GameVars][ScriptReserved_Engine] = sol::table{ *state, sol::create };
|
||||
(*state)[ScriptReserved_GameVars][ScriptReserved_Engine] = sol::table(*state, sol::create);
|
||||
}
|
||||
|
||||
/*** Register a function as a callback.
|
||||
|
@ -286,9 +286,8 @@ Any returned value will be discarded.
|
|||
*/
|
||||
void LogicHandler::AddCallback(CallbackPoint point, const LevelFunc& levelFunc)
|
||||
{
|
||||
auto it = m_callbacks.find(point);
|
||||
|
||||
if (it == m_callbacks.end())
|
||||
auto it = _callbacks.find(point);
|
||||
if (it == _callbacks.end())
|
||||
{
|
||||
TENLog("Error: callback point not found. Attempted to access missing value.", LogLevel::Error, LogConfig::All, false);
|
||||
return;
|
||||
|
@ -315,8 +314,8 @@ Will have no effect if the function was not registered as a callback
|
|||
*/
|
||||
void LogicHandler::RemoveCallback(CallbackPoint point, const LevelFunc& levelFunc)
|
||||
{
|
||||
auto it = m_callbacks.find(point);
|
||||
if (it == m_callbacks.end())
|
||||
auto it = _callbacks.find(point);
|
||||
if (it == _callbacks.end())
|
||||
{
|
||||
TENLog("Error: callback point not found. Attempted to access missing value.", LogLevel::Error, LogConfig::All, false);
|
||||
return;
|
||||
|
@ -374,7 +373,7 @@ void LogicHandler::DisableEvent(const std::string& name, EventType type)
|
|||
|
||||
void LogicHandler::ResetLevelTables()
|
||||
{
|
||||
auto state = m_handler.GetState();
|
||||
auto state = _handler.GetState();
|
||||
MakeSpecialTable(state, ScriptReserved_LevelVars, &GetVariable, &SetVariable);
|
||||
|
||||
(*state)[ScriptReserved_LevelVars][ScriptReserved_Engine] = sol::table{ *state, sol::create };
|
||||
|
@ -382,15 +381,15 @@ void LogicHandler::ResetLevelTables()
|
|||
|
||||
sol::object LogicHandler::GetLevelFuncsMember(sol::table tab, const std::string& name)
|
||||
{
|
||||
std::string partName = tab.raw_get<std::string>(strKey);
|
||||
auto& map = m_levelFuncs_tablesOfNames[partName];
|
||||
auto partName = tab.raw_get<std::string>(strKey);
|
||||
auto& map = _levelFuncs_tablesOfNames[partName];
|
||||
|
||||
auto fullNameIt = map.find(name);
|
||||
if (fullNameIt != std::cend(map))
|
||||
{
|
||||
std::string_view key = fullNameIt->second;
|
||||
if (m_levelFuncs_levelFuncObjects[key].valid())
|
||||
return m_levelFuncs_levelFuncObjects[key];
|
||||
if (_levelFuncs_levelFuncObjects[key].valid())
|
||||
return _levelFuncs_levelFuncObjects[key];
|
||||
}
|
||||
|
||||
return sol::nil;
|
||||
|
@ -400,7 +399,7 @@ bool LogicHandler::SetLevelFuncsMember(sol::table tab, const std::string& name,
|
|||
{
|
||||
if (sol::type::lua_nil == value.get_type())
|
||||
{
|
||||
std::string error{ "Tried to set " + std::string{ScriptReserved_LevelFuncs} + " member " };
|
||||
auto error = std::string("Tried to set " + std::string{ScriptReserved_LevelFuncs} + " member ");
|
||||
error += name + " to nil; this not permitted at this time.";
|
||||
return ScriptAssert(false, error);
|
||||
}
|
||||
|
@ -409,27 +408,27 @@ bool LogicHandler::SetLevelFuncsMember(sol::table tab, const std::string& name,
|
|||
// Add name to table of names.
|
||||
auto partName = tab.raw_get<std::string>(strKey);
|
||||
auto fullName = partName + "." + name;
|
||||
auto& parentNameTab = m_levelFuncs_tablesOfNames[partName];
|
||||
auto& parentNameTab = _levelFuncs_tablesOfNames[partName];
|
||||
parentNameTab.insert_or_assign(name, fullName);
|
||||
|
||||
// Create LevelFunc userdata and add that too.
|
||||
LevelFunc levelFuncObject;
|
||||
levelFuncObject.m_funcName = fullName;
|
||||
levelFuncObject.m_handler = this;
|
||||
m_levelFuncs_levelFuncObjects[fullName] = levelFuncObject;
|
||||
_levelFuncs_levelFuncObjects[fullName] = levelFuncObject;
|
||||
|
||||
// Add function itself.
|
||||
m_levelFuncs_luaFunctions[fullName] = value;
|
||||
_levelFuncs_luaFunctions[fullName] = value;
|
||||
}
|
||||
else if (sol::type::table == value.get_type())
|
||||
{
|
||||
// Create and add new name map.
|
||||
std::unordered_map<std::string, std::string> newNameMap;
|
||||
auto newNameMap = std::unordered_map<std::string, std::string>{};
|
||||
auto fullName = tab.raw_get<std::string>(strKey) + "." + name;
|
||||
m_levelFuncs_tablesOfNames.insert_or_assign(fullName, newNameMap);
|
||||
_levelFuncs_tablesOfNames.insert_or_assign(fullName, newNameMap);
|
||||
|
||||
// Create new table to put in the LevelFuncs hierarchy.
|
||||
auto newLevelFuncsTab = MakeSpecialTable(m_handler.GetState(), name, &LogicHandler::GetLevelFuncsMember, &LogicHandler::SetLevelFuncsMember, this);
|
||||
auto newLevelFuncsTab = MakeSpecialTable(_handler.GetState(), name, &LogicHandler::GetLevelFuncsMember, &LogicHandler::SetLevelFuncsMember, this);
|
||||
newLevelFuncsTab.raw_set(strKey, fullName);
|
||||
tab.raw_set(name, newLevelFuncsTab);
|
||||
|
||||
|
@ -440,7 +439,7 @@ bool LogicHandler::SetLevelFuncsMember(sol::table tab, const std::string& name,
|
|||
}
|
||||
else
|
||||
{
|
||||
std::string error{ "Failed to add " };
|
||||
auto error = std::string("Failed to add ");
|
||||
error += name + " to " + ScriptReserved_LevelFuncs + " or one of its tables; it must be a function or a table of functions.";
|
||||
return ScriptAssert(false, error);
|
||||
}
|
||||
|
@ -450,10 +449,10 @@ bool LogicHandler::SetLevelFuncsMember(sol::table tab, const std::string& name,
|
|||
|
||||
void LogicHandler::LogPrint(sol::variadic_args args)
|
||||
{
|
||||
std::string str;
|
||||
auto str = std::string();
|
||||
for (const sol::object& o : args)
|
||||
{
|
||||
auto strPart = (*m_handler.GetState())["tostring"](o).get<std::string>();
|
||||
auto strPart = (*_handler.GetState())["tostring"](o).get<std::string>();
|
||||
str += strPart;
|
||||
str += "\t";
|
||||
}
|
||||
|
@ -465,10 +464,10 @@ void LogicHandler::ResetScripts(bool clearGameVars)
|
|||
{
|
||||
FreeLevelScripts();
|
||||
|
||||
for (auto& [first, second] : m_callbacks)
|
||||
for (auto& [first, second] : _callbacks)
|
||||
second->clear();
|
||||
|
||||
auto currentPackage = m_handler.GetState()->get<sol::table>("package");
|
||||
auto currentPackage = _handler.GetState()->get<sol::table>("package");
|
||||
auto currentLoaded = currentPackage.get<sol::table>("loaded");
|
||||
|
||||
for (auto& [first, second] : currentLoaded)
|
||||
|
@ -477,35 +476,35 @@ void LogicHandler::ResetScripts(bool clearGameVars)
|
|||
if (clearGameVars)
|
||||
ResetGameTables();
|
||||
|
||||
m_handler.ResetGlobals();
|
||||
_handler.ResetGlobals();
|
||||
|
||||
m_shortenedCalls = false;
|
||||
_shortenedCalls = false;
|
||||
|
||||
m_handler.GetState()->collect_garbage();
|
||||
_handler.GetState()->collect_garbage();
|
||||
}
|
||||
|
||||
void LogicHandler::FreeLevelScripts()
|
||||
{
|
||||
m_levelFuncs = MakeSpecialTable(m_handler.GetState(), ScriptReserved_LevelFuncs, &LogicHandler::GetLevelFuncsMember, &LogicHandler::SetLevelFuncsMember, this);
|
||||
m_levelFuncs.raw_set(strKey, ScriptReserved_LevelFuncs);
|
||||
_levelFuncs = MakeSpecialTable(_handler.GetState(), ScriptReserved_LevelFuncs, &LogicHandler::GetLevelFuncsMember, &LogicHandler::SetLevelFuncsMember, this);
|
||||
_levelFuncs.raw_set(strKey, ScriptReserved_LevelFuncs);
|
||||
|
||||
m_levelFuncs[ScriptReserved_Engine] = sol::table{ *m_handler.GetState(), sol::create };
|
||||
_levelFuncs[ScriptReserved_Engine] = sol::table(*_handler.GetState(), sol::create);
|
||||
|
||||
m_levelFuncs_tablesOfNames.clear();
|
||||
m_levelFuncs_luaFunctions.clear();
|
||||
m_levelFuncs_levelFuncObjects = sol::table{ *m_handler.GetState(), sol::create };
|
||||
_levelFuncs_tablesOfNames.clear();
|
||||
_levelFuncs_luaFunctions.clear();
|
||||
_levelFuncs_levelFuncObjects = sol::table(*_handler.GetState(), sol::create);
|
||||
|
||||
m_levelFuncs_tablesOfNames.emplace(std::make_pair(ScriptReserved_LevelFuncs, std::unordered_map<std::string, std::string>{}));
|
||||
_levelFuncs_tablesOfNames.emplace(std::make_pair(ScriptReserved_LevelFuncs, std::unordered_map<std::string, std::string>{}));
|
||||
|
||||
ResetLevelTables();
|
||||
m_onStart = sol::nil;
|
||||
m_onLoad = sol::nil;
|
||||
m_onLoop = sol::nil;
|
||||
m_onSave = sol::nil;
|
||||
m_onEnd = sol::nil;
|
||||
m_onUseItem = sol::nil;
|
||||
m_onFreeze = sol::nil;
|
||||
m_handler.GetState()->collect_garbage();
|
||||
_onStart = sol::nil;
|
||||
_onLoad = sol::nil;
|
||||
_onLoop = sol::nil;
|
||||
_onSave = sol::nil;
|
||||
_onEnd = sol::nil;
|
||||
_onUseItem = sol::nil;
|
||||
_onFreeze = sol::nil;
|
||||
_handler.GetState()->collect_garbage();
|
||||
}
|
||||
|
||||
// Used when loading.
|
||||
|
@ -516,13 +515,13 @@ void LogicHandler::SetVariables(const std::vector<SavedVar>& vars, bool onlyLeve
|
|||
|
||||
ResetLevelTables();
|
||||
|
||||
std::unordered_map<unsigned int, sol::table> solTables;
|
||||
auto solTables = std::unordered_map<unsigned int, sol::table>{};
|
||||
|
||||
for(int i = 0; i < vars.size(); ++i)
|
||||
{
|
||||
if (std::holds_alternative<IndexTable>(vars[i]))
|
||||
{
|
||||
solTables.try_emplace(i, *m_handler.GetState(), sol::create);
|
||||
solTables.try_emplace(i, *_handler.GetState(), sol::create);
|
||||
auto indexTab = std::get<IndexTable>(vars[i]);
|
||||
for (auto& [first, second] : indexTab)
|
||||
{
|
||||
|
@ -530,7 +529,7 @@ void LogicHandler::SetVariables(const std::vector<SavedVar>& vars, bool onlyLeve
|
|||
// create it if need be
|
||||
if (std::holds_alternative<IndexTable>(vars[second]))
|
||||
{
|
||||
solTables.try_emplace(second, *m_handler.GetState(), sol::create);
|
||||
solTables.try_emplace(second, *_handler.GetState(), sol::create);
|
||||
solTables[i][vars[first]] = solTables[second];
|
||||
}
|
||||
else if (std::holds_alternative<double>(vars[second]))
|
||||
|
@ -594,14 +593,14 @@ void LogicHandler::SetVariables(const std::vector<SavedVar>& vars, bool onlyLeve
|
|||
|
||||
sol::table levelVars = rootTable[ScriptReserved_LevelVars];
|
||||
for (auto& [first, second] : levelVars)
|
||||
(*m_handler.GetState())[ScriptReserved_LevelVars][first] = second;
|
||||
(*_handler.GetState())[ScriptReserved_LevelVars][first] = second;
|
||||
|
||||
if (onlyLevelVars)
|
||||
return;
|
||||
|
||||
sol::table gameVars = rootTable[ScriptReserved_GameVars];
|
||||
for (auto& [first, second] : gameVars)
|
||||
(*m_handler.GetState())[ScriptReserved_GameVars][first] = second;
|
||||
(*_handler.GetState())[ScriptReserved_GameVars][first] = second;
|
||||
}
|
||||
|
||||
template<SavedVarType TypeEnum, typename TypeTo, typename TypeFrom, typename MapType>
|
||||
|
@ -623,10 +622,10 @@ int Handle(TypeFrom& var, MapType& varsMap, size_t& numVars, std::vector<SavedVa
|
|||
|
||||
std::string LogicHandler::GetRequestedPath() const
|
||||
{
|
||||
std::string path;
|
||||
for (unsigned int i = 0; i < m_savedVarPath.size(); ++i)
|
||||
auto path = std::string();
|
||||
for (unsigned int i = 0; i < _savedVarPath.size(); ++i)
|
||||
{
|
||||
auto key = m_savedVarPath[i];
|
||||
auto key = _savedVarPath[i];
|
||||
if (std::holds_alternative<unsigned int>(key))
|
||||
{
|
||||
path += "[" + std::to_string(std::get<unsigned int>(key)) + "]";
|
||||
|
@ -635,9 +634,13 @@ std::string LogicHandler::GetRequestedPath() const
|
|||
{
|
||||
auto part = std::get<std::string>(key);
|
||||
if (i > 0)
|
||||
{
|
||||
path += "." + part;
|
||||
}
|
||||
else
|
||||
{
|
||||
path += part;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -647,15 +650,15 @@ std::string LogicHandler::GetRequestedPath() const
|
|||
// Used when saving.
|
||||
void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
||||
{
|
||||
sol::table tab{ *m_handler.GetState(), sol::create };
|
||||
tab[ScriptReserved_LevelVars] = (*m_handler.GetState())[ScriptReserved_LevelVars];
|
||||
tab[ScriptReserved_GameVars] = (*m_handler.GetState())[ScriptReserved_GameVars];
|
||||
auto tab = sol::table(*_handler.GetState(), sol::create);
|
||||
tab[ScriptReserved_LevelVars] = (*_handler.GetState())[ScriptReserved_LevelVars];
|
||||
tab[ScriptReserved_GameVars] = (*_handler.GetState())[ScriptReserved_GameVars];
|
||||
|
||||
std::unordered_map<void const*, unsigned int> varsMap;
|
||||
std::unordered_map<double, unsigned int> numMap;
|
||||
std::unordered_map<bool, unsigned int> boolMap;
|
||||
auto varsMap = std::unordered_map<void const*, unsigned int>{};
|
||||
auto numMap = std::unordered_map<double, unsigned int>{};
|
||||
auto boolMap = std::unordered_map<bool, unsigned int>{};
|
||||
|
||||
size_t numVars = 0;
|
||||
size_t varCount = 0;
|
||||
|
||||
// The following functions will all try to put their values in a map. If it succeeds
|
||||
// then the value was not already in the map, so we can put it into the var vector.
|
||||
|
@ -667,12 +670,12 @@ void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
|||
|
||||
auto handleNum = [&](auto num, auto map)
|
||||
{
|
||||
auto [first, second] = map.insert(std::make_pair(num, (int)numVars));
|
||||
auto [first, second] = map.insert(std::make_pair(num, (int)varCount));
|
||||
|
||||
if (second)
|
||||
{
|
||||
vars.push_back(num);
|
||||
++numVars;
|
||||
++varCount;
|
||||
}
|
||||
|
||||
return first->second;
|
||||
|
@ -681,12 +684,12 @@ void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
|||
auto handleStr = [&](const sol::object& obj)
|
||||
{
|
||||
auto str = obj.as<sol::string_view>();
|
||||
auto [first, second] = varsMap.insert(std::make_pair(str.data(), (int)numVars));
|
||||
auto [first, second] = varsMap.insert(std::make_pair(str.data(), (int)varCount));
|
||||
|
||||
if (second)
|
||||
{
|
||||
vars.push_back(std::string{ str.data() });
|
||||
++numVars;
|
||||
++varCount;
|
||||
}
|
||||
|
||||
return first->second;
|
||||
|
@ -694,12 +697,12 @@ void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
|||
|
||||
auto handleFuncName = [&](const LevelFunc& fnh)
|
||||
{
|
||||
auto [first, second] = varsMap.insert(std::make_pair(&fnh, (int)numVars));
|
||||
auto [first, second] = varsMap.insert(std::make_pair(&fnh, (int)varCount));
|
||||
|
||||
if (second)
|
||||
{
|
||||
vars.push_back(FuncName{ std::string{ fnh.m_funcName } });
|
||||
++numVars;
|
||||
++varCount;
|
||||
}
|
||||
|
||||
return first->second;
|
||||
|
@ -707,11 +710,11 @@ void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
|||
|
||||
std::function<unsigned int(const sol::table&)> populate = [&](const sol::table& obj)
|
||||
{
|
||||
auto [first, second] = varsMap.insert(std::make_pair(obj.pointer(), (int)numVars));
|
||||
auto [first, second] = varsMap.insert(std::make_pair(obj.pointer(), (int)varCount));
|
||||
|
||||
if(second)
|
||||
{
|
||||
++numVars;
|
||||
++varCount;
|
||||
auto id = first->second;
|
||||
|
||||
vars.push_back(IndexTable{});
|
||||
|
@ -729,7 +732,7 @@ void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
|||
{
|
||||
keyIndex = handleStr(first);
|
||||
key = std::string{ first.as<sol::string_view>().data() };
|
||||
m_savedVarPath.push_back(key);
|
||||
_savedVarPath.push_back(key);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -744,7 +747,7 @@ void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
|||
{
|
||||
keyIndex = handleNum(data, numMap);
|
||||
key = static_cast<unsigned int>(data);
|
||||
m_savedVarPath.push_back(key);
|
||||
_savedVarPath.push_back(key);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -784,23 +787,23 @@ void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
|||
{
|
||||
if (second.is<Vec2>())
|
||||
{
|
||||
putInVars(Handle<SavedVarType::Vec2, Vector2>(second.as<Vec2>(), varsMap, numVars, vars));
|
||||
putInVars(Handle<SavedVarType::Vec2, Vector2>(second.as<Vec2>(), varsMap, varCount, vars));
|
||||
}
|
||||
else if (second.is<Vec3>())
|
||||
{
|
||||
putInVars(Handle<SavedVarType::Vec3, Vector3>(second.as<Vec3>(), varsMap, numVars, vars));
|
||||
putInVars(Handle<SavedVarType::Vec3, Vector3>(second.as<Vec3>(), varsMap, varCount, vars));
|
||||
}
|
||||
else if (second.is<Rotation>())
|
||||
{
|
||||
putInVars(Handle<SavedVarType::Rotation, Vector3>(second.as<Rotation>(), varsMap, numVars, vars));
|
||||
putInVars(Handle<SavedVarType::Rotation, Vector3>(second.as<Rotation>(), varsMap, varCount, vars));
|
||||
}
|
||||
else if (second.is<Time>())
|
||||
{
|
||||
putInVars(Handle<SavedVarType::Time, int>(second.as<Time>(), varsMap, numVars, vars));
|
||||
putInVars(Handle<SavedVarType::Time, int>(second.as<Time>(), varsMap, varCount, vars));
|
||||
}
|
||||
else if (second.is<ScriptColor>())
|
||||
{
|
||||
putInVars(Handle<SavedVarType::Color, D3DCOLOR>(second.as<ScriptColor>(), varsMap, numVars, vars));
|
||||
putInVars(Handle<SavedVarType::Color, D3DCOLOR>(second.as<ScriptColor>(), varsMap, varCount, vars));
|
||||
}
|
||||
else if (second.is<LevelFunc>())
|
||||
{
|
||||
|
@ -817,7 +820,7 @@ void LogicHandler::GetVariables(std::vector<SavedVar>& vars)
|
|||
ScriptAssert(false, "Tried saving an unsupported type as a value; variable is " + GetRequestedPath());
|
||||
}
|
||||
|
||||
m_savedVarPath.pop_back();
|
||||
_savedVarPath.pop_back();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -845,30 +848,30 @@ void LogicHandler::GetCallbackStrings(
|
|||
{
|
||||
auto populateWith = [](std::vector<std::string>& dest, const std::unordered_set<std::string>& src)
|
||||
{
|
||||
for (const auto& s : src)
|
||||
dest.push_back(s);
|
||||
for (const auto& string : src)
|
||||
dest.push_back(string);
|
||||
};
|
||||
|
||||
populateWith(preStart, m_callbacksPreStart);
|
||||
populateWith(postStart, m_callbacksPostStart);
|
||||
populateWith(preStart, _callbacksPreStart);
|
||||
populateWith(postStart, _callbacksPostStart);
|
||||
|
||||
populateWith(preEnd, m_callbacksPreEnd);
|
||||
populateWith(postEnd, m_callbacksPostEnd);
|
||||
populateWith(preEnd, _callbacksPreEnd);
|
||||
populateWith(postEnd, _callbacksPostEnd);
|
||||
|
||||
populateWith(preSave, m_callbacksPreSave);
|
||||
populateWith(postSave, m_callbacksPostSave);
|
||||
populateWith(preSave, _callbacksPreSave);
|
||||
populateWith(postSave, _callbacksPostSave);
|
||||
|
||||
populateWith(preLoad, m_callbacksPreLoad);
|
||||
populateWith(postLoad, m_callbacksPostLoad);
|
||||
populateWith(preLoad, _callbacksPreLoad);
|
||||
populateWith(postLoad, _callbacksPostLoad);
|
||||
|
||||
populateWith(preLoop, m_callbacksPreLoop);
|
||||
populateWith(postLoop, m_callbacksPostLoop);
|
||||
populateWith(preLoop, _callbacksPreLoop);
|
||||
populateWith(postLoop, _callbacksPostLoop);
|
||||
|
||||
populateWith(preUseItem, m_callbacksPreUseItem);
|
||||
populateWith(postUseItem, m_callbacksPostUseItem);
|
||||
populateWith(preUseItem, _callbacksPreUseItem);
|
||||
populateWith(postUseItem, _callbacksPostUseItem);
|
||||
|
||||
populateWith(preBreak, m_callbacksPreFreeze);
|
||||
populateWith(postBreak, m_callbacksPostFreeze);
|
||||
populateWith(preBreak, _callbacksPreFreeze);
|
||||
populateWith(postBreak, _callbacksPostFreeze);
|
||||
}
|
||||
|
||||
void LogicHandler::SetCallbackStrings(
|
||||
|
@ -893,26 +896,26 @@ void LogicHandler::SetCallbackStrings(
|
|||
dest.insert(string);
|
||||
};
|
||||
|
||||
populateWith(m_callbacksPreStart, preStart);
|
||||
populateWith(m_callbacksPostStart, postStart);
|
||||
populateWith(_callbacksPreStart, preStart);
|
||||
populateWith(_callbacksPostStart, postStart);
|
||||
|
||||
populateWith(m_callbacksPreEnd, preEnd);
|
||||
populateWith(m_callbacksPostEnd, postEnd);
|
||||
populateWith(_callbacksPreEnd, preEnd);
|
||||
populateWith(_callbacksPostEnd, postEnd);
|
||||
|
||||
populateWith(m_callbacksPreSave, preSave);
|
||||
populateWith(m_callbacksPostSave, postSave);
|
||||
populateWith(_callbacksPreSave, preSave);
|
||||
populateWith(_callbacksPostSave, postSave);
|
||||
|
||||
populateWith(m_callbacksPreLoad, preLoad);
|
||||
populateWith(m_callbacksPostLoad, postLoad);
|
||||
populateWith(_callbacksPreLoad, preLoad);
|
||||
populateWith(_callbacksPostLoad, postLoad);
|
||||
|
||||
populateWith(m_callbacksPreLoop, preLoop);
|
||||
populateWith(m_callbacksPostLoop, postLoop);
|
||||
populateWith(_callbacksPreLoop, preLoop);
|
||||
populateWith(_callbacksPostLoop, postLoop);
|
||||
|
||||
populateWith(m_callbacksPreUseItem, preUseItem);
|
||||
populateWith(m_callbacksPostUseItem, postUseItem);
|
||||
populateWith(_callbacksPreUseItem, preUseItem);
|
||||
populateWith(_callbacksPostUseItem, postUseItem);
|
||||
|
||||
populateWith(m_callbacksPreFreeze, preBreak);
|
||||
populateWith(m_callbacksPostFreeze, postBreak);
|
||||
populateWith(_callbacksPreFreeze, preBreak);
|
||||
populateWith(_callbacksPostFreeze, postBreak);
|
||||
}
|
||||
|
||||
template <typename R, char const * S, typename mapType>
|
||||
|
@ -931,7 +934,7 @@ std::unique_ptr<R> GetByName(const std::string& type, const std::string& name, c
|
|||
*/
|
||||
void LogicHandler::ResetVariables()
|
||||
{
|
||||
(*m_handler.GetState())["Lara"] = nullptr;
|
||||
(*_handler.GetState())["Lara"] = nullptr;
|
||||
}
|
||||
|
||||
void LogicHandler::ShortenTENCalls()
|
||||
|
@ -956,33 +959,33 @@ void LogicHandler::ShortenTENCalls()
|
|||
|
||||
ExecuteString(str);
|
||||
|
||||
m_shortenedCalls = true;
|
||||
_shortenedCalls = true;
|
||||
}
|
||||
|
||||
void LogicHandler::ExecuteScriptFile(const std::string& luaFilename)
|
||||
{
|
||||
if (!m_shortenedCalls)
|
||||
if (!_shortenedCalls)
|
||||
ShortenTENCalls();
|
||||
|
||||
m_handler.ExecuteScript(luaFilename);
|
||||
_handler.ExecuteScript(luaFilename);
|
||||
}
|
||||
|
||||
void LogicHandler::ExecuteString(const std::string& command)
|
||||
{
|
||||
m_handler.ExecuteString(command);
|
||||
_handler.ExecuteString(command);
|
||||
}
|
||||
|
||||
// These wind up calling CallLevelFunc, which is where all error checking is.
|
||||
void LogicHandler::ExecuteFunction(const std::string& name, short idOne, short idTwo)
|
||||
{
|
||||
auto func = m_levelFuncs_luaFunctions[name];
|
||||
auto func = _levelFuncs_luaFunctions[name];
|
||||
|
||||
func(std::make_unique<Moveable>(idOne), std::make_unique<Moveable>(idTwo));
|
||||
}
|
||||
|
||||
void LogicHandler::ExecuteFunction(const std::string& name, TEN::Control::Volumes::Activator activator, const std::string& arguments)
|
||||
{
|
||||
sol::protected_function func = (*m_handler.GetState())[ScriptReserved_LevelFuncs][name.c_str()];
|
||||
sol::protected_function func = (*_handler.GetState())[ScriptReserved_LevelFuncs][name.c_str()];
|
||||
if (std::holds_alternative<int>(activator))
|
||||
{
|
||||
func(std::make_unique<Moveable>(std::get<int>(activator), true), arguments);
|
||||
|
@ -995,25 +998,25 @@ void LogicHandler::ExecuteFunction(const std::string& name, TEN::Control::Volume
|
|||
|
||||
void LogicHandler::OnStart()
|
||||
{
|
||||
for (const auto& name : m_callbacksPreStart)
|
||||
for (const auto& name : _callbacksPreStart)
|
||||
CallLevelFuncByName(name);
|
||||
|
||||
if (m_onStart.valid())
|
||||
CallLevelFunc(m_onStart);
|
||||
if (_onStart.valid())
|
||||
CallLevelFunc(_onStart);
|
||||
|
||||
for (const auto& name : m_callbacksPostStart)
|
||||
for (const auto& name : _callbacksPostStart)
|
||||
CallLevelFuncByName(name);
|
||||
}
|
||||
|
||||
void LogicHandler::OnLoad()
|
||||
{
|
||||
for (const auto& name : m_callbacksPreLoad)
|
||||
for (const auto& name : _callbacksPreLoad)
|
||||
CallLevelFuncByName(name);
|
||||
|
||||
if (m_onLoad.valid())
|
||||
CallLevelFunc(m_onLoad);
|
||||
if (_onLoad.valid())
|
||||
CallLevelFunc(_onLoad);
|
||||
|
||||
for (const auto& name : m_callbacksPostLoad)
|
||||
for (const auto& name : _callbacksPostLoad)
|
||||
CallLevelFuncByName(name);
|
||||
}
|
||||
|
||||
|
@ -1021,29 +1024,29 @@ void LogicHandler::OnLoop(float deltaTime, bool postLoop)
|
|||
{
|
||||
if (!postLoop)
|
||||
{
|
||||
for (const auto& name : m_callbacksPreLoop)
|
||||
for (const auto& name : _callbacksPreLoop)
|
||||
CallLevelFuncByName(name, deltaTime);
|
||||
|
||||
lua_gc(m_handler.GetState()->lua_state(), LUA_GCCOLLECT, 0);
|
||||
if (m_onLoop.valid())
|
||||
CallLevelFunc(m_onLoop, deltaTime);
|
||||
lua_gc(_handler.GetState()->lua_state(), LUA_GCCOLLECT, 0);
|
||||
if (_onLoop.valid())
|
||||
CallLevelFunc(_onLoop, deltaTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (const auto& name : m_callbacksPostLoop)
|
||||
for (const auto& name : _callbacksPostLoop)
|
||||
CallLevelFuncByName(name, deltaTime);
|
||||
}
|
||||
}
|
||||
|
||||
void LogicHandler::OnSave()
|
||||
{
|
||||
for (const auto& name : m_callbacksPreSave)
|
||||
for (const auto& name : _callbacksPreSave)
|
||||
CallLevelFuncByName(name);
|
||||
|
||||
if (m_onSave.valid())
|
||||
CallLevelFunc(m_onSave);
|
||||
if (_onSave.valid())
|
||||
CallLevelFunc(_onSave);
|
||||
|
||||
for (const auto& name : m_callbacksPostSave)
|
||||
for (const auto& name : _callbacksPostSave)
|
||||
CallLevelFuncByName(name);
|
||||
}
|
||||
|
||||
|
@ -1069,37 +1072,37 @@ void LogicHandler::OnEnd(GameStatus reason)
|
|||
break;
|
||||
}
|
||||
|
||||
for (const auto& name : m_callbacksPreEnd)
|
||||
for (const auto& name : _callbacksPreEnd)
|
||||
CallLevelFuncByName(name, endReason);
|
||||
|
||||
if (m_onEnd.valid())
|
||||
CallLevelFunc(m_onEnd, endReason);
|
||||
if (_onEnd.valid())
|
||||
CallLevelFunc(_onEnd, endReason);
|
||||
|
||||
for (const auto& name : m_callbacksPostEnd)
|
||||
for (const auto& name : _callbacksPostEnd)
|
||||
CallLevelFuncByName(name, endReason);
|
||||
}
|
||||
|
||||
void LogicHandler::OnUseItem(GAME_OBJECT_ID objectNumber)
|
||||
{
|
||||
for (const auto& name : m_callbacksPreUseItem)
|
||||
for (const auto& name : _callbacksPreUseItem)
|
||||
CallLevelFuncByName(name, objectNumber);
|
||||
|
||||
if (m_onUseItem.valid())
|
||||
CallLevelFunc(m_onUseItem, objectNumber);
|
||||
if (_onUseItem.valid())
|
||||
CallLevelFunc(_onUseItem, objectNumber);
|
||||
|
||||
for (const auto& name : m_callbacksPostUseItem)
|
||||
for (const auto& name : _callbacksPostUseItem)
|
||||
CallLevelFuncByName(name, objectNumber);
|
||||
}
|
||||
|
||||
void LogicHandler::OnFreeze()
|
||||
{
|
||||
for (const auto& name : m_callbacksPreFreeze)
|
||||
for (const auto& name : _callbacksPreFreeze)
|
||||
CallLevelFuncByName(name);
|
||||
|
||||
if (m_onFreeze.valid())
|
||||
CallLevelFunc(m_onFreeze);
|
||||
if (_onFreeze.valid())
|
||||
CallLevelFunc(_onFreeze);
|
||||
|
||||
for (const auto& name : m_callbacksPostFreeze)
|
||||
for (const auto& name : _callbacksPostFreeze)
|
||||
CallLevelFuncByName(name);
|
||||
}
|
||||
|
||||
|
@ -1226,8 +1229,8 @@ void LogicHandler::InitCallbacks()
|
|||
{
|
||||
auto assignCB = [this](sol::protected_function& func, const std::string& luaFunc)
|
||||
{
|
||||
auto state = m_handler.GetState();
|
||||
std::string fullName = std::string{ ScriptReserved_LevelFuncs } + "." + luaFunc;
|
||||
auto state = _handler.GetState();
|
||||
auto fullName = std::string(ScriptReserved_LevelFuncs) + "." + luaFunc;
|
||||
|
||||
sol::object theData = (*state)[ScriptReserved_LevelFuncs][luaFunc];
|
||||
|
||||
|
@ -1236,20 +1239,20 @@ void LogicHandler::InitCallbacks()
|
|||
|
||||
LevelFunc fnh = (*state)[ScriptReserved_LevelFuncs][luaFunc];
|
||||
|
||||
func = m_levelFuncs_luaFunctions[fnh.m_funcName];
|
||||
func = _levelFuncs_luaFunctions[fnh.m_funcName];
|
||||
|
||||
if (!func.valid())
|
||||
TENLog("Level's script does not define callback " + fullName + ". Defaulting to no " + fullName + " behaviour.");
|
||||
};
|
||||
|
||||
assignCB(m_onStart, ScriptReserved_OnStart);
|
||||
assignCB(m_onLoad, ScriptReserved_OnLoad);
|
||||
assignCB(m_onLoop, ScriptReserved_OnLoop);
|
||||
assignCB(m_onSave, ScriptReserved_OnSave);
|
||||
assignCB(m_onEnd, ScriptReserved_OnEnd);
|
||||
assignCB(m_onUseItem, ScriptReserved_OnUseItem);
|
||||
assignCB(m_onFreeze, ScriptReserved_OnFreeze);
|
||||
assignCB(_onStart, ScriptReserved_OnStart);
|
||||
assignCB(_onLoad, ScriptReserved_OnLoad);
|
||||
assignCB(_onLoop, ScriptReserved_OnLoop);
|
||||
assignCB(_onSave, ScriptReserved_OnSave);
|
||||
assignCB(_onEnd, ScriptReserved_OnEnd);
|
||||
assignCB(_onUseItem, ScriptReserved_OnUseItem);
|
||||
assignCB(_onFreeze, ScriptReserved_OnFreeze);
|
||||
|
||||
// COMPATIBILITY
|
||||
assignCB(m_onLoop, "OnControlPhase");
|
||||
assignCB(_onLoop, "OnControlPhase");
|
||||
}
|
||||
|
|
|
@ -32,14 +32,14 @@ private:
|
|||
// Each of these has a metatable whose __index metamethod looks in m_levelFuncsTables, using the path
|
||||
// as the key, for the full name of the function. It then gets the FuncNameHolder from m_levelFuncsFakeFuncs,
|
||||
// and that FuncNameHolder's __call metamethod looks in m_levelFuncs_luaFunctions for the real function.
|
||||
sol::table m_levelFuncs{};
|
||||
sol::table _levelFuncs = {};
|
||||
|
||||
// Maps full function paths into Lua functions.
|
||||
std::unordered_map<std::string, sol::protected_function> m_levelFuncs_luaFunctions{};
|
||||
std::unordered_map<std::string, sol::protected_function> _levelFuncs_luaFunctions = {};
|
||||
|
||||
// Maps full function paths to LevelFunc objects.
|
||||
// This is a table instead of a C++ container to more easily interface with Sol.
|
||||
sol::table m_levelFuncs_levelFuncObjects{};
|
||||
sol::table _levelFuncs_levelFuncObjects = {};
|
||||
|
||||
// Contains tables; each table refers to a table in the LevelFuncs hierarchy, and contains the full names
|
||||
// of the functions to index in m_levelFuncs_luaFunctions.
|
||||
|
@ -49,47 +49,47 @@ private:
|
|||
// "LevelFuncs.Engine.Util"
|
||||
// "LevelFuncs.MyLevel"
|
||||
// "LevelFuncs.MyLevel.CoolFuncs"
|
||||
std::unordered_map<std::string, std::unordered_map<std::string, std::string>> m_levelFuncs_tablesOfNames{};
|
||||
std::unordered_map<std::string, std::unordered_map<std::string, std::string>> _levelFuncs_tablesOfNames = {};
|
||||
|
||||
std::unordered_set<std::string> m_callbacksPreStart;
|
||||
std::unordered_set<std::string> m_callbacksPostStart;
|
||||
std::unordered_set<std::string> m_callbacksPreLoop;
|
||||
std::unordered_set<std::string> m_callbacksPostLoop;
|
||||
std::unordered_set<std::string> m_callbacksPreLoad;
|
||||
std::unordered_set<std::string> m_callbacksPostLoad;
|
||||
std::unordered_set<std::string> m_callbacksPreSave;
|
||||
std::unordered_set<std::string> m_callbacksPostSave;
|
||||
std::unordered_set<std::string> m_callbacksPreEnd;
|
||||
std::unordered_set<std::string> m_callbacksPostEnd;
|
||||
std::unordered_set<std::string> m_callbacksPreUseItem;
|
||||
std::unordered_set<std::string> m_callbacksPostUseItem;
|
||||
std::unordered_set<std::string> m_callbacksPreFreeze;
|
||||
std::unordered_set<std::string> m_callbacksPostFreeze;
|
||||
std::unordered_set<std::string> _callbacksPreStart = {};
|
||||
std::unordered_set<std::string> _callbacksPostStart = {};
|
||||
std::unordered_set<std::string> _callbacksPreLoop = {};
|
||||
std::unordered_set<std::string> _callbacksPostLoop = {};
|
||||
std::unordered_set<std::string> _callbacksPreLoad = {};
|
||||
std::unordered_set<std::string> _callbacksPostLoad = {};
|
||||
std::unordered_set<std::string> _callbacksPreSave = {};
|
||||
std::unordered_set<std::string> _callbacksPostSave = {};
|
||||
std::unordered_set<std::string> _callbacksPreEnd = {};
|
||||
std::unordered_set<std::string> _callbacksPostEnd = {};
|
||||
std::unordered_set<std::string> _callbacksPreUseItem = {};
|
||||
std::unordered_set<std::string> _callbacksPostUseItem = {};
|
||||
std::unordered_set<std::string> _callbacksPreFreeze = {};
|
||||
std::unordered_set<std::string> _callbacksPostFreeze = {};
|
||||
|
||||
sol::protected_function m_onStart{};
|
||||
sol::protected_function m_onLoop{};
|
||||
sol::protected_function m_onLoad{};
|
||||
sol::protected_function m_onSave{};
|
||||
sol::protected_function m_onEnd{};
|
||||
sol::protected_function m_onUseItem{};
|
||||
sol::protected_function m_onFreeze{};
|
||||
sol::protected_function _onStart = {};
|
||||
sol::protected_function _onLoop = {};
|
||||
sol::protected_function _onLoad = {};
|
||||
sol::protected_function _onSave = {};
|
||||
sol::protected_function _onEnd = {};
|
||||
sol::protected_function _onUseItem = {};
|
||||
sol::protected_function _onFreeze = {};
|
||||
|
||||
std::unordered_map<CallbackPoint, std::unordered_set<std::string> *> m_callbacks;
|
||||
std::unordered_map<CallbackPoint, std::unordered_set<std::string>*> _callbacks;
|
||||
|
||||
std::vector<std::variant<std::string, unsigned int>> m_savedVarPath;
|
||||
std::vector<std::variant<std::string, unsigned int>> _savedVarPath;
|
||||
|
||||
bool m_shortenedCalls = false;
|
||||
bool _shortenedCalls = false;
|
||||
|
||||
std::string GetRequestedPath() const;
|
||||
|
||||
void ResetLevelTables();
|
||||
void ResetGameTables();
|
||||
LuaHandler m_handler;
|
||||
LuaHandler _handler;
|
||||
|
||||
public:
|
||||
LogicHandler(sol::state* lua, sol::table& parent);
|
||||
|
||||
template <typename ... Ts> sol::protected_function_result CallLevelFuncBase(const sol::protected_function & func, Ts ... vs)
|
||||
template <typename ... Ts> sol::protected_function_result CallLevelFuncBase(const sol::protected_function& func, Ts ... vs)
|
||||
{
|
||||
auto funcResult = func.call(vs...);
|
||||
return funcResult;
|
||||
|
@ -97,7 +97,7 @@ public:
|
|||
|
||||
template <typename ... Ts> sol::protected_function_result CallLevelFuncByName(const std::string& name, Ts ... vs)
|
||||
{
|
||||
auto func = m_levelFuncs_luaFunctions[name];
|
||||
auto func = _levelFuncs_luaFunctions[name];
|
||||
auto funcResult = CallLevelFuncBase(func, vs...);
|
||||
|
||||
if (!funcResult.valid())
|
||||
|
@ -109,7 +109,7 @@ public:
|
|||
return funcResult;
|
||||
}
|
||||
|
||||
template <typename ... Ts> sol::protected_function_result CallLevelFunc(const sol::protected_function & func, Ts ... vs)
|
||||
template <typename ... Ts> sol::protected_function_result CallLevelFunc(const sol::protected_function& func, Ts ... vs)
|
||||
{
|
||||
auto funcResult = CallLevelFuncBase(func, vs...);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
// Last generated on 18/11/2022
|
||||
// Last generated on 11/03/2025
|
||||
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
|
@ -165,6 +165,7 @@ The following constants are inside ObjID.
|
|||
CYBORG
|
||||
SNIPER
|
||||
CHEF
|
||||
KOLD
|
||||
WINGED_MUMMY
|
||||
CENTAUR_MUTANT
|
||||
DOPPELGANGER
|
||||
|
@ -189,14 +190,14 @@ The following constants are inside ObjID.
|
|||
SWORD_GUARDIAN_STATUE
|
||||
SHIVA
|
||||
SHIVA_STATUE
|
||||
TRIBEBOSS
|
||||
WILLARD
|
||||
CIVVY
|
||||
MUTANT2
|
||||
LIZARD
|
||||
TONY_BOSS
|
||||
TONY_BOSS_FLAME
|
||||
PUNA_BOSS
|
||||
SOPHIA_LEE_BOSS
|
||||
SOPHIA_LEIGH_BOSS
|
||||
LASER_BOLT
|
||||
SKELETON
|
||||
MUMMY
|
||||
|
@ -228,7 +229,7 @@ The following constants are inside ObjID.
|
|||
IMP
|
||||
IMP_ROCK
|
||||
GUNSHIP
|
||||
AUTOGUN
|
||||
AUTO_GUN_VCI
|
||||
ROMAN_GOD1
|
||||
ROMAN_GOD2
|
||||
LAGOON_WITCH
|
||||
|
@ -237,6 +238,7 @@ The following constants are inside ObjID.
|
|||
BOSS_EXPLOSION_RING
|
||||
CLAW_MUTANT
|
||||
WASP_MUTANT
|
||||
TWIN_AUTO_GUN
|
||||
SKATEBOARD
|
||||
SKATEBOARD_KID
|
||||
WINSTON
|
||||
|
@ -372,11 +374,6 @@ The following constants are inside ObjID.
|
|||
ELECTRIC_CLEANER
|
||||
SLAMMING_DOORS
|
||||
SWINGING_BLADE
|
||||
ELECTRIC_BALL
|
||||
ELECTRIC_BALL_IMPACT_POINT
|
||||
THOR_HAMMER_HANDLE
|
||||
THOR_HAMMER_HEAD
|
||||
MOVING_LASER
|
||||
PUZZLE_ITEM1
|
||||
PUZZLE_ITEM2
|
||||
PUZZLE_ITEM3
|
||||
|
@ -609,7 +606,6 @@ The following constants are inside ObjID.
|
|||
CLOCKWORK_BEETLE
|
||||
CLOCKWORK_BEETLE_COMBO1
|
||||
CLOCKWORK_BEETLE_COMBO2
|
||||
|
||||
SWITCH_TYPE1
|
||||
SWITCH_TYPE2
|
||||
SWITCH_TYPE3
|
||||
|
@ -631,10 +627,10 @@ The following constants are inside ObjID.
|
|||
SHOOT_SWITCH3
|
||||
SHOOT_SWITCH4
|
||||
AIRLOCK_SWITCH
|
||||
ID_UNDERWATER_WALL_SWITCH_1
|
||||
ID_UNDERWATER_WALL_SWITCH_2
|
||||
ID_UNDERWATER_CEILING_SWITCH_1
|
||||
ID_UNDERWATER_CEILING_SWITCH_2
|
||||
UNDERWATER_WALL_SWITCH1
|
||||
UNDERWATER_WALL_SWITCH2
|
||||
UNDERWATER_CEILING_SWITCH1
|
||||
UNDERWATER_CEILING_SWITCH2
|
||||
TURN_SWITCH
|
||||
COG_SWITCH
|
||||
LEVER_SWITCH
|
||||
|
@ -781,7 +777,7 @@ The following constants are inside ObjID.
|
|||
KILL_ALL_TRIGGERS
|
||||
TRIGGER_TRIGGERER
|
||||
HIGH_OBJECT1
|
||||
HIGH_OBJECT2
|
||||
EMBER_EMITTER
|
||||
SMASH_OBJECT1
|
||||
SMASH_OBJECT2
|
||||
SMASH_OBJECT3
|
||||
|
@ -812,7 +808,6 @@ The following constants are inside ObjID.
|
|||
DOPPELGANGER_ORIGIN
|
||||
CORPSE
|
||||
WRAITH_TRAP
|
||||
WATERFALL_EMITTER
|
||||
MESHSWAP1
|
||||
MESHSWAP2
|
||||
MESHSWAP3
|
||||
|
@ -970,8 +965,6 @@ The following constants are inside ObjID.
|
|||
BRIDGE_TILT4
|
||||
BRIDGE_CUSTOM
|
||||
HORIZON
|
||||
BINOCULAR_GRAPHICS
|
||||
TARGET_GRAPHICS
|
||||
SKY_GRAPHICS
|
||||
DEFAULT_SPRITES
|
||||
MISC_SPRITES
|
||||
|
@ -986,30 +979,18 @@ The following constants are inside ObjID.
|
|||
SKIDOO_SNOW_TRAIL_SPRITES
|
||||
KAYAK_PADDLE_TRAIL_SPRITE
|
||||
KAYAK_WAKE_SPRTIES
|
||||
BINOCULAR_GRAPHIC
|
||||
LASER_SIGHT_GRAPHIC
|
||||
CAUSTICS_TEXTURES
|
||||
BAR_BORDER_GRAPHIC
|
||||
BINOCULAR_GRAPHICS
|
||||
LASERSIGHT_GRAPHICS
|
||||
CAUSTIC_TEXTURES
|
||||
BAR_BORDER_GRAPHICS
|
||||
HEALTH_BAR_TEXTURE
|
||||
AIR_BAR_TEXTURE
|
||||
DASH_BAR_TEXTURE
|
||||
SFX_BAR_TEXTURE
|
||||
SPEEDOMETER
|
||||
WATERFALL
|
||||
CUSTOM_BAR_GRAPHIC
|
||||
CUSTOM_AMMO_GRAPHIC
|
||||
DIARY_SPRITES
|
||||
DIARY_ENTRY_SPRITES
|
||||
|
||||
PANEL_BORDER
|
||||
PANEL_MIDDLE
|
||||
PANEL_CORNER
|
||||
PANEL_DIAGONAL
|
||||
PANEL_STRIP
|
||||
PANEL_HALF_BORDER1
|
||||
PANEL_HALF_BORDER2
|
||||
PANEL_MIDDLE_CORNER
|
||||
Table of constants.
|
||||
CROSSHAIR_GRAPHICS
|
||||
SPEEDOMETER_GRAPHICS
|
||||
CUSTOM_BAR_GRAPHICS
|
||||
CUSTOM_AMMO_GRAPHICS
|
||||
@table Members
|
||||
*/
|
||||
|
||||
|
@ -1161,6 +1142,30 @@ The following ObjID members refer to pickups.
|
|||
PICKUP_ITEM15_COMBO2
|
||||
PICKUP_ITEM16_COMBO1
|
||||
PICKUP_ITEM16_COMBO2
|
||||
EXAMINE1
|
||||
EXAMINE2
|
||||
EXAMINE3
|
||||
EXAMINE4
|
||||
EXAMINE5
|
||||
EXAMINE6
|
||||
EXAMINE7
|
||||
EXAMINE8
|
||||
EXAMINE1_COMBO1
|
||||
EXAMINE1_COMBO2
|
||||
EXAMINE2_COMBO1
|
||||
EXAMINE2_COMBO2
|
||||
EXAMINE3_COMBO1
|
||||
EXAMINE3_COMBO2
|
||||
EXAMINE4_COMBO1
|
||||
EXAMINE4_COMBO2
|
||||
EXAMINE5_COMBO1
|
||||
EXAMINE5_COMBO2
|
||||
EXAMINE6_COMBO1
|
||||
EXAMINE6_COMBO2
|
||||
EXAMINE7_COMBO1
|
||||
EXAMINE7_COMBO2
|
||||
EXAMINE8_COMBO1
|
||||
EXAMINE8_COMBO2
|
||||
HAMMER_ITEM
|
||||
CROWBAR_ITEM
|
||||
BURNING_TORCH_ITEM
|
||||
|
@ -1198,14 +1203,44 @@ The following ObjID members refer to pickups.
|
|||
COMPASS_ITEM
|
||||
DIARY_ITEM
|
||||
STOPWATCH_ITEM
|
||||
MEMCARD_LOAD_INV_ITEM
|
||||
MEMCARD_SAVE_INV_ITEM
|
||||
PC_LOAD_INV_ITEM
|
||||
PC_SAVE_INV_ITEM
|
||||
Table of constants.
|
||||
@table PickupConstants
|
||||
*/
|
||||
|
||||
static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_ID>
|
||||
{
|
||||
/*** Objects.ObjID sprite constants.
|
||||
|
||||
The following ObjID members refer to sprites.
|
||||
|
||||
SKY_GRAPHICS
|
||||
DEFAULT_SPRITES
|
||||
MISC_SPRITES
|
||||
CUSTOM_SPRITES
|
||||
FIRE_SPRITES
|
||||
SMOKE_SPRITES
|
||||
SPARK_SPRITE
|
||||
DRIP_SPRITE
|
||||
EXPLOSION_SPRITES
|
||||
MOTORBOAT_FOAM_SPRITES
|
||||
RUBBER_BOAT_WAVE_SPRITES
|
||||
SKIDOO_SNOW_TRAIL_SPRITES
|
||||
KAYAK_PADDLE_TRAIL_SPRITE
|
||||
LASERSIGHT_GRAPHICS
|
||||
CAUSTIC_TEXTURES
|
||||
BAR_BORDER_GRAPHICS
|
||||
HEALTH_BAR_TEXTURE
|
||||
AIR_BAR_TEXTURE
|
||||
DASH_BAR_TEXTURE
|
||||
SFX_BAR_TEXTURE
|
||||
CROSSHAIR_GRAPHICS
|
||||
SPEEDOMETER_GRAPHICS
|
||||
CUSTOM_BAR_GRAPHICS
|
||||
CUSTOM_AMMO_GRAPHICS
|
||||
@table SpriteConstants
|
||||
*/
|
||||
static const std::unordered_map<std::string, GAME_OBJECT_ID> GAME_OBJECT_IDS {
|
||||
{ "LARA", ID_LARA },
|
||||
{ "LARA_EXTRA_ANIMS", ID_LARA_EXTRA_ANIMS },
|
||||
{ "PISTOLS_ANIM", ID_PISTOLS_ANIM },
|
||||
|
@ -1355,6 +1390,7 @@ static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_
|
|||
{ "CYBORG", ID_CYBORG },
|
||||
{ "SNIPER", ID_SNIPER },
|
||||
{ "CHEF", ID_CHEF },
|
||||
{ "KOLD", ID_KOLD },
|
||||
{ "WINGED_MUMMY", ID_WINGED_MUMMY },
|
||||
{ "CENTAUR_MUTANT", ID_CENTAUR_MUTANT },
|
||||
{ "DOPPELGANGER", ID_DOPPELGANGER },
|
||||
|
@ -1418,7 +1454,7 @@ static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_
|
|||
{ "IMP", ID_IMP },
|
||||
{ "IMP_ROCK", ID_IMP_ROCK },
|
||||
{ "GUNSHIP", ID_GUNSHIP },
|
||||
{ "AUTOGUN", ID_AUTO_GUN_VCI },
|
||||
{ "AUTO_GUN_VCI", ID_AUTO_GUN_VCI },
|
||||
{ "ROMAN_GOD1", ID_ROMAN_GOD1 },
|
||||
{ "ROMAN_GOD2", ID_ROMAN_GOD2 },
|
||||
{ "LAGOON_WITCH", ID_LAGOON_WITCH },
|
||||
|
@ -1427,6 +1463,7 @@ static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_
|
|||
{ "BOSS_EXPLOSION_RING", ID_BOSS_EXPLOSION_RING },
|
||||
{ "CLAW_MUTANT", ID_CLAW_MUTANT },
|
||||
{ "WASP_MUTANT", ID_WASP_MUTANT },
|
||||
{ "TWIN_AUTO_GUN", ID_TWIN_AUTO_GUN },
|
||||
{ "SKATEBOARD", ID_SKATEBOARD },
|
||||
{ "SKATEBOARD_KID", ID_SKATEBOARD_KID },
|
||||
{ "WINSTON", ID_WINSTON },
|
||||
|
@ -1562,11 +1599,6 @@ static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_
|
|||
{ "ELECTRIC_CLEANER", ID_ELECTRIC_CLEANER },
|
||||
{ "SLAMMING_DOORS", ID_SLAMMING_DOORS },
|
||||
{ "SWINGING_BLADE", ID_SWINGING_BLADE },
|
||||
{ "ELECTRIC_BALL", ID_ELECTRIC_BALL },
|
||||
{ "ELECTRIC_BALL_IMPACT_POINT", ID_ELECTRIC_BALL_IMPACT_POINT },
|
||||
{ "THOR_HAMMER_HANDLE", ID_THOR_HAMMER_HANDLE },
|
||||
{ "THOR_HAMMER_HEAD", ID_THOR_HAMMER_HEAD },
|
||||
{ "MOVING_LASER", ID_MOVING_LASER },
|
||||
{ "PUZZLE_ITEM1", ID_PUZZLE_ITEM1 },
|
||||
{ "PUZZLE_ITEM2", ID_PUZZLE_ITEM2 },
|
||||
{ "PUZZLE_ITEM3", ID_PUZZLE_ITEM3 },
|
||||
|
@ -1820,10 +1852,10 @@ static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_
|
|||
{ "SHOOT_SWITCH3", ID_SHOOT_SWITCH3 },
|
||||
{ "SHOOT_SWITCH4", ID_SHOOT_SWITCH4 },
|
||||
{ "AIRLOCK_SWITCH", ID_AIRLOCK_SWITCH },
|
||||
{ "UNDERWATER_WALL_SWITCH_1", ID_UNDERWATER_WALL_SWITCH_1 },
|
||||
{ "UNDERWATER_WALL_SWITCH_2", ID_UNDERWATER_WALL_SWITCH_2 },
|
||||
{ "UNDERWATER_CEILING_SWITCH_1", ID_UNDERWATER_CEILING_SWITCH_1 },
|
||||
{ "UNDERWATER_CEILING_SWITCH_2", ID_UNDERWATER_CEILING_SWITCH_2 },
|
||||
{ "UNDERWATER_WALL_SWITCH1", ID_UNDERWATER_WALL_SWITCH1 },
|
||||
{ "UNDERWATER_WALL_SWITCH2", ID_UNDERWATER_WALL_SWITCH2 },
|
||||
{ "UNDERWATER_CEILING_SWITCH1", ID_UNDERWATER_CEILING_SWITCH1 },
|
||||
{ "UNDERWATER_CEILING_SWITCH2", ID_UNDERWATER_CEILING_SWITCH2 },
|
||||
{ "TURN_SWITCH", ID_TURN_SWITCH },
|
||||
{ "COG_SWITCH", ID_COG_SWITCH },
|
||||
{ "LEVER_SWITCH", ID_LEVER_SWITCH },
|
||||
|
@ -2001,7 +2033,6 @@ static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_
|
|||
{ "DOPPELGANGER_ORIGIN", ID_DOPPELGANGER_ORIGIN },
|
||||
{ "CORPSE", ID_CORPSE },
|
||||
{ "WRAITH_TRAP", ID_WRAITH_TRAP },
|
||||
{ "WATERFALL_EMITTER", ID_WATERFALL_EMITTER },
|
||||
{ "MESHSWAP1", ID_MESHSWAP1 },
|
||||
{ "MESHSWAP2", ID_MESHSWAP2 },
|
||||
{ "MESHSWAP3", ID_MESHSWAP3 },
|
||||
|
@ -2159,8 +2190,6 @@ static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_
|
|||
{ "BRIDGE_TILT4", ID_BRIDGE_TILT4 },
|
||||
{ "BRIDGE_CUSTOM", ID_BRIDGE_CUSTOM },
|
||||
{ "HORIZON", ID_HORIZON },
|
||||
{ "BINOCULAR_GRAPHICS", ID_BINOCULAR_GRAPHICS },
|
||||
{ "TARGET_GRAPHICS", ID_TARGET_GRAPHICS },
|
||||
{ "SKY_GRAPHICS", ID_SKY_GRAPHICS },
|
||||
{ "DEFAULT_SPRITES", ID_DEFAULT_SPRITES },
|
||||
{ "MISC_SPRITES", ID_MISC_SPRITES },
|
||||
|
@ -2175,27 +2204,16 @@ static const auto GAME_OBJECT_IDS = std::unordered_map<std::string, GAME_OBJECT_
|
|||
{ "SKIDOO_SNOW_TRAIL_SPRITES", ID_SKIDOO_SNOW_TRAIL_SPRITES },
|
||||
{ "KAYAK_PADDLE_TRAIL_SPRITE", ID_KAYAK_PADDLE_TRAIL_SPRITE },
|
||||
{ "KAYAK_WAKE_SPRTIES", ID_KAYAK_WAKE_SPRTIES },
|
||||
{ "BINOCULAR_GRAPHIC", ID_BINOCULAR_GRAPHIC },
|
||||
{ "LASER_SIGHT_GRAPHIC", ID_LASER_SIGHT_GRAPHIC },
|
||||
{ "CAUSTICS_TEXTURES", ID_CAUSTICS_TEXTURES },
|
||||
{ "BAR_BORDER_GRAPHIC", ID_BAR_BORDER_GRAPHIC },
|
||||
{ "BINOCULAR_GRAPHICS", ID_BINOCULAR_GRAPHICS },
|
||||
{ "LASERSIGHT_GRAPHICS", ID_LASERSIGHT_GRAPHICS },
|
||||
{ "CAUSTIC_TEXTURES", ID_CAUSTIC_TEXTURES },
|
||||
{ "BAR_BORDER_GRAPHICS", ID_BAR_BORDER_GRAPHICS },
|
||||
{ "HEALTH_BAR_TEXTURE", ID_HEALTH_BAR_TEXTURE },
|
||||
{ "AIR_BAR_TEXTURE", ID_AIR_BAR_TEXTURE },
|
||||
{ "DASH_BAR_TEXTURE", ID_DASH_BAR_TEXTURE },
|
||||
{ "SFX_BAR_TEXTURE", ID_SFX_BAR_TEXTURE },
|
||||
{ "CROSSHAIR", ID_CROSSHAIR },
|
||||
{ "SPEEDOMETER", ID_SPEEDOMETER },
|
||||
{ "WATERFALL", ID_WATERFALL_SPRITES },
|
||||
{ "CUSTOM_BAR_GRAPHIC", ID_CUSTOM_BAR_GRAPHIC },
|
||||
{ "CUSTOM_AMMO_GRAPHIC",ID_CUSTOM_AMMO_GRAPHIC },
|
||||
{ "DIARY_SPRITES", ID_DIARY_SPRITES },
|
||||
{ "DIARY_ENTRY_SPRITES", ID_DIARY_ENTRY_SPRITES },
|
||||
{ "PANEL_BORDER", ID_PANEL_BORDER },
|
||||
{ "PANEL_MIDDLE", ID_PANEL_MIDDLE },
|
||||
{ "PANEL_CORNER", ID_PANEL_CORNER },
|
||||
{ "PANEL_DIAGONAL", ID_PANEL_DIAGONAL },
|
||||
{ "PANEL_STRIP", ID_PANEL_STRIP },
|
||||
{ "PANEL_HALF_BORDER1", ID_PANEL_HALF_BORDER1 },
|
||||
{ "PANEL_HALF_BORDER2", ID_PANEL_HALF_BORDER2 },
|
||||
{ "PANEL_MIDDLE_CORNER", ID_PANEL_MIDDLE_CORNER }
|
||||
{ "CROSSHAIR_GRAPHICS", ID_CROSSHAIR_GRAPHICS },
|
||||
{ "SPEEDOMETER_GRAPHICS", ID_SPEEDOMETER_GRAPHICS },
|
||||
{ "CUSTOM_BAR_GRAPHICS", ID_CUSTOM_BAR_GRAPHICS },
|
||||
{ "CUSTOM_AMMO_GRAPHICS", ID_CUSTOM_AMMO_GRAPHICS }
|
||||
};
|
||||
|
|
|
@ -50,7 +50,7 @@ namespace TEN::Scripting::DisplaySprite
|
|||
|
||||
/// Create a DisplaySprite object.
|
||||
// @function DisplaySprite()
|
||||
// @tparam Objects.ObjID ID of the sprite sequence object.
|
||||
// @tparam Objects.ObjID.SpriteConstants ID of the sprite sequence object.
|
||||
// @tparam int int spriteID ID of the sprite in the sequence.
|
||||
// @tparam Vec2 pos Display position in percent.
|
||||
// @tparam float rot Rotation in degrees.
|
||||
|
@ -76,7 +76,7 @@ namespace TEN::Scripting::DisplaySprite
|
|||
|
||||
/// Get the object ID of the sprite sequence object used by the display sprite.
|
||||
// @function DisplaySprite:GetObjectID()
|
||||
// @treturn Objects.ObjID Sprite sequence object ID.
|
||||
// @treturn Objects.ObjID.SpriteConstants Sprite sequence object ID.
|
||||
GAME_OBJECT_ID ScriptDisplaySprite::GetObjectID() const
|
||||
{
|
||||
return _objectID;
|
||||
|
@ -123,8 +123,8 @@ namespace TEN::Scripting::DisplaySprite
|
|||
}
|
||||
|
||||
/// Set the sprite sequence object ID used by the display sprite.
|
||||
// @function DisplaySprite:SetObjectID(Objects.ObjID)
|
||||
// @tparam Objects.ObjID New sprite sequence object ID.
|
||||
// @function DisplaySprite:SetObjectID(Objects.ObjID.SpriteConstants)
|
||||
// @tparam Objects.ObjID.SpriteConstants New sprite sequence object ID.
|
||||
void ScriptDisplaySprite::SetObjectID(GAME_OBJECT_ID objectID)
|
||||
{
|
||||
_objectID = objectID;
|
||||
|
|
61
TombEngine/Specific/savegame/schema/generate_code.ps1
Normal file
61
TombEngine/Specific/savegame/schema/generate_code.ps1
Normal file
|
@ -0,0 +1,61 @@
|
|||
# Paths to the .fbs and corresponding generated .h files.
|
||||
$fbsFiles = @(
|
||||
@{ fbs = "$PSScriptRoot/ten_itemdata.fbs"; h = "$PSScriptRoot/../flatbuffers/ten_itemdata_generated.h" },
|
||||
@{ fbs = "$PSScriptRoot/ten_savegame.fbs"; h = "$PSScriptRoot/../flatbuffers/ten_savegame_generated.h" })
|
||||
|
||||
# Function to check if the .fbs file is newer than the .h file.
|
||||
function IsFbsNewerThanH ($fbs, $h)
|
||||
{
|
||||
if (Test-Path $h)
|
||||
{
|
||||
$fbsLastWrite = (Get-Item $fbs).LastWriteTime
|
||||
$hLastWrite = (Get-Item $h).LastWriteTime
|
||||
return $fbsLastWrite -gt $hLastWrite
|
||||
}
|
||||
else
|
||||
{
|
||||
# If the .h file does not exist, treat the .fbs as newer.
|
||||
return $true
|
||||
}
|
||||
}
|
||||
|
||||
# Check if any .fbs file is newer than its corresponding .h file.
|
||||
$shouldGenerate = $false
|
||||
|
||||
foreach ($file in $fbsFiles)
|
||||
{
|
||||
if (IsFbsNewerThanH $file.fbs $file.h)
|
||||
{
|
||||
$shouldGenerate = $true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
# If any .fbs file is newer, run the generation process.
|
||||
if ($shouldGenerate)
|
||||
{
|
||||
Write-Host "Generating savegame code from flatbuffer schema..."
|
||||
|
||||
# Run flatc commands.
|
||||
& "$PSScriptRoot\flatc.exe" --cpp --strict-json --unknown-json --gen-object-api --force-empty --force-empty-vectors --cpp-std c++17 --scoped-enums $fbsFiles[0].fbs
|
||||
& "$PSScriptRoot\flatc.exe" --cpp --strict-json --unknown-json --gen-object-api --force-empty --force-empty-vectors --cpp-std c++17 --scoped-enums $fbsFiles[1].fbs
|
||||
|
||||
# Move generated header files.
|
||||
Move-Item -Force "ten_itemdata_generated.h" $fbsFiles[0].h
|
||||
Move-Item -Force "ten_savegame_generated.h" $fbsFiles[1].h
|
||||
|
||||
# Check for errors and output result.
|
||||
if ($LASTEXITCODE -eq 0)
|
||||
{
|
||||
Write-Host "Savegame code generation completed successfully."
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "Error occurred during savegame code generation."
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "Savegame schema files are unchanged. Skipping code generation."
|
||||
}
|
|
@ -139,32 +139,8 @@
|
|||
</Command>
|
||||
</PostBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Command>SETLOCAL EnableDelayedExpansion
|
||||
|
||||
SET SchemaDir=$(ProjectDir)Specific\savegame\schema
|
||||
SET TimestampFile=$(TargetDir)flatbuffers.timestamp
|
||||
|
||||
FOR %%F IN ("%SchemaDir%\ten_itemdata.fbs" "%SchemaDir%\ten_savegame.fbs") DO (
|
||||
SET "CurrentTimestamp=!CurrentTimestamp! %%~tF"
|
||||
)
|
||||
|
||||
IF EXIST "%TimestampFile%" (
|
||||
SET /P LastTimestamp=<"%TimestampFile%"
|
||||
)
|
||||
|
||||
SET CurrentTimestamp=%CurrentTimestamp: =%
|
||||
SET LastTimestamp=%LastTimestamp: =%
|
||||
|
||||
IF "%CurrentTimestamp%" == "%LastTimestamp%" (
|
||||
ECHO Skipping gen.bat, schema files are unchanged
|
||||
) ELSE (
|
||||
ECHO Generating savegame code from flatbuffer schema...
|
||||
CD "%SchemaDir%"
|
||||
CALL gen.bat
|
||||
ECHO !CurrentTimestamp! > "%TimestampFile%"
|
||||
)
|
||||
|
||||
ENDLOCAL
|
||||
<Command>powershell -ExecutionPolicy Bypass -File "$(SolutionDir)\Documentation\generate_objectlist.ps1"
|
||||
powershell -ExecutionPolicy Bypass -File "$(ProjectDir)Specific\savegame\schema\generate_code.ps1"
|
||||
|
||||
CD "$(ProjectDir)..\Documentation\"
|
||||
CALL compile.bat .
|
||||
|
@ -228,32 +204,8 @@ if not exist "%ScriptsDir%\Strings.lua" xcopy /Y "$(SolutionDir)Scripts\Strings.
|
|||
</Command>
|
||||
</PostBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Command>SETLOCAL EnableDelayedExpansion
|
||||
|
||||
SET SchemaDir=$(ProjectDir)Specific\savegame\schema
|
||||
SET TimestampFile=$(TargetDir)flatbuffers.timestamp
|
||||
|
||||
FOR %%F IN ("%SchemaDir%\ten_itemdata.fbs" "%SchemaDir%\ten_savegame.fbs") DO (
|
||||
SET "CurrentTimestamp=!CurrentTimestamp! %%~tF"
|
||||
)
|
||||
|
||||
IF EXIST "%TimestampFile%" (
|
||||
SET /P LastTimestamp=<"%TimestampFile%"
|
||||
)
|
||||
|
||||
SET CurrentTimestamp=%CurrentTimestamp: =%
|
||||
SET LastTimestamp=%LastTimestamp: =%
|
||||
|
||||
IF "%CurrentTimestamp%" == "%LastTimestamp%" (
|
||||
ECHO Skipping gen.bat, schema files are unchanged
|
||||
) ELSE (
|
||||
ECHO Generating savegame code from flatbuffer schema...
|
||||
CD "%SchemaDir%"
|
||||
CALL gen.bat
|
||||
ECHO !CurrentTimestamp! > "%TimestampFile%"
|
||||
)
|
||||
|
||||
ENDLOCAL
|
||||
<Command>powershell -ExecutionPolicy Bypass -File "$(SolutionDir)\Documentation\generate_objectlist.ps1"
|
||||
powershell -ExecutionPolicy Bypass -File "$(ProjectDir)Specific\savegame\schema\generate_code.ps1"
|
||||
|
||||
CD "$(ProjectDir)..\Documentation\"
|
||||
CALL compile.bat .
|
||||
|
@ -330,7 +282,9 @@ del "$(TargetDir)*.exp" /q
|
|||
del "$(TargetDir)OIS_d.dll" /q</Command>
|
||||
</PostBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Command>CD "$(ProjectDir)..\Documentation\"
|
||||
<Command>powershell -ExecutionPolicy Bypass -File "$(SolutionDir)\Documentation\generate_objectlist.ps1"
|
||||
|
||||
CD "$(ProjectDir)..\Documentation\"
|
||||
CALL compile.bat .
|
||||
|
||||
CD "$(ProjectDir)Specific\savegame\schema\"
|
||||
|
@ -409,7 +363,9 @@ del "$(TargetDir)*.exp" /q
|
|||
del "$(TargetDir)OIS_d.dll" /q</Command>
|
||||
</PostBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Command>CD "$(ProjectDir)..\Documentation\"
|
||||
<Command>powershell -ExecutionPolicy Bypass -File "$(SolutionDir)\Documentation\generate_objectlist.ps1"
|
||||
|
||||
CD "$(ProjectDir)..\Documentation\"
|
||||
CALL compile.bat .
|
||||
|
||||
CD "$(ProjectDir)Specific\savegame\schema\"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue