Changed OnWeatherChanging hook to always read the returned weather.
Ref.: http://forum.mc-server.org/showthread.php?tid=1512
This commit is contained in:
parent
78dd02f0c7
commit
2dbed03cbc
|
@ -811,6 +811,18 @@ void cLuaState::GetStackValue(int a_StackPos, double & a_ReturnedVal)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cLuaState::GetStackValue(int a_StackPos, eWeather & a_ReturnedVal)
|
||||||
|
{
|
||||||
|
if (lua_isnumber(m_LuaState, a_StackPos))
|
||||||
|
{
|
||||||
|
a_ReturnedVal = (eWeather)Clamp((int)tolua_tonumber(m_LuaState, a_StackPos, a_ReturnedVal), (int)wSunny, (int)wThunderstorm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cLuaState::CallFunction(int a_NumResults)
|
bool cLuaState::CallFunction(int a_NumResults)
|
||||||
{
|
{
|
||||||
ASSERT (m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
|
ASSERT (m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
|
||||||
|
|
|
@ -30,6 +30,7 @@ extern "C"
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "../Vector3.h"
|
#include "../Vector3.h"
|
||||||
|
#include "../Defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -222,6 +223,10 @@ public:
|
||||||
/** Retrieve value at a_StackPos, if it is a valid number. If not, a_Value is unchanged */
|
/** Retrieve value at a_StackPos, if it is a valid number. If not, a_Value is unchanged */
|
||||||
void GetStackValue(int a_StackPos, double & a_Value);
|
void GetStackValue(int a_StackPos, double & a_Value);
|
||||||
|
|
||||||
|
/** Retrieve value at a_StackPos, if it is a valid number, converting and clamping it to eWeather.
|
||||||
|
If not, a_Value is unchanged. */
|
||||||
|
void GetStackValue(int a_StackPos, eWeather & a_Value);
|
||||||
|
|
||||||
|
|
||||||
/** Call any 0-param 0-return Lua function in a single line: */
|
/** Call any 0-param 0-return Lua function in a single line: */
|
||||||
template <typename FnT>
|
template <typename FnT>
|
||||||
|
|
|
@ -1347,18 +1347,15 @@ bool cPluginLua::OnWeatherChanging(cWorld & a_World, eWeather & a_NewWeather)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CriticalSection);
|
cCSLock Lock(m_CriticalSection);
|
||||||
bool res = false;
|
bool res = false;
|
||||||
int NewWeather = a_NewWeather;
|
|
||||||
cLuaRefs & Refs = m_HookMap[cPluginManager::HOOK_WEATHER_CHANGING];
|
cLuaRefs & Refs = m_HookMap[cPluginManager::HOOK_WEATHER_CHANGING];
|
||||||
for (cLuaRefs::iterator itr = Refs.begin(), end = Refs.end(); itr != end; ++itr)
|
for (cLuaRefs::iterator itr = Refs.begin(), end = Refs.end(); itr != end; ++itr)
|
||||||
{
|
{
|
||||||
m_LuaState.Call((int)(**itr), &a_World, NewWeather, cLuaState::Return, res, NewWeather);
|
m_LuaState.Call((int)(**itr), &a_World, a_NewWeather, cLuaState::Return, res, a_NewWeather);
|
||||||
if (res)
|
if (res)
|
||||||
{
|
{
|
||||||
a_NewWeather = (eWeather)NewWeather;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a_NewWeather = (eWeather)NewWeather;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue