Browse Source

Add audio functionality to Lua

pull/6768/head
Anders Jenbo 2 years ago
parent
commit
4fe90f7b74
  1. 1
      Source/CMakeLists.txt
  2. 2
      Source/lua/lua.cpp
  3. 25
      Source/lua/modules/audio.cpp
  4. 9
      Source/lua/modules/audio.hpp

1
Source/CMakeLists.txt

@ -134,6 +134,7 @@ set(libdevilutionx_SRCS
lua/lua.cpp
lua/repl.cpp
lua/modules/audio.cpp
lua/modules/render.cpp
lua/modules/log.cpp

2
Source/lua/lua.cpp

@ -10,6 +10,7 @@
#include "appfat.h"
#include "engine/assets.hpp"
#include "lua/modules/audio.hpp"
#include "lua/modules/log.hpp"
#include "lua/modules/render.hpp"
#include "plrmsg.h"
@ -163,6 +164,7 @@ void LuaInitialize()
const sol::table loaded = lua.create_table_with(
"devilutionx.version", PROJECT_VERSION,
"devilutionx.log", LuaLogModule(lua),
"devilutionx.audio", LuaLogModule(lua),
"devilutionx.render", LuaRenderModule(lua),
"devilutionx.message", [](std::string_view text) { EventPlrMsg(text, UiFlags::ColorRed); });
lua["require"] = lua["requireGen"](loaded, LuaLoadScriptFromAssets);

25
Source/lua/modules/audio.cpp

@ -0,0 +1,25 @@
#include "lua/modules/render.hpp"
#include <sol/sol.hpp>
#include "effects.h"
namespace devilution {
namespace {
bool IsValidSfx(int16_t psfx)
{
return psfx >= 0 && psfx <= static_cast<int16_t>(SfxID::LAST);
}
} // namespace
sol::table LuaAudioModule(sol::state_view &lua)
{
return lua.create_table_with(
"playSfx", [](int psfx) { if (IsValidSfx(psfx)) PlaySFX(static_cast<SfxID>(psfx)); },
"playSfxLoc", [](int psfx, int x, int y) { if (IsValidSfx(psfx)) PlaySfxLoc(static_cast<SfxID>(psfx), { x, y }); });
}
} // namespace devilution

9
Source/lua/modules/audio.hpp

@ -0,0 +1,9 @@
#pragma once
#include <sol/sol.hpp>
namespace devilution {
sol::table LuaAudioModule(sol::state_view &lua);
} // namespace devilution
Loading…
Cancel
Save