mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
* minor changes, I hope it spoils nothing
This commit is contained in:
parent
4bc0d1ace6
commit
7853a19b54
@ -19,7 +19,7 @@ extern CLodHandler * bitmaph;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool CGDefInfo::isVisitable()
|
bool CGDefInfo::isVisitable() const
|
||||||
{
|
{
|
||||||
for (int i=0; i<6; i++)
|
for (int i=0; i<6; i++)
|
||||||
{
|
{
|
||||||
@ -37,7 +37,6 @@ CGDefInfo::CGDefInfo()
|
|||||||
void CDefObjInfoHandler::load()
|
void CDefObjInfoHandler::load()
|
||||||
{
|
{
|
||||||
VLC->dobjinfo = this;
|
VLC->dobjinfo = this;
|
||||||
nodrze<int> ideki;
|
|
||||||
std::istringstream inp(bitmaph->getTextFile("ZOBJCTS.TXT"));
|
std::istringstream inp(bitmaph->getTextFile("ZOBJCTS.TXT"));
|
||||||
int objNumber;
|
int objNumber;
|
||||||
inp>>objNumber;
|
inp>>objNumber;
|
||||||
|
@ -33,8 +33,8 @@ public:
|
|||||||
si32 type; //(0- ground, 1- towns, 2-creatures, 3- heroes, 4-artifacts, 5- resources)
|
si32 type; //(0- ground, 1- towns, 2-creatures, 3- heroes, 4-artifacts, 5- resources)
|
||||||
CDefEssential * handler;
|
CDefEssential * handler;
|
||||||
si32 printPriority;
|
si32 printPriority;
|
||||||
bool isVisitable();
|
bool isVisitable() const;
|
||||||
bool operator<(const CGDefInfo& por)
|
bool operator<(const CGDefInfo& por) const
|
||||||
{
|
{
|
||||||
if(id!=por.id)
|
if(id!=por.id)
|
||||||
return id<por.id;
|
return id<por.id;
|
||||||
|
@ -91,7 +91,7 @@ struct DLL_EXPORT CObstacleInfo
|
|||||||
class DLL_EXPORT CHeroHandler
|
class DLL_EXPORT CHeroHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::vector<CHero*> heroes; //by這 nodrze //changed from nodrze
|
std::vector<CHero*> heroes; //changed from nodrze
|
||||||
std::vector<CHeroClass *> heroClasses;
|
std::vector<CHeroClass *> heroClasses;
|
||||||
std::vector<int> expPerLevel; //expPerLEvel[i] is amount of exp needed to reach level i; if it is not in this vector, multiplicate last value by 1,2 to get next value
|
std::vector<int> expPerLevel; //expPerLEvel[i] is amount of exp needed to reach level i; if it is not in this vector, multiplicate last value by 1,2 to get next value
|
||||||
|
|
||||||
|
148
mapHandler.cpp
148
mapHandler.cpp
@ -29,69 +29,50 @@
|
|||||||
|
|
||||||
extern SDL_Surface * screen;
|
extern SDL_Surface * screen;
|
||||||
|
|
||||||
static std::string nameFromType (int typ)
|
std::string nameFromType (int typ)
|
||||||
{
|
{
|
||||||
switch(static_cast<TerrainTile::EterrainType>(typ))
|
switch(static_cast<TerrainTile::EterrainType>(typ))
|
||||||
{
|
{
|
||||||
case TerrainTile::dirt:
|
case TerrainTile::dirt:
|
||||||
{
|
|
||||||
return std::string("DIRTTL.DEF");
|
return std::string("DIRTTL.DEF");
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::sand:
|
case TerrainTile::sand:
|
||||||
{
|
|
||||||
return std::string("SANDTL.DEF");
|
return std::string("SANDTL.DEF");
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::grass:
|
case TerrainTile::grass:
|
||||||
{
|
|
||||||
return std::string("GRASTL.DEF");
|
return std::string("GRASTL.DEF");
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::snow:
|
case TerrainTile::snow:
|
||||||
{
|
|
||||||
return std::string("SNOWTL.DEF");
|
return std::string("SNOWTL.DEF");
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::swamp:
|
case TerrainTile::swamp:
|
||||||
{
|
return std::string("SWMPTL.DEF");
|
||||||
return std::string("SWMPTL.DEF");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::rough:
|
case TerrainTile::rough:
|
||||||
{
|
return std::string("ROUGTL.DEF");
|
||||||
return std::string("ROUGTL.DEF");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::subterranean:
|
case TerrainTile::subterranean:
|
||||||
{
|
return std::string("SUBBTL.DEF");
|
||||||
return std::string("SUBBTL.DEF");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::lava:
|
case TerrainTile::lava:
|
||||||
{
|
return std::string("LAVATL.DEF");
|
||||||
return std::string("LAVATL.DEF");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::water:
|
case TerrainTile::water:
|
||||||
{
|
|
||||||
return std::string("WATRTL.DEF");
|
return std::string("WATRTL.DEF");
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TerrainTile::rock:
|
case TerrainTile::rock:
|
||||||
{
|
return std::string("ROCKTL.DEF");
|
||||||
return std::string("ROCKTL.DEF");
|
|
||||||
break;
|
case TerrainTile::border:
|
||||||
}
|
//TODO use me
|
||||||
case TerrainTile::border:
|
break;
|
||||||
//TODO use me
|
default:
|
||||||
break;
|
//TODO do something here
|
||||||
default:
|
break;
|
||||||
//TODO do something here
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OCM_HLP
|
struct OCM_HLP
|
||||||
{
|
{
|
||||||
bool operator ()(const std::pair<const CGObjectInstance*, SDL_Rect> & a, const std::pair<const CGObjectInstance*, SDL_Rect> & b)
|
bool operator ()(const std::pair<const CGObjectInstance*, SDL_Rect> & a, const std::pair<const CGObjectInstance*, SDL_Rect> & b)
|
||||||
@ -99,64 +80,39 @@ struct OCM_HLP
|
|||||||
return (*a.first)<(*b.first);
|
return (*a.first)<(*b.first);
|
||||||
}
|
}
|
||||||
} ocmptwo ;
|
} ocmptwo ;
|
||||||
static void alphaTransformDef(CGDefInfo * defInfo)
|
|
||||||
|
void alphaTransformDef(CGDefInfo * defInfo)
|
||||||
{
|
{
|
||||||
SDL_Surface * alphaTransSurf = SDL_CreateRGBSurface(SDL_SWSURFACE, 12, 12, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000);
|
for(int yy=0; yy<defInfo->handler->ourImages.size(); ++yy)
|
||||||
for(int yy=0;yy<defInfo->handler->ourImages.size();yy++)
|
|
||||||
{
|
{
|
||||||
CSDL_Ext::alphaTransform(defInfo->handler->ourImages[yy].bitmap);
|
CSDL_Ext::alphaTransform(defInfo->handler->ourImages[yy].bitmap);
|
||||||
}
|
}
|
||||||
SDL_FreeSurface(alphaTransSurf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMapHandler::prepareFOWDefs()
|
void CMapHandler::prepareFOWDefs()
|
||||||
{
|
{
|
||||||
fullHide = CDefHandler::giveDef("TSHRC.DEF");
|
fullHide = CDefHandler::giveDef("TSHRC.DEF");
|
||||||
partialHide = CDefHandler::giveDef("TSHRE.DEF");
|
partialHide = CDefHandler::giveDef("TSHRE.DEF");
|
||||||
|
|
||||||
//adding necessary rotations
|
//adding necessary rotations
|
||||||
Cimage nw = partialHide->ourImages[22]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
int missRot [] = {22, 15, 2, 13, 12, 16, 18, 17, 20, 19, 7, 24, 26, 25, 30, 32, 27, 28};
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[15]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
Cimage nw;
|
||||||
partialHide->ourImages.push_back(nw);
|
for(int g=0; g<ARRAY_COUNT(missRot); ++g)
|
||||||
nw = partialHide->ourImages[2]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
{
|
||||||
partialHide->ourImages.push_back(nw);
|
nw = partialHide->ourImages[missRot[g]];
|
||||||
nw = partialHide->ourImages[13]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
||||||
partialHide->ourImages.push_back(nw);
|
partialHide->ourImages.push_back(nw);
|
||||||
nw = partialHide->ourImages[12]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
}
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[16]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[18]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[17]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[20]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[19]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[7]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[24]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[26]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[25]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[30]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[32]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[27]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
nw = partialHide->ourImages[28]; nw.bitmap = CSDL_Ext::rotate01(nw.bitmap);
|
|
||||||
partialHide->ourImages.push_back(nw);
|
|
||||||
//necessaary rotations added
|
//necessaary rotations added
|
||||||
|
|
||||||
|
//alpha - transformation
|
||||||
for(size_t i=0; i<partialHide->ourImages.size(); ++i)
|
for(size_t i=0; i<partialHide->ourImages.size(); ++i)
|
||||||
{
|
{
|
||||||
CSDL_Ext::alphaTransform(partialHide->ourImages[i].bitmap);
|
CSDL_Ext::alphaTransform(partialHide->ourImages[i].bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//initialization of type of full-hide image
|
||||||
hideBitmap.resize(CGI->mh->map->width);
|
hideBitmap.resize(CGI->mh->map->width);
|
||||||
for (size_t i=0;i<hideBitmap.size();i++)
|
for (size_t i=0;i<hideBitmap.size();i++)
|
||||||
{
|
{
|
||||||
@ -218,11 +174,11 @@ void CMapHandler::roadsRiverTerrainInit()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Draw the map
|
// Draw the map
|
||||||
for (int i=0; i<map->width; i++) //jest po szeroko�ci
|
for (int i=0; i<map->width; i++) //by width
|
||||||
{
|
{
|
||||||
for (int j=0; j<map->height;j++) //po wysoko�ci
|
for (int j=0; j<map->height;j++) //by height
|
||||||
{
|
{
|
||||||
for (int k=0; k<=map->twoLevel; ++k)
|
for (int k=0; k<=map->twoLevel; ++k) //by levels
|
||||||
{
|
{
|
||||||
TerrainTile2 &pom(ttiles[i][j][k]);
|
TerrainTile2 &pom(ttiles[i][j][k]);
|
||||||
pom.pos = int3(i, j, k);
|
pom.pos = int3(i, j, k);
|
||||||
@ -261,11 +217,11 @@ void CMapHandler::roadsRiverTerrainInit()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=0; i<map->width; i++) //jest po szeroko�ci
|
for (int i=0; i<map->width; i++) //by width
|
||||||
{
|
{
|
||||||
for (int j=0; j<map->height;j++) //po wysoko�ci
|
for (int j=0; j<map->height;j++) //by height
|
||||||
{
|
{
|
||||||
for(int k=0; k<=map->twoLevel; ++k)
|
for(int k=0; k<=map->twoLevel; ++k) //by levels
|
||||||
{
|
{
|
||||||
if(map->terrain[i][j][k].nuine)
|
if(map->terrain[i][j][k].nuine)
|
||||||
{
|
{
|
||||||
@ -314,11 +270,11 @@ void CMapHandler::borderAndTerrainBitmapInit()
|
|||||||
delete hlp;
|
delete hlp;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=0-frameW; i<map->width+frameW; i++) //jest po szeroko�ci
|
for (int i=0-frameW; i<map->width+frameW; i++) //by width
|
||||||
{
|
{
|
||||||
for (int j=0-frameH; j<map->height+frameH;j++) //po wysoko�ci
|
for (int j=0-frameH; j<map->height+frameH;j++) //by height
|
||||||
{
|
{
|
||||||
for(int k=0; k<=map->twoLevel; ++k)
|
for(int k=0; k<=map->twoLevel; ++k) //by levles
|
||||||
{
|
{
|
||||||
if(i < 0 || i > (map->width-1) || j < 0 || j > (map->height-1))
|
if(i < 0 || i > (map->width-1) || j < 0 || j > (map->height-1))
|
||||||
{
|
{
|
||||||
@ -430,8 +386,9 @@ void CMapHandler::initObjectRects()
|
|||||||
}
|
}
|
||||||
static void processDef (CGDefInfo* def)
|
static void processDef (CGDefInfo* def)
|
||||||
{
|
{
|
||||||
if(def->id == 26)
|
if(def->id == 26) //if it's event, return from function
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(!def->handler) //if object has already set handler (eg. heroes) it should not be overwritten
|
if(!def->handler) //if object has already set handler (eg. heroes) it should not be overwritten
|
||||||
{
|
{
|
||||||
if(def->name.size())
|
if(def->name.size())
|
||||||
@ -457,6 +414,7 @@ static void processDef (CGDefInfo* def)
|
|||||||
else if(def->id != HEROI_TYPE && def->id != TOWNI_TYPE)
|
else if(def->id != HEROI_TYPE && def->id != TOWNI_TYPE)
|
||||||
tlog3 << "\t\tMinor warning: lacking def info for " << def->id << " " << def->subid <<" " << def->name << std::endl;
|
tlog3 << "\t\tMinor warning: lacking def info for " << def->id << " " << def->subid <<" " << def->name << std::endl;
|
||||||
|
|
||||||
|
//alpha transformation
|
||||||
for(size_t yy=0; yy < def->handler->ourImages.size(); ++yy)
|
for(size_t yy=0; yy < def->handler->ourImages.size(); ++yy)
|
||||||
{
|
{
|
||||||
CSDL_Ext::alphaTransform(def->handler->ourImages[yy].bitmap);
|
CSDL_Ext::alphaTransform(def->handler->ourImages[yy].bitmap);
|
||||||
@ -810,6 +768,7 @@ void CMapHandler::terrainRect(int3 top_tile, unsigned char anim, std::vector< st
|
|||||||
flg = &Graphics::flags4;
|
flg = &Graphics::flags4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//print hero / boat and flag
|
||||||
if(!themp->isStanding) //hero is moving
|
if(!themp->isStanding) //hero is moving
|
||||||
{
|
{
|
||||||
size_t gg;
|
size_t gg;
|
||||||
@ -822,6 +781,8 @@ void CMapHandler::terrainRect(int3 top_tile, unsigned char anim, std::vector< st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
CSDL_Ext::blit8bppAlphaTo24bpp(tb,&pp,extSurf,&sr);
|
CSDL_Ext::blit8bppAlphaTo24bpp(tb,&pp,extSurf,&sr);
|
||||||
|
|
||||||
|
//printing flag
|
||||||
pp.y+=imgVal*2-32;
|
pp.y+=imgVal*2-32;
|
||||||
sr.y-=16;
|
sr.y-=16;
|
||||||
SDL_BlitSurface((graphics->*flg)[themp->getOwner()]->ourImages[gg+heroAnim%imgVal+35].bitmap, &pp, extSurf, &sr);
|
SDL_BlitSurface((graphics->*flg)[themp->getOwner()]->ourImages[gg+heroAnim%imgVal+35].bitmap, &pp, extSurf, &sr);
|
||||||
@ -839,6 +800,7 @@ void CMapHandler::terrainRect(int3 top_tile, unsigned char anim, std::vector< st
|
|||||||
}
|
}
|
||||||
CSDL_Ext::blit8bppAlphaTo24bpp(tb,&pp,extSurf,&sr);
|
CSDL_Ext::blit8bppAlphaTo24bpp(tb,&pp,extSurf,&sr);
|
||||||
|
|
||||||
|
//printing flag
|
||||||
if(themp->pos.x==top_tile.x+bx && themp->pos.y==top_tile.y+by)
|
if(themp->pos.x==top_tile.x+bx && themp->pos.y==top_tile.y+by)
|
||||||
{
|
{
|
||||||
SDL_Rect bufr = sr;
|
SDL_Rect bufr = sr;
|
||||||
@ -1358,7 +1320,7 @@ bool CMapHandler::removeObject(CGObjectInstance *obj)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char CMapHandler::getHeroFrameNum(const unsigned char &dir, const bool &isMoving) const
|
unsigned char CMapHandler::getHeroFrameNum(unsigned char dir, bool isMoving) const
|
||||||
{
|
{
|
||||||
if(isMoving)
|
if(isMoving)
|
||||||
{
|
{
|
||||||
|
@ -138,7 +138,7 @@ public:
|
|||||||
|
|
||||||
void terrainRect(int3 top_tile, unsigned char anim, std::vector< std::vector< std::vector<unsigned char> > > * visibilityMap, bool otherHeroAnim, unsigned char heroAnim, SDL_Surface * extSurf, const SDL_Rect * extRect, int moveX, int moveY);
|
void terrainRect(int3 top_tile, unsigned char anim, std::vector< std::vector< std::vector<unsigned char> > > * visibilityMap, bool otherHeroAnim, unsigned char heroAnim, SDL_Surface * extSurf, const SDL_Rect * extRect, int moveX, int moveY);
|
||||||
void updateWater();
|
void updateWater();
|
||||||
unsigned char getHeroFrameNum(const unsigned char & dir, const bool & isMoving) const; //terrainRect helper function
|
unsigned char getHeroFrameNum(unsigned char dir, bool isMoving) const; //terrainRect helper function
|
||||||
void validateRectTerr(SDL_Rect * val, const SDL_Rect * ext); //terrainRect helper
|
void validateRectTerr(SDL_Rect * val, const SDL_Rect * ext); //terrainRect helper
|
||||||
static unsigned char getDir(const int3 & a, const int3 & b); //returns direction number in range 0 - 7 (0 is left top, clockwise) [direction: form a to b]
|
static unsigned char getDir(const int3 & a, const int3 & b); //returns direction number in range 0 - 7 (0 is left top, clockwise) [direction: form a to b]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user