mirror of
https://github.com/vcmi/vcmi.git
synced 2025-01-26 03:52:01 +02:00
* added files for Lua handler and moved Lua test code
This commit is contained in:
parent
70ce922fe6
commit
f1d5e686ce
@ -514,7 +514,7 @@ void CTownList::draw()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
blitAtWR(CGI->townh->getPic(items[i]->type),posporx,pospory+i*32);
|
blitAtWR(CGI->townh->getPic(items[i]->town->typeID),posporx,pospory+i*32);
|
||||||
|
|
||||||
if ((selected == iT) && (LOCPLINT->adventureInt->selection.type == TOWNI_TYPE))
|
if ((selected == iT) && (LOCPLINT->adventureInt->selection.type == TOWNI_TYPE))
|
||||||
{
|
{
|
||||||
@ -961,7 +961,10 @@ void CTerrainRect::show()
|
|||||||
pn = 20;
|
pn = 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if ( ((currentPath->nodes[i].dist)-(*(currentPath->nodes.end()-1)).dist) > ((const CHeroInstance*)(LOCPLINT->adventureInt->selection.selected))->movement)
|
||||||
|
pn+=25;
|
||||||
if (pn>=0)
|
if (pn>=0)
|
||||||
{
|
{
|
||||||
int x = 32*(currentPath->nodes[i].coord.x-LOCPLINT->adventureInt->position.x)+7,
|
int x = 32*(currentPath->nodes[i].coord.x-LOCPLINT->adventureInt->position.x)+7,
|
||||||
|
@ -102,8 +102,9 @@ bool CCallback::moveHero(int ID, CPath * path, int idtype, int pathType)
|
|||||||
{
|
{
|
||||||
hero->pos = endpos;
|
hero->pos = endpos;
|
||||||
}*/
|
}*/
|
||||||
//if(CGI->heroh->heroInstances[ID]->movement>=CGI->mh->getCost(stpos, endpos, CGI->heroh->heroInstances[ID]))
|
if((hero->movement>=CGI->mh->getCost(stpos, endpos, hero)) || player==-1)
|
||||||
{ //performing move
|
{ //performing move
|
||||||
|
hero->movement-=CGI->mh->getCost(stpos, endpos, hero);
|
||||||
int nn=0; //number of interfece of currently browsed player
|
int nn=0; //number of interfece of currently browsed player
|
||||||
for(std::map<int, PlayerState>::iterator j=CGI->state->players.begin(); j!=CGI->state->players.end(); ++j)//CGI->state->players.size(); ++j) //for testing
|
for(std::map<int, PlayerState>::iterator j=CGI->state->players.begin(); j!=CGI->state->players.end(); ++j)//CGI->state->players.size(); ++j) //for testing
|
||||||
{
|
{
|
||||||
@ -115,8 +116,8 @@ bool CCallback::moveHero(int ID, CPath * path, int idtype, int pathType)
|
|||||||
break; //for testing only
|
break; //for testing only
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//else
|
else
|
||||||
//return true; //move ended - no more movement points
|
return true; //move ended - no more movement points
|
||||||
hero->pos = curd.dst;
|
hero->pos = curd.dst;
|
||||||
hero->ourObject->pos = curd.dst;
|
hero->ourObject->pos = curd.dst;
|
||||||
}
|
}
|
||||||
|
@ -768,6 +768,7 @@ void CPlayerInterface::heroMoved(const HeroMoveDetails & details)
|
|||||||
//ho->moveDir = 0; //move ended
|
//ho->moveDir = 0; //move ended
|
||||||
ho->isStanding = true;
|
ho->isStanding = true;
|
||||||
//move finished
|
//move finished
|
||||||
|
adventureInt->heroList.draw();
|
||||||
}
|
}
|
||||||
void CPlayerInterface::heroKilled(const CHeroInstance * hero)
|
void CPlayerInterface::heroKilled(const CHeroInstance * hero)
|
||||||
{
|
{
|
||||||
|
56
CLuaHandler.cpp
Normal file
56
CLuaHandler.cpp
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
|
||||||
|
#include "lua.h"
|
||||||
|
#include "lualib.h"
|
||||||
|
#include "lauxlib.h"
|
||||||
|
#include <luabind/luabind.hpp>
|
||||||
|
#include <luabind/function.hpp>
|
||||||
|
#include <luabind/class.hpp>
|
||||||
|
#include "CLuaHandler.h"
|
||||||
|
|
||||||
|
void piszpowitanie2(std::string i) //simple global function for testing
|
||||||
|
{
|
||||||
|
std::cout<<"powitanie2zc++. Liczba dnia to " << i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CLuaHandler::CLuaHandler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CLuaHandler::~CLuaHandler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CLuaHandler::test()
|
||||||
|
{
|
||||||
|
int iErr = 0;
|
||||||
|
lua_State *lua = lua_open (); // Open Lua
|
||||||
|
LUA_OPEN_LIB(lua, luaopen_base);
|
||||||
|
LUA_OPEN_LIB(lua, luaopen_io);
|
||||||
|
|
||||||
|
if ((iErr = luaL_loadfile (lua, "test.lua")) == 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
// Call main...
|
||||||
|
if ((iErr = lua_pcall (lua, 0, LUA_MULTRET, 0)) == 0)
|
||||||
|
{
|
||||||
|
luabind::open(lua);
|
||||||
|
luabind::module(lua)
|
||||||
|
[
|
||||||
|
luabind::def("powitanie",&piszpowitanie2)
|
||||||
|
];
|
||||||
|
|
||||||
|
//int ret = luabind::call_function<int>(lua, "helloWorld2");
|
||||||
|
|
||||||
|
lua_pushstring (lua, "helloWorld2");
|
||||||
|
lua_gettable (lua, LUA_GLOBALSINDEX);
|
||||||
|
lua_pcall (lua, 0, 0, 0);
|
||||||
|
|
||||||
|
// Push the function name onto the stack
|
||||||
|
lua_pushstring (lua, "helloWorld");
|
||||||
|
lua_gettable (lua, LUA_GLOBALSINDEX);
|
||||||
|
lua_pcall (lua, 0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lua_close (lua);
|
||||||
|
}
|
19
CLuaHandler.h
Normal file
19
CLuaHandler.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#ifndef CLUAHANDLER_H
|
||||||
|
#define CLUAHANDLER_H
|
||||||
|
#include "global.h"
|
||||||
|
#if (LUA_VERSION_NUM < 500)
|
||||||
|
# define LUA_OPEN_LIB(L, lib) lib(L)
|
||||||
|
#else
|
||||||
|
# define LUA_OPEN_LIB(L, lib) \
|
||||||
|
lua_pushcfunction((L), lib); \
|
||||||
|
lua_pcall((L), 0, 0, 0);
|
||||||
|
#endif
|
||||||
|
class CLuaHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CLuaHandler();
|
||||||
|
~CLuaHandler();
|
||||||
|
|
||||||
|
void test();
|
||||||
|
};
|
||||||
|
#endif //CLUAHANDLER_H
|
61
CMT.cpp
61
CMT.cpp
@ -43,7 +43,7 @@
|
|||||||
#include "CPathfinder.h"
|
#include "CPathfinder.h"
|
||||||
#include "CGameState.h"
|
#include "CGameState.h"
|
||||||
#include "CCallback.h"
|
#include "CCallback.h"
|
||||||
|
#include "CLuaHandler.h"
|
||||||
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
|
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
|
||||||
# include <fcntl.h>
|
# include <fcntl.h>
|
||||||
# include <io.h>
|
# include <io.h>
|
||||||
@ -58,25 +58,6 @@ const char * NAME = "VCMI 0.3 \"Tol Galen\"";
|
|||||||
SDL_Surface * ekran, * screen, * screen2;
|
SDL_Surface * ekran, * screen, * screen2;
|
||||||
TTF_Font * TNRB16, *TNR, *GEOR13, *GEORXX, *GEORM;
|
TTF_Font * TNRB16, *TNR, *GEOR13, *GEORXX, *GEORM;
|
||||||
|
|
||||||
#include "lua.h"
|
|
||||||
#include "lualib.h"
|
|
||||||
#include "lauxlib.h"
|
|
||||||
#include <luabind/luabind.hpp>
|
|
||||||
#include <luabind/function.hpp>
|
|
||||||
#include <luabind/class.hpp>
|
|
||||||
|
|
||||||
#if (LUA_VERSION_NUM < 500)
|
|
||||||
# define LUA_OPEN_LIB(L, lib) lib(L)
|
|
||||||
#else
|
|
||||||
# define LUA_OPEN_LIB(L, lib) \
|
|
||||||
lua_pushcfunction((L), lib); \
|
|
||||||
lua_pcall((L), 0, 0, 0);
|
|
||||||
#endif
|
|
||||||
void piszpowitanie2(std::string i)
|
|
||||||
{
|
|
||||||
std::cout<<"powitanie2zc++. Liczba dnia to " << i;
|
|
||||||
}
|
|
||||||
|
|
||||||
void initGameState(CGameInfo * cgi)
|
void initGameState(CGameInfo * cgi)
|
||||||
{
|
{
|
||||||
cgi->state->day=1;
|
cgi->state->day=1;
|
||||||
@ -170,7 +151,8 @@ void initGameState(CGameInfo * cgi)
|
|||||||
{
|
{
|
||||||
CTownInstance * vti = new CTownInstance();
|
CTownInstance * vti = new CTownInstance();
|
||||||
(*vti)=*(cgi->townh->townInstances[i]);
|
(*vti)=*(cgi->townh->townInstances[i]);
|
||||||
|
if (vti->name.length()==0) // if town hasn't name we draw it
|
||||||
|
vti->name=vti->town->names[rand()%vti->town->names.size()];
|
||||||
|
|
||||||
cgi->state->players[vti->owner].towns.push_back(vti);
|
cgi->state->players[vti->owner].towns.push_back(vti);
|
||||||
}
|
}
|
||||||
@ -178,41 +160,8 @@ void initGameState(CGameInfo * cgi)
|
|||||||
|
|
||||||
int _tmain(int argc, _TCHAR* argv[])
|
int _tmain(int argc, _TCHAR* argv[])
|
||||||
{
|
{
|
||||||
|
CLuaHandler luatest;
|
||||||
int iErr = 0;
|
luatest.test();
|
||||||
lua_State *lua = lua_open (); // Open Lua
|
|
||||||
LUA_OPEN_LIB(lua, luaopen_base);
|
|
||||||
LUA_OPEN_LIB(lua, luaopen_io);
|
|
||||||
|
|
||||||
if ((iErr = luaL_loadfile (lua, "test.lua")) == 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
// Call main...
|
|
||||||
if ((iErr = lua_pcall (lua, 0, LUA_MULTRET, 0)) == 0)
|
|
||||||
{
|
|
||||||
luabind::open(lua);
|
|
||||||
luabind::module(lua)
|
|
||||||
[
|
|
||||||
luabind::def("powitanie",&piszpowitanie2)
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
//int ret = luabind::call_function<int>(lua, "helloWorld2");
|
|
||||||
|
|
||||||
lua_pushstring (lua, "helloWorld2");
|
|
||||||
lua_gettable (lua, LUA_GLOBALSINDEX);
|
|
||||||
lua_pcall (lua, 0, 0, 0);
|
|
||||||
|
|
||||||
// Push the function name onto the stack
|
|
||||||
lua_pushstring (lua, "helloWorld");
|
|
||||||
lua_gettable (lua, LUA_GLOBALSINDEX);
|
|
||||||
lua_pcall (lua, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
lua_close (lua);
|
|
||||||
|
|
||||||
|
|
||||||
//CBIKHandler cb;
|
//CBIKHandler cb;
|
||||||
//cb.open("CSECRET.BIK");
|
//cb.open("CSECRET.BIK");
|
||||||
|
@ -1508,14 +1508,14 @@ void CAmbarCendamo::deh3m()
|
|||||||
nobj->owner = spec->player;
|
nobj->owner = spec->player;
|
||||||
nobj->info = spec;
|
nobj->info = spec;
|
||||||
//////////// rewriting info to CTownInstance class /////////////////////
|
//////////// rewriting info to CTownInstance class /////////////////////
|
||||||
CTownInstance * nt = new CTownInstance;
|
CTownInstance * nt = new CTownInstance();
|
||||||
nt->owner = spec->player;
|
nt->owner = spec->player;
|
||||||
nt->type = CTownHandler::getTypeByDefName(map.defy[nobj->defNumber].name);
|
nt->town = &CGI->townh->towns[CTownHandler::getTypeByDefName(map.defy[nobj->defNumber].name)];
|
||||||
nt->builded = 0;
|
nt->builded = 0;
|
||||||
nt->destroyed = 0;
|
nt->destroyed = 0;
|
||||||
nt->name = spec->name;
|
nt->name = spec->name;
|
||||||
nt->garrison = spec->garrison;
|
nt->garrison = spec->garrison;
|
||||||
nt->garrisonHero = spec->garnisonHero;
|
nt->garrisonHero = NULL;// spec->garnisonHero is not readed - TODO: readit
|
||||||
nt->pos = int3(spec->x, spec->y, spec->z);
|
nt->pos = int3(spec->x, spec->y, spec->z);
|
||||||
nt->possibleSpells = spec->possibleSpells;
|
nt->possibleSpells = spec->possibleSpells;
|
||||||
nt->obligatorySpells = spec->obligatorySpells;
|
nt->obligatorySpells = spec->obligatorySpells;
|
||||||
@ -2844,6 +2844,14 @@ void CAmbarCendamo::processMap(std::vector<std::string> & defsToUnpack)
|
|||||||
{
|
{
|
||||||
town1DefNumbers[nxt.bytes[20]] = map.defy.size()-1;
|
town1DefNumbers[nxt.bytes[20]] = map.defy.size()-1;
|
||||||
}
|
}
|
||||||
|
for (int ij=0;ij<CGI->townh->townInstances.size();ij++) // wyharatac gdy bedzie dziedziczenie
|
||||||
|
{
|
||||||
|
if (CGI->townh->townInstances[ij]->pos==CGI->objh->objInstances[j]->pos)
|
||||||
|
{
|
||||||
|
CGI->townh->townInstances[ij]->town = &CGI->townh->towns[nxt.bytes[20]];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//((CCastleObjInfo*)CGI->objh->objInstances[j].info)
|
//((CCastleObjInfo*)CGI->objh->objInstances[j].info)
|
||||||
break;
|
break;
|
||||||
|
@ -17,6 +17,7 @@ void CTownHandler::loadNames()
|
|||||||
std::istringstream ins, names;
|
std::istringstream ins, names;
|
||||||
ins.str(CGI->bitmaph->getTextFile("TOWNTYPE.TXT"));
|
ins.str(CGI->bitmaph->getTextFile("TOWNTYPE.TXT"));
|
||||||
names.str(CGI->bitmaph->getTextFile("TOWNNAME.TXT"));
|
names.str(CGI->bitmaph->getTextFile("TOWNNAME.TXT"));
|
||||||
|
int si=0;
|
||||||
while (!ins.eof())
|
while (!ins.eof())
|
||||||
{
|
{
|
||||||
CTown town;
|
CTown town;
|
||||||
@ -27,6 +28,7 @@ void CTownHandler::loadNames()
|
|||||||
names.getline(bufname,50);
|
names.getline(bufname,50);
|
||||||
town.names.push_back(std::string(bufname));
|
town.names.push_back(std::string(bufname));
|
||||||
}
|
}
|
||||||
|
town.typeID=si++;
|
||||||
town.bonus=towns.size();
|
town.bonus=towns.size();
|
||||||
if (town.bonus==8) town.bonus=3;
|
if (town.bonus==8) town.bonus=3;
|
||||||
if (town.name.length())
|
if (town.name.length())
|
||||||
@ -60,3 +62,13 @@ int CTownHandler::getTypeByDefName(std::string name)
|
|||||||
//TODO
|
//TODO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CTownInstance::CTownInstance()
|
||||||
|
:pos(-1,-1,-1)
|
||||||
|
{
|
||||||
|
builded=-1;
|
||||||
|
destroyed=-1;
|
||||||
|
garrisonHero=NULL;
|
||||||
|
owner=-1;
|
||||||
|
town=NULL;
|
||||||
|
}
|
@ -19,6 +19,7 @@ public:
|
|||||||
std::string name; //name of type
|
std::string name; //name of type
|
||||||
std::vector<std::string> names; //names of the town instances
|
std::vector<std::string> names; //names of the town instances
|
||||||
int bonus; //pic number
|
int bonus; //pic number
|
||||||
|
int typeID;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CTownHandler
|
class CTownHandler
|
||||||
@ -39,7 +40,6 @@ public:
|
|||||||
class CTownInstance
|
class CTownInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int type; //type of town
|
|
||||||
int owner; //ID of owner
|
int owner; //ID of owner
|
||||||
int3 pos; //position
|
int3 pos; //position
|
||||||
CTown * town;
|
CTown * town;
|
||||||
@ -56,6 +56,8 @@ public:
|
|||||||
CHero * garrisonHero;
|
CHero * garrisonHero;
|
||||||
|
|
||||||
std::vector<CSpell *> possibleSpells, obligatorySpells, availableSpells;
|
std::vector<CSpell *> possibleSpells, obligatorySpells, availableSpells;
|
||||||
|
|
||||||
|
CTownInstance();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //CTOWNHANDLER_H
|
#endif //CTOWNHANDLER_H
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user