Skip to content

Commit 570b920

Browse files
committed
add CallLuaEventReturn template
1 parent cd410eb commit 570b920

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

Source/lua/lua_global.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,16 @@ sol::object CallLuaEvent(std::string_view name, Args &&...args)
330330
return SafeCallResult(fn(std::forward<Args>(args)...), /*optional=*/true);
331331
}
332332

333+
template <typename Ret, typename... Args>
334+
std::optional<Ret> CallLuaEventReturn(std::string_view name, Args &&...args)
335+
{
336+
sol::object result = CallLuaEvent(name, std::forward<Args>(args)...);
337+
if (result.is<Ret>()) {
338+
return result.as<Ret>();
339+
}
340+
return std::nullopt;
341+
}
342+
333343
void LuaEvent(std::string_view name)
334344
{
335345
CallLuaEvent(name);
@@ -357,11 +367,7 @@ void LuaEvent(std::string_view name, const Player *player, uint32_t arg1)
357367

358368
bool LuaEvent(std::string_view name, const Player *player)
359369
{
360-
sol::object result = CallLuaEvent(name, player);
361-
if (result.is<bool>()) {
362-
return result.as<bool>();
363-
}
364-
return false;
370+
return CallLuaEventReturn<bool>(name, player).value_or(false);
365371
}
366372

367373
sol::state &GetLuaState()

0 commit comments

Comments
 (0)