mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-09 03:58:19 +03:00
Move all scripting header files into new folder.
This commit is contained in:
parent
b43b9c704f
commit
a9d8b78c96
29 changed files with 0 additions and 0 deletions
142
Scripting/Include/AudioTracks.h
Normal file
142
Scripting/Include/AudioTracks.h
Normal file
|
@ -0,0 +1,142 @@
|
|||
#pragma once
|
||||
#include <array>
|
||||
|
||||
std::array kAudioTracks
|
||||
{
|
||||
"xa1_TL_10B.wav",
|
||||
"xa1_Z10.wav",
|
||||
"xa1_TL_05.wav",
|
||||
"xa1_TL_08.wav",
|
||||
"xa1_TL_11.wav",
|
||||
"xa1_ANDYPEW.wav",
|
||||
"xa1_SECRET.wav",
|
||||
"xa1_TL_02.wav",
|
||||
"xa2_HMMM05.wav",
|
||||
"xa2_TL_01.wav",
|
||||
"xa2_ATTACK04.wav",
|
||||
"xa2_UWATER2B.wav",
|
||||
"xa2_SPOOKY2A.wav",
|
||||
"xa2_TL_10A.wav",
|
||||
"xa2_HMMM02.wav",
|
||||
"xa2_TOMS01.wav",
|
||||
"xa3_Attack03.wav",
|
||||
"xa3_Attack02.wav",
|
||||
"xa3_Hmmm01.wav",
|
||||
"xa3_Stealth1.wav",
|
||||
"xa3_Stealth2.wav",
|
||||
"xa3_Attack01.wav",
|
||||
"xa3_TL_06.wav",
|
||||
"xa3_TL_03.wav",
|
||||
"xa4_hmmm06.wav",
|
||||
"xa4_mil01.wav",
|
||||
"xa4_Z_03.wav",
|
||||
"xa4_hit01.wav",
|
||||
"xa4_spooky05.wav",
|
||||
"xa4_drama01.wav",
|
||||
"xa4_stealth4.wav",
|
||||
"xa4_mil05.wav",
|
||||
"xa5_HMMM04.wav",
|
||||
"xa5_MIL06.wav",
|
||||
"xa5_SPOOKY02.wav",
|
||||
"xa5_TL_12.wav",
|
||||
"xa5_MIL02A.wav",
|
||||
"xa5_HMMM03.wav",
|
||||
"xa5_MIL02.wav",
|
||||
"xa5_TL_04.wav",
|
||||
"xa6_Mil04.wav",
|
||||
"xa6_Solo01.wav",
|
||||
"xa6_Z12.wav",
|
||||
"xa6_Stealth3.wav",
|
||||
"xa6_AuthSolo.wav",
|
||||
"xa6_Spooky03.wav",
|
||||
"xa6_Z13.wav",
|
||||
"xa6_Z_04anim.wav",
|
||||
"xa7_z_06a.wav",
|
||||
"xa7_andyoooh.wav",
|
||||
"xa7_andyooer.wav",
|
||||
"xa7_tl_07.wav",
|
||||
"xa7_z_02.wav",
|
||||
"xa7_evibes01.wav",
|
||||
"xa7_z_06.wav",
|
||||
"xa7_authtr.wav",
|
||||
"xa8_mil03.wav",
|
||||
"xa8_fightsc.wav",
|
||||
"xa8_richcut3.wav",
|
||||
"xa8_z_13.wav",
|
||||
"xa8_z_08.wav",
|
||||
"xa8_uwater2a.wav",
|
||||
"xa8_jobyalrm.wav",
|
||||
"xa8_mil02b.wav",
|
||||
"xa9_swampy.wav",
|
||||
"xa9_evibes02.wav",
|
||||
"xa9_gods01.wav",
|
||||
"xa9_z_03.wav",
|
||||
"xa9_richcut4.wav",
|
||||
"xa9_title4.wav",
|
||||
"xa9_spooky01.wav",
|
||||
"xa9_chopin01.wav",
|
||||
"xa10_echoir01.wav",
|
||||
"xa10_title3.wav",
|
||||
"xa10_perc01.wav",
|
||||
"xa10_vc01.wav",
|
||||
"xa10_title2.wav",
|
||||
"xa10_z_09.wav",
|
||||
"xa10_spooky04.wav",
|
||||
"xa10_z_10.wav",
|
||||
"xa11_vc01atv.wav",
|
||||
"xa11_andy3.wav",
|
||||
"xa11_title1.wav",
|
||||
"xa11_flyby1.wav",
|
||||
"xa11_monk_2.wav",
|
||||
"xa11_andy4.wav",
|
||||
"xa11_flyby3.wav",
|
||||
"xa11_flyby2.wav",
|
||||
"xa12_moses01.wav",
|
||||
"xa12_andy4b.wav",
|
||||
"xa12_z_10.wav",
|
||||
"xa12_flyby4.wav",
|
||||
"xa12_richcut1.wav",
|
||||
"xa12_andy5.wav",
|
||||
"xa12_z_05.wav",
|
||||
"xa12_z_01.wav",
|
||||
"xa13_Joby3.wav",
|
||||
"xa13_Andy7.wav",
|
||||
"xa13_Andrea3B.wav",
|
||||
"xa13_cossack.wav",
|
||||
"xa13_Z_07.wav",
|
||||
"xa13_Andy6.wav",
|
||||
"xa13_Andrea3.wav",
|
||||
"xa13_Joby7.wav",
|
||||
"xa14_uwater1.wav",
|
||||
"xa14_joby1.wav",
|
||||
"xa14_andy10.wav",
|
||||
"xa14_richcut2.wav",
|
||||
"xa14_andrea1.wav",
|
||||
"xa14_andy8.wav",
|
||||
"xa14_joby6.wav",
|
||||
"xa14_ecredits.wav",
|
||||
"xa15_boss_01.wav",
|
||||
"xa15_joby2.wav",
|
||||
"xa15_joby4.wav",
|
||||
"xa15_joby5.wav",
|
||||
"xa15_joby9.wav",
|
||||
"xa15_a_andy.wav",
|
||||
"xa15_a_rome.wav",
|
||||
"xa15_andy2.wav",
|
||||
"xa16_Joby8.wav",
|
||||
"xa16_A_Sub_Amb.wav",
|
||||
"xa16_Joby10.wav",
|
||||
"xa16_A_Harbour_out.wav",
|
||||
"xa16_A_Andy_Out_Norm.wav",
|
||||
"xa16_A_Andy_Out_Spooky.wav",
|
||||
"xa16_A_Rome_Day.wav",
|
||||
"xa16_A_Underwater.wav",
|
||||
"xa17_A_Rome_Night.wav",
|
||||
"xa17_A_VC_Saga.wav",
|
||||
"xa17_A_Industry.wav",
|
||||
"xa17_Andrea2.wav",
|
||||
"xa17_Andy1.wav",
|
||||
"xa17_Andrea4.wav",
|
||||
"xa17_Andy9.wav",
|
||||
"xa17_Andy11.wav"
|
||||
};
|
69
Scripting/Include/GameFlowScript.h
Normal file
69
Scripting/Include/GameFlowScript.h
Normal file
|
@ -0,0 +1,69 @@
|
|||
#pragma once
|
||||
#include "LanguageScript.h"
|
||||
#include "LuaHandler.h"
|
||||
#include "GameLogicScript.h"
|
||||
#include "GameScriptColor.h"
|
||||
#include "GameScriptLevel.h"
|
||||
#include "GameScriptSettings.h"
|
||||
#include "GameScriptAudioTrack.h"
|
||||
#include "GameScriptAnimations.h"
|
||||
#include "ScriptInterfaceGame.h"
|
||||
|
||||
enum class TITLE_TYPE
|
||||
{
|
||||
FLYBY,
|
||||
BACKGROUND
|
||||
};
|
||||
|
||||
class GameFlow : public LuaHandler
|
||||
{
|
||||
private:
|
||||
GameScriptSettings m_settings;
|
||||
|
||||
std::unordered_map < std::string, std::vector<std::string > > m_translationsMap;
|
||||
std::vector<std::string> m_languageNames;
|
||||
|
||||
std::map<short, short> m_itemsMap;
|
||||
|
||||
public:
|
||||
int FogInDistance{ 0 };
|
||||
int FogOutDistance{ 0 };
|
||||
int SelectedLevelForNewGame{ 0 };
|
||||
int SelectedSaveGame{ 0 };
|
||||
bool EnableLoadSave{ true };
|
||||
bool PlayAnyLevel{ true };
|
||||
bool FlyCheat{ true };
|
||||
bool DebugMode{ false };
|
||||
byte GameFarView{ 0 };
|
||||
TITLE_TYPE TitleType{ TITLE_TYPE::FLYBY };
|
||||
std::string IntroImagePath{};
|
||||
std::string TitleScreenImagePath{};
|
||||
|
||||
// New animation flag table
|
||||
GameScriptAnimations Animations{};
|
||||
|
||||
// Selected language set
|
||||
std::vector<GameScriptLevel*> Levels;
|
||||
|
||||
GameFlow(sol::state* lua);
|
||||
~GameFlow();
|
||||
|
||||
void AddLevel(GameScriptLevel const& level);
|
||||
void SetAudioTracks(sol::as_table_t<std::vector<GameScriptAudioTrack>>&& src);
|
||||
void LoadGameFlowScript();
|
||||
char const * GetString(const char* id) const;
|
||||
void SetStrings(sol::nested<std::unordered_map<std::string, std::vector<std::string>>> && src);
|
||||
void SetLanguageNames(sol::as_table_t<std::vector<std::string>> && src);
|
||||
void SetAnimations(GameScriptAnimations const & src);
|
||||
void SetSettings(GameScriptSettings const & src);
|
||||
GameScriptSettings* GetSettings();
|
||||
GameScriptLevel* GetLevel(int id);
|
||||
int GetNumLevels() const;
|
||||
bool DoGameflow();
|
||||
void SetIntroImagePath(std::string const& path);
|
||||
void SetTitleScreenImagePath(std::string const& path);
|
||||
void SetGameFarView(byte val);
|
||||
};
|
||||
|
||||
extern GameFlow* g_GameFlow;
|
||||
extern ScriptInterfaceGame * g_GameScript;
|
127
Scripting/Include/GameLogicScript.h
Normal file
127
Scripting/Include/GameLogicScript.h
Normal file
|
@ -0,0 +1,127 @@
|
|||
#pragma once
|
||||
#include "ScriptInterfaceGame.h"
|
||||
#include "Game/items.h"
|
||||
#include "Game/room.h"
|
||||
#include "LuaHandler.h"
|
||||
#include "Specific/trmath.h"
|
||||
#include <unordered_set>
|
||||
#include "GameScriptColor.h"
|
||||
#include "GameScriptPosition.h"
|
||||
#include "GameScriptRotation.h"
|
||||
#include "GameScriptItemInfo.h"
|
||||
#include "GameScriptMeshInfo.h"
|
||||
#include "GameScriptSinkInfo.h"
|
||||
#include "GameScriptAIObject.h"
|
||||
#include "GameScriptSoundSourceInfo.h"
|
||||
#include "GameScriptCameraInfo.h"
|
||||
#include "GameScriptDisplayString.h"
|
||||
|
||||
struct LuaFunction {
|
||||
std::string Name;
|
||||
std::string Code;
|
||||
bool Executed;
|
||||
};
|
||||
|
||||
struct GameScriptVector3 {
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
};
|
||||
|
||||
|
||||
class LuaVariables
|
||||
{
|
||||
public:
|
||||
std::unordered_map<std::string, sol::object> variables;
|
||||
|
||||
sol::object GetVariable(sol::table tab, std::string key);
|
||||
void SetVariable(sol::table tab, std::string key, sol::object value);
|
||||
};
|
||||
|
||||
struct LuaVariable
|
||||
{
|
||||
bool IsGlobal;
|
||||
std::string Name;
|
||||
int Type;
|
||||
float FloatValue;
|
||||
int IntValue;
|
||||
std::string StringValue;
|
||||
bool BoolValue;
|
||||
};
|
||||
|
||||
using DisplayStringMap = std::unordered_map<DisplayStringIDType, UserDisplayString>;
|
||||
class GameScript : public LuaHandler, public ScriptInterfaceGame
|
||||
{
|
||||
private:
|
||||
|
||||
LuaVariables m_globals{};
|
||||
LuaVariables m_locals{};
|
||||
DisplayStringMap m_userDisplayStrings{};
|
||||
std::unordered_map<std::string, VarMapVal> m_nameMap{};
|
||||
std::unordered_map<std::string, short> m_itemsMapName{};
|
||||
std::unordered_map<std::string, sol::protected_function> m_levelFuncs{};
|
||||
sol::protected_function m_onStart{};
|
||||
sol::protected_function m_onLoad{};
|
||||
sol::protected_function m_onControlPhase{};
|
||||
sol::protected_function m_onSave{};
|
||||
sol::protected_function m_onEnd{};
|
||||
|
||||
void ResetLevelTables();
|
||||
|
||||
CallbackDrawString m_callbackDrawSring;
|
||||
public:
|
||||
GameScript(sol::state* lua);
|
||||
|
||||
void FreeLevelScripts() override;
|
||||
|
||||
bool SetDisplayString(DisplayStringIDType id, UserDisplayString const & ds);
|
||||
|
||||
std::optional<std::reference_wrapper<UserDisplayString>> GetDisplayString(DisplayStringIDType id);
|
||||
bool ScheduleRemoveDisplayString(DisplayStringIDType id);
|
||||
|
||||
bool SetLevelFunc(sol::table tab, std::string const& luaName, sol::object obj);
|
||||
sol::protected_function GetLevelFunc(sol::table tab, std::string const& luaName);
|
||||
|
||||
void AssignItemsAndLara() override;
|
||||
|
||||
|
||||
void ExecuteScriptFile(const std::string& luaFilename) override;
|
||||
void ExecuteFunction(std::string const & name) override;
|
||||
void MakeItemInvisible(short id);
|
||||
|
||||
template <typename R, char const* S>
|
||||
std::unique_ptr<R> GetByName(std::string const& name)
|
||||
{
|
||||
ScriptAssertF(m_nameMap.find(name) != m_nameMap.end(), "{} name not found: {}", S, name);
|
||||
return std::make_unique<R>(std::get<R::IdentifierType>(m_nameMap.at(name)), false);
|
||||
}
|
||||
|
||||
bool AddName(std::string const& key, VarMapVal val) override
|
||||
{
|
||||
auto p = std::pair<std::string const&, VarMapVal>{ key, val };
|
||||
return m_nameMap.insert(p).second;
|
||||
}
|
||||
|
||||
bool RemoveName(std::string const& key)
|
||||
{
|
||||
return m_nameMap.erase(key);
|
||||
}
|
||||
|
||||
// Variables
|
||||
template <typename T>
|
||||
void GetVariables(std::map<std::string, T>& locals, std::map<std::string, T>& globals);
|
||||
template <typename T>
|
||||
void SetVariables(std::map<std::string, T>& locals, std::map<std::string, T>& globals);
|
||||
void ResetVariables();
|
||||
|
||||
void SetCallbackDrawString(CallbackDrawString cb) override;
|
||||
|
||||
void ShowString(GameScriptDisplayString const&, sol::optional<float> nSeconds);
|
||||
void ProcessDisplayStrings(float dt) override;
|
||||
void InitCallbacks() override;
|
||||
void OnStart() override;
|
||||
void OnLoad() override;
|
||||
void OnControlPhase(float dt) override;
|
||||
void OnSave() override;
|
||||
void OnEnd() override;
|
||||
};
|
50
Scripting/Include/GameScriptAIObject.h
Normal file
50
Scripting/Include/GameScriptAIObject.h
Normal file
|
@ -0,0 +1,50 @@
|
|||
#pragma once
|
||||
|
||||
#include "GameScriptNamedBase.h"
|
||||
#include "Specific/level.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
class GameScriptPosition;
|
||||
|
||||
class GameScriptAIObject : public GameScriptNamedBase<GameScriptAIObject, AI_OBJECT&>
|
||||
{
|
||||
public:
|
||||
GameScriptAIObject(AI_OBJECT& ref, bool temp);
|
||||
~GameScriptAIObject();
|
||||
|
||||
GameScriptAIObject& operator=(GameScriptAIObject const& other) = delete;
|
||||
GameScriptAIObject(GameScriptAIObject const& other) = delete;
|
||||
|
||||
static void Register(sol::state *);
|
||||
|
||||
GameScriptPosition GetPos() const;
|
||||
void SetPos(GameScriptPosition const& pos);
|
||||
|
||||
short GetRoom() const;
|
||||
void SetRoom(short Room);
|
||||
|
||||
std::string GetName() const;
|
||||
void SetName(std::string const &);
|
||||
|
||||
GAME_OBJECT_ID GetObjID() const;
|
||||
void SetObjID(GAME_OBJECT_ID);
|
||||
|
||||
short GetTriggerFlags() const;
|
||||
void SetTriggerFlags(short);
|
||||
|
||||
short GetFlags() const;
|
||||
void SetFlags(short);
|
||||
|
||||
short GetYRot() const;
|
||||
void SetYRot(short);
|
||||
|
||||
short GetBoxNumber() const;
|
||||
void SetBoxNumber(short);
|
||||
|
||||
private:
|
||||
AI_OBJECT & m_aiObject;
|
||||
bool m_temporary;
|
||||
};
|
||||
|
16
Scripting/Include/GameScriptAudioTrack.h
Normal file
16
Scripting/Include/GameScriptAudioTrack.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
|
||||
struct GameScriptAudioTrack
|
||||
{
|
||||
std::string trackName;
|
||||
bool looped;
|
||||
|
||||
GameScriptAudioTrack(std::string const & trackName, bool looped);
|
||||
static void Register(sol::state* lua);
|
||||
};
|
34
Scripting/Include/GameScriptCameraInfo.h
Normal file
34
Scripting/Include/GameScriptCameraInfo.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#pragma once
|
||||
|
||||
#include "GameScriptNamedBase.h"
|
||||
#include "Specific/phd_global.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
class GameScriptPosition;
|
||||
|
||||
class GameScriptCameraInfo : public GameScriptNamedBase<GameScriptCameraInfo, LEVEL_CAMERA_INFO &>
|
||||
{
|
||||
public:
|
||||
using IdentifierType = std::reference_wrapper<LEVEL_CAMERA_INFO>;
|
||||
GameScriptCameraInfo(LEVEL_CAMERA_INFO& ref, bool temp);
|
||||
~GameScriptCameraInfo();
|
||||
|
||||
GameScriptCameraInfo& operator=(GameScriptCameraInfo const& other) = delete;
|
||||
GameScriptCameraInfo(GameScriptCameraInfo const& other) = delete;
|
||||
|
||||
static void Register(sol::state *);
|
||||
GameScriptPosition GetPos() const;
|
||||
void SetPos(GameScriptPosition const& pos);
|
||||
|
||||
short GetRoom() const;
|
||||
void SetRoom(short Room);
|
||||
|
||||
std::string GetName() const;
|
||||
void SetName(std::string const &);
|
||||
|
||||
private:
|
||||
LEVEL_CAMERA_INFO & m_camera;
|
||||
bool m_temporary;
|
||||
};
|
40
Scripting/Include/GameScriptColor.h
Normal file
40
Scripting/Include/GameScriptColor.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
#pragma once
|
||||
#include "framework.h"
|
||||
|
||||
typedef DWORD D3DCOLOR;
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
template <typename T> struct as_table_t;
|
||||
}
|
||||
|
||||
class GameScriptColor {
|
||||
public:
|
||||
byte r{ 0 };
|
||||
byte g{ 0 };
|
||||
byte b{ 0 };
|
||||
byte a{ 255 };
|
||||
|
||||
GameScriptColor(byte r, byte g, byte b);
|
||||
GameScriptColor(byte r, byte g, byte b, byte a);
|
||||
GameScriptColor(Vector3 const &);
|
||||
GameScriptColor(Vector4 const &);
|
||||
GameScriptColor(D3DCOLOR);
|
||||
|
||||
operator Vector3() const;
|
||||
operator Vector4() const;
|
||||
operator D3DCOLOR() const;
|
||||
|
||||
byte GetR() const;
|
||||
void SetR(byte v);
|
||||
byte GetG() const;
|
||||
void SetG(byte v);
|
||||
byte GetB() const;
|
||||
void SetB(byte v);
|
||||
byte GetA() const;
|
||||
void SetA(byte v);
|
||||
|
||||
std::string ToString() const;
|
||||
|
||||
static void Register(sol::state* state);
|
||||
};
|
82
Scripting/Include/GameScriptDisplayString.h
Normal file
82
Scripting/Include/GameScriptDisplayString.h
Normal file
|
@ -0,0 +1,82 @@
|
|||
#pragma once
|
||||
#include "GameScriptColor.h"
|
||||
|
||||
enum class DisplayStringOptions : size_t
|
||||
{
|
||||
CENTER,
|
||||
OUTLINE,
|
||||
NUM_OPTIONS
|
||||
};
|
||||
|
||||
static const std::unordered_map<std::string, DisplayStringOptions> kDisplayStringOptionNames
|
||||
{
|
||||
{"CENTER", DisplayStringOptions::CENTER},
|
||||
{"SHADOW", DisplayStringOptions::OUTLINE}
|
||||
};
|
||||
|
||||
using FlagArray = std::array<bool, static_cast<size_t>(DisplayStringOptions::NUM_OPTIONS)>;
|
||||
// Used to store data used to render the string.
|
||||
// This is separate from GameScriptDisplayString because the lifetimes
|
||||
// of the classes differ slightly.
|
||||
class UserDisplayString
|
||||
{
|
||||
public:
|
||||
UserDisplayString(std::string const& key, int x, int y, D3DCOLOR col, FlagArray const & flags, bool translated);
|
||||
|
||||
private:
|
||||
UserDisplayString() = default;
|
||||
std::string m_key{};
|
||||
D3DCOLOR m_color{ 0xFFFFFFFF };
|
||||
FlagArray m_flags{};
|
||||
int m_x{ 0 };
|
||||
int m_y{ 0 };
|
||||
bool m_deleteWhenZero{ false };
|
||||
|
||||
//seconds
|
||||
float m_timeRemaining{ 0.0f };
|
||||
bool m_isInfinite{ false };
|
||||
bool m_isTranslated{ false };
|
||||
friend class GameScript;
|
||||
friend class GameScriptDisplayString;
|
||||
};
|
||||
|
||||
using DisplayStringIDType = uintptr_t;
|
||||
using SetItemCallback = std::function<bool(DisplayStringIDType, UserDisplayString const&)>;
|
||||
using RemoveItemCallback = std::function<bool(DisplayStringIDType)>;
|
||||
using GetItemCallback = std::function<std::optional<std::reference_wrapper<UserDisplayString>>(DisplayStringIDType)>;
|
||||
|
||||
|
||||
class GameScriptDisplayString
|
||||
{
|
||||
private:
|
||||
DisplayStringIDType m_id{ 0 };
|
||||
public:
|
||||
GameScriptDisplayString();
|
||||
~GameScriptDisplayString();
|
||||
DisplayStringIDType GetID() const;
|
||||
static void Register(sol::state* state);
|
||||
|
||||
void SetPos(int x, int y);
|
||||
std::tuple<int, int> GetPos() const;
|
||||
|
||||
void SetCol(GameScriptColor const&);
|
||||
GameScriptColor GetCol();
|
||||
|
||||
void SetKey(std::string const&);
|
||||
std::string GetKey() const;
|
||||
|
||||
static SetItemCallback s_setItemCallback;
|
||||
static RemoveItemCallback s_removeItemCallback;
|
||||
static GetItemCallback s_getItemCallback;
|
||||
|
||||
// Creating a GameScriptDisplayString requires us to add an identifier
|
||||
// to a data structure. We use callbacks so this class doesn't have
|
||||
// to know about said data structure.
|
||||
static void SetCallbacks(SetItemCallback cba, RemoveItemCallback cbr, GetItemCallback cbg)
|
||||
{
|
||||
s_setItemCallback = cba;
|
||||
s_removeItemCallback = cbr;
|
||||
s_getItemCallback = cbg;
|
||||
}
|
||||
|
||||
};
|
41
Scripting/Include/GameScriptInventoryObject.h
Normal file
41
Scripting/Include/GameScriptInventoryObject.h
Normal file
|
@ -0,0 +1,41 @@
|
|||
#pragma once
|
||||
#include <string>
|
||||
#include "ItemEnumPair.h"
|
||||
#include "GameScriptRotation.h"
|
||||
#include "Game/gui.h"
|
||||
|
||||
static const std::unordered_map<std::string, RotationFlags> kRotAxes{
|
||||
{"X", RotationFlags::INV_ROT_X},
|
||||
{"Y", RotationFlags::INV_ROT_Y},
|
||||
{"Z", RotationFlags::INV_ROT_Z}
|
||||
};
|
||||
|
||||
static const std::unordered_map<std::string, ItemOptions> kItemActions{
|
||||
{"USE", ItemOptions::OPT_USE},
|
||||
{"EQUIP", ItemOptions::OPT_EQUIP},
|
||||
{"EXAMINE", ItemOptions::OPT_EXAMINABLE}
|
||||
};
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
|
||||
struct GameScriptInventoryObject
|
||||
{
|
||||
std::string name{};
|
||||
InventoryObjectTypes slot{ INV_OBJECT_PISTOLS };
|
||||
short yOffset{ 0 };
|
||||
float scale{ 1.0f };
|
||||
GameScriptRotation rot{};
|
||||
RotationFlags rotationFlags{ RotationFlags::INV_ROT_X };
|
||||
int meshBits{ 0 };
|
||||
ItemOptions action{ ItemOptions::OPT_USE };
|
||||
|
||||
GameScriptInventoryObject() = default;
|
||||
GameScriptInventoryObject(std::string const & a_name, ItemEnumPair a_slot, short a_yOffset, float a_scale, GameScriptRotation const & a_rot, RotationFlags a_rotationFlags, int a_meshBits, ItemOptions a_actions);
|
||||
|
||||
static void Register(sol::state* lua);
|
||||
|
||||
void SetAction(ItemOptions a_action);
|
||||
void SetSlot(ItemEnumPair a_slot);
|
||||
};
|
89
Scripting/Include/GameScriptItemInfo.h
Normal file
89
Scripting/Include/GameScriptItemInfo.h
Normal file
|
@ -0,0 +1,89 @@
|
|||
#pragma once
|
||||
|
||||
#include "GameScriptNamedBase.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
template <typename T> struct as_table_t;
|
||||
}
|
||||
class GameScriptPosition;
|
||||
class GameScriptRotation;
|
||||
struct ITEM_INFO;
|
||||
enum GAME_OBJECT_ID : short;
|
||||
|
||||
|
||||
class GameScriptItemInfo : public GameScriptNamedBase<GameScriptItemInfo, short>
|
||||
{
|
||||
public:
|
||||
using IdentifierType = short;
|
||||
GameScriptItemInfo(short num, bool temporary);
|
||||
~GameScriptItemInfo();
|
||||
GameScriptItemInfo& operator=(GameScriptItemInfo const& other) = delete;
|
||||
GameScriptItemInfo(GameScriptItemInfo const& other) = delete;
|
||||
GameScriptItemInfo(GameScriptItemInfo && other) noexcept;
|
||||
|
||||
static void Register(sol::state *);
|
||||
|
||||
GAME_OBJECT_ID GetObjectID() const;
|
||||
void SetObjectID(GAME_OBJECT_ID id);
|
||||
|
||||
std::string GetName() const;
|
||||
void SetName(std::string const &);
|
||||
|
||||
GameScriptPosition GetPos() const;
|
||||
void SetPos(GameScriptPosition const& pos);
|
||||
|
||||
GameScriptRotation GetRot() const;
|
||||
void SetRot(GameScriptRotation const& rot);
|
||||
|
||||
int GetCurrentAnimState() const;
|
||||
void SetCurrentAnimState(int animState);
|
||||
|
||||
int GetAnimNumber() const;
|
||||
void SetAnimNumber(int animNumber);
|
||||
|
||||
int GetFrameNumber() const;
|
||||
void SetFrameNumber(int frameNumber);
|
||||
|
||||
int GetRequiredAnimState() const;
|
||||
void SetRequiredAnimState(short animState);
|
||||
|
||||
int GetGoalAnimState() const;
|
||||
void SetGoalAnimState(int animState);
|
||||
|
||||
short GetHP() const;
|
||||
void SetHP(short hp);
|
||||
|
||||
short GetOCB() const;
|
||||
void SetOCB(short ocb);
|
||||
|
||||
sol::as_table_t<std::array<short, 8>> GetItemFlags() const;
|
||||
void SetItemFlags(sol::as_table_t<std::array<short, 8>> const & arr);
|
||||
|
||||
byte GetAIBits() const;
|
||||
void SetAIBits(byte bits);
|
||||
|
||||
short GetStatus() const;
|
||||
void SetStatus(short status);
|
||||
|
||||
bool GetHitStatus() const;
|
||||
void SetHitStatus(bool status);
|
||||
|
||||
bool GetActive() const;
|
||||
void SetActive(bool active);
|
||||
|
||||
short GetRoom() const;
|
||||
void SetRoom(short Room);
|
||||
|
||||
void EnableItem();
|
||||
void DisableItem();
|
||||
|
||||
void Init();
|
||||
|
||||
private:
|
||||
ITEM_INFO* m_item;
|
||||
short m_num;
|
||||
bool m_initialised;
|
||||
bool m_temporary;
|
||||
|
||||
};
|
68
Scripting/Include/GameScriptLevel.h
Normal file
68
Scripting/Include/GameScriptLevel.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
#pragma once
|
||||
#include <string>
|
||||
#include "GameScriptSkyLayer.h"
|
||||
#include "GameScriptMirror.h"
|
||||
#include "GameScriptColor.h"
|
||||
#include "GameScriptInventoryObject.h"
|
||||
#include <GameScriptFog.h>
|
||||
|
||||
enum class WeatherType
|
||||
{
|
||||
None,
|
||||
Rain,
|
||||
Snow
|
||||
};
|
||||
|
||||
static const std::unordered_map<std::string, WeatherType> kWeatherTypes
|
||||
{
|
||||
{"None", WeatherType::None},
|
||||
{"Rain", WeatherType::Rain},
|
||||
{"Snow", WeatherType::Snow}
|
||||
};
|
||||
|
||||
enum LaraType
|
||||
{
|
||||
Normal = 1,
|
||||
Young = 2,
|
||||
Bunhead = 3,
|
||||
Catsuit = 4,
|
||||
Divesuit = 5,
|
||||
Invisible = 7
|
||||
};
|
||||
|
||||
static const std::unordered_map<std::string, LaraType> kLaraTypes
|
||||
{
|
||||
{"Normal", LaraType::Normal},
|
||||
{"Young", LaraType::Young},
|
||||
{"Bunhead", LaraType::Bunhead},
|
||||
{"Catsuit", LaraType::Catsuit},
|
||||
{"Divesuit", LaraType::Divesuit},
|
||||
{"Invisible", LaraType::Invisible}
|
||||
};
|
||||
|
||||
struct GameScriptLevel
|
||||
{
|
||||
std::string NameStringKey;
|
||||
std::string FileName;
|
||||
std::string ScriptFileName;
|
||||
std::string LoadScreenFileName;
|
||||
std::string AmbientTrack;
|
||||
GameScriptSkyLayer Layer1;
|
||||
GameScriptSkyLayer Layer2;
|
||||
bool Horizon{ false };
|
||||
bool ColAddHorizon{ false };
|
||||
GameScriptFog Fog;
|
||||
bool Storm{ false };
|
||||
WeatherType Weather{ WeatherType::None };
|
||||
float WeatherStrength{ 1.0f };
|
||||
bool Rumble{ false };
|
||||
LaraType LaraType{ LaraType::Normal };
|
||||
GameScriptMirror Mirror;
|
||||
int LevelFarView{ 0 };
|
||||
bool UnlimitedAir{ false };
|
||||
std::vector<GameScriptInventoryObject> InventoryObjects;
|
||||
|
||||
void SetWeatherStrength(float val);
|
||||
void SetLevelFarView(byte val);
|
||||
static void Register(sol::state* state);
|
||||
};
|
39
Scripting/Include/GameScriptMeshInfo.h
Normal file
39
Scripting/Include/GameScriptMeshInfo.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
#pragma once
|
||||
|
||||
#include "GameScriptNamedBase.h"
|
||||
#include "Game/room.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
|
||||
class GameScriptPosition;
|
||||
class GameScriptColor;
|
||||
|
||||
class GameScriptMeshInfo : public GameScriptNamedBase<GameScriptMeshInfo, MESH_INFO &>
|
||||
{
|
||||
public:
|
||||
using IdentifierType = std::reference_wrapper<MESH_INFO>;
|
||||
GameScriptMeshInfo(MESH_INFO & id, bool temporary);
|
||||
~GameScriptMeshInfo();
|
||||
GameScriptMeshInfo& operator=(GameScriptMeshInfo const& other) = delete;
|
||||
GameScriptMeshInfo(GameScriptMeshInfo const& other) = delete;
|
||||
|
||||
static void Register(sol::state *);
|
||||
|
||||
GameScriptPosition GetPos() const;
|
||||
void SetPos(GameScriptPosition const & pos);
|
||||
int GetRot() const;
|
||||
void SetRot(int yRot);
|
||||
std::string GetName() const;
|
||||
void SetName(std::string const & name);
|
||||
int GetStaticNumber() const;
|
||||
void SetStaticNumber(int staticNumber);
|
||||
GameScriptColor GetColor() const;
|
||||
void SetColor(GameScriptColor const & col);
|
||||
int GetHP() const;
|
||||
void SetHP(int hp);
|
||||
private:
|
||||
MESH_INFO & m_mesh;
|
||||
bool m_temporary;
|
||||
};
|
21
Scripting/Include/GameScriptMirror.h
Normal file
21
Scripting/Include/GameScriptMirror.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
#pragma once
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
|
||||
struct GameScriptMirror
|
||||
{
|
||||
short Room{ -1 };
|
||||
int StartX{ 0 };
|
||||
int EndX{ 0 };
|
||||
int StartZ{ 0 };
|
||||
int EndZ{ 0 };
|
||||
|
||||
static void Register(sol::state* lua);
|
||||
GameScriptMirror() = default;
|
||||
|
||||
GameScriptMirror(short room, int startX, int endX, int startZ, int endZ);
|
||||
};
|
||||
|
||||
|
40
Scripting/Include/GameScriptNamedBase.h
Normal file
40
Scripting/Include/GameScriptNamedBase.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
#pragma once
|
||||
#include "ScriptAssert.h"
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
template <typename S> using callbackSetName = std::function<bool(std::string const&, S identifier)>;
|
||||
using callbackRemoveName = std::function<bool(std::string const&)>;
|
||||
|
||||
// Use the "curiously recurring template pattern" to allow classes to inherit static members and functions.
|
||||
// T is the class that will both derive and instantiate this base class. S is the type used inside GameScriptWhateverInfo
|
||||
// to actually reference the underlying TombEngine struct.
|
||||
template <typename T, class S> class GameScriptNamedBase
|
||||
{
|
||||
public:
|
||||
static void SetNameCallbacks(callbackSetName<S> cbs, callbackRemoveName cbr)
|
||||
{
|
||||
s_callbackSetName = cbs;
|
||||
s_callbackRemoveName = cbr;
|
||||
}
|
||||
|
||||
protected:
|
||||
static callbackSetName<S> s_callbackSetName;
|
||||
static callbackRemoveName s_callbackRemoveName;
|
||||
};
|
||||
|
||||
|
||||
// default callbacks
|
||||
template <typename T, typename S> callbackSetName<S> GameScriptNamedBase<T, S>::s_callbackSetName = [](std::string const& n, S identifier) {
|
||||
std::string err = "\"Set Name\" callback is not set.";
|
||||
throw TENScriptException(err);
|
||||
return false;
|
||||
};
|
||||
|
||||
// this could potentially be called by the GameScriptItemInfo destructor, and thus cannot throw
|
||||
template <typename T, typename S> callbackRemoveName GameScriptNamedBase<T, S>::s_callbackRemoveName = [](std::string const& n) {
|
||||
TENLog("\"Remove Name\" callback is not set.", LogLevel::Error);
|
||||
std::terminate();
|
||||
return false;
|
||||
};
|
||||
|
24
Scripting/Include/GameScriptPosition.h
Normal file
24
Scripting/Include/GameScriptPosition.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
#pragma once
|
||||
|
||||
#include "framework.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
struct PHD_3DPOS;
|
||||
|
||||
class GameScriptPosition {
|
||||
public:
|
||||
int x;
|
||||
int y;
|
||||
int z;
|
||||
|
||||
GameScriptPosition(int x, int y, int z);
|
||||
GameScriptPosition(PHD_3DPOS const& pos);
|
||||
|
||||
std::string ToString() const;
|
||||
|
||||
void StoreInPHDPos(PHD_3DPOS& pos) const;
|
||||
|
||||
static void Register(sol::state*);
|
||||
};
|
25
Scripting/Include/GameScriptRotation.h
Normal file
25
Scripting/Include/GameScriptRotation.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
#pragma once
|
||||
|
||||
#include "framework.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
struct PHD_3DPOS;
|
||||
|
||||
class GameScriptRotation {
|
||||
public:
|
||||
short x{ 0 };
|
||||
short y{ 0 };
|
||||
short z{ 0 };
|
||||
|
||||
GameScriptRotation() = default;
|
||||
GameScriptRotation(int x, int y, int z);
|
||||
GameScriptRotation(PHD_3DPOS const& pos);
|
||||
|
||||
std::string ToString() const;
|
||||
|
||||
void StoreInPHDPos(PHD_3DPOS& pos) const;
|
||||
|
||||
static void Register(sol::state*);
|
||||
};
|
31
Scripting/Include/GameScriptSettings.h
Normal file
31
Scripting/Include/GameScriptSettings.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
#pragma once
|
||||
|
||||
#include "ScriptAssert.h"
|
||||
#include <string>
|
||||
|
||||
static const std::unordered_map<std::string, ERROR_MODE> kErrorModes {
|
||||
{"SILENT", ERROR_MODE::SILENT},
|
||||
{"WARN", ERROR_MODE::WARN},
|
||||
{"TERMINATE", ERROR_MODE::TERMINATE}
|
||||
};
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
|
||||
struct GameScriptSettings
|
||||
{
|
||||
int ScreenWidth;
|
||||
int ScreenHeight;
|
||||
bool EnableLoadSave;
|
||||
bool EnableDynamicShadows;
|
||||
bool EnableWaterCaustics;
|
||||
bool Windowed;
|
||||
int DrawingDistance;
|
||||
bool ShowRendererSteps;
|
||||
bool ShowDebugInfo;
|
||||
ERROR_MODE ErrorMode;
|
||||
|
||||
static void Register(sol::state* lua);
|
||||
};
|
||||
|
36
Scripting/Include/GameScriptSinkInfo.h
Normal file
36
Scripting/Include/GameScriptSinkInfo.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
#pragma once
|
||||
|
||||
#include "GameScriptNamedBase.h"
|
||||
#include "Specific/phd_global.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
class GameScriptPosition;
|
||||
|
||||
class GameScriptSinkInfo : public GameScriptNamedBase<GameScriptSinkInfo, SINK_INFO &>
|
||||
{
|
||||
public:
|
||||
using IdentifierType = std::reference_wrapper<SINK_INFO>;
|
||||
GameScriptSinkInfo(SINK_INFO& ref, bool temp);
|
||||
~GameScriptSinkInfo();
|
||||
GameScriptSinkInfo& operator=(GameScriptSinkInfo const& other) = delete;
|
||||
GameScriptSinkInfo(GameScriptSinkInfo const& other) = delete;
|
||||
|
||||
static void Register(sol::state *);
|
||||
GameScriptPosition GetPos() const;
|
||||
void SetPos(GameScriptPosition const& pos);
|
||||
|
||||
int GetStrength() const;
|
||||
void SetStrength(int strength);
|
||||
|
||||
int GetBoxIndex() const;
|
||||
void SetBoxIndex(int Room);
|
||||
|
||||
std::string GetName() const;
|
||||
void SetName(std::string const &);
|
||||
|
||||
private:
|
||||
SINK_INFO & m_sink;
|
||||
bool m_temporary;
|
||||
};
|
23
Scripting/Include/GameScriptSkyLayer.h
Normal file
23
Scripting/Include/GameScriptSkyLayer.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
#pragma once
|
||||
|
||||
#include "GameScriptColor.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
|
||||
struct GameScriptSkyLayer
|
||||
{
|
||||
bool Enabled{ false };
|
||||
byte R{ 0 };
|
||||
byte G{ 0 };
|
||||
byte B{ 0 };
|
||||
short CloudSpeed{ 0 };
|
||||
|
||||
GameScriptSkyLayer() = default;
|
||||
GameScriptSkyLayer(GameScriptColor const & col, short speed);
|
||||
void SetColor(GameScriptColor const & col);
|
||||
|
||||
static void Register(sol::state *);
|
||||
};
|
||||
|
38
Scripting/Include/GameScriptSoundSourceInfo.h
Normal file
38
Scripting/Include/GameScriptSoundSourceInfo.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
#pragma once
|
||||
|
||||
#include "GameScriptNamedBase.h"
|
||||
#include "Specific/phd_global.h"
|
||||
|
||||
namespace sol {
|
||||
class state;
|
||||
}
|
||||
class GameScriptPosition;
|
||||
|
||||
class GameScriptSoundSourceInfo : public GameScriptNamedBase<GameScriptSoundSourceInfo, SOUND_SOURCE_INFO &>
|
||||
{
|
||||
public:
|
||||
using IdentifierType = std::reference_wrapper<SOUND_SOURCE_INFO>;
|
||||
GameScriptSoundSourceInfo(SOUND_SOURCE_INFO& ref, bool temp);
|
||||
~GameScriptSoundSourceInfo();
|
||||
|
||||
GameScriptSoundSourceInfo& operator=(GameScriptSoundSourceInfo const& other) = delete;
|
||||
GameScriptSoundSourceInfo(GameScriptSoundSourceInfo const& other) = delete;
|
||||
|
||||
static void Register(sol::state *);
|
||||
GameScriptPosition GetPos() const;
|
||||
void SetPos(GameScriptPosition const& pos);
|
||||
|
||||
int GetSoundID() const;
|
||||
void SetSoundID(int soundID);
|
||||
|
||||
int GetFlags() const;
|
||||
void SetFlags(int flags);
|
||||
|
||||
std::string GetName() const;
|
||||
void SetName(std::string const &);
|
||||
|
||||
private:
|
||||
SOUND_SOURCE_INFO & m_soundSource;
|
||||
bool m_temporary;
|
||||
};
|
||||
|
467
Scripting/Include/InventorySlots.h
Normal file
467
Scripting/Include/InventorySlots.h
Normal file
|
@ -0,0 +1,467 @@
|
|||
#pragma once
|
||||
|
||||
// Last generated on 23/8/2021.
|
||||
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
#include "ItemEnumPair.h"
|
||||
|
||||
/***
|
||||
Constants for items that can be used with GetInvItem and SetInvItem.
|
||||
@enum InvItem
|
||||
@pragma nostrip
|
||||
*/
|
||||
|
||||
/*** InvItem constants.
|
||||
|
||||
The following constants are inside InvItem.
|
||||
|
||||
PISTOLS_ITEM
|
||||
PISTOLS_AMMO_ITEM
|
||||
UZI_ITEM
|
||||
UZI_AMMO_ITEM
|
||||
SHOTGUN_ITEM
|
||||
SHOTGUN_AMMO1_ITEM
|
||||
SHOTGUN_AMMO2_ITEM
|
||||
REVOLVER_ITEM
|
||||
REVOLVER_AMMO_ITEM
|
||||
CROSSBOW_ITEM
|
||||
CROSSBOW_AMMO1_ITEM
|
||||
CROSSBOW_AMMO2_ITEM
|
||||
CROSSBOW_AMMO3_ITEM
|
||||
HK_ITEM
|
||||
HK_AMMO_ITEM
|
||||
GRENADE_GUN_ITEM
|
||||
GRENADE_AMMO1_ITEM
|
||||
GRENADE_AMMO2_ITEM
|
||||
GRENADE_AMMO3_ITEM
|
||||
HARPOON_ITEM
|
||||
HARPOON_AMMO_ITEM
|
||||
ROCKET_LAUNCHER_ITEM
|
||||
ROCKET_LAUNCHER_AMMO_ITEM
|
||||
LASERSIGHT_ITEM
|
||||
SILENCER_ITEM
|
||||
BIGMEDI_ITEM
|
||||
SMALLMEDI_ITEM
|
||||
BINOCULARS_ITEM
|
||||
FLARE_INV_ITEM
|
||||
TIMEX_ITEM
|
||||
PC_LOAD_INV_ITEM
|
||||
PC_LOAD_SAVE_ITEM
|
||||
BURNING_TORCH_ITEM
|
||||
CROWBAR_ITEM
|
||||
DIARY_ITEM
|
||||
COMPASS_ITEM
|
||||
CLOCKWORK_BEETLE
|
||||
CLOCKWORK_BEETLE_COMBO1
|
||||
CLOCKWORK_BEETLE_COMBO2
|
||||
WATERSKIN1_EMPTY
|
||||
WATERSKIN1_1
|
||||
WATERSKIN1_2
|
||||
WATERSKIN1_3
|
||||
WATERSKIN2_EMPTY
|
||||
WATERSKIN2_1
|
||||
WATERSKIN2_2
|
||||
WATERSKIN2_3
|
||||
WATERSKIN2_4
|
||||
WATERSKIN2_5
|
||||
OPEN_DIARY_ITEM
|
||||
GOLDROSE_ITEM
|
||||
PUZZLE_ITEM1
|
||||
PUZZLE_ITEM2
|
||||
PUZZLE_ITEM3
|
||||
PUZZLE_ITEM4
|
||||
PUZZLE_ITEM5
|
||||
PUZZLE_ITEM6
|
||||
PUZZLE_ITEM7
|
||||
PUZZLE_ITEM8
|
||||
PUZZLE_ITEM9
|
||||
PUZZLE_ITEM10
|
||||
PUZZLE_ITEM11
|
||||
PUZZLE_ITEM12
|
||||
PUZZLE_ITEM13
|
||||
PUZZLE_ITEM14
|
||||
PUZZLE_ITEM15
|
||||
PUZZLE_ITEM16
|
||||
PUZZLE_ITEM1_COMBO1
|
||||
PUZZLE_ITEM1_COMBO2
|
||||
PUZZLE_ITEM2_COMBO1
|
||||
PUZZLE_ITEM2_COMBO2
|
||||
PUZZLE_ITEM3_COMBO1
|
||||
PUZZLE_ITEM3_COMBO2
|
||||
PUZZLE_ITEM4_COMBO1
|
||||
PUZZLE_ITEM4_COMBO2
|
||||
PUZZLE_ITEM5_COMBO1
|
||||
PUZZLE_ITEM5_COMBO2
|
||||
PUZZLE_ITEM6_COMBO1
|
||||
PUZZLE_ITEM6_COMBO2
|
||||
PUZZLE_ITEM7_COMBO1
|
||||
PUZZLE_ITEM7_COMBO2
|
||||
PUZZLE_ITEM8_COMBO1
|
||||
PUZZLE_ITEM8_COMBO2
|
||||
PUZZLE_ITEM9_COMBO1
|
||||
PUZZLE_ITEM9_COMBO2
|
||||
PUZZLE_ITEM10_COMBO1
|
||||
PUZZLE_ITEM10_COMBO2
|
||||
PUZZLE_ITEM11_COMBO1
|
||||
PUZZLE_ITEM11_COMBO2
|
||||
PUZZLE_ITEM12_COMBO1
|
||||
PUZZLE_ITEM12_COMBO2
|
||||
PUZZLE_ITEM13_COMBO1
|
||||
PUZZLE_ITEM13_COMBO2
|
||||
PUZZLE_ITEM14_COMBO1
|
||||
PUZZLE_ITEM14_COMBO2
|
||||
PUZZLE_ITEM15_COMBO1
|
||||
PUZZLE_ITEM15_COMBO2
|
||||
PUZZLE_ITEM16_COMBO1
|
||||
PUZZLE_ITEM16_COMBO2
|
||||
KEY_ITEM1
|
||||
KEY_ITEM2
|
||||
KEY_ITEM3
|
||||
KEY_ITEM4
|
||||
KEY_ITEM5
|
||||
KEY_ITEM6
|
||||
KEY_ITEM7
|
||||
KEY_ITEM8
|
||||
KEY_ITEM9
|
||||
KEY_ITEM10
|
||||
KEY_ITEM11
|
||||
KEY_ITEM12
|
||||
KEY_ITEM13
|
||||
KEY_ITEM14
|
||||
KEY_ITEM15
|
||||
KEY_ITEM16
|
||||
KEY_ITEM1_COMBO1
|
||||
KEY_ITEM1_COMBO2
|
||||
KEY_ITEM2_COMBO1
|
||||
KEY_ITEM2_COMBO2
|
||||
KEY_ITEM3_COMBO1
|
||||
KEY_ITEM3_COMBO2
|
||||
KEY_ITEM4_COMBO1
|
||||
KEY_ITEM4_COMBO2
|
||||
KEY_ITEM5_COMBO1
|
||||
KEY_ITEM5_COMBO2
|
||||
KEY_ITEM6_COMBO1
|
||||
KEY_ITEM6_COMBO2
|
||||
KEY_ITEM7_COMBO1
|
||||
KEY_ITEM7_COMBO2
|
||||
KEY_ITEM8_COMBO1
|
||||
KEY_ITEM8_COMBO2
|
||||
KEY_ITEM9_COMBO1
|
||||
KEY_ITEM9_COMBO2
|
||||
KEY_ITEM10_COMBO1
|
||||
KEY_ITEM10_COMBO2
|
||||
KEY_ITEM11_COMBO1
|
||||
KEY_ITEM11_COMBO2
|
||||
KEY_ITEM12_COMBO1
|
||||
KEY_ITEM12_COMBO2
|
||||
KEY_ITEM13_COMBO1
|
||||
KEY_ITEM13_COMBO2
|
||||
KEY_ITEM14_COMBO1
|
||||
KEY_ITEM14_COMBO2
|
||||
KEY_ITEM15_COMBO1
|
||||
KEY_ITEM15_COMBO2
|
||||
KEY_ITEM16_COMBO1
|
||||
KEY_ITEM16_COMBO2
|
||||
PICKUP_ITEM1
|
||||
PICKUP_ITEM2
|
||||
PICKUP_ITEM3
|
||||
PICKUP_ITEM4
|
||||
PICKUP_ITEM5
|
||||
PICKUP_ITEM6
|
||||
PICKUP_ITEM7
|
||||
PICKUP_ITEM8
|
||||
PICKUP_ITEM9
|
||||
PICKUP_ITEM10
|
||||
PICKUP_ITEM11
|
||||
PICKUP_ITEM12
|
||||
PICKUP_ITEM13
|
||||
PICKUP_ITEM14
|
||||
PICKUP_ITEM15
|
||||
PICKUP_ITEM16
|
||||
PICKUP_ITEM1_COMBO1
|
||||
PICKUP_ITEM1_COMBO2
|
||||
PICKUP_ITEM2_COMBO1
|
||||
PICKUP_ITEM2_COMBO2
|
||||
PICKUP_ITEM3_COMBO1
|
||||
PICKUP_ITEM3_COMBO2
|
||||
PICKUP_ITEM4_COMBO1
|
||||
PICKUP_ITEM4_COMBO2
|
||||
PICKUP_ITEM5_COMBO1
|
||||
PICKUP_ITEM5_COMBO2
|
||||
PICKUP_ITEM6_COMBO1
|
||||
PICKUP_ITEM6_COMBO2
|
||||
PICKUP_ITEM7_COMBO1
|
||||
PICKUP_ITEM7_COMBO2
|
||||
PICKUP_ITEM8_COMBO1
|
||||
PICKUP_ITEM8_COMBO2
|
||||
PICKUP_ITEM9_COMBO1
|
||||
PICKUP_ITEM9_COMBO2
|
||||
PICKUP_ITEM10_COMBO1
|
||||
PICKUP_ITEM10_COMBO2
|
||||
PICKUP_ITEM11_COMBO1
|
||||
PICKUP_ITEM11_COMBO2
|
||||
PICKUP_ITEM12_COMBO1
|
||||
PICKUP_ITEM12_COMBO2
|
||||
PICKUP_ITEM13_COMBO1
|
||||
PICKUP_ITEM13_COMBO2
|
||||
PICKUP_ITEM14_COMBO1
|
||||
PICKUP_ITEM14_COMBO2
|
||||
PICKUP_ITEM15_COMBO1
|
||||
PICKUP_ITEM15_COMBO2
|
||||
PICKUP_ITEM16_COMBO1
|
||||
PICKUP_ITEM16_COMBO2
|
||||
EXAMINE_ITEM1
|
||||
EXAMINE_ITEM2
|
||||
EXAMINE_ITEM3
|
||||
EXAMINE_ITEM4
|
||||
EXAMINE_ITEM5
|
||||
EXAMINE_ITEM6
|
||||
EXAMINE_ITEM7
|
||||
EXAMINE_ITEM8
|
||||
EXAMINE_ITEM1_COMBO1
|
||||
EXAMINE_ITEM1_COMBO2
|
||||
EXAMINE_ITEM2_COMBO1
|
||||
EXAMINE_ITEM2_COMBO2
|
||||
EXAMINE_ITEM3_COMBO1
|
||||
EXAMINE_ITEM3_COMBO2
|
||||
EXAMINE_ITEM4_COMBO1
|
||||
EXAMINE_ITEM4_COMBO2
|
||||
EXAMINE_ITEM5_COMBO1
|
||||
EXAMINE_ITEM5_COMBO2
|
||||
EXAMINE_ITEM6_COMBO1
|
||||
EXAMINE_ITEM6_COMBO2
|
||||
EXAMINE_ITEM7_COMBO1
|
||||
EXAMINE_ITEM7_COMBO2
|
||||
EXAMINE_ITEM8_COMBO1
|
||||
EXAMINE_ITEM8_COMBO2
|
||||
|
||||
@section InvItem
|
||||
*/
|
||||
|
||||
/*** Table of constants to use with GetInvItem and SetInvItem.
|
||||
@table CONSTANT_STRING_HERE
|
||||
*/
|
||||
|
||||
|
||||
static const std::unordered_map<std::string, ItemEnumPair> kInventorySlots {
|
||||
{"PISTOLS_ITEM", {ID_PISTOLS_ITEM, INV_OBJECT_PISTOLS}},
|
||||
{"PISTOLS_AMMO_ITEM", {ID_PISTOLS_AMMO_ITEM, INV_OBJECT_PISTOLS_AMMO}},
|
||||
{"UZI_ITEM", {ID_UZI_ITEM, INV_OBJECT_UZIS}},
|
||||
{"UZI_AMMO_ITEM", {ID_UZI_AMMO_ITEM, INV_OBJECT_UZI_AMMO}},
|
||||
{"SHOTGUN_ITEM", {ID_SHOTGUN_ITEM, INV_OBJECT_SHOTGUN}},
|
||||
{"SHOTGUN_AMMO1_ITEM", {ID_SHOTGUN_AMMO1_ITEM, INV_OBJECT_SHOTGUN_AMMO1}},
|
||||
{"SHOTGUN_AMMO2_ITEM", {ID_SHOTGUN_AMMO2_ITEM, INV_OBJECT_SHOTGUN_AMMO2}},
|
||||
{"REVOLVER_ITEM", {ID_REVOLVER_ITEM, INV_OBJECT_REVOLVER}},
|
||||
{"REVOLVER_AMMO_ITEM", {ID_REVOLVER_AMMO_ITEM, INV_OBJECT_REVOLVER_AMMO}},
|
||||
{"CROSSBOW_ITEM", {ID_CROSSBOW_ITEM, INV_OBJECT_CROSSBOW}},
|
||||
{"CROSSBOW_AMMO1_ITEM", {ID_CROSSBOW_AMMO1_ITEM, INV_OBJECT_CROSSBOW_AMMO1}},
|
||||
{"CROSSBOW_AMMO2_ITEM", {ID_CROSSBOW_AMMO2_ITEM, INV_OBJECT_CROSSBOW_AMMO2}},
|
||||
{"CROSSBOW_AMMO3_ITEM", {ID_CROSSBOW_AMMO3_ITEM, INV_OBJECT_CROSSBOW_AMMO3}},
|
||||
{"HK_ITEM", {ID_HK_ITEM, INV_OBJECT_HK}},
|
||||
{"HK_AMMO_ITEM", {ID_HK_AMMO_ITEM, INV_OBJECT_HK_AMMO}},
|
||||
{"GRENADE_GUN_ITEM", {ID_GRENADE_GUN_ITEM, INV_OBJECT_GRENADE_LAUNCHER}},
|
||||
{"GRENADE_AMMO1_ITEM", {ID_GRENADE_AMMO1_ITEM, INV_OBJECT_GRENADE_AMMO1}},
|
||||
{"GRENADE_AMMO2_ITEM", {ID_GRENADE_AMMO2_ITEM, INV_OBJECT_GRENADE_AMMO2}},
|
||||
{"GRENADE_AMMO3_ITEM", {ID_GRENADE_AMMO3_ITEM, INV_OBJECT_GRENADE_AMMO3}},
|
||||
{"HARPOON_ITEM", {ID_HARPOON_ITEM, INV_OBJECT_HARPOON_GUN}},
|
||||
{"HARPOON_AMMO_ITEM", {ID_HARPOON_AMMO_ITEM, INV_OBJECT_HARPOON_AMMO}},
|
||||
{"ROCKET_LAUNCHER_ITEM", {ID_ROCKET_LAUNCHER_ITEM, INV_OBJECT_ROCKET_LAUNCHER}},
|
||||
{"ROCKET_LAUNCHER_AMMO_ITEM", {ID_ROCKET_LAUNCHER_AMMO_ITEM, INV_OBJECT_ROCKET_AMMO}},
|
||||
{"LASERSIGHT_ITEM", {ID_LASERSIGHT_ITEM, INV_OBJECT_LASERSIGHT}},
|
||||
{"SILENCER_ITEM", {ID_SILENCER_ITEM, INV_OBJECT_SILENCER}},
|
||||
{"BIGMEDI_ITEM", {ID_BIGMEDI_ITEM, INV_OBJECT_LARGE_MEDIPACK}},
|
||||
{"SMALLMEDI_ITEM", {ID_SMALLMEDI_ITEM, INV_OBJECT_SMALL_MEDIPACK}},
|
||||
{"BINOCULARS_ITEM", {ID_BINOCULARS_ITEM, INV_OBJECT_BINOCULARS}},
|
||||
{"FLARE_INV_ITEM", {ID_FLARE_INV_ITEM, INV_OBJECT_FLARES}},
|
||||
{"TIMEX_ITEM", {ID_TIMEX_ITEM, INV_OBJECT_TIMEX}},
|
||||
{"PC_LOAD_INV_ITEM", {ID_PC_LOAD_INV_ITEM, INV_OBJECT_LOAD_FLOPPY}},
|
||||
{"PC_LOAD_SAVE_ITEM", {ID_PC_LOAD_SAVE_ITEM, INV_OBJECT_SAVE_FLOPPY}},
|
||||
{"BURNING_TORCH_ITEM", {ID_BURNING_TORCH_ITEM, INV_OBJECT_BRUNING_TORCH}},
|
||||
{"CROWBAR_ITEM", {ID_CROWBAR_ITEM, INV_OBJECT_CROWBAR}},
|
||||
{"DIARY_ITEM", {ID_DIARY_ITEM, INV_OBJECT_DIARY}},
|
||||
{"COMPASS_ITEM", {ID_COMPASS_ITEM, INV_OBJECT_COMPASS}},
|
||||
{"CLOCKWORK_BEETLE", {ID_CLOCKWORK_BEETLE, INV_OBJECT_BEETLE}},
|
||||
{"CLOCKWORK_BEETLE_COMBO1", {ID_CLOCKWORK_BEETLE_COMBO1, INV_OBJECT_BEETLE_PART1}},
|
||||
{"CLOCKWORK_BEETLE_COMBO2", {ID_CLOCKWORK_BEETLE_COMBO2, INV_OBJECT_BEETLE_PART2}},
|
||||
{"WATERSKIN1_EMPTY", {ID_WATERSKIN1_EMPTY, INV_OBJECT_SMOL_WATERSKIN}},
|
||||
{"WATERSKIN1_1", {ID_WATERSKIN1_1, INV_OBJECT_SMOL_WATERSKIN1L}},
|
||||
{"WATERSKIN1_2", {ID_WATERSKIN1_2, INV_OBJECT_SMOL_WATERSKIN2L}},
|
||||
{"WATERSKIN1_3", {ID_WATERSKIN1_3, INV_OBJECT_SMOL_WATERSKIN3L}},
|
||||
{"WATERSKIN2_EMPTY", {ID_WATERSKIN2_EMPTY, INV_OBJECT_BIG_WATERSKIN}},
|
||||
{"WATERSKIN2_1", {ID_WATERSKIN2_1, INV_OBJECT_BIG_WATERSKIN1L}},
|
||||
{"WATERSKIN2_2", {ID_WATERSKIN2_2, INV_OBJECT_BIG_WATERSKIN2L}},
|
||||
{"WATERSKIN2_3", {ID_WATERSKIN2_3, INV_OBJECT_BIG_WATERSKIN3L}},
|
||||
{"WATERSKIN2_4", {ID_WATERSKIN2_4, INV_OBJECT_BIG_WATERSKIN4L}},
|
||||
{"WATERSKIN2_5", {ID_WATERSKIN2_5, INV_OBJECT_BIG_WATERSKIN5L}},
|
||||
{"OPEN_DIARY_ITEM", {ID_OPEN_DIARY_ITEM, INV_OBJECT_OPEN_DIARY}},
|
||||
{"GOLDROSE_ITEM", {ID_GOLDROSE_ITEM, INVENTORY_TABLE_SIZE}},
|
||||
{"PUZZLE_ITEM1", {ID_PUZZLE_ITEM1, INV_OBJECT_PUZZLE1}},
|
||||
{"PUZZLE_ITEM2", {ID_PUZZLE_ITEM2, INV_OBJECT_PUZZLE2}},
|
||||
{"PUZZLE_ITEM3", {ID_PUZZLE_ITEM3, INV_OBJECT_PUZZLE3}},
|
||||
{"PUZZLE_ITEM4", {ID_PUZZLE_ITEM4, INV_OBJECT_PUZZLE4}},
|
||||
{"PUZZLE_ITEM5", {ID_PUZZLE_ITEM5, INV_OBJECT_PUZZLE5}},
|
||||
{"PUZZLE_ITEM6", {ID_PUZZLE_ITEM6, INV_OBJECT_PUZZLE6}},
|
||||
{"PUZZLE_ITEM7", {ID_PUZZLE_ITEM7, INV_OBJECT_PUZZLE7}},
|
||||
{"PUZZLE_ITEM8", {ID_PUZZLE_ITEM8, INV_OBJECT_PUZZLE8}},
|
||||
{"PUZZLE_ITEM9", {ID_PUZZLE_ITEM9, INV_OBJECT_PUZZLE9}},
|
||||
{"PUZZLE_ITEM10", {ID_PUZZLE_ITEM10, INV_OBJECT_PUZZLE10}},
|
||||
{"PUZZLE_ITEM11", {ID_PUZZLE_ITEM11, INV_OBJECT_PUZZLE11}},
|
||||
{"PUZZLE_ITEM12", {ID_PUZZLE_ITEM12, INV_OBJECT_PUZZLE12}},
|
||||
{"PUZZLE_ITEM13", {ID_PUZZLE_ITEM13, INV_OBJECT_PUZZLE13}},
|
||||
{"PUZZLE_ITEM14", {ID_PUZZLE_ITEM14, INV_OBJECT_PUZZLE14}},
|
||||
{"PUZZLE_ITEM15", {ID_PUZZLE_ITEM15, INV_OBJECT_PUZZLE15}},
|
||||
{"PUZZLE_ITEM16", {ID_PUZZLE_ITEM16, INV_OBJECT_PUZZLE16}},
|
||||
{"PUZZLE_ITEM1_COMBO1", {ID_PUZZLE_ITEM1_COMBO1, INV_OBJECT_PUZZLE1_COMBO1}},
|
||||
{"PUZZLE_ITEM1_COMBO2", {ID_PUZZLE_ITEM1_COMBO2, INV_OBJECT_PUZZLE1_COMBO2}},
|
||||
{"PUZZLE_ITEM2_COMBO1", {ID_PUZZLE_ITEM2_COMBO1, INV_OBJECT_PUZZLE2_COMBO1}},
|
||||
{"PUZZLE_ITEM2_COMBO2", {ID_PUZZLE_ITEM2_COMBO2, INV_OBJECT_PUZZLE2_COMBO2}},
|
||||
{"PUZZLE_ITEM3_COMBO1", {ID_PUZZLE_ITEM3_COMBO1, INV_OBJECT_PUZZLE3_COMBO1}},
|
||||
{"PUZZLE_ITEM3_COMBO2", {ID_PUZZLE_ITEM3_COMBO2, INV_OBJECT_PUZZLE3_COMBO2}},
|
||||
{"PUZZLE_ITEM4_COMBO1", {ID_PUZZLE_ITEM4_COMBO1, INV_OBJECT_PUZZLE4_COMBO1}},
|
||||
{"PUZZLE_ITEM4_COMBO2", {ID_PUZZLE_ITEM4_COMBO2, INV_OBJECT_PUZZLE4_COMBO2}},
|
||||
{"PUZZLE_ITEM5_COMBO1", {ID_PUZZLE_ITEM5_COMBO1, INV_OBJECT_PUZZLE5_COMBO1}},
|
||||
{"PUZZLE_ITEM5_COMBO2", {ID_PUZZLE_ITEM5_COMBO2, INV_OBJECT_PUZZLE5_COMBO2}},
|
||||
{"PUZZLE_ITEM6_COMBO1", {ID_PUZZLE_ITEM6_COMBO1, INV_OBJECT_PUZZLE6_COMBO1}},
|
||||
{"PUZZLE_ITEM6_COMBO2", {ID_PUZZLE_ITEM6_COMBO2, INV_OBJECT_PUZZLE6_COMBO2}},
|
||||
{"PUZZLE_ITEM7_COMBO1", {ID_PUZZLE_ITEM7_COMBO1, INV_OBJECT_PUZZLE7_COMBO1}},
|
||||
{"PUZZLE_ITEM7_COMBO2", {ID_PUZZLE_ITEM7_COMBO2, INV_OBJECT_PUZZLE7_COMBO2}},
|
||||
{"PUZZLE_ITEM8_COMBO1", {ID_PUZZLE_ITEM8_COMBO1, INV_OBJECT_PUZZLE8_COMBO1}},
|
||||
{"PUZZLE_ITEM8_COMBO2", {ID_PUZZLE_ITEM8_COMBO2, INV_OBJECT_PUZZLE8_COMBO2}},
|
||||
{"PUZZLE_ITEM9_COMBO1", {ID_PUZZLE_ITEM9_COMBO1, INV_OBJECT_PUZZLE9_COMBO1}},
|
||||
{"PUZZLE_ITEM9_COMBO2", {ID_PUZZLE_ITEM9_COMBO2, INV_OBJECT_PUZZLE9_COMBO2}},
|
||||
{"PUZZLE_ITEM10_COMBO1", {ID_PUZZLE_ITEM10_COMBO1, INV_OBJECT_PUZZLE10_COMBO1}},
|
||||
{"PUZZLE_ITEM10_COMBO2", {ID_PUZZLE_ITEM10_COMBO2, INV_OBJECT_PUZZLE10_COMBO2}},
|
||||
{"PUZZLE_ITEM11_COMBO1", {ID_PUZZLE_ITEM11_COMBO1, INV_OBJECT_PUZZLE11_COMBO1}},
|
||||
{"PUZZLE_ITEM11_COMBO2", {ID_PUZZLE_ITEM11_COMBO2, INV_OBJECT_PUZZLE11_COMBO2}},
|
||||
{"PUZZLE_ITEM12_COMBO1", {ID_PUZZLE_ITEM12_COMBO1, INV_OBJECT_PUZZLE12_COMBO1}},
|
||||
{"PUZZLE_ITEM12_COMBO2", {ID_PUZZLE_ITEM12_COMBO2, INV_OBJECT_PUZZLE12_COMBO2}},
|
||||
{"PUZZLE_ITEM13_COMBO1", {ID_PUZZLE_ITEM13_COMBO1, INV_OBJECT_PUZZLE13_COMBO1}},
|
||||
{"PUZZLE_ITEM13_COMBO2", {ID_PUZZLE_ITEM13_COMBO2, INV_OBJECT_PUZZLE13_COMBO2}},
|
||||
{"PUZZLE_ITEM14_COMBO1", {ID_PUZZLE_ITEM14_COMBO1, INV_OBJECT_PUZZLE14_COMBO1}},
|
||||
{"PUZZLE_ITEM14_COMBO2", {ID_PUZZLE_ITEM14_COMBO2, INV_OBJECT_PUZZLE14_COMBO2}},
|
||||
{"PUZZLE_ITEM15_COMBO1", {ID_PUZZLE_ITEM15_COMBO1, INV_OBJECT_PUZZLE15_COMBO1}},
|
||||
{"PUZZLE_ITEM15_COMBO2", {ID_PUZZLE_ITEM15_COMBO2, INV_OBJECT_PUZZLE15_COMBO2}},
|
||||
{"PUZZLE_ITEM16_COMBO1", {ID_PUZZLE_ITEM16_COMBO1, INV_OBJECT_PUZZLE16_COMBO1}},
|
||||
{"PUZZLE_ITEM16_COMBO2", {ID_PUZZLE_ITEM16_COMBO2, INV_OBJECT_PUZZLE16_COMBO2}},
|
||||
{"KEY_ITEM1", {ID_KEY_ITEM1, INV_OBJECT_KEY1}},
|
||||
{"KEY_ITEM2", {ID_KEY_ITEM2, INV_OBJECT_KEY2}},
|
||||
{"KEY_ITEM3", {ID_KEY_ITEM3, INV_OBJECT_KEY3}},
|
||||
{"KEY_ITEM4", {ID_KEY_ITEM4, INV_OBJECT_KEY4}},
|
||||
{"KEY_ITEM5", {ID_KEY_ITEM5, INV_OBJECT_KEY5}},
|
||||
{"KEY_ITEM6", {ID_KEY_ITEM6, INV_OBJECT_KEY6}},
|
||||
{"KEY_ITEM7", {ID_KEY_ITEM7, INV_OBJECT_KEY7}},
|
||||
{"KEY_ITEM8", {ID_KEY_ITEM8, INV_OBJECT_KEY8}},
|
||||
{"KEY_ITEM9", {ID_KEY_ITEM9, INV_OBJECT_KEY9}},
|
||||
{"KEY_ITEM10", {ID_KEY_ITEM10, INV_OBJECT_KEY10}},
|
||||
{"KEY_ITEM11", {ID_KEY_ITEM11, INV_OBJECT_KEY11}},
|
||||
{"KEY_ITEM12", {ID_KEY_ITEM12, INV_OBJECT_KEY12}},
|
||||
{"KEY_ITEM13", {ID_KEY_ITEM13, INV_OBJECT_KEY13}},
|
||||
{"KEY_ITEM14", {ID_KEY_ITEM14, INV_OBJECT_KEY14}},
|
||||
{"KEY_ITEM15", {ID_KEY_ITEM15, INV_OBJECT_KEY15}},
|
||||
{"KEY_ITEM16", {ID_KEY_ITEM16, INV_OBJECT_KEY16}},
|
||||
{"KEY_ITEM1_COMBO1", {ID_KEY_ITEM1_COMBO1, INV_OBJECT_KEY1_COMBO1}},
|
||||
{"KEY_ITEM1_COMBO2", {ID_KEY_ITEM1_COMBO2, INV_OBJECT_KEY1_COMBO2}},
|
||||
{"KEY_ITEM2_COMBO1", {ID_KEY_ITEM2_COMBO1, INV_OBJECT_KEY2_COMBO1}},
|
||||
{"KEY_ITEM2_COMBO2", {ID_KEY_ITEM2_COMBO2, INV_OBJECT_KEY2_COMBO2}},
|
||||
{"KEY_ITEM3_COMBO1", {ID_KEY_ITEM3_COMBO1, INV_OBJECT_KEY3_COMBO1}},
|
||||
{"KEY_ITEM3_COMBO2", {ID_KEY_ITEM3_COMBO2, INV_OBJECT_KEY3_COMBO2}},
|
||||
{"KEY_ITEM4_COMBO1", {ID_KEY_ITEM4_COMBO1, INV_OBJECT_KEY4_COMBO1}},
|
||||
{"KEY_ITEM4_COMBO2", {ID_KEY_ITEM4_COMBO2, INV_OBJECT_KEY4_COMBO2}},
|
||||
{"KEY_ITEM5_COMBO1", {ID_KEY_ITEM5_COMBO1, INV_OBJECT_KEY5_COMBO1}},
|
||||
{"KEY_ITEM5_COMBO2", {ID_KEY_ITEM5_COMBO2, INV_OBJECT_KEY5_COMBO2}},
|
||||
{"KEY_ITEM6_COMBO1", {ID_KEY_ITEM6_COMBO1, INV_OBJECT_KEY6_COMBO1}},
|
||||
{"KEY_ITEM6_COMBO2", {ID_KEY_ITEM6_COMBO2, INV_OBJECT_KEY6_COMBO2}},
|
||||
{"KEY_ITEM7_COMBO1", {ID_KEY_ITEM7_COMBO1, INV_OBJECT_KEY7_COMBO1}},
|
||||
{"KEY_ITEM7_COMBO2", {ID_KEY_ITEM7_COMBO2, INV_OBJECT_KEY7_COMBO2}},
|
||||
{"KEY_ITEM8_COMBO1", {ID_KEY_ITEM8_COMBO1, INV_OBJECT_KEY8_COMBO1}},
|
||||
{"KEY_ITEM8_COMBO2", {ID_KEY_ITEM8_COMBO2, INV_OBJECT_KEY8_COMBO2}},
|
||||
{"KEY_ITEM9_COMBO1", {ID_KEY_ITEM9_COMBO1, INV_OBJECT_KEY9_COMBO1}},
|
||||
{"KEY_ITEM9_COMBO2", {ID_KEY_ITEM9_COMBO2, INV_OBJECT_KEY9_COMBO2}},
|
||||
{"KEY_ITEM10_COMBO1", {ID_KEY_ITEM10_COMBO1, INV_OBJECT_KEY10_COMBO1}},
|
||||
{"KEY_ITEM10_COMBO2", {ID_KEY_ITEM10_COMBO2, INV_OBJECT_KEY10_COMBO2}},
|
||||
{"KEY_ITEM11_COMBO1", {ID_KEY_ITEM11_COMBO1, INV_OBJECT_KEY11_COMBO1}},
|
||||
{"KEY_ITEM11_COMBO2", {ID_KEY_ITEM11_COMBO2, INV_OBJECT_KEY11_COMBO2}},
|
||||
{"KEY_ITEM12_COMBO1", {ID_KEY_ITEM12_COMBO1, INV_OBJECT_KEY12_COMBO1}},
|
||||
{"KEY_ITEM12_COMBO2", {ID_KEY_ITEM12_COMBO2, INV_OBJECT_KEY12_COMBO2}},
|
||||
{"KEY_ITEM13_COMBO1", {ID_KEY_ITEM13_COMBO1, INV_OBJECT_KEY13_COMBO1}},
|
||||
{"KEY_ITEM13_COMBO2", {ID_KEY_ITEM13_COMBO2, INV_OBJECT_KEY13_COMBO2}},
|
||||
{"KEY_ITEM14_COMBO1", {ID_KEY_ITEM14_COMBO1, INV_OBJECT_KEY14_COMBO1}},
|
||||
{"KEY_ITEM14_COMBO2", {ID_KEY_ITEM14_COMBO2, INV_OBJECT_KEY14_COMBO2}},
|
||||
{"KEY_ITEM15_COMBO1", {ID_KEY_ITEM15_COMBO1, INV_OBJECT_KEY15_COMBO1}},
|
||||
{"KEY_ITEM15_COMBO2", {ID_KEY_ITEM15_COMBO2, INV_OBJECT_KEY15_COMBO2}},
|
||||
{"KEY_ITEM16_COMBO1", {ID_KEY_ITEM16_COMBO1, INV_OBJECT_KEY16_COMBO1}},
|
||||
{"KEY_ITEM16_COMBO2", {ID_KEY_ITEM16_COMBO2, INV_OBJECT_KEY16_COMBO2}},
|
||||
{"PICKUP_ITEM1", {ID_PICKUP_ITEM1, INV_OBJECT_PICKUP1}},
|
||||
{"PICKUP_ITEM2", {ID_PICKUP_ITEM2, INV_OBJECT_PICKUP2}},
|
||||
{"PICKUP_ITEM3", {ID_PICKUP_ITEM3, INV_OBJECT_PICKUP3}},
|
||||
{"PICKUP_ITEM4", {ID_PICKUP_ITEM4, INV_OBJECT_PICKUP4}},
|
||||
{"PICKUP_ITEM5", {ID_PICKUP_ITEM5, INV_OBJECT_PICKUP5}},
|
||||
{"PICKUP_ITEM6", {ID_PICKUP_ITEM6, INV_OBJECT_PICKUP6}},
|
||||
{"PICKUP_ITEM7", {ID_PICKUP_ITEM7, INV_OBJECT_PICKUP7}},
|
||||
{"PICKUP_ITEM8", {ID_PICKUP_ITEM8, INV_OBJECT_PICKUP8}},
|
||||
{"PICKUP_ITEM9", {ID_PICKUP_ITEM9, INV_OBJECT_PICKUP9}},
|
||||
{"PICKUP_ITEM10", {ID_PICKUP_ITEM10, INV_OBJECT_PICKUP10}},
|
||||
{"PICKUP_ITEM11", {ID_PICKUP_ITEM11, INV_OBJECT_PICKUP11}},
|
||||
{"PICKUP_ITEM12", {ID_PICKUP_ITEM12, INV_OBJECT_PICKUP12}},
|
||||
{"PICKUP_ITEM13", {ID_PICKUP_ITEM13, INV_OBJECT_PICKUP13}},
|
||||
{"PICKUP_ITEM14", {ID_PICKUP_ITEM14, INV_OBJECT_PICKUP14}},
|
||||
{"PICKUP_ITEM15", {ID_PICKUP_ITEM15, INV_OBJECT_PICKUP15}},
|
||||
{"PICKUP_ITEM16", {ID_PICKUP_ITEM16, INV_OBJECT_PICKUP16}},
|
||||
{"PICKUP_ITEM1_COMBO1", {ID_PICKUP_ITEM1_COMBO1, INV_OBJECT_PICKUP1_COMBO1}},
|
||||
{"PICKUP_ITEM1_COMBO2", {ID_PICKUP_ITEM1_COMBO2, INV_OBJECT_PICKUP1_COMBO2}},
|
||||
{"PICKUP_ITEM2_COMBO1", {ID_PICKUP_ITEM2_COMBO1, INV_OBJECT_PICKUP2_COMBO1}},
|
||||
{"PICKUP_ITEM2_COMBO2", {ID_PICKUP_ITEM2_COMBO2, INV_OBJECT_PICKUP2_COMBO2}},
|
||||
{"PICKUP_ITEM3_COMBO1", {ID_PICKUP_ITEM3_COMBO1, INV_OBJECT_PICKUP3_COMBO1}},
|
||||
{"PICKUP_ITEM3_COMBO2", {ID_PICKUP_ITEM3_COMBO2, INV_OBJECT_PICKUP3_COMBO2}},
|
||||
{"PICKUP_ITEM4_COMBO1", {ID_PICKUP_ITEM4_COMBO1, INV_OBJECT_PICKUP4_COMBO1}},
|
||||
{"PICKUP_ITEM4_COMBO2", {ID_PICKUP_ITEM4_COMBO2, INV_OBJECT_PICKUP4_COMBO2}},
|
||||
{"PICKUP_ITEM5_COMBO1", {ID_PICKUP_ITEM5_COMBO1, INV_OBJECT_PICKUP5_COMBO1}},
|
||||
{"PICKUP_ITEM5_COMBO2", {ID_PICKUP_ITEM5_COMBO2, INV_OBJECT_PICKUP5_COMBO2}},
|
||||
{"PICKUP_ITEM6_COMBO1", {ID_PICKUP_ITEM6_COMBO1, INV_OBJECT_PICKUP6_COMBO1}},
|
||||
{"PICKUP_ITEM6_COMBO2", {ID_PICKUP_ITEM6_COMBO2, INV_OBJECT_PICKUP6_COMBO2}},
|
||||
{"PICKUP_ITEM7_COMBO1", {ID_PICKUP_ITEM7_COMBO1, INV_OBJECT_PICKUP7_COMBO1}},
|
||||
{"PICKUP_ITEM7_COMBO2", {ID_PICKUP_ITEM7_COMBO2, INV_OBJECT_PICKUP7_COMBO2}},
|
||||
{"PICKUP_ITEM8_COMBO1", {ID_PICKUP_ITEM8_COMBO1, INV_OBJECT_PICKUP8_COMBO1}},
|
||||
{"PICKUP_ITEM8_COMBO2", {ID_PICKUP_ITEM8_COMBO2, INV_OBJECT_PICKUP8_COMBO2}},
|
||||
{"PICKUP_ITEM9_COMBO1", {ID_PICKUP_ITEM9_COMBO1, INV_OBJECT_PICKUP9_COMBO1}},
|
||||
{"PICKUP_ITEM9_COMBO2", {ID_PICKUP_ITEM9_COMBO2, INV_OBJECT_PICKUP9_COMBO2}},
|
||||
{"PICKUP_ITEM10_COMBO1", {ID_PICKUP_ITEM10_COMBO1, INV_OBJECT_PICKUP10_COMBO1}},
|
||||
{"PICKUP_ITEM10_COMBO2", {ID_PICKUP_ITEM10_COMBO2, INV_OBJECT_PICKUP10_COMBO2}},
|
||||
{"PICKUP_ITEM11_COMBO1", {ID_PICKUP_ITEM11_COMBO1, INV_OBJECT_PICKUP11_COMBO1}},
|
||||
{"PICKUP_ITEM11_COMBO2", {ID_PICKUP_ITEM11_COMBO2, INV_OBJECT_PICKUP11_COMBO2}},
|
||||
{"PICKUP_ITEM12_COMBO1", {ID_PICKUP_ITEM12_COMBO1, INV_OBJECT_PICKUP12_COMBO1}},
|
||||
{"PICKUP_ITEM12_COMBO2", {ID_PICKUP_ITEM12_COMBO2, INV_OBJECT_PICKUP12_COMBO2}},
|
||||
{"PICKUP_ITEM13_COMBO1", {ID_PICKUP_ITEM13_COMBO1, INV_OBJECT_PICKUP13_COMBO1}},
|
||||
{"PICKUP_ITEM13_COMBO2", {ID_PICKUP_ITEM13_COMBO2, INV_OBJECT_PICKUP13_COMBO2}},
|
||||
{"PICKUP_ITEM14_COMBO1", {ID_PICKUP_ITEM14_COMBO1, INV_OBJECT_PICKUP14_COMBO1}},
|
||||
{"PICKUP_ITEM14_COMBO2", {ID_PICKUP_ITEM14_COMBO2, INV_OBJECT_PICKUP14_COMBO2}},
|
||||
{"PICKUP_ITEM15_COMBO1", {ID_PICKUP_ITEM15_COMBO1, INV_OBJECT_PICKUP15_COMBO1}},
|
||||
{"PICKUP_ITEM15_COMBO2", {ID_PICKUP_ITEM15_COMBO2, INV_OBJECT_PICKUP15_COMBO2}},
|
||||
{"PICKUP_ITEM16_COMBO1", {ID_PICKUP_ITEM16_COMBO1, INV_OBJECT_PICKUP16_COMBO1}},
|
||||
{"PICKUP_ITEM16_COMBO2", {ID_PICKUP_ITEM16_COMBO2, INV_OBJECT_PICKUP16_COMBO2}},
|
||||
{"EXAMINE_ITEM1", {ID_EXAMINE1, INV_OBJECT_EXAMINE1}},
|
||||
{"EXAMINE_ITEM2", {ID_EXAMINE2, INV_OBJECT_EXAMINE2}},
|
||||
{"EXAMINE_ITEM3", {ID_EXAMINE3, INV_OBJECT_EXAMINE3}},
|
||||
{"EXAMINE_ITEM4", {ID_EXAMINE4, INV_OBJECT_EXAMINE4}},
|
||||
{"EXAMINE_ITEM5", {ID_EXAMINE5, INV_OBJECT_EXAMINE5}},
|
||||
{"EXAMINE_ITEM6", {ID_EXAMINE6, INV_OBJECT_EXAMINE6}},
|
||||
{"EXAMINE_ITEM7", {ID_EXAMINE7, INV_OBJECT_EXAMINE7}},
|
||||
{"EXAMINE_ITEM8", {ID_EXAMINE8, INV_OBJECT_EXAMINE8}},
|
||||
{"EXAMINE_ITEM1_COMBO1", {ID_EXAMINE1_COMBO1, INV_OBJECT_EXAMINE1_COMBO1}},
|
||||
{"EXAMINE_ITEM1_COMBO2", {ID_EXAMINE1_COMBO2, INV_OBJECT_EXAMINE1_COMBO2}},
|
||||
{"EXAMINE_ITEM2_COMBO1", {ID_EXAMINE2_COMBO1, INV_OBJECT_EXAMINE2_COMBO1}},
|
||||
{"EXAMINE_ITEM2_COMBO2", {ID_EXAMINE2_COMBO2, INV_OBJECT_EXAMINE2_COMBO2}},
|
||||
{"EXAMINE_ITEM3_COMBO1", {ID_EXAMINE3_COMBO1, INV_OBJECT_EXAMINE3_COMBO1}},
|
||||
{"EXAMINE_ITEM3_COMBO2", {ID_EXAMINE3_COMBO2, INV_OBJECT_EXAMINE3_COMBO2}},
|
||||
{"EXAMINE_ITEM4_COMBO1", {ID_EXAMINE4_COMBO1, INV_OBJECT_EXAMINE4_COMBO1}},
|
||||
{"EXAMINE_ITEM4_COMBO2", {ID_EXAMINE4_COMBO2, INV_OBJECT_EXAMINE4_COMBO2}},
|
||||
{"EXAMINE_ITEM5_COMBO1", {ID_EXAMINE5_COMBO1, INV_OBJECT_EXAMINE5_COMBO1}},
|
||||
{"EXAMINE_ITEM5_COMBO2", {ID_EXAMINE5_COMBO2, INV_OBJECT_EXAMINE5_COMBO2}},
|
||||
{"EXAMINE_ITEM6_COMBO1", {ID_EXAMINE6_COMBO1, INV_OBJECT_EXAMINE6_COMBO1}},
|
||||
{"EXAMINE_ITEM6_COMBO2", {ID_EXAMINE6_COMBO2, INV_OBJECT_EXAMINE6_COMBO2}},
|
||||
{"EXAMINE_ITEM7_COMBO1", {ID_EXAMINE7_COMBO1, INV_OBJECT_EXAMINE7_COMBO1}},
|
||||
{"EXAMINE_ITEM7_COMBO2", {ID_EXAMINE7_COMBO2, INV_OBJECT_EXAMINE7_COMBO2}},
|
||||
{"EXAMINE_ITEM8_COMBO1", {ID_EXAMINE8_COMBO1, INV_OBJECT_EXAMINE8_COMBO1}},
|
||||
{"EXAMINE_ITEM8_COMBO2", {ID_EXAMINE8_COMBO2, INV_OBJECT_EXAMINE8_COMBO2}}
|
||||
};
|
10
Scripting/Include/ItemEnumPair.h
Normal file
10
Scripting/Include/ItemEnumPair.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
#pragma once
|
||||
#include "Game/gui.h"
|
||||
#include "Objects/objectslist.h"
|
||||
#include <utility>
|
||||
|
||||
struct ItemEnumPair
|
||||
{
|
||||
std::pair<GAME_OBJECT_ID, InventoryObjectTypes> m_pair;
|
||||
ItemEnumPair(GAME_OBJECT_ID id, InventoryObjectTypes id2) : m_pair { id, id2 } {}
|
||||
};
|
124
Scripting/Include/LanguageScript.h
Normal file
124
Scripting/Include/LanguageScript.h
Normal file
|
@ -0,0 +1,124 @@
|
|||
#pragma once
|
||||
|
||||
// Define std::string ids
|
||||
#define STRING_WINDOW_TITLE "window_title"
|
||||
#define STRING_PASSPORT "passport"
|
||||
#define STRING_LARA_HOME "lara_home"
|
||||
#define STRING_CONTROLS "controls"
|
||||
#define STRING_DISPLAY "display"
|
||||
#define STRING_SOUND "sounds"
|
||||
#define STRING_NEW_GAME "new_game"
|
||||
#define STRING_LOAD_GAME "load_game"
|
||||
#define STRING_SAVE_GAME "save_game"
|
||||
#define STRING_EXIT_GAME "exit_game"
|
||||
#define STRING_EXIT_TO_TITLE "exit_to_title"
|
||||
#define STRING_UZI "uzi"
|
||||
#define STRING_PISTOLS "pistols_ammo"
|
||||
#define STRING_SHOTGUN "shotgun"
|
||||
#define STRING_REVOLVER "revolver"
|
||||
#define STRING_REVOLVER_LASER "reolver_laser"
|
||||
#define STRING_HK "hk"
|
||||
#define STRING_HK_SILENCED "hk_silenced"
|
||||
#define STRING_SHOTGUN_AMMO1 "shotgun_ammo1"
|
||||
#define STRING_SHOTGUN_AMMO2 "shotgun_ammo2"
|
||||
#define STRING_HK_SNIPER_MODE "hk_sniper_mode"
|
||||
#define STRING_HK_BURST_MODE "hk_burst_mode"
|
||||
#define STRING_HK_RAPID_MODE "hk_rapid_mode"
|
||||
#define STRING_HK_AMMO "hk_ammo"
|
||||
#define STRING_REVOLVER_AMMO "revolver_ammo"
|
||||
#define STRING_UZI_AMMO "uzi_ammo"
|
||||
#define STRING_PISTOLS_AMMO "pistols_ammo"
|
||||
#define STRING_LASERSIGHT "lasersight"
|
||||
#define STRING_SILENCER "silencer"
|
||||
#define STRING_LARGE_MEDIPACK "large_medipack"
|
||||
#define STRING_SMALL_MEDIPACK "small_medipack"
|
||||
#define STRING_BINOCULARS "binoculars"
|
||||
#define STRING_HEADSET "headset"
|
||||
#define STRING_FLARES "flares"
|
||||
#define STRING_TIMEX "timex"
|
||||
#define STRING_CROWBAR "crowbar"
|
||||
#define STRING_USE "use"
|
||||
#define STRING_COMBINE "combine"
|
||||
#define STRING_SEPARE "separe"
|
||||
#define STRING_CHOOSE_AMMO "choose_ammo"
|
||||
#define STRING_SELECT_LEVEL "select_level"
|
||||
#define STRING_GRENADE_LAUNCHER "grenade_launcher"
|
||||
#define STRING_GRENADE_AMMO1 "grenade_launcher_ammo1"
|
||||
#define STRING_GRENADE_AMMO2 "grenade_launcher_ammo2"
|
||||
#define STRING_GRENADE_AMMO3 "grenade_launcher_ammo3"
|
||||
#define STRING_HARPOON_GUN "harpoon_gun"
|
||||
#define STRING_HARPOON_AMMO "harpoon_ammo"
|
||||
#define STRING_ROCKET_LAUNCHER "rocket_launcher"
|
||||
#define STRING_ROCKET_AMMO "rocket_ammo"
|
||||
#define STRING_CROSSBOW "crossbow"
|
||||
#define STRING_CROSSBOW_LASER "crossbow_laser"
|
||||
#define STRING_CROSSBOW_AMMO1 "crossbow_ammo1"
|
||||
#define STRING_CROSSBOW_AMMO2 "crossbow_ammo2"
|
||||
#define STRING_CROSSBOW_AMMO3 "crossbow_ammo3"
|
||||
#define STRING_DIARY "diary"
|
||||
#define STRING_ENABLED "enabled"
|
||||
#define STRING_DISABLED "disabled"
|
||||
#define STRING_MUSIC_VOLUME "music_volume"
|
||||
#define STRING_SFX_VOLUME "sfx_volume"
|
||||
#define STRING_SCREEN_RESOLUTION "screen_resolution"
|
||||
#define STRING_SHADOWS "shadows"
|
||||
#define STRING_CAUSTICS "caustics"
|
||||
#define STRING_VOLUMETRIC_FOG "volumetric_fog"
|
||||
#define STRING_APPLY "apply"
|
||||
#define STRING_BACK "back"
|
||||
#define STRING_ENABLE_SOUND "enable_sound"
|
||||
#define STRING_SPECIAL_SOUND_FX "special_sound_fx"
|
||||
#define STRING_CONTROLS_MOVE_FORWARD "controls_move_forward"
|
||||
#define STRING_CONTROLS_MOVE_BACKWARD "controls_move_backward"
|
||||
#define STRING_CONTROLS_MOVE_LEFT "controls_move_left"
|
||||
#define STRING_CONTROLS_MOVE_RIGHT "controls_move_right"
|
||||
#define STRING_CONTROLS_DUCK "controls_duck"
|
||||
#define STRING_CONTROLS_DASH "controls_dash"
|
||||
#define STRING_CONTROLS_WALK "controls_walk"
|
||||
#define STRING_CONTROLS_JUMP "controls_jump"
|
||||
#define STRING_CONTROLS_ACTION "controls_action"
|
||||
#define STRING_CONTROLS_DRAW_WEAPON "controls_draw_weapon"
|
||||
#define STRING_CONTROLS_USE_FLARE "controls_use_flare"
|
||||
#define STRING_CONTROLS_LOOK "controls_look"
|
||||
#define STRING_CONTROLS_ROLL "controls_roll"
|
||||
#define STRING_CONTROLS_INVENTORY "controls_inventory"
|
||||
#define STRING_CONTROLS_STEP_LEFT "controls_step_left"
|
||||
#define STRING_CONTROLS_STEP_RIGHT "controls_step_right"
|
||||
#define STRING_TITLE_ITEMS "items"
|
||||
#define STRING_TITLE_PUZZLES "puzzles"
|
||||
#define STRING_TITLE_SETTINGS "settings"
|
||||
#define STRING_TITLE_CHOOSE_AMMO "choose_ammo"
|
||||
#define STRING_TITLE_COMBINE "combine"
|
||||
#define STRING_WAITING_FOR_KEY "waiting_for_key"
|
||||
#define STRING_WINDOWED "windowed"
|
||||
#define STRING_OK "ok"
|
||||
#define STRING_CANCEL "cancel"
|
||||
#define STRING_RENDER_OPTIONS "render_options"
|
||||
#define STRING_DISPLAY_ADAPTER "display_adapter"
|
||||
#define STRING_OUTPUT_SETTINGS "output_settings"
|
||||
#define STRING_EQUIP "equip"
|
||||
#define STRING_COMBINE_WITH "combine_with"
|
||||
#define STRING_EXAMINE "examine"
|
||||
#define STRING_STATISTICS "statistics"
|
||||
#define STRING_CHOOSE_WEAPON "choose_weapon"
|
||||
#define STRING_UNUSED "unused"
|
||||
#define STRING_SAVEGAME_TIMESTAMP "savegame_timestamp"
|
||||
#define STRING_TIME_TAKEN "time_taken"
|
||||
#define STRING_DISTANCE_TRAVELLED "distance_travelled"
|
||||
#define STRING_USED_MEDIPACKS "used_medipacks"
|
||||
#define STRING_USED_AMMOS "used_ammos"
|
||||
#define STRING_SECRETS_FOUND "secrets_found"
|
||||
#define STRING_WATERSKIN_SMALL_EMPTY "waterskin_small_empty"
|
||||
#define STRING_WATERSKIN_SMALL_1 "waterskin_small_1"
|
||||
#define STRING_WATERSKIN_SMALL_2 "waterskin_small_2"
|
||||
#define STRING_WATERSKIN_SMALL_3 "waterskin_small_3"
|
||||
#define STRING_WATERSKIN_LARGE_EMPTY "waterskin_large_empty"
|
||||
#define STRING_WATERSKIN_LARGE_1 "waterskin_large_1"
|
||||
#define STRING_WATERSKIN_LARGE_2 "waterskin_large_2"
|
||||
#define STRING_WATERSKIN_LARGE_3 "waterskin_large_3"
|
||||
#define STRING_WATERSKIN_LARGE_4 "waterskin_large_4"
|
||||
#define STRING_WATERSKIN_LARGE_5 "waterskin_large_5"
|
||||
#define STRING_TORCH "torch"
|
||||
#define STRING_CLOCKWORK_BEETLE "clockwork_beetle"
|
||||
#define STRING_CLOCKWORK_BEETLE_COMBO1 "clockwork_beetle_combo1"
|
||||
#define STRING_CLOCKWORK_BEETLE_COMBO2 "clockwork_beetle_combo2"
|
50
Scripting/Include/LuaHandler.h
Normal file
50
Scripting/Include/LuaHandler.h
Normal file
|
@ -0,0 +1,50 @@
|
|||
#pragma once
|
||||
#include "frameworkandsol.h"
|
||||
|
||||
class LuaHandler {
|
||||
protected:
|
||||
sol::state* m_lua;
|
||||
~LuaHandler() = default;
|
||||
|
||||
public:
|
||||
LuaHandler(sol::state* lua);
|
||||
LuaHandler(LuaHandler const &) = delete;
|
||||
LuaHandler& operator=(LuaHandler const &) = delete;
|
||||
|
||||
void ExecuteScript(const std::string & luaFilename);
|
||||
void ExecuteString(const std::string & command);
|
||||
|
||||
template <typename T>void MakeReadOnlyTable(std::string const& tableName, T const& container)
|
||||
{
|
||||
auto mt = tableName + "Meta";
|
||||
// Put all the data in the metatable
|
||||
m_lua->set(mt, sol::as_table(container));
|
||||
|
||||
auto mtmt = tableName + "MetaMeta";
|
||||
m_lua->create_named_table(mtmt);
|
||||
|
||||
// TODO Make these not raise exceptions by default but just do ScriptAsserts -- squidshire, 29/08/2021
|
||||
// Make the metatable's metatable's __index throw an error so that trying to use a variable
|
||||
// that doesn't exist just errors.
|
||||
m_lua->safe_script(mtmt + ".__index = function(t, key) error('" + tableName +" has no member \"' .. tostring(key) .. '\"') end");
|
||||
m_lua->safe_script("setmetatable(" + mt + ", " + mtmt + ")");
|
||||
|
||||
// Make the metatable's __index refer to itself so that requests
|
||||
// to the main table will go through to the metatable (and thus the
|
||||
// container's members)
|
||||
m_lua->safe_script(mt + ".__index = " + mt);
|
||||
|
||||
// Don't allow the table to have new elements put into it
|
||||
m_lua->safe_script(mt + ".__newindex = function() error('" + tableName + " is read-only') end");
|
||||
|
||||
// Protect the metatable
|
||||
m_lua->safe_script(mt + ".__metatable = 'metatable is protected'");
|
||||
|
||||
m_lua->create_named_table(tableName);
|
||||
|
||||
m_lua->safe_script("setmetatable(" + tableName + ", " + mt + ")");
|
||||
// point the initial metatable variable away from its contents. this is just for cleanliness
|
||||
m_lua->safe_script(mt + " = nil");
|
||||
m_lua->safe_script(mtmt + " = nil");
|
||||
}
|
||||
};
|
1943
Scripting/Include/ObjectIDs.h
Normal file
1943
Scripting/Include/ObjectIDs.h
Normal file
File diff suppressed because it is too large
Load diff
38
Scripting/Include/ReservedScriptNames.h
Normal file
38
Scripting/Include/ReservedScriptNames.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
#pragma once
|
||||
|
||||
// Classes
|
||||
static constexpr char const ScriptReserved_ItemInfo[] = "ItemInfo";
|
||||
static constexpr char const ScriptReserved_MeshInfo[] = "MeshInfo";
|
||||
static constexpr char const ScriptReserved_CameraInfo[] = "CameraInfo";
|
||||
static constexpr char const ScriptReserved_SinkInfo[] = "SinkInfo";
|
||||
static constexpr char const ScriptReserved_SoundSourceInfo[] = "SoundSourceInfo";
|
||||
static constexpr char const ScriptReserved_AIObject[] = "AIObject";
|
||||
static constexpr char const ScriptReserved_DisplayString[] = "DisplayString";
|
||||
|
||||
// Functions
|
||||
static constexpr char const ScriptReserved_ShowString[] = "ShowString";
|
||||
static constexpr char const ScriptReserved_HideString[] = "HideString";
|
||||
static constexpr char const ScriptReserved_SetAmbientTrack[] = "SetAmbientTrack";
|
||||
static constexpr char const ScriptReserved_PlayAudioTrack[] = "PlayAudioTrack";
|
||||
static constexpr char const ScriptReserved_GiveInvItem[] = "GiveInvItem";
|
||||
static constexpr char const ScriptReserved_TakeInvItem[] = "TakeInvItem";
|
||||
static constexpr char const ScriptReserved_GetInvItemCount[] = "GetInvItemCount";
|
||||
static constexpr char const ScriptReserved_SetInvItemCount[] = "SetInvItemCount";
|
||||
static constexpr char const ScriptReserved_GetItemByName[] = "GetItemByName";
|
||||
static constexpr char const ScriptReserved_GetMeshByName[] = "GetMeshByName";
|
||||
static constexpr char const ScriptReserved_GetCameraByName[] = "GetCameraByName";
|
||||
static constexpr char const ScriptReserved_GetSinkByName[] = "GetSinkByName";
|
||||
static constexpr char const ScriptReserved_GetSoundSourceByName[] = "GetSoundSourceByName";
|
||||
static constexpr char const ScriptReserved_CalculateDistance[] = "CalculateDistance";
|
||||
static constexpr char const ScriptReserved_CalculateHorizontalDistance[] = "CalculateHorizontalDistance";
|
||||
static constexpr char const ScriptReserved_ScreenToPercent[] = "ScreenToPercent";
|
||||
static constexpr char const ScriptReserved_PercentToScreen[] = "PercentToScreen";
|
||||
|
||||
// Functions
|
||||
static constexpr char const ScriptReserved_ObjID[] = "ObjID";
|
||||
static constexpr char const ScriptReserved_DisplayStringOption[] = "DisplayStringOption";
|
||||
|
||||
static constexpr char const ScriptReserved_LevelVars[] = "LevelVars";
|
||||
static constexpr char const ScriptReserved_GameVars[] = "GameVars";
|
||||
static constexpr char const ScriptReserved_LevelFuncs[] = "LevelFuncs";
|
||||
|
51
Scripting/Include/ScriptAssert.h
Normal file
51
Scripting/Include/ScriptAssert.h
Normal file
|
@ -0,0 +1,51 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <optional>
|
||||
#include <spdlog/fmt/fmt.h>
|
||||
|
||||
enum class ERROR_MODE
|
||||
{
|
||||
SILENT,
|
||||
WARN,
|
||||
TERMINATE
|
||||
};
|
||||
|
||||
void SetScriptErrorMode(ERROR_MODE mode);
|
||||
ERROR_MODE GetScriptErrorMode();
|
||||
|
||||
void ScriptWarn(std::string const& msg);
|
||||
|
||||
bool ScriptAssert(bool cond, std::string const& msg, std::optional<ERROR_MODE> forceMode = std::nullopt);
|
||||
|
||||
template <typename ... Ts> bool ScriptAssertF(bool cond, std::string_view str, Ts...args)
|
||||
{
|
||||
if (!cond)
|
||||
{
|
||||
auto msg = fmt::format(str, args...);
|
||||
auto mode = GetScriptErrorMode();
|
||||
switch (mode)
|
||||
{
|
||||
case ERROR_MODE::WARN:
|
||||
TENLog(msg, LogLevel::Error, LogConfig::All);
|
||||
break;
|
||||
case ERROR_MODE::TERMINATE:
|
||||
TENLog(msg, LogLevel::Error, LogConfig::All);
|
||||
throw TENScriptException(msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return cond;
|
||||
}
|
||||
|
||||
template <typename ... Ts> bool ScriptAssertTerminateF(bool cond, std::string_view str, Ts...args)
|
||||
{
|
||||
if (!cond)
|
||||
{
|
||||
auto msg = fmt::format(str, args...);
|
||||
TENLog(msg, LogLevel::Error, LogConfig::All);
|
||||
throw TENScriptException(msg);
|
||||
}
|
||||
return cond;
|
||||
}
|
||||
|
38
Scripting/Include/ScriptInterfaceGame.h
Normal file
38
Scripting/Include/ScriptInterfaceGame.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
#pragma once
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <functional>
|
||||
#include "room.h"
|
||||
#include "level.h"
|
||||
|
||||
typedef DWORD D3DCOLOR;
|
||||
using VarMapVal = std::variant< short,
|
||||
std::reference_wrapper<MESH_INFO>,
|
||||
std::reference_wrapper<LEVEL_CAMERA_INFO>,
|
||||
std::reference_wrapper<SINK_INFO>,
|
||||
std::reference_wrapper<SOUND_SOURCE_INFO>,
|
||||
std::reference_wrapper<AI_OBJECT>>;
|
||||
|
||||
using CallbackDrawString = std::function<void(std::string const&, D3DCOLOR, int, int, int)>;
|
||||
|
||||
class ScriptInterfaceGame {
|
||||
public:
|
||||
virtual ~ScriptInterfaceGame() = default;
|
||||
virtual void ProcessDisplayStrings(float dt) = 0;
|
||||
|
||||
virtual void InitCallbacks() = 0;
|
||||
|
||||
virtual void OnStart() = 0;
|
||||
virtual void OnLoad() = 0;
|
||||
virtual void OnControlPhase(float dt) = 0;
|
||||
virtual void OnSave() = 0;
|
||||
virtual void OnEnd() = 0;
|
||||
|
||||
virtual void SetCallbackDrawString(CallbackDrawString) = 0;
|
||||
virtual void FreeLevelScripts() = 0;
|
||||
virtual bool AddName(std::string const& key, VarMapVal val) = 0;
|
||||
virtual void ExecuteScriptFile(std::string const& luaFileName) = 0;
|
||||
virtual void ExecuteFunction(std::string const& luaFileName) = 0;
|
||||
|
||||
virtual void AssignItemsAndLara() = 0;
|
||||
};
|
13
Scripting/Include/ScriptUtil.h
Normal file
13
Scripting/Include/ScriptUtil.h
Normal file
|
@ -0,0 +1,13 @@
|
|||
#pragma once
|
||||
#define index_error_maker(CPP_TYPE, LUA_CLASS_NAME) [](CPP_TYPE & item, sol::object key) \
|
||||
{ \
|
||||
std::string err = "Attempted to read non-existant var \"" + key.as<std::string>() + "\" from " + LUA_CLASS_NAME; \
|
||||
ScriptAssert(false, err);\
|
||||
}
|
||||
|
||||
#define newindex_error_maker(CPP_TYPE, LUA_CLASS_NAME) [](CPP_TYPE & item, sol::object key) \
|
||||
{ \
|
||||
std::string err = "Attempted to set non-existant var \"" + key.as<std::string>() + "\" of " + LUA_CLASS_NAME; \
|
||||
ScriptAssert(false, err);\
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue