mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
Moved objecthandler / minor
This commit is contained in:
parent
3988767329
commit
d251597617
13
CMT.cpp
13
CMT.cpp
@ -48,17 +48,6 @@
|
|||||||
#include "CAdvmapInterface.h"
|
#include "CAdvmapInterface.h"
|
||||||
#include "CCastleInterface.h"
|
#include "CCastleInterface.h"
|
||||||
#include "client\Graphics.h"
|
#include "client\Graphics.h"
|
||||||
#include <boost/lambda/lambda.hpp>
|
|
||||||
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
|
|
||||||
# include <fcntl.h>
|
|
||||||
# include <io.h>
|
|
||||||
# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
|
|
||||||
#else
|
|
||||||
# define SET_BINARY_MODE(file)
|
|
||||||
#endif
|
|
||||||
#ifdef _DEBUG
|
|
||||||
#endif
|
|
||||||
#define CHUNK 16384
|
|
||||||
const char * NAME = "VCMI \"Altanatse\" 0.7";
|
const char * NAME = "VCMI \"Altanatse\" 0.7";
|
||||||
DLL_EXPORT void initDLL(CLodHandler *b);
|
DLL_EXPORT void initDLL(CLodHandler *b);
|
||||||
SDL_Color playerColorPalette[256]; //palette to make interface colors good
|
SDL_Color playerColorPalette[256]; //palette to make interface colors good
|
||||||
@ -214,6 +203,8 @@ void initGameState(Mapa * map, CGameInfo * cgi)
|
|||||||
for (int i=0;i<map->towns.size();i++)
|
for (int i=0;i<map->towns.size();i++)
|
||||||
{
|
{
|
||||||
CGTownInstance * vti =(map->towns[i]);
|
CGTownInstance * vti =(map->towns[i]);
|
||||||
|
if(!vti->town)
|
||||||
|
vti->town = &CGI->townh->towns[vti->subID];
|
||||||
if (vti->name.length()==0) // if town hasn't name we draw it
|
if (vti->name.length()==0) // if town hasn't name we draw it
|
||||||
vti->name=vti->town->names[rand()%vti->town->names.size()];
|
vti->name=vti->town->names[rand()%vti->town->names.size()];
|
||||||
if(vti->builtBuildings.find(-50)!=vti->builtBuildings.end()) //give standard set of buildings
|
if(vti->builtBuildings.find(-50)!=vti->builtBuildings.end()) //give standard set of buildings
|
||||||
|
@ -171,6 +171,9 @@ void Graphics::loadHeroPortraits()
|
|||||||
}
|
}
|
||||||
void Graphics::loadHeroAnim(std::vector<CDefHandler **> & anims)
|
void Graphics::loadHeroAnim(std::vector<CDefHandler **> & anims)
|
||||||
{
|
{
|
||||||
|
std::vector<std::pair<int,int> > rotations; //first - group number to be rotated1, second - group number after rotation1
|
||||||
|
rotations += std::make_pair(6,10), std::make_pair(7,11), std::make_pair(8,12), std::make_pair(1,13),
|
||||||
|
std::make_pair(2,14), std::make_pair(3,15);
|
||||||
for(int i=0; i<anims.size();i++)
|
for(int i=0; i<anims.size();i++)
|
||||||
{
|
{
|
||||||
std::stringstream nm;
|
std::stringstream nm;
|
||||||
@ -181,77 +184,33 @@ void Graphics::loadHeroAnim(std::vector<CDefHandler **> & anims)
|
|||||||
nm<<"_.DEF";
|
nm<<"_.DEF";
|
||||||
std::string name = nm.str();
|
std::string name = nm.str();
|
||||||
(*anims[i]) = CDefHandler::giveDef(name);
|
(*anims[i]) = CDefHandler::giveDef(name);
|
||||||
//(CDefHandler*)(((void*)hc)+((void*)moveAnim)) = CDefHandler::giveDef(name);
|
int pom = 0; //how many groups has been rotated
|
||||||
for(int o=0; o<(*anims[i])->ourImages.size(); ++o)
|
for(int o=7; pom<6; ++o)
|
||||||
{
|
{
|
||||||
if((*anims[i])->ourImages[o].groupNumber==6)
|
for(int p=0;p<6;p++)
|
||||||
{
|
{
|
||||||
for(int e=0; e<8; ++e)
|
if((*anims[i])->ourImages[o].groupNumber==rotations[p].first)
|
||||||
{
|
{
|
||||||
Cimage nci;
|
for(int e=0; e<8; ++e)
|
||||||
nci.bitmap = CSDL_Ext::rotate01((*anims[i])->ourImages[o+e].bitmap);
|
{
|
||||||
nci.groupNumber = 10;
|
Cimage nci;
|
||||||
nci.imName = std::string();
|
nci.bitmap = CSDL_Ext::rotate01((*anims[i])->ourImages[o+e].bitmap);
|
||||||
(*anims[i])->ourImages.push_back(nci);
|
nci.groupNumber = rotations[p].second;
|
||||||
|
nci.imName = std::string();
|
||||||
|
(*anims[i])->ourImages.push_back(nci);
|
||||||
|
if(pom>2) //we need only one frame for groups 13/14/15
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(pom<3) //there are eight frames of animtion of groups 6/7/8 so for speed we'll skip them
|
||||||
|
o+=8;
|
||||||
|
else //there is only one frame of 1/2/3
|
||||||
|
o+=1;
|
||||||
|
++pom;
|
||||||
|
if(p==2 && pom<4) //group1 starts at index 1
|
||||||
|
o = 1;
|
||||||
}
|
}
|
||||||
o+=8;
|
|
||||||
}
|
|
||||||
if((*anims[i])->ourImages[o].groupNumber==7)
|
|
||||||
{
|
|
||||||
for(int e=0; e<8; ++e)
|
|
||||||
{
|
|
||||||
Cimage nci;
|
|
||||||
nci.bitmap = CSDL_Ext::rotate01((*anims[i])->ourImages[o+e].bitmap);
|
|
||||||
nci.groupNumber = 11;
|
|
||||||
nci.imName = std::string();
|
|
||||||
(*anims[i])->ourImages.push_back(nci);
|
|
||||||
}
|
|
||||||
o+=8;
|
|
||||||
}
|
|
||||||
if((*anims[i])->ourImages[o].groupNumber==8)
|
|
||||||
{
|
|
||||||
for(int e=0; e<8; ++e)
|
|
||||||
{
|
|
||||||
Cimage nci;
|
|
||||||
nci.bitmap = CSDL_Ext::rotate01((*anims[i])->ourImages[o+e].bitmap);
|
|
||||||
nci.groupNumber = 12;
|
|
||||||
nci.imName = std::string();
|
|
||||||
(*anims[i])->ourImages.push_back(nci);
|
|
||||||
}
|
|
||||||
o+=8;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(int o=0; o<(*anims[i])->ourImages.size(); ++o)
|
|
||||||
{
|
|
||||||
if((*anims[i])->ourImages[o].groupNumber==1)
|
|
||||||
{
|
|
||||||
Cimage nci;
|
|
||||||
nci.bitmap = CSDL_Ext::rotate01((*anims[i])->ourImages[o].bitmap);
|
|
||||||
nci.groupNumber = 13;
|
|
||||||
nci.imName = std::string();
|
|
||||||
(*anims[i])->ourImages.push_back(nci);
|
|
||||||
//o+=1;
|
|
||||||
}
|
|
||||||
if((*anims[i])->ourImages[o].groupNumber==2)
|
|
||||||
{
|
|
||||||
Cimage nci;
|
|
||||||
nci.bitmap = CSDL_Ext::rotate01((*anims[i])->ourImages[o].bitmap);
|
|
||||||
nci.groupNumber = 14;
|
|
||||||
nci.imName = std::string();
|
|
||||||
(*anims[i])->ourImages.push_back(nci);
|
|
||||||
//o+=1;
|
|
||||||
}
|
|
||||||
if((*anims[i])->ourImages[o].groupNumber==3)
|
|
||||||
{
|
|
||||||
Cimage nci;
|
|
||||||
nci.bitmap = CSDL_Ext::rotate01((*anims[i])->ourImages[o].bitmap);
|
|
||||||
nci.groupNumber = 15;
|
|
||||||
nci.imName = std::string();
|
|
||||||
(*anims[i])->ourImages.push_back(nci);
|
|
||||||
//o+=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int ff=0; ff<(*anims[i])->ourImages.size(); ++ff)
|
for(int ff=0; ff<(*anims[i])->ourImages.size(); ++ff)
|
||||||
{
|
{
|
||||||
CSDL_Ext::alphaTransform((*anims[i])->ourImages[ff].bitmap);
|
CSDL_Ext::alphaTransform((*anims[i])->ourImages[ff].bitmap);
|
||||||
@ -264,46 +223,26 @@ void Graphics::loadHeroFlags(std::pair<std::vector<CDefHandler *> Graphics::*, s
|
|||||||
{
|
{
|
||||||
for(int i=0;i<8;i++)
|
for(int i=0;i<8;i++)
|
||||||
(this->*pr.first).push_back(CDefHandler::giveDef(pr.second[i]));
|
(this->*pr.first).push_back(CDefHandler::giveDef(pr.second[i]));
|
||||||
|
std::vector<std::pair<int,int> > rotations; //first - group number to be rotated1, second - group number after rotation1
|
||||||
|
rotations += std::make_pair(6,10), std::make_pair(7,11), std::make_pair(8,12);
|
||||||
for(int q=0; q<8; ++q)
|
for(int q=0; q<8; ++q)
|
||||||
{
|
{
|
||||||
for(int o=0; o<(this->*pr.first)[q]->ourImages.size(); ++o)
|
for(int o=0; o<(this->*pr.first)[q]->ourImages.size(); ++o)
|
||||||
{
|
{
|
||||||
if((this->*pr.first)[q]->ourImages[o].groupNumber==6)
|
for(int p=0;p<rotations.size();p++)
|
||||||
{
|
{
|
||||||
for(int e=0; e<8; ++e)
|
if((this->*pr.first)[q]->ourImages[o].groupNumber==rotations[p].first)
|
||||||
{
|
{
|
||||||
Cimage nci;
|
for(int e=0; e<8; ++e)
|
||||||
nci.bitmap = CSDL_Ext::rotate01((this->*pr.first)[q]->ourImages[o+e].bitmap);
|
{
|
||||||
nci.groupNumber = 10;
|
Cimage nci;
|
||||||
nci.imName = std::string();
|
nci.bitmap = CSDL_Ext::rotate01((this->*pr.first)[q]->ourImages[o+e].bitmap);
|
||||||
(this->*pr.first)[q]->ourImages.push_back(nci);
|
nci.groupNumber = rotations[p].second;
|
||||||
|
nci.imName = std::string();
|
||||||
|
(this->*pr.first)[q]->ourImages.push_back(nci);
|
||||||
|
}
|
||||||
|
o+=8;
|
||||||
}
|
}
|
||||||
o+=8;
|
|
||||||
}
|
|
||||||
if((this->*pr.first)[q]->ourImages[o].groupNumber==7)
|
|
||||||
{
|
|
||||||
for(int e=0; e<8; ++e)
|
|
||||||
{
|
|
||||||
Cimage nci;
|
|
||||||
nci.bitmap = CSDL_Ext::rotate01((this->*pr.first)[q]->ourImages[o+e].bitmap);
|
|
||||||
nci.groupNumber = 11;
|
|
||||||
nci.imName = std::string();
|
|
||||||
(this->*pr.first)[q]->ourImages.push_back(nci);
|
|
||||||
}
|
|
||||||
o+=8;
|
|
||||||
}
|
|
||||||
if((this->*pr.first)[q]->ourImages[o].groupNumber==8)
|
|
||||||
{
|
|
||||||
for(int e=0; e<8; ++e)
|
|
||||||
{
|
|
||||||
Cimage nci;
|
|
||||||
nci.bitmap = CSDL_Ext::rotate01((this->*pr.first)[q]->ourImages[o+e].bitmap);
|
|
||||||
nci.groupNumber = 12;
|
|
||||||
nci.imName = std::string();
|
|
||||||
(this->*pr.first)[q]->ourImages.push_back(nci);
|
|
||||||
}
|
|
||||||
o+=8;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mode)
|
if (mode)
|
||||||
|
@ -344,10 +344,6 @@
|
|||||||
RelativePath="..\hch\CMusicHandler.cpp"
|
RelativePath="..\hch\CMusicHandler.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\hch\CObjectHandler.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\CPathfinder.cpp"
|
RelativePath="..\CPathfinder.cpp"
|
||||||
>
|
>
|
||||||
|
@ -3,9 +3,6 @@
|
|||||||
#include "../CGameInfo.h"
|
#include "../CGameInfo.h"
|
||||||
#include "CObjectHandler.h"
|
#include "CObjectHandler.h"
|
||||||
#include "CDefObjInfoHandler.h"
|
#include "CDefObjInfoHandler.h"
|
||||||
#include "../CGameState.h"
|
|
||||||
#include "SDL.h"
|
|
||||||
#include "CCreatureHandler.h"
|
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
@ -4,9 +4,14 @@
|
|||||||
#include "CLodHandler.h"
|
#include "CLodHandler.h"
|
||||||
#include <boost/assign/std/vector.hpp>
|
#include <boost/assign/std/vector.hpp>
|
||||||
#include <boost/assign/list_of.hpp>
|
#include <boost/assign/list_of.hpp>
|
||||||
|
#include "../lib/VCMI_Lib.h"
|
||||||
void loadToIt(std::string &dest, std::string &src, int &iter, int mode);
|
void loadToIt(std::string &dest, std::string &src, int &iter, int mode);
|
||||||
extern CLodHandler *bitmaph;
|
extern CLodHandler *bitmaph;
|
||||||
using namespace boost::assign;
|
using namespace boost::assign;
|
||||||
|
CArtHandler::CArtHandler()
|
||||||
|
{
|
||||||
|
VLC->arth = this;
|
||||||
|
}
|
||||||
void CArtHandler::loadArtifacts()
|
void CArtHandler::loadArtifacts()
|
||||||
{
|
{
|
||||||
std::vector<bool CArtifact::*> slots;
|
std::vector<bool CArtifact::*> slots;
|
||||||
|
@ -28,6 +28,7 @@ public:
|
|||||||
std::vector<CArtifact> artifacts;
|
std::vector<CArtifact> artifacts;
|
||||||
void loadArtifacts();
|
void loadArtifacts();
|
||||||
bool loadArtEvents();
|
bool loadArtEvents();
|
||||||
|
CArtHandler();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CARTHANDLER_H
|
#endif // CARTHANDLER_H
|
@ -7,7 +7,12 @@
|
|||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/algorithm/string/find.hpp>
|
#include <boost/algorithm/string/find.hpp>
|
||||||
#include <boost/algorithm/string/replace.hpp>
|
#include <boost/algorithm/string/replace.hpp>
|
||||||
|
#include "../lib/VCMI_Lib.h"
|
||||||
extern CLodHandler * bitmaph;
|
extern CLodHandler * bitmaph;
|
||||||
|
CCreatureHandler::CCreatureHandler()
|
||||||
|
{
|
||||||
|
VLC->creh = this;
|
||||||
|
}
|
||||||
int CCreature::getQuantityID(int quantity)
|
int CCreature::getQuantityID(int quantity)
|
||||||
{
|
{
|
||||||
if (quantity<5)
|
if (quantity<5)
|
||||||
|
@ -61,6 +61,6 @@ public:
|
|||||||
void loadCreatures();
|
void loadCreatures();
|
||||||
void loadAnimationInfo();
|
void loadAnimationInfo();
|
||||||
void loadUnitAnimInfo(CCreature & unit, std::string & src, int & i);
|
void loadUnitAnimInfo(CCreature & unit, std::string & src, int & i);
|
||||||
CCreatureHandler(){};
|
CCreatureHandler();
|
||||||
};
|
};
|
||||||
#endif //CCREATUREHANDLER_H
|
#endif //CCREATUREHANDLER_H
|
@ -16,6 +16,7 @@ public:
|
|||||||
int id, subid; //of object described by this defInfo
|
int id, subid; //of object described by this defInfo
|
||||||
int terrainAllowed, //on which terrain it is possible to place object
|
int terrainAllowed, //on which terrain it is possible to place object
|
||||||
terrainMenu; //in which menus in map editor object will be showed
|
terrainMenu; //in which menus in map editor object will be showed
|
||||||
|
int width, height; //tiles
|
||||||
int type; //(0- ground, 1- towns, 2-creatures, 3- heroes, 4-artifacts, 5- resources)
|
int type; //(0- ground, 1- towns, 2-creatures, 3- heroes, 4-artifacts, 5- resources)
|
||||||
CDefHandler * handler;
|
CDefHandler * handler;
|
||||||
int printPriority;
|
int printPriority;
|
||||||
|
@ -8,7 +8,7 @@ class CHeroClass;
|
|||||||
class CDefHandler;
|
class CDefHandler;
|
||||||
class CGameInfo;
|
class CGameInfo;
|
||||||
class CGHeroInstance;
|
class CGHeroInstance;
|
||||||
class CHero
|
class DLL_EXPORT CHero
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string name;
|
std::string name;
|
||||||
@ -23,7 +23,7 @@ public:
|
|||||||
//bool operator<(CHero& drugi){if (ID < drugi.ID) return true; else return false;}
|
//bool operator<(CHero& drugi){if (ID < drugi.ID) return true; else return false;}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CHeroClass
|
class DLL_EXPORT CHeroClass
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string name;
|
std::string name;
|
||||||
|
@ -12,48 +12,48 @@ void CMusicHandler::initMusics()
|
|||||||
}
|
}
|
||||||
atexit(Mix_CloseAudio);
|
atexit(Mix_CloseAudio);
|
||||||
|
|
||||||
AITheme0 = Mix_LoadMUS("MP3\\AITheme0.mp3");
|
//AITheme0 = Mix_LoadMUS("MP3\\AITheme0.mp3");
|
||||||
AITheme1 = Mix_LoadMUS("MP3\\AITHEME1.mp3");
|
//AITheme1 = Mix_LoadMUS("MP3\\AITHEME1.mp3");
|
||||||
AITheme2 = Mix_LoadMUS("MP3\\AITHEME2.mp3");
|
//AITheme2 = Mix_LoadMUS("MP3\\AITHEME2.mp3");
|
||||||
buildTown = Mix_LoadWAV("MP3\\BUILDTWN.wav");
|
//buildTown = Mix_LoadWAV("MP3\\BUILDTWN.wav");
|
||||||
combat1 = Mix_LoadMUS("MP3\\COMBAT01.mp3");
|
//combat1 = Mix_LoadMUS("MP3\\COMBAT01.mp3");
|
||||||
combat2 = Mix_LoadMUS("MP3\\COMBAT02.mp3");
|
//combat2 = Mix_LoadMUS("MP3\\COMBAT02.mp3");
|
||||||
combat3 = Mix_LoadMUS("MP3\\COMBAT03.mp3");
|
//combat3 = Mix_LoadMUS("MP3\\COMBAT03.mp3");
|
||||||
combat4 = Mix_LoadMUS("MP3\\COMBAT04.mp3");
|
//combat4 = Mix_LoadMUS("MP3\\COMBAT04.mp3");
|
||||||
castleTown = Mix_LoadMUS("MP3\\CstleTown.mp3");
|
//castleTown = Mix_LoadMUS("MP3\\CstleTown.mp3");
|
||||||
defendCastle = Mix_LoadMUS("MP3\\Defend Castle.mp3");
|
//defendCastle = Mix_LoadMUS("MP3\\Defend Castle.mp3");
|
||||||
dirt = Mix_LoadMUS("MP3\\DIRT.mp3");
|
//dirt = Mix_LoadMUS("MP3\\DIRT.mp3");
|
||||||
dungeon = Mix_LoadMUS("MP3\\DUNGEON.mp3");
|
//dungeon = Mix_LoadMUS("MP3\\DUNGEON.mp3");
|
||||||
elemTown = Mix_LoadMUS("MP3\\ElemTown.mp3");
|
//elemTown = Mix_LoadMUS("MP3\\ElemTown.mp3");
|
||||||
evilTheme = Mix_LoadMUS("MP3\\EvilTheme.mp3");
|
//evilTheme = Mix_LoadMUS("MP3\\EvilTheme.mp3");
|
||||||
fortressTown = Mix_LoadMUS("MP3\\FortressTown.mp3");
|
//fortressTown = Mix_LoadMUS("MP3\\FortressTown.mp3");
|
||||||
goodTheme = Mix_LoadMUS("MP3\\GoodTheme.mp3");
|
//goodTheme = Mix_LoadMUS("MP3\\GoodTheme.mp3");
|
||||||
grass = Mix_LoadMUS("MP3\\GRASS.mp3");
|
//grass = Mix_LoadMUS("MP3\\GRASS.mp3");
|
||||||
infernoTown = Mix_LoadMUS("MP3\\InfernoTown.mp3");
|
//infernoTown = Mix_LoadMUS("MP3\\InfernoTown.mp3");
|
||||||
lava = Mix_LoadMUS("MP3\\LAVA.mp3");
|
//lava = Mix_LoadMUS("MP3\\LAVA.mp3");
|
||||||
loopLepr = Mix_LoadMUS("MP3\\LoopLepr.mp3");
|
//loopLepr = Mix_LoadMUS("MP3\\LoopLepr.mp3");
|
||||||
loseCampain = Mix_LoadMUS("MP3\\Lose Campain.mp3");
|
//loseCampain = Mix_LoadMUS("MP3\\Lose Campain.mp3");
|
||||||
loseCastle = Mix_LoadMUS("MP3\\LoseCastle.mp3");
|
//loseCastle = Mix_LoadMUS("MP3\\LoseCastle.mp3");
|
||||||
loseCombat = Mix_LoadMUS("MP3\\LoseCombat.mp3");
|
//loseCombat = Mix_LoadMUS("MP3\\LoseCombat.mp3");
|
||||||
mainMenu = Mix_LoadMUS("MP3\\MAINMENU.mp3");
|
//mainMenu = Mix_LoadMUS("MP3\\MAINMENU.mp3");
|
||||||
mainMenuWoG = Mix_LoadMUS("MP3\\MainMenuWoG.mp3");
|
//mainMenuWoG = Mix_LoadMUS("MP3\\MainMenuWoG.mp3");
|
||||||
necroTown = Mix_LoadMUS("MP3\\necroTown.mp3");
|
//necroTown = Mix_LoadMUS("MP3\\necroTown.mp3");
|
||||||
neutralTheme = Mix_LoadMUS("MP3\\NeutralTheme.mp3");
|
//neutralTheme = Mix_LoadMUS("MP3\\NeutralTheme.mp3");
|
||||||
rampart = Mix_LoadMUS("MP3\\RAMPART.mp3");
|
//rampart = Mix_LoadMUS("MP3\\RAMPART.mp3");
|
||||||
retreatBattle = Mix_LoadMUS("MP3\\Retreat Battle.mp3");
|
//retreatBattle = Mix_LoadMUS("MP3\\Retreat Battle.mp3");
|
||||||
rough = Mix_LoadMUS("MP3\\ROUGH.mp3");
|
//rough = Mix_LoadMUS("MP3\\ROUGH.mp3");
|
||||||
sand = Mix_LoadMUS("MP3\\SAND.mp3");
|
//sand = Mix_LoadMUS("MP3\\SAND.mp3");
|
||||||
secretTheme = Mix_LoadMUS("MP3\\SecretTheme.mp3");
|
//secretTheme = Mix_LoadMUS("MP3\\SecretTheme.mp3");
|
||||||
snow = Mix_LoadMUS("MP3\\SNOW.mp3");
|
//snow = Mix_LoadMUS("MP3\\SNOW.mp3");
|
||||||
stronghold = Mix_LoadMUS("MP3\\StrongHold.mp3");
|
//stronghold = Mix_LoadMUS("MP3\\StrongHold.mp3");
|
||||||
surrenderBattle = Mix_LoadMUS("MP3\\Surrender Battle.mp3");
|
//surrenderBattle = Mix_LoadMUS("MP3\\Surrender Battle.mp3");
|
||||||
swamp = Mix_LoadMUS("MP3\\SWAMP.mp3");
|
//swamp = Mix_LoadMUS("MP3\\SWAMP.mp3");
|
||||||
towerTown = Mix_LoadMUS("MP3\\TowerTown.mp3");
|
//towerTown = Mix_LoadMUS("MP3\\TowerTown.mp3");
|
||||||
ultimateLose = Mix_LoadMUS("MP3\\UltimateLose.mp3");
|
//ultimateLose = Mix_LoadMUS("MP3\\UltimateLose.mp3");
|
||||||
underground = Mix_LoadMUS("MP3\\Underground.mp3");
|
//underground = Mix_LoadMUS("MP3\\Underground.mp3");
|
||||||
water = Mix_LoadMUS("MP3\\WATER.mp3");
|
//water = Mix_LoadMUS("MP3\\WATER.mp3");
|
||||||
winBattle = Mix_LoadMUS("MP3\\Win Battle.mp3");
|
//winBattle = Mix_LoadMUS("MP3\\Win Battle.mp3");
|
||||||
winScenario = Mix_LoadMUS("MP3\\Win Scenario.mp3");
|
//winScenario = Mix_LoadMUS("MP3\\Win Scenario.mp3");
|
||||||
|
|
||||||
click = Mix_LoadWAV("MP3\\snd1.wav");
|
click = Mix_LoadWAV("MP3\\snd1.wav");
|
||||||
click->volume = 30;
|
click->volume = 30;
|
||||||
|
@ -1,19 +1,20 @@
|
|||||||
|
#define VCMI_DLL
|
||||||
#include "../stdafx.h"
|
#include "../stdafx.h"
|
||||||
#include "CObjectHandler.h"
|
#include "CObjectHandler.h"
|
||||||
#include "CDefObjInfoHandler.h"
|
#include "CDefObjInfoHandler.h"
|
||||||
#include "CDefHandler.h"
|
|
||||||
#include "../CGameInfo.h"
|
|
||||||
#include "CLodHandler.h"
|
#include "CLodHandler.h"
|
||||||
#include "CDefObjInfoHandler.h"
|
#include "CDefObjInfoHandler.h"
|
||||||
#include "CHeroHandler.h"
|
#include "CHeroHandler.h"
|
||||||
#include <boost/algorithm/string/replace.hpp>
|
#include <boost/algorithm/string/replace.hpp>
|
||||||
#include "CTownHandler.h"
|
#include "CTownHandler.h"
|
||||||
#include "CArtHandler.h"
|
#include "CArtHandler.h"
|
||||||
|
#include "../lib/VCMI_Lib.h"
|
||||||
DLL_EXPORT void loadToIt(std::string &dest, std::string &src, int &iter, int mode);
|
DLL_EXPORT void loadToIt(std::string &dest, std::string &src, int &iter, int mode);
|
||||||
|
extern CLodHandler * bitmaph;
|
||||||
void CObjectHandler::loadObjects()
|
void CObjectHandler::loadObjects()
|
||||||
{
|
{
|
||||||
int ID=0;
|
int ID=0;
|
||||||
std::string buf = CGI->bitmaph->getTextFile("OBJNAMES.TXT");
|
std::string buf = bitmaph->getTextFile("OBJNAMES.TXT");
|
||||||
int it=0;
|
int it=0;
|
||||||
while (it<buf.length()-1)
|
while (it<buf.length()-1)
|
||||||
{
|
{
|
||||||
@ -24,7 +25,7 @@ void CObjectHandler::loadObjects()
|
|||||||
objects.push_back(nobj);
|
objects.push_back(nobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = CGI->bitmaph->getTextFile("ADVEVENT.TXT");
|
buf = bitmaph->getTextFile("ADVEVENT.TXT");
|
||||||
it=0;
|
it=0;
|
||||||
std::string temp;
|
std::string temp;
|
||||||
while (it<buf.length()-1)
|
while (it<buf.length()-1)
|
||||||
@ -36,7 +37,7 @@ void CObjectHandler::loadObjects()
|
|||||||
advobtxt.push_back(temp);
|
advobtxt.push_back(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = CGI->bitmaph->getTextFile("XTRAINFO.TXT");
|
buf = bitmaph->getTextFile("XTRAINFO.TXT");
|
||||||
it=0;
|
it=0;
|
||||||
while (it<buf.length()-1)
|
while (it<buf.length()-1)
|
||||||
{
|
{
|
||||||
@ -44,7 +45,7 @@ void CObjectHandler::loadObjects()
|
|||||||
xtrainfo.push_back(temp);
|
xtrainfo.push_back(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = CGI->bitmaph->getTextFile("MINENAME.TXT");
|
buf = bitmaph->getTextFile("MINENAME.TXT");
|
||||||
it=0;
|
it=0;
|
||||||
while (it<buf.length()-1)
|
while (it<buf.length()-1)
|
||||||
{
|
{
|
||||||
@ -52,7 +53,7 @@ void CObjectHandler::loadObjects()
|
|||||||
mines.push_back(std::pair<std::string,std::string>(temp,""));
|
mines.push_back(std::pair<std::string,std::string>(temp,""));
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = CGI->bitmaph->getTextFile("MINEEVNT.TXT");
|
buf = bitmaph->getTextFile("MINEEVNT.TXT");
|
||||||
it=0;
|
it=0;
|
||||||
int i=0;
|
int i=0;
|
||||||
while (it<buf.length()-1)
|
while (it<buf.length()-1)
|
||||||
@ -62,7 +63,7 @@ void CObjectHandler::loadObjects()
|
|||||||
mines[i++].second = temp;
|
mines[i++].second = temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = CGI->bitmaph->getTextFile("RESTYPES.TXT");
|
buf = bitmaph->getTextFile("RESTYPES.TXT");
|
||||||
it=0;
|
it=0;
|
||||||
while (it<buf.length()-1)
|
while (it<buf.length()-1)
|
||||||
{
|
{
|
||||||
@ -82,7 +83,7 @@ void CObjectHandler::loadObjects()
|
|||||||
}
|
}
|
||||||
ifs.close();
|
ifs.close();
|
||||||
ifs.clear();
|
ifs.clear();
|
||||||
buf = CGI->bitmaph->getTextFile("ZCRGN1.TXT");
|
buf = bitmaph->getTextFile("ZCRGN1.TXT");
|
||||||
it=0;
|
it=0;
|
||||||
while (it<buf.length()-1)
|
while (it<buf.length()-1)
|
||||||
{
|
{
|
||||||
@ -113,11 +114,11 @@ void CGObjectInstance::setOwner(int ow)
|
|||||||
}
|
}
|
||||||
int CGObjectInstance::getWidth() const//returns width of object graphic in tiles
|
int CGObjectInstance::getWidth() const//returns width of object graphic in tiles
|
||||||
{
|
{
|
||||||
return defInfo->handler->ourImages[0].bitmap->w/32;
|
return defInfo->width;
|
||||||
}
|
}
|
||||||
int CGObjectInstance::getHeight() const //returns height of object graphic in tiles
|
int CGObjectInstance::getHeight() const //returns height of object graphic in tiles
|
||||||
{
|
{
|
||||||
return defInfo->handler->ourImages[0].bitmap->h/32;
|
return defInfo->width;
|
||||||
}
|
}
|
||||||
bool CGObjectInstance::visitableAt(int x, int y) const //returns true if ibject is visitable at location (x, y) form left top tile of image (x, y in tiles)
|
bool CGObjectInstance::visitableAt(int x, int y) const //returns true if ibject is visitable at location (x, y) form left top tile of image (x, y in tiles)
|
||||||
{
|
{
|
||||||
@ -238,7 +239,7 @@ int CGHeroInstance::getSecSkillLevel(const int & ID) const
|
|||||||
const CArtifact * CGHeroInstance::getArt(int pos)
|
const CArtifact * CGHeroInstance::getArt(int pos)
|
||||||
{
|
{
|
||||||
if(artifWorn.find(pos)!=artifWorn.end())
|
if(artifWorn.find(pos)!=artifWorn.end())
|
||||||
return &CGI->arth->artifacts[artifWorn[pos]];
|
return &VLC->arth->artifacts[artifWorn[pos]];
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -279,7 +280,7 @@ int CGTownInstance::getHordeLevel(const int & HID) const//HID - 0 or 1; returns
|
|||||||
}
|
}
|
||||||
int CGTownInstance::creatureGrowth(const int & level) const
|
int CGTownInstance::creatureGrowth(const int & level) const
|
||||||
{
|
{
|
||||||
int ret = CGI->creh->creatures[town->basicCreatures[level]].growth;
|
int ret = VLC->creh->creatures[town->basicCreatures[level]].growth;
|
||||||
switch(fortLevel())
|
switch(fortLevel())
|
||||||
{
|
{
|
||||||
case 3:
|
case 3:
|
||||||
@ -288,13 +289,13 @@ int CGTownInstance::creatureGrowth(const int & level) const
|
|||||||
ret*=(1.5); break;
|
ret*=(1.5); break;
|
||||||
}
|
}
|
||||||
if(builtBuildings.find(26)!=builtBuildings.end()) //grail
|
if(builtBuildings.find(26)!=builtBuildings.end()) //grail
|
||||||
ret+=CGI->creh->creatures[town->basicCreatures[level]].growth;
|
ret+=VLC->creh->creatures[town->basicCreatures[level]].growth;
|
||||||
if(getHordeLevel(0)==level)
|
if(getHordeLevel(0)==level)
|
||||||
if((builtBuildings.find(18)!=builtBuildings.end()) || (builtBuildings.find(19)!=builtBuildings.end()))
|
if((builtBuildings.find(18)!=builtBuildings.end()) || (builtBuildings.find(19)!=builtBuildings.end()))
|
||||||
ret+=CGI->creh->creatures[town->basicCreatures[level]].hordeGrowth;
|
ret+=VLC->creh->creatures[town->basicCreatures[level]].hordeGrowth;
|
||||||
if(getHordeLevel(1)==level)
|
if(getHordeLevel(1)==level)
|
||||||
if((builtBuildings.find(24)!=builtBuildings.end()) || (builtBuildings.find(25)!=builtBuildings.end()))
|
if((builtBuildings.find(24)!=builtBuildings.end()) || (builtBuildings.find(25)!=builtBuildings.end()))
|
||||||
ret+=CGI->creh->creatures[town->basicCreatures[level]].hordeGrowth;
|
ret+=VLC->creh->creatures[town->basicCreatures[level]].hordeGrowth;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
int CGTownInstance::dailyIncome() const
|
int CGTownInstance::dailyIncome() const
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
#ifndef COBJECTHANDLER_H
|
#ifndef COBJECTHANDLER_H
|
||||||
#define COBJECTHANDLER_H
|
#define COBJECTHANDLER_H
|
||||||
|
#include "../global.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "CCreatureHandler.h"
|
#include "CCreatureHandler.h"
|
||||||
//#include "CHeroHandler.h"
|
|
||||||
using boost::logic::tribool;
|
using boost::logic::tribool;
|
||||||
class CCPPObjectScript;
|
class CCPPObjectScript;
|
||||||
class CGObjectInstance;
|
class CGObjectInstance;
|
||||||
@ -18,11 +19,11 @@ class CBuilding;
|
|||||||
class CSpell;
|
class CSpell;
|
||||||
class CGTownInstance;
|
class CGTownInstance;
|
||||||
class CArtifact;
|
class CArtifact;
|
||||||
class CSpecObjInfo //class with object - specific info (eg. different information for creatures and heroes); use inheritance to make object - specific classes
|
class DLL_EXPORT CSpecObjInfo //class with object - specific info (eg. different information for creatures and heroes); use inheritance to make object - specific classes
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
class CEventObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CEventObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool areGuarders; //true if there are
|
bool areGuarders; //true if there are
|
||||||
@ -48,7 +49,7 @@ public:
|
|||||||
bool humanActivate; //true if human player can activate this event
|
bool humanActivate; //true if human player can activate this event
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCastleEvent
|
class DLL_EXPORT CCastleEvent
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string name, message;
|
std::string name, message;
|
||||||
@ -68,7 +69,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCreatureObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CCreatureObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char bytes[4]; //mysterious bytes identifying creature
|
unsigned char bytes[4]; //mysterious bytes identifying creature
|
||||||
@ -81,13 +82,13 @@ public:
|
|||||||
bool notGrowingTeam; //if true, number of units won't grow
|
bool notGrowingTeam; //if true, number of units won't grow
|
||||||
};
|
};
|
||||||
|
|
||||||
class CSignObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CSignObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string message; //message
|
std::string message; //message
|
||||||
};
|
};
|
||||||
|
|
||||||
class CSeerHutObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CSeerHutObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char missionType; //type of mission: 0 - no mission; 1 - reach level; 2 - reach main statistics values; 3 - win with a certain hero; 4 - win with a certain creature; 5 - collect some atifacts; 6 - have certain troops in army; 7 - collect resources; 8 - be a certain hero; 9 - be a certain player
|
unsigned char missionType; //type of mission: 0 - no mission; 1 - reach level; 2 - reach main statistics values; 3 - win with a certain hero; 4 - win with a certain creature; 5 - collect some atifacts; 6 - have certain troops in army; 7 - collect resources; 8 - be a certain hero; 9 - be a certain player
|
||||||
@ -133,13 +134,13 @@ public:
|
|||||||
int r10amount;
|
int r10amount;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CWitchHutObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CWitchHutObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::vector<int> allowedAbilities;
|
std::vector<int> allowedAbilities;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CScholarObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CScholarObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char bonusType; //255 - random, 0 - primary skill, 1 - secondary skill, 2 - spell
|
unsigned char bonusType; //255 - random, 0 - primary skill, 1 - secondary skill, 2 - spell
|
||||||
@ -149,7 +150,7 @@ public:
|
|||||||
int r2; //Spell ID
|
int r2; //Spell ID
|
||||||
};
|
};
|
||||||
|
|
||||||
class CGarrisonObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CGarrisonObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char player; //255 - nobody; 0 - 7 - players
|
unsigned char player; //255 - nobody; 0 - 7 - players
|
||||||
@ -157,7 +158,7 @@ public:
|
|||||||
bool movableUnits; //if true, units can be moved
|
bool movableUnits; //if true, units can be moved
|
||||||
};
|
};
|
||||||
|
|
||||||
class CArtifactObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CArtifactObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool areGuards;
|
bool areGuards;
|
||||||
@ -165,7 +166,7 @@ public:
|
|||||||
CCreatureSet guards;
|
CCreatureSet guards;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CResourceObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CResourceObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool randomAmount;
|
bool randomAmount;
|
||||||
@ -175,19 +176,19 @@ public:
|
|||||||
std::string message;
|
std::string message;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CPlayerOnlyObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CPlayerOnlyObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char player; //FF - nobody, 0 - 7
|
unsigned char player; //FF - nobody, 0 - 7
|
||||||
};
|
};
|
||||||
|
|
||||||
class CShrineObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CShrineObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char spell; //number of spell or 255
|
unsigned char spell; //number of spell or 255
|
||||||
};
|
};
|
||||||
|
|
||||||
class CSpellScrollObjinfo : public CSpecObjInfo
|
class DLL_EXPORT CSpellScrollObjinfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string message;
|
std::string message;
|
||||||
@ -196,7 +197,7 @@ public:
|
|||||||
CCreatureSet guarders;
|
CCreatureSet guarders;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CPandorasBoxObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CPandorasBoxObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string message;
|
std::string message;
|
||||||
@ -217,13 +218,13 @@ public:
|
|||||||
CCreatureSet creatures;
|
CCreatureSet creatures;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CGrailObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CGrailObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int radius; //place grail at the distance lesser or equal radius from this place
|
int radius; //place grail at the distance lesser or equal radius from this place
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCreGenObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CCreGenObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char player; //owner
|
unsigned char player; //owner
|
||||||
@ -232,7 +233,7 @@ public:
|
|||||||
unsigned char castles[2]; //allowed castles
|
unsigned char castles[2]; //allowed castles
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCreGen2ObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CCreGen2ObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char player; //owner
|
unsigned char player; //owner
|
||||||
@ -242,14 +243,14 @@ public:
|
|||||||
unsigned char minLevel, maxLevel; //minimal and maximal level of creature in dwelling: <0, 6>
|
unsigned char minLevel, maxLevel; //minimal and maximal level of creature in dwelling: <0, 6>
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCreGen3ObjInfo : public CSpecObjInfo
|
class DLL_EXPORT CCreGen3ObjInfo : public CSpecObjInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned char player; //owner
|
unsigned char player; //owner
|
||||||
unsigned char minLevel, maxLevel; //minimal and maximal level of creature in dwelling: <0, 6>
|
unsigned char minLevel, maxLevel; //minimal and maximal level of creature in dwelling: <0, 6>
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBorderGuardObjInfo : public CSpecObjInfo //copied form seer huts, seems to be similar
|
class DLL_EXPORT CBorderGuardObjInfo : public CSpecObjInfo //copied form seer huts, seems to be similar
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
char missionType; //type of mission: 0 - no mission; 1 - reach level; 2 - reach main statistics values; 3 - win with a certain hero; 4 - win with a certain creature; 5 - collect some atifacts; 6 - have certain troops in army; 7 - collect resources; 8 - be a certain hero; 9 - be a certain player
|
char missionType; //type of mission: 0 - no mission; 1 - reach level; 2 - reach main statistics values; 3 - win with a certain hero; 4 - win with a certain creature; 5 - collect some atifacts; 6 - have certain troops in army; 7 - collect resources; 8 - be a certain hero; 9 - be a certain player
|
||||||
@ -278,15 +279,15 @@ public:
|
|||||||
std::string firstVisitText, nextVisitText, completedText;
|
std::string firstVisitText, nextVisitText, completedText;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CObject //typical object that can be encountered on a map
|
class DLL_EXPORT CObject //typical object that can be encountered on a map
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string name; //object's name
|
std::string name; //object's name
|
||||||
};
|
};
|
||||||
|
|
||||||
class CGDefInfo;
|
class DLL_EXPORT CGDefInfo;
|
||||||
|
|
||||||
class CGObjectInstance
|
class DLL_EXPORT CGObjectInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int3 pos; //h3m pos
|
int3 pos; //h3m pos
|
||||||
@ -313,13 +314,13 @@ public:
|
|||||||
CGObjectInstance& operator=(const CGObjectInstance & right);
|
CGObjectInstance& operator=(const CGObjectInstance & right);
|
||||||
};
|
};
|
||||||
|
|
||||||
class CArmedInstance: public CGObjectInstance
|
class DLL_EXPORT CArmedInstance: public CGObjectInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CCreatureSet army; //army
|
CCreatureSet army; //army
|
||||||
};
|
};
|
||||||
|
|
||||||
class CGHeroInstance : public CArmedInstance
|
class DLL_EXPORT CGHeroInstance : public CArmedInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int moveDir; //format: 123
|
int moveDir; //format: 123
|
||||||
@ -340,7 +341,7 @@ public:
|
|||||||
int identifier; //from the map file
|
int identifier; //from the map file
|
||||||
bool sex;
|
bool sex;
|
||||||
|
|
||||||
struct Patrol
|
struct DLL_EXPORT Patrol
|
||||||
{
|
{
|
||||||
Patrol(){patrolling=false;patrolRadious=-1;};
|
Patrol(){patrolling=false;patrolRadious=-1;};
|
||||||
bool patrolling;
|
bool patrolling;
|
||||||
@ -374,7 +375,7 @@ public:
|
|||||||
virtual ~CGHeroInstance();
|
virtual ~CGHeroInstance();
|
||||||
};
|
};
|
||||||
|
|
||||||
class CGTownInstance : public CArmedInstance
|
class DLL_EXPORT CGTownInstance : public CArmedInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CTown * town;
|
CTown * town;
|
||||||
@ -408,7 +409,7 @@ public:
|
|||||||
virtual ~CGTownInstance();
|
virtual ~CGTownInstance();
|
||||||
};
|
};
|
||||||
|
|
||||||
class CObjectHandler
|
class DLL_EXPORT CObjectHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::vector<CObject> objects; //vector of objects; i-th object in vector has subnumber i
|
std::vector<CObject> objects; //vector of objects; i-th object in vector has subnumber i
|
||||||
|
@ -6,7 +6,7 @@ class CBuilding;
|
|||||||
class CSpell;
|
class CSpell;
|
||||||
class CHero;
|
class CHero;
|
||||||
class CGTownInstance;
|
class CGTownInstance;
|
||||||
class CTown
|
class DLL_EXPORT CTown
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string name; //name of type
|
std::string name; //name of type
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
//class CMapHandler;
|
//class CMapHandler;
|
||||||
//class CArtHandler;
|
class CArtHandler;
|
||||||
//class CHeroHandler;
|
//class CHeroHandler;
|
||||||
class CCreatureHandler;
|
class CCreatureHandler;
|
||||||
//class CAbilityHandler;
|
//class CAbilityHandler;
|
||||||
@ -30,7 +30,7 @@ class LibClasses
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//CGameState * state;
|
//CGameState * state;
|
||||||
//CArtHandler * arth;
|
CArtHandler * arth;
|
||||||
//CHeroHandler * heroh;
|
//CHeroHandler * heroh;
|
||||||
CCreatureHandler * creh;
|
CCreatureHandler * creh;
|
||||||
//CAbilityHandler * abilh;
|
//CAbilityHandler * abilh;
|
||||||
|
@ -349,6 +349,10 @@
|
|||||||
RelativePath="..\hch\CLodHandler.cpp"
|
RelativePath="..\hch\CLodHandler.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\hch\CObjectHandler.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\hch\CTownHandler.cpp"
|
RelativePath="..\hch\CTownHandler.cpp"
|
||||||
>
|
>
|
||||||
@ -387,6 +391,10 @@
|
|||||||
RelativePath="..\hch\CLodHandler.h"
|
RelativePath="..\hch\CLodHandler.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\hch\CObjectHandler.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\hch\CTownHandler.h"
|
RelativePath="..\hch\CTownHandler.h"
|
||||||
>
|
>
|
||||||
|
@ -278,6 +278,8 @@ void CMapHandler::randomizeObject(CGObjectInstance *cur)
|
|||||||
if(!t->defInfo->handler)
|
if(!t->defInfo->handler)
|
||||||
{
|
{
|
||||||
t->defInfo->handler = CDefHandler::giveDef(t->defInfo->name);
|
t->defInfo->handler = CDefHandler::giveDef(t->defInfo->name);
|
||||||
|
t->defInfo->width = t->defInfo->handler->ourImages[0].bitmap->w/32;
|
||||||
|
t->defInfo->height = t->defInfo->handler->ourImages[0].bitmap->h/32;
|
||||||
alphaTransformDef(t->defInfo);
|
alphaTransformDef(t->defInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -310,6 +312,8 @@ void CMapHandler::randomizeObject(CGObjectInstance *cur)
|
|||||||
if(!t->defInfo->handler)
|
if(!t->defInfo->handler)
|
||||||
{
|
{
|
||||||
t->defInfo->handler = CDefHandler::giveDef(t->defInfo->name);
|
t->defInfo->handler = CDefHandler::giveDef(t->defInfo->name);
|
||||||
|
t->defInfo->width = t->defInfo->handler->ourImages[0].bitmap->w/32;
|
||||||
|
t->defInfo->height = t->defInfo->handler->ourImages[0].bitmap->h/32;
|
||||||
alphaTransformDef(t->defInfo);
|
alphaTransformDef(t->defInfo);
|
||||||
}
|
}
|
||||||
//CGI->townh->townInstances.push_back(t);
|
//CGI->townh->townInstances.push_back(t);
|
||||||
@ -323,6 +327,8 @@ void CMapHandler::randomizeObject(CGObjectInstance *cur)
|
|||||||
if(!cur->defInfo->handler) //if we have to load def
|
if(!cur->defInfo->handler) //if we have to load def
|
||||||
{
|
{
|
||||||
cur->defInfo->handler = CDefHandler::giveDef(cur->defInfo->name);
|
cur->defInfo->handler = CDefHandler::giveDef(cur->defInfo->name);
|
||||||
|
cur->defInfo->width = cur->defInfo->handler->ourImages[0].bitmap->w/32;
|
||||||
|
cur->defInfo->height = cur->defInfo->handler->ourImages[0].bitmap->h/32;
|
||||||
alphaTransformDef(cur->defInfo);
|
alphaTransformDef(cur->defInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -810,9 +816,15 @@ void CMapHandler::init()
|
|||||||
for (int ir=0;ir<map->defy.size();ir++)
|
for (int ir=0;ir<map->defy.size();ir++)
|
||||||
{
|
{
|
||||||
map->defy[ir]->handler=CDefHandler::giveDef(map->defy[ir]->name);
|
map->defy[ir]->handler=CDefHandler::giveDef(map->defy[ir]->name);
|
||||||
|
map->defy[ir]->width = map->defy[ir]->handler->ourImages[0].bitmap->w/32;
|
||||||
|
map->defy[ir]->height = map->defy[ir]->handler->ourImages[0].bitmap->h/32;
|
||||||
CGDefInfo* pom = CGI->dobjinfo->gobjs[map->defy[ir]->id][map->defy[ir]->subid];
|
CGDefInfo* pom = CGI->dobjinfo->gobjs[map->defy[ir]->id][map->defy[ir]->subid];
|
||||||
if(pom)
|
if(pom)
|
||||||
|
{
|
||||||
pom->handler=map->defy[ir]->handler;
|
pom->handler=map->defy[ir]->handler;
|
||||||
|
pom->width = pom->handler->ourImages[0].bitmap->w/32;
|
||||||
|
pom->height = pom->handler->ourImages[0].bitmap->h/32;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
std::cout << "Lacking def info for " << map->defy[ir]->id << " " << map->defy[ir]->subid <<" " << map->defy[ir]->name << std::endl;
|
std::cout << "Lacking def info for " << map->defy[ir]->id << " " << map->defy[ir]->subid <<" " << map->defy[ir]->name << std::endl;
|
||||||
}
|
}
|
||||||
@ -838,6 +850,11 @@ void CMapHandler::init()
|
|||||||
ifs >> n->name;
|
ifs >> n->name;
|
||||||
if (!(n->handler = CDefHandler::giveDef(n->name)))
|
if (!(n->handler = CDefHandler::giveDef(n->name)))
|
||||||
std::cout << "Cannot open "<<n->name<<std::endl;
|
std::cout << "Cannot open "<<n->name<<std::endl;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n->width = n->handler->ourImages[0].bitmap->w/32;
|
||||||
|
n->height = n->handler->ourImages[0].bitmap->h/32;
|
||||||
|
}
|
||||||
if(i<ccc)
|
if(i<ccc)
|
||||||
villages[i]=n;
|
villages[i]=n;
|
||||||
else
|
else
|
||||||
@ -1543,7 +1560,11 @@ CGObjectInstance * CMapHandler::createObject(int id, int subid, int3 pos, int ow
|
|||||||
return nobj;
|
return nobj;
|
||||||
nobj->defInfo = CGI->dobjinfo->gobjs[id][subid];
|
nobj->defInfo = CGI->dobjinfo->gobjs[id][subid];
|
||||||
if(!nobj->defInfo->handler)
|
if(!nobj->defInfo->handler)
|
||||||
|
{
|
||||||
nobj->defInfo->handler = CDefHandler::giveDef(nobj->defInfo->name);
|
nobj->defInfo->handler = CDefHandler::giveDef(nobj->defInfo->name);
|
||||||
|
nobj->defInfo->width = nobj->defInfo->handler->ourImages[0].bitmap->w/32;
|
||||||
|
nobj->defInfo->height = nobj->defInfo->handler->ourImages[0].bitmap->h/32;
|
||||||
|
}
|
||||||
return nobj;
|
return nobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user