Add ScriptInterfaceFlow and ScriptInterfaceState. Add references.

This commit is contained in:
hispidence 2022-01-25 23:50:12 +00:00
parent b59b7e4a1c
commit 4429bd8aa2
6 changed files with 82 additions and 3 deletions

View file

@ -40,6 +40,7 @@
<ClInclude Include="include\ItemEnumPair.h" />
<ClInclude Include="include\ReservedScriptNames.h" />
<ClInclude Include="include\ScriptAssert.h" />
<ClInclude Include="include\Scripting\AudioTracks.h" />
<ClInclude Include="include\Scripting\GameFlowScript.h" />
<ClInclude Include="include\Scripting\GameLogicScript.h" />
<ClInclude Include="include\Scripting\GameScriptAIObject.h" />
@ -61,12 +62,16 @@
<ClInclude Include="include\Scripting\GameScriptSinkInfo.h" />
<ClInclude Include="include\Scripting\GameScriptSkyLayer.h" />
<ClInclude Include="include\Scripting\GameScriptSoundSourceInfo.h" />
<ClInclude Include="include\Scripting\InventorySlots.h" />
<ClInclude Include="include\Scripting\ItemEnumPair.h" />
<ClInclude Include="include\Scripting\LuaHandler.h" />
<ClInclude Include="include\Scripting\ObjectIDs.h" />
<ClInclude Include="include\Scripting\ReservedScriptNames.h" />
<ClInclude Include="include\Scripting\ScriptAssert.h" />
<ClInclude Include="include\Scripting\ScriptInterfaceFlow.h" />
<ClInclude Include="include\Scripting\ScriptInterfaceGame.h" />
<ClInclude Include="include\Scripting\ScriptInterfaceLevel.h" />
<ClInclude Include="include\Scripting\ScriptInterfaceState.h" />
<ClInclude Include="include\Scripting\ScriptUtil.h" />
<ClInclude Include="include\ScriptInterfaceGame.h" />
<ClInclude Include="include\ScriptInterfaceLevel.h" />
@ -79,6 +84,7 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="src\GameFlowScript.cpp" />
<ClCompile Include="src\ScriptInterfaceState.cpp" />
<ClCompile Include="src\GameLogicScript.cpp" />
<ClCompile Include="src\GameScriptAIObject.cpp" />
<ClCompile Include="src\GameScriptAnimations.cpp" />
@ -264,4 +270,4 @@
<Error Condition="!Exists('..\packages\Microsoft.XAudio2.Redist.1.2.8\build\native\Microsoft.XAudio2.Redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.XAudio2.Redist.1.2.8\build\native\Microsoft.XAudio2.Redist.targets'))" />
<Error Condition="!Exists('..\packages\directxtk_desktop_2017.2021.11.8.1\build\native\directxtk_desktop_2017.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\directxtk_desktop_2017.2021.11.8.1\build\native\directxtk_desktop_2017.targets'))" />
</Target>
</Project>
</Project>

View file

@ -171,6 +171,21 @@
<ClInclude Include="include\Scripting\GameFlowScript.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Scripting\InventorySlots.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Scripting\ObjectIDs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Scripting\AudioTracks.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Scripting\ScriptInterfaceFlow.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Scripting\ScriptInterfaceState.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="frameworkandsol.cpp">
@ -242,8 +257,11 @@
<ClCompile Include="src\ScriptAssert.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\ScriptInterfaceState.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
</Project>
</Project>

View file

@ -0,0 +1,17 @@
#pragma once
class ScriptInterfaceFlow {
public:
virtual ~ScriptInterfaceFlow() = default;
virtual void LoadGameFlowScript() = 0;
virtual int GetNumLevels() const = 0;
virtual char const* GetString(const char* id) const = 0;
virtual bool IsFlyCheatEnabled() const = 0;
virtual bool HasCrawlExtended() const = 0;
virtual bool HasCrouchRoll() const = 0;
virtual bool HasCrawlspaceSwandive() const = 0;
virtual bool HasMonkeyTurn180() const = 0;
virtual bool HasMonkeyAutoJump() const = 0;
virtual bool HasOscillateHang() const = 0;
virtual bool HasAFKPose() const = 0;
};

View file

@ -0,0 +1,12 @@
#pragma once
#include "ScriptInterfaceGame.h"
#include "ScriptInterfaceFlow.h"
class ScriptInterfaceState
{
public:
static ScriptInterfaceGame* CreateGame();
static ScriptInterfaceFlow* CreateFlow();
static void ScriptInterfaceState::Init();
};

View file

@ -0,0 +1,27 @@
#include "frameworkandsol.h"
#include "ScriptInterfaceState.h"
#include "GameLogicScript.h"
#include "GameFlowScript.h"
sol::state g_solState;
int lua_exception_handler(lua_State* L, sol::optional<std::exception const &> maybe_exception, sol::string_view description)
{
return luaL_error(L, description.data());
}
ScriptInterfaceGame* ScriptInterfaceState::CreateGame()
{
return new GameScript(&g_solState);
}
ScriptInterfaceFlow* ScriptInterfaceState::CreateFlow()
{
return new GameFlow(&g_solState);
}
void ScriptInterfaceState::Init()
{
g_solState.open_libraries(sol::lib::base, sol::lib::math);
g_solState.set_exception_handler(lua_exception_handler);
}