<project name="Cocos2d-xToLua" default="create-lua-bindings" basedir=".">
    <description>
        Utilises tolua++ to create the lua bindings to expose cocos2d-x functionality to lua
    </description>
    <property name="tolua++" location="tolua++.exe"/>

  <target name="cocos2d-x-bindings">
    <echo message="Calling tolua++" />
    <exec executable="${tolua++}">
      <arg value="-L" />
      <arg value="basic.lua" />
      <arg value="-o"/>
      <arg value="LuaCocos2d.cpp"/>
      <arg value="Cocos2d.pkg"/>
    </exec>
    <echo message="Patching resultant lua bindings" />

    <replace file="LuaCocos2d.cpp">
      <replacetoken><![CDATA[tolua_pushusertype_ccobject(tolua_S,(void*)tolua_ret]]></replacetoken>
      <replacevalue><![CDATA[int nID = (tolua_ret) ? tolua_ret->m_uID : -1;
    int* pLuaID = (tolua_ret) ? &tolua_ret->m_nLuaID : NULL;
    tolua_pushusertype_ccobject(tolua_S, nID, pLuaID, (void*)tolua_ret]]></replacevalue>
    </replace>

    <replace file="LuaCocos2d.cpp">
      <replacetoken><![CDATA[unsigned void* tolua_ret = (unsigned void*)  self->getTiles();]]></replacetoken>
      <replacevalue><![CDATA[unsigned int* tolua_ret = (unsigned int*)  self->getTiles();]]></replacevalue>
    </replace>

    <replace file="LuaCocos2d.cpp">
      <replacetoken><![CDATA[ccColor3B color = *((ccColor3B*)  tolua_tousertype(tolua_S,4,(void*)&(const ccColor3B)ccBLACK));]]></replacetoken>
      <replacevalue><![CDATA[const ccColor3B clr = ccBLACK;
  ccColor3B color = *((ccColor3B*)  tolua_tousertype(tolua_S,4,(void*)&clr));]]></replacevalue>
    </replace>

    <replace file="LuaCocos2d.cpp">
      <replacetoken><![CDATA["LUA_FUNCTION",0,&tolua_err]]></replacetoken>
      <replacevalue><![CDATA[&tolua_err]]></replacevalue>
    </replace>

    <replace file="LuaCocos2d.cpp">
      <replacetoken><![CDATA[LUA_FUNCTION funcID = *((LUA_FUNCTION*)  tolua_ref_function(tolua_S,]]></replacetoken>
      <replacevalue><![CDATA[int funcID = (tolua_ref_function(tolua_S,]]></replacevalue>
    </replace>

    <replace file="LuaCocos2d.cpp">
      <replacetoken><![CDATA[#ifndef __cplusplus
#include "stdlib.h"
#endif
#include "string.h"

#include "tolua++.h"

/* Exported function */
TOLUA_API int  tolua_Cocos2d_open (lua_State* tolua_S);]]></replacetoken>
      <replacevalue><![CDATA[#include <vector>
#include <map>
#include "LuaCocos2d.h"
#include "tolua_fix.h"
#include "cocos2d.h"
//#include "CCRibbon.h"
#include "SimpleAudioEngine.h"

using namespace cocos2d;
using namespace CocosDenshion;
]]></replacevalue>
    </replace>

    <echo message="Copying new bindings to target location" />
    <move file="LuaCocos2d.cpp" todir="../../scripting/lua/cocos2dx_support/"/>
  </target>
  <target name="create-lua-bindings" depends="cocos2d-x-bindings" />
</project>