mirror of
https://github.com/vcmi/vcmi.git
synced 2025-04-23 12:08:45 +02:00
* a lot of improvements
* started making an infobar
This commit is contained in:
parent
cfc94847a1
commit
8421c901a4
@ -163,7 +163,7 @@ CHeroList::CHeroList()
|
|||||||
|
|
||||||
void CHeroList::init()
|
void CHeroList::init()
|
||||||
{
|
{
|
||||||
bg = SDL_CreateRGBSurface(ekran->flags,68,193,ekran->format->BitsPerPixel,ekran->format->Rmask,ekran->format->Gmask,ekran->format->Bmask,ekran->format->Amask);
|
bg = CSDL_Ext::newSurface(68,193,ekran);
|
||||||
SDL_BlitSurface(LOCPLINT->adventureInt->bg,&genRect(193,68,607,196),bg,&genRect(193,68,0,0));
|
SDL_BlitSurface(LOCPLINT->adventureInt->bg,&genRect(193,68,607,196),bg,&genRect(193,68,0,0));
|
||||||
}
|
}
|
||||||
void CHeroList::genList()
|
void CHeroList::genList()
|
||||||
@ -171,7 +171,7 @@ void CHeroList::genList()
|
|||||||
int howMany = LOCPLINT->cb->howManyHeroes(LOCPLINT->playerID);
|
int howMany = LOCPLINT->cb->howManyHeroes(LOCPLINT->playerID);
|
||||||
for (int i=0;i<howMany;i++)
|
for (int i=0;i<howMany;i++)
|
||||||
{
|
{
|
||||||
items.push_back(LOCPLINT->cb->getHeroInfo(LOCPLINT->playerID,i,0));
|
items.push_back(std::pair<const CHeroInstance *,CPath *>(LOCPLINT->cb->getHeroInfo(LOCPLINT->playerID,i,0),NULL));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void CHeroList::select(int which)
|
void CHeroList::select(int which)
|
||||||
@ -180,9 +180,10 @@ void CHeroList::select(int which)
|
|||||||
if (which>=items.size())
|
if (which>=items.size())
|
||||||
which=items.size();
|
which=items.size();
|
||||||
draw();
|
draw();
|
||||||
LOCPLINT->adventureInt->centerOn(items[which]->pos);
|
LOCPLINT->adventureInt->centerOn(items[which].first->pos);
|
||||||
LOCPLINT->adventureInt->selection.type = &HEROI_TYPE;
|
LOCPLINT->adventureInt->selection.type = HEROI_TYPE;
|
||||||
LOCPLINT->adventureInt->selection.selected = items[which];
|
LOCPLINT->adventureInt->selection.selected = items[which].first;
|
||||||
|
LOCPLINT->adventureInt->terrain.currentPath = items[which].second;
|
||||||
}
|
}
|
||||||
void CHeroList::clickLeft(tribool down)
|
void CHeroList::clickLeft(tribool down)
|
||||||
{
|
{
|
||||||
@ -272,7 +273,7 @@ void CHeroList::mouseMoved (SDL_MouseMotionEvent & sEvent)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
std::vector<std::string> temp;
|
std::vector<std::string> temp;
|
||||||
temp+=(items[from+ny]->name),(items[from+ny]->type->heroClass->name);
|
temp+=(items[from+ny].first->name),(items[from+ny].first->type->heroClass->name);
|
||||||
LOCPLINT->adventureInt->statusbar.print( processStr(CGI->generaltexth->allTexts[15],temp) );
|
LOCPLINT->adventureInt->statusbar.print( processStr(CGI->generaltexth->allTexts[15],temp) );
|
||||||
//select(ny+from);
|
//select(ny+from);
|
||||||
}
|
}
|
||||||
@ -473,7 +474,7 @@ void CMinimap::redraw(int level)// (level==-1) => redraw all levels
|
|||||||
if ((level>=0) && (i!=level))
|
if ((level>=0) && (i!=level))
|
||||||
continue;
|
continue;
|
||||||
if (map.size()<i+1)
|
if (map.size()<i+1)
|
||||||
pom = SDL_CreateRGBSurface(ekran->flags,pos.w,pos.h,ekran->format->BitsPerPixel,ekran->format->Rmask,ekran->format->Gmask,ekran->format->Bmask,ekran->format->Amask);
|
pom = CSDL_Ext::newSurface(pos.w,pos.h,ekran);
|
||||||
else pom = map[i];
|
else pom = map[i];
|
||||||
for (int x=0;x<pos.w;x++)
|
for (int x=0;x<pos.w;x++)
|
||||||
{
|
{
|
||||||
@ -578,23 +579,36 @@ void CTerrainRect::clickLeft(tribool down)
|
|||||||
{
|
{
|
||||||
if ((down==false) || indeterminate(down))
|
if ((down==false) || indeterminate(down))
|
||||||
return;
|
return;
|
||||||
|
if (LOCPLINT->adventureInt->selection.type != HEROI_TYPE)
|
||||||
|
{
|
||||||
|
if (currentPath)
|
||||||
|
{
|
||||||
|
delete currentPath;
|
||||||
|
currentPath = NULL;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
int3 mp;
|
int3 mp;
|
||||||
mp.x = LOCPLINT->adventureInt->position.x + ((LOCPLINT->current->motion.x-pos.x)/32);
|
mp.x = LOCPLINT->adventureInt->position.x + ((LOCPLINT->current->motion.x-pos.x)/32);
|
||||||
mp.y = LOCPLINT->adventureInt->position.y + ((LOCPLINT->current->motion.y-pos.y)/32);
|
mp.y = LOCPLINT->adventureInt->position.y + ((LOCPLINT->current->motion.y-pos.y)/32);
|
||||||
mp.z = LOCPLINT->adventureInt->position.z;
|
mp.z = LOCPLINT->adventureInt->position.z;
|
||||||
|
if ((mp.x<0) || (mp.y<0))
|
||||||
|
return;
|
||||||
if (currentPath)
|
if (currentPath)
|
||||||
{
|
{
|
||||||
if ( (currentPath->endPos()) == mp)
|
if ( (currentPath->endPos()) == mp)
|
||||||
{ //move
|
{ //move
|
||||||
|
LOCPLINT->cb->moveHero(0,currentPath->endPos());//todo - move selected hero
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
delete currentPath;
|
delete currentPath;
|
||||||
|
currentPath=NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const CHeroInstance * currentHero = LOCPLINT->adventureInt->heroList.items[LOCPLINT->adventureInt->heroList.selected];
|
const CHeroInstance * currentHero = LOCPLINT->adventureInt->heroList.items[LOCPLINT->adventureInt->heroList.selected].first;
|
||||||
currentPath = CGI->pathf->getPath(currentHero->pos,mp,currentHero);
|
currentPath = LOCPLINT->adventureInt->heroList.items[LOCPLINT->adventureInt->heroList.selected].second = CGI->pathf->getPath(currentHero->pos,mp,currentHero);
|
||||||
}
|
}
|
||||||
void CTerrainRect::clickRight(tribool down)
|
void CTerrainRect::clickRight(tribool down)
|
||||||
{
|
{
|
||||||
@ -860,7 +874,19 @@ void CResDataBar::draw()
|
|||||||
updateRect(&pos,ekran);
|
updateRect(&pos,ekran);
|
||||||
delete buf;
|
delete buf;
|
||||||
}
|
}
|
||||||
|
CInfoBar::CInfoBar()
|
||||||
|
{
|
||||||
|
pos.x=604;
|
||||||
|
pos.y=389;
|
||||||
|
pos.w=194;
|
||||||
|
pos.h=186;
|
||||||
|
}
|
||||||
|
void CInfoBar::draw(void * specific)
|
||||||
|
{
|
||||||
|
SDL_Surface * todr = LOCPLINT->infoWin(specific);
|
||||||
|
blitAt(todr,pos.x,pos.y);
|
||||||
|
SDL_FreeSurface(todr);
|
||||||
|
}
|
||||||
CAdvMapInt::CAdvMapInt(int Player)
|
CAdvMapInt::CAdvMapInt(int Player)
|
||||||
:player(Player),
|
:player(Player),
|
||||||
statusbar(7,556),
|
statusbar(7,556),
|
||||||
@ -1033,6 +1059,6 @@ void CAdvMapInt::centerOn(int3 on)
|
|||||||
}
|
}
|
||||||
CAdvMapInt::CurrentSelection::CurrentSelection()
|
CAdvMapInt::CurrentSelection::CurrentSelection()
|
||||||
{
|
{
|
||||||
type=NULL;
|
type=-1;
|
||||||
selected=NULL;
|
selected=NULL;
|
||||||
}
|
}
|
@ -59,7 +59,7 @@ class CHeroList
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CDefHandler *mobile, *mana;
|
CDefHandler *mobile, *mana;
|
||||||
std::vector<const CHeroInstance*> items;
|
std::vector<std::pair<const CHeroInstance*, CPath *> > items;
|
||||||
int posmobx, posporx, posmanx, posmoby, pospory, posmany;
|
int posmobx, posporx, posmanx, posmoby, pospory, posmany;
|
||||||
|
|
||||||
CHeroList();
|
CHeroList();
|
||||||
@ -177,6 +177,12 @@ public:
|
|||||||
|
|
||||||
void draw();
|
void draw();
|
||||||
};
|
};
|
||||||
|
class CInfoBar
|
||||||
|
:public virtual CIntObject
|
||||||
|
{
|
||||||
|
CInfoBar();
|
||||||
|
void draw(void * specific=NULL); // if specific==0 function draws info about selected hero/town
|
||||||
|
};
|
||||||
/*****************************/
|
/*****************************/
|
||||||
class CAdvMapInt //adventure map interface
|
class CAdvMapInt //adventure map interface
|
||||||
{
|
{
|
||||||
@ -240,7 +246,7 @@ public:
|
|||||||
|
|
||||||
struct CurrentSelection
|
struct CurrentSelection
|
||||||
{
|
{
|
||||||
const type_info* type;
|
int type; //0 - hero, 1 - town
|
||||||
const void* selected;
|
const void* selected;
|
||||||
CurrentSelection(); //ctor
|
CurrentSelection(); //ctor
|
||||||
} selection;
|
} selection;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "CGameState.h"
|
#include "CGameState.h"
|
||||||
#include "CGameInterface.h"
|
#include "CGameInterface.h"
|
||||||
|
|
||||||
bool CCallback::moveHero(int ID, int3 destPoint)
|
bool CCallback::moveHero(int ID, int3 destPoint, int idtype)
|
||||||
{
|
{
|
||||||
if(ID<0 || ID>CGI->heroh->heroInstances.size())
|
if(ID<0 || ID>CGI->heroh->heroInstances.size())
|
||||||
return false;
|
return false;
|
||||||
|
@ -6,20 +6,21 @@ class CTownInstance;
|
|||||||
struct HeroMoveDetails
|
struct HeroMoveDetails
|
||||||
{
|
{
|
||||||
int3 src, dst; //source and destination points
|
int3 src, dst; //source and destination points
|
||||||
int heroID; //which hero
|
int heroID; //position in vector
|
||||||
int owner;
|
int owner;
|
||||||
};
|
};
|
||||||
class CCallback
|
class CCallback
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
int player;
|
||||||
void newTurn();
|
void newTurn();
|
||||||
|
CCallback(CGameState * GS, int Player):gs(GS),player(Player){};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CGameState * gs;
|
CGameState * gs;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CCallback(CGameState * GS):gs(GS){};
|
bool moveHero(int ID, int3 destPoint, int idtype=0);//idtype: 0-position in vector; 1-ID of hero
|
||||||
bool moveHero(int ID, int3 destPoint);
|
|
||||||
|
|
||||||
int howManyTowns();
|
int howManyTowns();
|
||||||
const CTownInstance * getTownInfo(int val, bool mode); //mode = 0 -> val = serial; mode = 1 -> val = ID
|
const CTownInstance * getTownInfo(int val, bool mode); //mode = 0 -> val = serial; mode = 1 -> val = ID
|
||||||
@ -28,6 +29,8 @@ public:
|
|||||||
const CHeroInstance * getHeroInfo(int player, int val, bool mode); //mode = 0 -> val = serial; mode = 1 -> val = ID
|
const CHeroInstance * getHeroInfo(int player, int val, bool mode); //mode = 0 -> val = serial; mode = 1 -> val = ID
|
||||||
int getResourceAmount(int type);
|
int getResourceAmount(int type);
|
||||||
int getDate(int mode=0); //mode=0 - total days in game, mode=1 - day of week, mode=2 - current week, mode=3 - current month
|
int getDate(int mode=0); //mode=0 - total days in game, mode=1 - day of week, mode=2 - current week, mode=3 - current month
|
||||||
|
|
||||||
|
friend int _tmain(int argc, _TCHAR* argv[]);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //CCALLBACK_H
|
#endif //CCALLBACK_H
|
@ -11,8 +11,9 @@
|
|||||||
#include "mapHandler.h"
|
#include "mapHandler.h"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
int internalFunc(void * nothingUsed)
|
int internalFunc(void * callback)
|
||||||
{
|
{
|
||||||
|
CCallback * cb = (CCallback*)callback;
|
||||||
char * usersMessage = new char[500];
|
char * usersMessage = new char[500];
|
||||||
std::string readed;
|
std::string readed;
|
||||||
while(true)
|
while(true)
|
||||||
@ -44,7 +45,7 @@ int internalFunc(void * nothingUsed)
|
|||||||
break;
|
break;
|
||||||
case 'M': //move hero
|
case 'M': //move hero
|
||||||
readed>>heronum>>dest;
|
readed>>heronum>>dest;
|
||||||
CGI->state->cb->moveHero(heronum, dest);
|
cb->moveHero(heronum, dest);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//SDL_Delay(100);
|
//SDL_Delay(100);
|
||||||
@ -54,5 +55,5 @@ int internalFunc(void * nothingUsed)
|
|||||||
|
|
||||||
void CConsoleHandler::runConsole()
|
void CConsoleHandler::runConsole()
|
||||||
{
|
{
|
||||||
SDL_Thread * myth = SDL_CreateThread(&internalFunc, NULL);
|
SDL_Thread * myth = SDL_CreateThread(&internalFunc, cb);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
#ifndef CCONSOLEHANDLER_H
|
#ifndef CCONSOLEHANDLER_H
|
||||||
#define CCONSOLEHANDLER_H
|
#define CCONSOLEHANDLER_H
|
||||||
|
class CCallback;
|
||||||
class CConsoleHandler
|
class CConsoleHandler
|
||||||
{
|
{
|
||||||
|
CCallback * cb;
|
||||||
public:
|
public:
|
||||||
void runConsole();
|
void runConsole();
|
||||||
|
|
||||||
|
friend int _tmain(int argc, _TCHAR* argv[]);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //CCONSOLEHANDLER_H
|
#endif //CCONSOLEHANDLER_H
|
@ -9,6 +9,8 @@
|
|||||||
#include "CCursorHandler.h"
|
#include "CCursorHandler.h"
|
||||||
#include "CCallback.h"
|
#include "CCallback.h"
|
||||||
#include "SDL_Extensions.h"
|
#include "SDL_Extensions.h"
|
||||||
|
#include "hch/CLodHandler.h"
|
||||||
|
#include <sstream>
|
||||||
using namespace CSDL_Ext;
|
using namespace CSDL_Ext;
|
||||||
class OCM_HLP_CGIN
|
class OCM_HLP_CGIN
|
||||||
{
|
{
|
||||||
@ -109,6 +111,7 @@ CPlayerInterface::CPlayerInterface(int Player, int serial)
|
|||||||
serialID=serial;
|
serialID=serial;
|
||||||
CGI->localPlayer = playerID;
|
CGI->localPlayer = playerID;
|
||||||
human=true;
|
human=true;
|
||||||
|
hInfo = CGI->bitmaph->loadBitmap("HEROQVBK.bmp");
|
||||||
}
|
}
|
||||||
void CPlayerInterface::init(CCallback * CB)
|
void CPlayerInterface::init(CCallback * CB)
|
||||||
{
|
{
|
||||||
@ -744,6 +747,41 @@ void CPlayerInterface::heroCreated(const CHeroInstance * hero)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_Surface * CPlayerInterface::infoWin(void * specific) //specific=0 => draws info about selected town/hero //TODO - gdy sie dorobi sensowna hierarchie klas ins. to wywalic tego brzydkiego void*
|
||||||
|
{
|
||||||
|
if (specific)
|
||||||
|
;//TODO: dorobic, ale w ogole to moze lepiej najpierw zastapic tego voida czym innym
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (adventureInt->selection.type == HEROI_TYPE)
|
||||||
|
{
|
||||||
|
char * buf = new char[10];
|
||||||
|
SDL_Surface * ret = copySurface(hInfo);
|
||||||
|
SDL_SetColorKey(ret,SDL_SRCCOLORKEY,SDL_MapRGB(ret->format,0,255,255));
|
||||||
|
blueToPlayersAdv(ret,playerID);
|
||||||
|
const CHeroInstance * curh = (const CHeroInstance *)adventureInt->selection.selected;
|
||||||
|
printAt(curh->name,15,75,GEOR13,zwykly,ret);
|
||||||
|
for (int i=0;i<PRIMARY_SKILLS;i++)
|
||||||
|
{
|
||||||
|
itoa(curh->primSkills[i],buf,10);
|
||||||
|
printAtMiddle(buf,87+27*i,69,GEOR13,zwykly,ret);
|
||||||
|
}
|
||||||
|
itoa(curh->mana,buf,10);
|
||||||
|
printAtMiddle(buf,169,109,GEORM,zwykly,ret);
|
||||||
|
delete buf;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
else if (adventureInt->selection.type == TOWNI_TYPE)
|
||||||
|
{
|
||||||
|
//TODO: do it
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void CPlayerInterface::handleEvent(SDL_Event *sEvent)
|
void CPlayerInterface::handleEvent(SDL_Event *sEvent)
|
||||||
{
|
{
|
||||||
current = sEvent;
|
current = sEvent;
|
||||||
|
@ -112,11 +112,15 @@ public:
|
|||||||
std::vector<KeyInterested*> keyinterested;
|
std::vector<KeyInterested*> keyinterested;
|
||||||
std::vector<MotionInterested*> motioninterested;
|
std::vector<MotionInterested*> motioninterested;
|
||||||
|
|
||||||
|
SDL_Surface * hInfo;
|
||||||
|
|
||||||
|
//overloaded funcs from Interface
|
||||||
void yourTurn();
|
void yourTurn();
|
||||||
void heroMoved(const HeroMoveDetails & details);
|
void heroMoved(const HeroMoveDetails & details);
|
||||||
void heroKilled(const CHeroInstance * hero);
|
void heroKilled(const CHeroInstance * hero);
|
||||||
void heroCreated(const CHeroInstance * hero);
|
void heroCreated(const CHeroInstance * hero);
|
||||||
|
|
||||||
|
SDL_Surface * infoWin(void * specific); //specific=0 => draws info about selected town/hero //TODO - gdy sie dorobi sensowna hierarchie klas ins. to wywalic tego brzydkiego void*
|
||||||
|
|
||||||
void handleEvent(SDL_Event * sEvent);
|
void handleEvent(SDL_Event * sEvent);
|
||||||
void init(CCallback * CB);
|
void init(CCallback * CB);
|
||||||
|
@ -26,7 +26,7 @@ public:
|
|||||||
friend CCallback;
|
friend CCallback;
|
||||||
friend int _tmain(int argc, _TCHAR* argv[]);
|
friend int _tmain(int argc, _TCHAR* argv[]);
|
||||||
friend void initGameState(CGameInfo * cgi);
|
friend void initGameState(CGameInfo * cgi);
|
||||||
CCallback * cb; //for communication between PlayerInterface/AI and GameState
|
//CCallback * cb; //for communication between PlayerInterface/AI and GameState
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //CGAMESTATE_H
|
#endif //CGAMESTATE_H
|
||||||
|
8
CMT.cpp
8
CMT.cpp
@ -254,7 +254,6 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
CGameInfo * cgi = new CGameInfo; //contains all global informations about game (texts, lodHandlers, map handler itp.)
|
CGameInfo * cgi = new CGameInfo; //contains all global informations about game (texts, lodHandlers, map handler itp.)
|
||||||
CGameInfo::mainObj = cgi;
|
CGameInfo::mainObj = cgi;
|
||||||
cgi->consoleh = new CConsoleHandler;
|
cgi->consoleh = new CConsoleHandler;
|
||||||
cgi->consoleh->runConsole();
|
|
||||||
cgi->mush = mush;
|
cgi->mush = mush;
|
||||||
cgi->curh = new CCursorHandler;
|
cgi->curh = new CCursorHandler;
|
||||||
|
|
||||||
@ -334,8 +333,9 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
cgi->dobjinfo->load();
|
cgi->dobjinfo->load();
|
||||||
cgi->state = new CGameState();
|
cgi->state = new CGameState();
|
||||||
cgi->state->players = std::map<int, PlayerState>();
|
cgi->state->players = std::map<int, PlayerState>();
|
||||||
cgi->state->cb = new CCallback(cgi->state);
|
|
||||||
cgi->pathf = new CPathfinder();
|
cgi->pathf = new CPathfinder();
|
||||||
|
cgi->consoleh->cb = new CCallback(cgi->state,-1);
|
||||||
|
cgi->consoleh->runConsole();
|
||||||
THC std::cout<<"Handlers initailization: "<<tmh.getDif()<<std::endl;
|
THC std::cout<<"Handlers initailization: "<<tmh.getDif()<<std::endl;
|
||||||
|
|
||||||
std::string mapname;
|
std::string mapname;
|
||||||
@ -386,9 +386,9 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
// cgi->playerint.push_back(new CGlobalAI());
|
// cgi->playerint.push_back(new CGlobalAI());
|
||||||
//else
|
//else
|
||||||
{
|
{
|
||||||
cgi->state->currentPlayer=i;
|
cgi->state->currentPlayer=cgi->scenarioOps.playerInfos[i].color;
|
||||||
cgi->playerint.push_back(new CPlayerInterface(cgi->scenarioOps.playerInfos[i].color,i));
|
cgi->playerint.push_back(new CPlayerInterface(cgi->scenarioOps.playerInfos[i].color,i));
|
||||||
((CPlayerInterface*)(cgi->playerint[i]))->init(cgi->state->cb);
|
((CPlayerInterface*)(cgi->playerint[i]))->init(new CCallback(cgi->state,cgi->scenarioOps.playerInfos[i].color));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
#include "CGameInfo.h"
|
#include "CGameInfo.h"
|
||||||
#include "hch\CAmbarCendamo.h"
|
#include "hch\CAmbarCendamo.h"
|
||||||
#include "mapHandler.h"
|
#include "mapHandler.h"
|
||||||
int3 CPath::startPos()
|
int3 CPath::endPos()
|
||||||
{
|
{
|
||||||
return int3(nodes[0].coord.x,nodes[0].coord.y,nodes[0].coord.z);
|
return int3(nodes[0].coord.x,nodes[0].coord.y,nodes[0].coord.z);
|
||||||
}
|
}
|
||||||
int3 CPath::endPos()
|
int3 CPath::startPos()
|
||||||
{
|
{
|
||||||
return int3(nodes[nodes.size()-1].coord.x,nodes[nodes.size()-1].coord.y,nodes[nodes.size()-1].coord.z);
|
return int3(nodes[nodes.size()-1].coord.x,nodes[nodes.size()-1].coord.y,nodes[nodes.size()-1].coord.z);
|
||||||
}
|
}
|
||||||
|
BIN
CPreGame.cpp
BIN
CPreGame.cpp
Binary file not shown.
@ -8,6 +8,17 @@
|
|||||||
#include "CMessage.h"
|
#include "CMessage.h"
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
SDL_Surface * CSDL_Ext::newSurface(int w, int h, SDL_Surface * mod) //creates new surface, with flags/format same as in surface given
|
||||||
|
{
|
||||||
|
return SDL_CreateRGBSurface(mod->flags,w,h,mod->format->BitsPerPixel,mod->format->Rmask,mod->format->Gmask,mod->format->Bmask,mod->format->Amask);
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_Surface * CSDL_Ext::copySurface(SDL_Surface * mod) //returns copy of given surface
|
||||||
|
{
|
||||||
|
SDL_Surface * ret = newSurface(mod->w,mod->h,mod);
|
||||||
|
SDL_BlitSurface(mod,NULL,ret,NULL);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
bool isItIn(const SDL_Rect * rect, int x, int y)
|
bool isItIn(const SDL_Rect * rect, int x, int y)
|
||||||
{
|
{
|
||||||
if ((x>rect->x && x<rect->x+rect->w) && (y>rect->y && y<rect->y+rect->h))
|
if ((x>rect->x && x<rect->x+rect->w) && (y>rect->y && y<rect->y+rect->h))
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
extern SDL_Surface * ekran;
|
extern SDL_Surface * ekran;
|
||||||
extern SDL_Color tytulowy, tlo, zwykly ;
|
extern SDL_Color tytulowy, tlo, zwykly ;
|
||||||
|
extern TTF_Font * TNRB16, *TNR, *GEOR13, *GEORXX, *GEORM;
|
||||||
void blitAtWR(SDL_Surface * src, int x, int y, SDL_Surface * dst=ekran);
|
void blitAtWR(SDL_Surface * src, int x, int y, SDL_Surface * dst=ekran);
|
||||||
void blitAt(SDL_Surface * src, int x, int y, SDL_Surface * dst=ekran);
|
void blitAt(SDL_Surface * src, int x, int y, SDL_Surface * dst=ekran);
|
||||||
void updateRect (SDL_Rect * rect, SDL_Surface * scr = ekran);
|
void updateRect (SDL_Rect * rect, SDL_Surface * scr = ekran);
|
||||||
@ -34,6 +35,8 @@ namespace CSDL_Ext
|
|||||||
void blueToPlayersNice(SDL_Surface * sur, int player); //uses interface gems to substitute colours
|
void blueToPlayersNice(SDL_Surface * sur, int player); //uses interface gems to substitute colours
|
||||||
void setPlayerColor(SDL_Surface * sur, int player); //sets correct color of flags; -1 for neutral
|
void setPlayerColor(SDL_Surface * sur, int player); //sets correct color of flags; -1 for neutral
|
||||||
std::string processStr(std::string str, std::vector<std::string> & tor); //replaces %s in string
|
std::string processStr(std::string str, std::vector<std::string> & tor); //replaces %s in string
|
||||||
|
SDL_Surface * newSurface(int w, int h, SDL_Surface * mod=ekran); //creates new surface, with flags/format same as in surface given
|
||||||
|
SDL_Surface * copySurface(SDL_Surface * mod); //returns copy of given surface
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SDL_EXTENSIONS_H
|
#endif // SDL_EXTENSIONS_H
|
4
global.h
4
global.h
@ -27,8 +27,8 @@ enum EHeroClasses {HERO_KNIGHT, HERO_CLERIC, HERO_RANGER, HERO_DRUID, HERO_ALCHE
|
|||||||
//CURPLINT gives pointer to the interface of human player which is currently making turn,
|
//CURPLINT gives pointer to the interface of human player which is currently making turn,
|
||||||
//LOCPLINT gives pointer to the interface which is currently showed (on this machine)
|
//LOCPLINT gives pointer to the interface which is currently showed (on this machine)
|
||||||
|
|
||||||
#define HEROI_TYPE (typeid(CHeroInstance*))
|
#define HEROI_TYPE (0)
|
||||||
#define TOWNI_TYPE (typeid(CTownInstance*))
|
#define TOWNI_TYPE (1)
|
||||||
|
|
||||||
|
|
||||||
const int F_NUMBER = 9; //factions (town types) quantity
|
const int F_NUMBER = 9; //factions (town types) quantity
|
||||||
|
@ -6,10 +6,13 @@
|
|||||||
#include "CCreatureHandler.h"
|
#include "CCreatureHandler.h"
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
#include "../int3.h"
|
#include "../int3.h"
|
||||||
|
#include "CAmbarCendamo.h"
|
||||||
|
#include "CGameInterface.h"
|
||||||
|
|
||||||
class CHeroClass;
|
class CHeroClass;
|
||||||
class CObjectInstance;
|
class CObjectInstance;
|
||||||
class CDefHandler;
|
class CDefHandler;
|
||||||
|
class CGameInfo;
|
||||||
|
|
||||||
class CHero
|
class CHero
|
||||||
{
|
{
|
||||||
@ -73,9 +76,9 @@ public:
|
|||||||
class CHeroHandler
|
class CHeroHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
std::vector<CHeroInstance *> heroInstances;
|
||||||
std::vector<CHero*> heroes; //by³o nodrze
|
std::vector<CHero*> heroes; //by³o nodrze
|
||||||
std::vector<CHeroClass *> heroClasses;
|
std::vector<CHeroClass *> heroClasses;
|
||||||
std::vector<CHeroInstance *> heroInstances;
|
|
||||||
unsigned int level(unsigned int experience);
|
unsigned int level(unsigned int experience);
|
||||||
void loadHeroes();
|
void loadHeroes();
|
||||||
void loadSpecialAbilities();
|
void loadSpecialAbilities();
|
||||||
@ -85,6 +88,12 @@ public:
|
|||||||
void initHeroClasses();
|
void initHeroClasses();
|
||||||
~CHeroHandler();
|
~CHeroHandler();
|
||||||
void initTerrainCosts();
|
void initTerrainCosts();
|
||||||
|
|
||||||
|
friend void CAmbarCendamo::deh3m();
|
||||||
|
friend void initGameState(CGameInfo * cgi);
|
||||||
|
friend class CConsoleHandler;
|
||||||
|
|
||||||
|
//friend void CPlayerInterface::heroMoved(const HeroMoveDetails & details); //TODO: wywalic, wstretne!!!
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -293,7 +293,7 @@ class CObjectInstance //instance of object
|
|||||||
public:
|
public:
|
||||||
int defNumber; //specifies number of def file with animation of this object
|
int defNumber; //specifies number of def file with animation of this object
|
||||||
int defObjInfoNumber; //number of this object's def's additional informations in CDefObjInfo's vector
|
int defObjInfoNumber; //number of this object's def's additional informations in CDefObjInfo's vector
|
||||||
int id; //number of object in CObjectHandler's vector
|
int id; //number of object in CObjectHandler's vector //TODO: absolutnie wywalic i zastapic czyms sensownym
|
||||||
int3 pos; // position
|
int3 pos; // position
|
||||||
CSpecObjInfo * info; //pointer to something with additional information
|
CSpecObjInfo * info; //pointer to something with additional information
|
||||||
bool isHero; //true if this is a hero
|
bool isHero; //true if this is a hero
|
||||||
|
Loading…
x
Reference in New Issue
Block a user