hispidence
a34828b5d9
Make m_levelFuncs an unordered_set, as these seem to be the proper structure to use when the key IS the value.
...
Make all GameScript maps unordered_maps, as these are supposed to be more suitable for cases where we don't need the data to be sorted.
Add default member initialisers to GameScript.
2021-08-06 16:47:24 +01:00
hispidence
8009ed9a3b
Add m_levelFuncs and SetLevelFunc. These correspond to the table "LevelFuncs", which will hold trigger functions and the OnStart (etc) callbacks. Putting them into a table will make it much easier to discard them when the player goes from one level to another (through loading a save or finishing the current level).
...
Rework Level and Game tables as they weren't entirely working before. These correspond to m_locals and m_globals, which hold the level-specific and game-spanning data that will go into save files.
Make GetVariable and SetVariable take sol::table args. Sol seems to require this in order to use them as metamethods of a table (it doesn't require them for usertypes, but it seems more logical from the API point of view for Level and Game to be tables).
Add documentation for the above tables.
Move several functions out of the GameScript class in order to simplify its interface, and make them static functions that only live in GameLogicScript.cpp.
Remove g_GameScript from GameLogicScript.cpp as it's not used there; let winmain.cpp deal with it instead.
2021-08-05 21:36:18 +01:00
hispidence
ead31e63f2
Replace WarningsAsErrors usage with ScriptAssert usage.
...
For recoverable errors, add some recovery behaviour and logging so a level designer can see in the log what was done as a result of the error.
Warn about default behaviour if no callbacks are added.
2021-08-04 16:51:28 +01:00
hispidence
052b03ec96
Remove AddLuaId and GetItemById.
2021-08-04 16:21:00 +01:00
hispidence
fde79b4704
Replace std::runtime_exception with TENScriptException.
2021-08-03 15:15:42 +01:00
hispidence
5562667f98
Move GameScriptLevel, GameScriptAudioTrack, GameScriptInventoryObject, GameScriptSkyLayer, GameScriptSettings and GameScriptMirror into their own files. This could be changed later as this does create many small .h and .cpp files, but for now this cleans things up and makes it easier to check things class by class.
...
Treat functions as global that would previously be accessed through the GameFlow table. This does pollute the global environment in Lua a bit, but keeps it consistent with the functions in GameLogicScript, which are all accessed as globals.
Add some default member initialisers.
Remove WriteDefaults. Rename Intro to IntroImagePath and make it a std::string.
Add some documentation for the functions of GameFlowScript.
Fix some comments.
2021-07-28 18:44:24 +01:00
hispidence
9dd4bcf4ca
Add SOUND_SOURCE_INFO and AI_OBJECT names when loading in the level data. Implement remaining functions on the GameLogicScript side.
2021-07-24 12:45:33 +01:00
hispidence
cf8723c448
Add GameScriptSoundSourceInfo and GameScriptAIObject, and associated functions.
2021-07-24 12:29:25 +01:00
hispidence
97d5d85f7a
Add AddLuaNameSink, RemoveLuaNameSink, and GetSinkByName.
...
Make a template that all GetXByName member functions work off, to reduce copypasted functions.
For consistency, rename RemoveLuaName and AddLuaName to RemoveLuaNameItem and AddLuaNameItem.
Fix some documentation comments, order function documentation into sections.
2021-07-23 16:02:30 +01:00
hispidence
c13106252f
Add m_camerasMapName, AddLuaNameCamera, RemoveLuaNameCamera, GetCameraByName, and GetMeshByName.
2021-07-23 02:09:52 +01:00
hispidence
16ea0f1aa2
Add documentation and constructor member initialisers for GameScript.
2021-07-21 18:19:57 +01:00
hispidence
da5af327e9
Link up MeshInfo with GameLogicScript, adding a m_meshesMapName and implementing AddLuaNameMesh and RemoveLuaNameMesh.
...
Add GetMeshByName and make GetItemByName take a constant reference.
Remove no-longer-used headers.
2021-07-21 18:12:17 +01:00
hispidence
12dada0145
Make the "Lara" global non-owning. Will look into this and see if we actually need it.
2021-07-21 18:09:53 +01:00
hispidence
df11377a51
Make GetItemByName take a const ref, and make its error print the name of the item that could not be found.
...
Register GetItemByName in GameLogicScript instead of winmain. Register GameScriptColor too.
Define the lambdas passed to GameScriptItemInfo in terms of the actual functions we define. Functions that make a GameScriptItemInfo should pass false to make_unique (so the Lua object made does not control the lifetime of the ITEM_INFO).
2021-07-20 17:58:11 +01:00
hispidence
e9b2026404
Make the contents of ObjectIDs.h part of the Lua interface.
2021-07-20 00:16:15 +01:00
hispidence
011e1a9bf4
Uncomment ExecuteFunction and make it take a const ref.
...
Make «Add/Remove»LuaName return a bool for future error checking, and pass them via lambdas to GameScriptItemInfo, allowing it to call them whenever an object is added or removed (they would not have access to the m_itemsMapName otherwise).
2021-07-17 22:26:07 +01:00
MontyTRC89
f0698a3c80
Added code (to finish) for executing LUA triggers
2021-07-17 05:56:40 +02:00
MontyTRC89
8294e73199
Merge remote-tracking branch 'origin/lara_info'
...
# Conflicts:
# TR5Main/Game/Lara/lara_flare.h
# TR5Main/Scripting/GameLogicScript.cpp
2021-07-14 05:48:42 +02:00
Troye
7b0025a1c9
FLARE_AGE constant; fix dynamic light intensity; fix release builds
2021-07-13 22:29:47 -05:00
hispidence
a0ced5c34e
Make GameLogicScript use kInventorySlots. Make InvItem a read-only table. This means we do not need to write an enum directly in the Lua source.
2021-07-13 13:21:13 +01:00
hispidence
a00f3a23fb
Implement GiveInvItem, TakeInvItem, GetInvItemCount and SetInvItemCount (names to be finalized).
2021-07-10 14:05:01 +01:00
MontyTRC89
99f476f3b9
Made LUA script optional; Deleted my bugged test code for volumes;
2021-07-06 11:54:34 +02:00
hispidence
34859c154f
Make InventoryAdd and InventoryRemove static. Add them as Lua functions.
2021-07-05 18:18:20 +01:00
hispidence
33dcd85a06
Register SetAmbientTrack and PlayAudioTrack. Make PlayAudioTrack static, pass its string arg by reference-to-const, and let it use the loop bool passed in instead of the one stored in global state.
...
Improve some text formatting in the header.
2021-07-04 14:33:57 +01:00
hispidence
9386993bcd
Make SetAmbientTrack take a string by const ref. Change functions to access GameScript[Position/Rotation] members directly instead of via getters/setters.
2021-07-03 23:18:10 +01:00
hispidence
474cf41a7d
Add doCallback function to throw an exception if one of the callback encounters an error (and if WarningsAsErrors is on).
2021-07-03 23:16:28 +01:00
hispidence
4c02d6a222
Add implementation of GameScript::InitCallbacks and the C++ holders of the callbacks. This might well be a needless layer of indirection, but it prevents the callbacks being reassigned outside of the class.
2021-07-01 19:33:48 +01:00
hispidence
f22551ab32
Register GameScriptRotation and GameScriptPosition in GameScript constructor. Remove GameScriptItem class, which has been merged into GameScriptItemInfo.
2021-07-01 19:29:58 +01:00
MontyTRC89
d25cfb6c92
Moved GameScriptPosition, GameScriptRotation and GameScriptColor classes in separate files
2021-06-29 05:28:17 +02:00
MontyTRC89
b6e74eb4e6
Merge branch 'NewLuaScripting' of https://github.com/MontyTRC89/TR5Main into NewLuaScripting
...
# Conflicts:
# TR5Main/Scripting/GameLogicScript.cpp
2021-06-29 05:03:57 +02:00
MontyTRC89
f81d8e439f
Added FROM_DEGREES function; Added quantity param to PickedUpObject(); LUA scripting refactoring WIP;
2021-06-29 05:00:15 +02:00
hispidence
5344e0a211
Include and register GameScriptItemInfo.
2021-06-28 18:35:16 +01:00
MontyTRC89
4c7110558f
Switched audio tracks from int index to string; Added Tracks.lua loading support;
2021-06-26 07:36:54 +02:00
MontyTRC89
628358f242
Merge branch 'NewLuaScripting' of https://github.com/MontyTRC89/TR5Main into NewLuaScripting
...
# Conflicts:
# TR5Main/Scripting/GameLogicScript.cpp
2021-06-23 05:59:25 +02:00
MontyTRC89
3bd65d3629
Removed test code; Removed scripts from project (they will be created by LD); Added some missing strings for inventory; Added scripting for puzzles; Removed some old code for scripting;
2021-06-23 05:58:24 +02:00
Brad Ellis
bc576d8711
Remove test code.
2021-06-21 16:23:18 +01:00
Brad Ellis
514a691836
GameLogicScript inherits from LuaHandler now.
2021-06-16 14:39:43 +01:00
asasas9500
d4c6cc4a97
Fix line endings
2020-12-21 13:16:29 -03:00
asasas9500
912b0abbae
Fix bridges; Fix script IDs
2020-09-28 10:04:44 -03:00
asasas9500
44c988716a
Remove ControlXRayMachine(); Move bridges to generic objects folder; Merge bridges
2020-09-27 20:44:17 -03:00
Woops
4c3a3cbbd1
implement
2020-08-28 12:05:25 -05:00
Montagna Marco
18994dd59e
Moving all globals of level under LEVEL struct; Fixed severe performance issue;
2020-07-21 09:56:47 +02:00
Montagna Marco
d6f45db5ec
Merge branch 'master' of https://github.com/MontyTRC89/TR5Main
2020-06-26 07:06:51 +02:00
Montagna Marco
235dab2f13
New FLOOR_INFO struct; Refactoring rooms part I
2020-06-26 07:06:18 +02:00
Nils Gaitzsch
c860919616
Fixed std namespace collisions
...
Refactored ChunkID/ChunkReader/Writer
2020-06-20 23:39:08 +02:00
TokyoSU
3699a78e34
Implemented Mutant and Locusts
...
- Added ItemNearTarget().
2020-06-10 21:38:25 +02:00
asasas9500
1732048a00
Scripting ( #211 )
...
* Create template for variables; Rename properties; Improve console input
* Improve console input again
2020-06-09 09:16:51 +02:00
TokyoSU
488dfd102d
Implemented Big Rat (TR1) Template
...
- Fixed old object (added by me) missing from the lua script.
2020-06-08 13:51:44 +02:00
TokyoSU
8f11417654
Implemented Baboon
...
- Fixed AIObject not being initialized !
- Fixed ITEM_DEACTIVATED (cause im french and ITEM_DESACTIVATED is more appropriate)
2020-06-04 12:49:08 +02:00
TokyoSU
ee59d27517
(Broken) Deleted Global Folder
...
- No more enums.h, constants.h, macro.h, etc...
- moved all structure in types.h to there respective file.
2020-05-30 15:55:23 +02:00