mirror of https://github.com/axmolengine/axmol.git
[luabinding] make CCAssert compatible Lua
This commit is contained in:
parent
4615a4a1ff
commit
cc69e39c8a
|
@ -35,7 +35,12 @@ THE SOFTWARE.
|
|||
#include "CCStdC.h"
|
||||
|
||||
#ifndef CCAssert
|
||||
#if CC_LUA_ENGINE_ENABLED > 0
|
||||
extern void cc_lua_assert(bool cond, const char *msg);
|
||||
#define CCAssert(cond, msg) cc_lua_assert(cond, msg)
|
||||
#else
|
||||
#define CCAssert(cond, msg) CC_ASSERT(cond)
|
||||
#endif
|
||||
#endif // CCAssert
|
||||
|
||||
#include "ccConfig.h"
|
||||
|
|
|
@ -440,7 +440,7 @@ bool CCTexturePVR::unpackPVRv3Data(unsigned char* dataPointer, unsigned int data
|
|||
bytes = dataPointer;
|
||||
|
||||
m_uNumberOfMipmaps = header->numberOfMipmaps;
|
||||
CCAssert(m_uNumberOfMipmaps < CC_PVRMIPMAP_MAX, @"TexturePVR: Maximum number of mimpaps reached. Increate the CC_PVRMIPMAP_MAX value");
|
||||
CCAssert(m_uNumberOfMipmaps < CC_PVRMIPMAP_MAX, "TexturePVR: Maximum number of mimpaps reached. Increate the CC_PVRMIPMAP_MAX value");
|
||||
|
||||
for (unsigned int i = 0; i < m_uNumberOfMipmaps; i++)
|
||||
{
|
||||
|
|
|
@ -40,6 +40,20 @@ extern "C" {
|
|||
#include "Cocos2dxLuaLoader.h"
|
||||
#endif
|
||||
|
||||
static bool in_lua_execute = false;
|
||||
static lua_State *in_lua_state = NULL;
|
||||
|
||||
void cc_lua_assert(bool cond, const char *msg)
|
||||
{
|
||||
if (!cond && in_lua_execute && in_lua_state)
|
||||
{
|
||||
lua_pushfstring(in_lua_state, "ASSERT FAILED ON LUA EXECUTE: %s", msg ? msg : "unknown");
|
||||
lua_error(in_lua_state);
|
||||
return;
|
||||
}
|
||||
CC_ASSERT(cond);
|
||||
}
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
// #pragma mark -
|
||||
|
@ -238,7 +252,11 @@ void CCLuaEngine::addSearchPath(const char* path)
|
|||
|
||||
int CCLuaEngine::executeString(const char *codes)
|
||||
{
|
||||
int nRet = luaL_dostring(m_state, codes);
|
||||
in_lua_execute = true;
|
||||
in_lua_state = m_state;
|
||||
int nRet = luaL_dostring(m_state, codes);
|
||||
in_lua_execute = false;
|
||||
in_lua_state = NULL;
|
||||
lua_gc(m_state, LUA_GCCOLLECT, 0);
|
||||
|
||||
if (nRet != 0)
|
||||
|
@ -252,7 +270,11 @@ int CCLuaEngine::executeString(const char *codes)
|
|||
|
||||
int CCLuaEngine::executeScriptFile(const char* filename)
|
||||
{
|
||||
in_lua_execute = true;
|
||||
in_lua_state = m_state;
|
||||
int nRet = luaL_dofile(m_state, filename);
|
||||
in_lua_execute = false;
|
||||
in_lua_state = NULL;
|
||||
// lua_gc(m_state, LUA_GCCOLLECT, 0);
|
||||
|
||||
if (nRet != 0)
|
||||
|
@ -274,7 +296,11 @@ int CCLuaEngine::executeGlobalFunction(const char* functionName)
|
|||
return 0;
|
||||
}
|
||||
|
||||
in_lua_execute = true;
|
||||
in_lua_state = m_state;
|
||||
int error = lua_pcall(m_state, 0, 1, 0); /* call function, stack: ret */
|
||||
in_lua_execute = false;
|
||||
in_lua_state = NULL;
|
||||
// lua_gc(m_state, LUA_GCCOLLECT, 0);
|
||||
|
||||
if (error)
|
||||
|
@ -498,7 +524,11 @@ int CCLuaEngine::executeFunctionByHandler(int nHandler, int numArgs)
|
|||
}
|
||||
|
||||
int error = 0;
|
||||
in_lua_execute = true;
|
||||
in_lua_state = m_state;
|
||||
error = lua_pcall(m_state, numArgs, 1, traceback); /* stack: ... ret */
|
||||
in_lua_execute = false;
|
||||
in_lua_state = NULL;
|
||||
if (error)
|
||||
{
|
||||
if (traceback == 0)
|
||||
|
|
|
@ -36,6 +36,8 @@ extern "C" {
|
|||
#include "base_nodes/CCNode.h"
|
||||
#include "script_support/CCScriptSupport.h"
|
||||
|
||||
void cc_lua_assert(bool cond, const char *msg);
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
typedef int LUA_FUNCTION;
|
||||
|
|
Loading…
Reference in New Issue