mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-26 22:57:00 +02:00
* moved graphics from CAbilityHandler to Graphics
* reading BALLIST.TXT * minor changes
This commit is contained in:
parent
7b2585e422
commit
ba9b58d3a4
@ -367,9 +367,9 @@ const CCreatureSet* CCallback::getGarrison(const CGObjectInstance *obj) const
|
|||||||
boost::shared_lock<boost::shared_mutex> lock(*gs->mx);
|
boost::shared_lock<boost::shared_mutex> lock(*gs->mx);
|
||||||
if(!obj)
|
if(!obj)
|
||||||
return NULL;
|
return NULL;
|
||||||
if(obj->ID == 34)
|
if(obj->ID == HEROI_TYPE)
|
||||||
return &(dynamic_cast<const CGHeroInstance*>(obj))->army;
|
return &(dynamic_cast<const CGHeroInstance*>(obj))->army;
|
||||||
else if(obj->ID == 98)
|
else if(obj->ID == TOWNI_TYPE)
|
||||||
return &(dynamic_cast<const CGTownInstance*>(obj)->army);
|
return &(dynamic_cast<const CGTownInstance*>(obj)->army);
|
||||||
else return NULL;
|
else return NULL;
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ CGObjectInstance * createObject(int id, int subid, int3 pos, int owner)
|
|||||||
CGObjectInstance * nobj;
|
CGObjectInstance * nobj;
|
||||||
switch(id)
|
switch(id)
|
||||||
{
|
{
|
||||||
case 34: //hero
|
case HEROI_TYPE: //hero
|
||||||
{
|
{
|
||||||
CGHeroInstance * nobj = new CGHeroInstance();
|
CGHeroInstance * nobj = new CGHeroInstance();
|
||||||
nobj->pos = pos;
|
nobj->pos = pos;
|
||||||
@ -117,7 +117,7 @@ CGObjectInstance * createObject(int id, int subid, int3 pos, int owner)
|
|||||||
//nobj->initHero(ran);
|
//nobj->initHero(ran);
|
||||||
return nobj;
|
return nobj;
|
||||||
}
|
}
|
||||||
case 98: //town
|
case TOWNI_TYPE: //town
|
||||||
nobj = new CGTownInstance;
|
nobj = new CGTownInstance;
|
||||||
break;
|
break;
|
||||||
default: //rest of objects
|
default: //rest of objects
|
||||||
@ -137,7 +137,7 @@ CGObjectInstance * createObject(int id, int subid, int3 pos, int owner)
|
|||||||
nobj->defInfo->subid = subid;
|
nobj->defInfo->subid = subid;
|
||||||
|
|
||||||
//assigning defhandler
|
//assigning defhandler
|
||||||
if(nobj->ID==34 || nobj->ID==98)
|
if(nobj->ID==HEROI_TYPE || nobj->ID==TOWNI_TYPE)
|
||||||
return nobj;
|
return nobj;
|
||||||
nobj->defInfo = VLC->dobjinfo->gobjs[id][subid];
|
nobj->defInfo = VLC->dobjinfo->gobjs[id][subid];
|
||||||
return nobj;
|
return nobj;
|
||||||
@ -635,7 +635,7 @@ void CGameState::applyNL(IPack * pack)
|
|||||||
{
|
{
|
||||||
RemoveObject *rh = static_cast<RemoveObject*>(pack);
|
RemoveObject *rh = static_cast<RemoveObject*>(pack);
|
||||||
CGObjectInstance *obj = map->objects[rh->id];
|
CGObjectInstance *obj = map->objects[rh->id];
|
||||||
if(obj->ID==34)
|
if(obj->ID==HEROI_TYPE)
|
||||||
{
|
{
|
||||||
CGHeroInstance *h = static_cast<CGHeroInstance*>(obj);
|
CGHeroInstance *h = static_cast<CGHeroInstance*>(obj);
|
||||||
std::vector<CGHeroInstance*>::iterator nitr = std::find(map->heroes.begin(), map->heroes.end(),h);
|
std::vector<CGHeroInstance*>::iterator nitr = std::find(map->heroes.begin(), map->heroes.end(),h);
|
||||||
@ -685,9 +685,9 @@ void CGameState::applyNL(IPack * pack)
|
|||||||
{
|
{
|
||||||
CArmedInstance *ai = static_cast<CArmedInstance*>(map->objects[i->first]);
|
CArmedInstance *ai = static_cast<CArmedInstance*>(map->objects[i->first]);
|
||||||
ai->army = i->second;
|
ai->army = i->second;
|
||||||
if(ai->ID==98 && (static_cast<CGTownInstance*>(ai))->garrisonHero) //if there is a hero in garrison then we must update also his army
|
if(ai->ID==TOWNI_TYPE && (static_cast<CGTownInstance*>(ai))->garrisonHero) //if there is a hero in garrison then we must update also his army
|
||||||
const_cast<CGHeroInstance*>((static_cast<CGTownInstance*>(ai))->garrisonHero)->army = i->second;
|
const_cast<CGHeroInstance*>((static_cast<CGTownInstance*>(ai))->garrisonHero)->army = i->second;
|
||||||
else if(ai->ID==34)
|
else if(ai->ID==HEROI_TYPE)
|
||||||
{
|
{
|
||||||
CGHeroInstance *h = static_cast<CGHeroInstance*>(ai);
|
CGHeroInstance *h = static_cast<CGHeroInstance*>(ai);
|
||||||
if(h->visitedTown && h->inTownGarrison)
|
if(h->visitedTown && h->inTownGarrison)
|
||||||
@ -954,7 +954,7 @@ std::pair<int,int> CGameState::pickObject(CGObjectInstance *obj)
|
|||||||
return std::pair<int,int>(5,VLC->arth->relics[ran()%VLC->arth->relics.size()]->id);
|
return std::pair<int,int>(5,VLC->arth->relics[ran()%VLC->arth->relics.size()]->id);
|
||||||
case 70: //random hero
|
case 70: //random hero
|
||||||
{
|
{
|
||||||
return std::pair<int,int>(34,pickHero(obj->tempOwner));
|
return std::pair<int,int>(HEROI_TYPE,pickHero(obj->tempOwner));
|
||||||
}
|
}
|
||||||
case 71: //random monster
|
case 71: //random monster
|
||||||
{
|
{
|
||||||
@ -991,7 +991,7 @@ std::pair<int,int> CGameState::pickObject(CGObjectInstance *obj)
|
|||||||
f = scenarioOps->getIthPlayersSettings(align).castle;
|
f = scenarioOps->getIthPlayersSettings(align).castle;
|
||||||
}
|
}
|
||||||
if(f<0) f = ran()%VLC->townh->towns.size();
|
if(f<0) f = ran()%VLC->townh->towns.size();
|
||||||
return std::pair<int,int>(98,f);
|
return std::pair<int,int>(TOWNI_TYPE,f);
|
||||||
}
|
}
|
||||||
case 162: //random monster lvl5
|
case 162: //random monster lvl5
|
||||||
return std::pair<int,int>(54,VLC->creh->levelCreatures[5][ran()%VLC->creh->levelCreatures[5].size()]->idNumber);
|
return std::pair<int,int>(54,VLC->creh->levelCreatures[5][ran()%VLC->creh->levelCreatures[5].size()]->idNumber);
|
||||||
@ -1013,7 +1013,7 @@ std::pair<int,int> CGameState::pickObject(CGObjectInstance *obj)
|
|||||||
faction = map->objects[i]->subID;
|
faction = map->objects[i]->subID;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(map->objects[i]->ID==98 && dynamic_cast<CGTownInstance*>(map->objects[i])->identifier == info->identifier)
|
else if(map->objects[i]->ID==TOWNI_TYPE && dynamic_cast<CGTownInstance*>(map->objects[i])->identifier == info->identifier)
|
||||||
{
|
{
|
||||||
faction = map->objects[i]->subID;
|
faction = map->objects[i]->subID;
|
||||||
break;
|
break;
|
||||||
@ -1051,7 +1051,7 @@ std::pair<int,int> CGameState::pickObject(CGObjectInstance *obj)
|
|||||||
faction = map->objects[i]->subID;
|
faction = map->objects[i]->subID;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(map->objects[i]->ID==98 && dynamic_cast<CGTownInstance*>(map->objects[i])->identifier == info->identifier)
|
else if(map->objects[i]->ID==TOWNI_TYPE && dynamic_cast<CGTownInstance*>(map->objects[i])->identifier == info->identifier)
|
||||||
{
|
{
|
||||||
faction = map->objects[i]->subID;
|
faction = map->objects[i]->subID;
|
||||||
break;
|
break;
|
||||||
@ -1093,7 +1093,7 @@ void CGameState::randomizeObject(CGObjectInstance *cur)
|
|||||||
std::pair<int,int> ran = pickObject(cur);
|
std::pair<int,int> ran = pickObject(cur);
|
||||||
if(ran.first<0 || ran.second<0) //this is not a random object, or we couldn't find anything
|
if(ran.first<0 || ran.second<0) //this is not a random object, or we couldn't find anything
|
||||||
{
|
{
|
||||||
if(cur->ID==98) //town - set def
|
if(cur->ID==TOWNI_TYPE) //town - set def
|
||||||
{
|
{
|
||||||
CGTownInstance *t = dynamic_cast<CGTownInstance*>(cur);
|
CGTownInstance *t = dynamic_cast<CGTownInstance*>(cur);
|
||||||
if(t->hasCapitol())
|
if(t->hasCapitol())
|
||||||
@ -1105,7 +1105,7 @@ void CGameState::randomizeObject(CGObjectInstance *cur)
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if(ran.first==34)//special code for hero
|
else if(ran.first==HEROI_TYPE)//special code for hero
|
||||||
{
|
{
|
||||||
CGHeroInstance *h = dynamic_cast<CGHeroInstance *>(cur);
|
CGHeroInstance *h = dynamic_cast<CGHeroInstance *>(cur);
|
||||||
if(!h) {tlog2<<"Wrong random hero at "<<cur->pos<<std::endl; return;}
|
if(!h) {tlog2<<"Wrong random hero at "<<cur->pos<<std::endl; return;}
|
||||||
@ -1115,7 +1115,7 @@ void CGameState::randomizeObject(CGObjectInstance *cur)
|
|||||||
map->heroes.push_back(h);
|
map->heroes.push_back(h);
|
||||||
return; //TODO: maybe we should do something with definfo?
|
return; //TODO: maybe we should do something with definfo?
|
||||||
}
|
}
|
||||||
else if(ran.first==98)//special code for town
|
else if(ran.first==TOWNI_TYPE)//special code for town
|
||||||
{
|
{
|
||||||
CGTownInstance *t = dynamic_cast<CGTownInstance*>(cur);
|
CGTownInstance *t = dynamic_cast<CGTownInstance*>(cur);
|
||||||
if(!t) {tlog2<<"Wrong random town at "<<cur->pos<<std::endl; return;}
|
if(!t) {tlog2<<"Wrong random town at "<<cur->pos<<std::endl; return;}
|
||||||
@ -1233,7 +1233,7 @@ void CGameState::init(StartInfo * si, Mapa * map, int Seed)
|
|||||||
if(j == scenarioOps->playerInfos.size())
|
if(j == scenarioOps->playerInfos.size())
|
||||||
continue;
|
continue;
|
||||||
int h=pickHero(i);
|
int h=pickHero(i);
|
||||||
CGHeroInstance * nnn = static_cast<CGHeroInstance*>(createObject(34,h,hpos,i));
|
CGHeroInstance * nnn = static_cast<CGHeroInstance*>(createObject(HEROI_TYPE,h,hpos,i));
|
||||||
nnn->id = map->objects.size();
|
nnn->id = map->objects.size();
|
||||||
hpos = map->players[i].posOfMainTown;hpos.x+=2;
|
hpos = map->players[i].posOfMainTown;hpos.x+=2;
|
||||||
for(int o=0;o<map->towns.size();o++) //find main town
|
for(int o=0;o<map->towns.size();o++) //find main town
|
||||||
@ -1544,10 +1544,10 @@ UpgradeInfo CGameState::getUpgradeInfo(CArmedInstance *obj, int stackPos)
|
|||||||
{
|
{
|
||||||
UpgradeInfo ret;
|
UpgradeInfo ret;
|
||||||
CCreature *base = &VLC->creh->creatures[obj->army.slots[stackPos].first];
|
CCreature *base = &VLC->creh->creatures[obj->army.slots[stackPos].first];
|
||||||
if((obj->ID == 98) || ((obj->ID == 34) && static_cast<const CGHeroInstance*>(obj)->visitedTown))
|
if((obj->ID == TOWNI_TYPE) || ((obj->ID == HEROI_TYPE) && static_cast<const CGHeroInstance*>(obj)->visitedTown))
|
||||||
{
|
{
|
||||||
CGTownInstance * t;
|
CGTownInstance * t;
|
||||||
if(obj->ID == 98)
|
if(obj->ID == TOWNI_TYPE)
|
||||||
t = static_cast<CGTownInstance *>(const_cast<CArmedInstance *>(obj));
|
t = static_cast<CGTownInstance *>(const_cast<CArmedInstance *>(obj));
|
||||||
else
|
else
|
||||||
t = static_cast<const CGHeroInstance*>(obj)->visitedTown;
|
t = static_cast<const CGHeroInstance*>(obj)->visitedTown;
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#include "client/CSpellWindow.h"
|
#include "client/CSpellWindow.h"
|
||||||
#include "client/CConfigHandler.h"
|
#include "client/CConfigHandler.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "hch/CAbilityHandler.h"
|
|
||||||
#include "hch/CArtHandler.h"
|
#include "hch/CArtHandler.h"
|
||||||
#include "hch/CDefHandler.h"
|
#include "hch/CDefHandler.h"
|
||||||
#include "hch/CGeneralTextHandler.h"
|
#include "hch/CGeneralTextHandler.h"
|
||||||
@ -648,49 +647,49 @@ void CHeroWindow::redrawCurBack()
|
|||||||
//secondary skills
|
//secondary skills
|
||||||
if(curHero->secSkills.size()>=1)
|
if(curHero->secSkills.size()>=1)
|
||||||
{
|
{
|
||||||
blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[0].first*3+3+curHero->secSkills[0].second-1].bitmap, 18, 276, curBack);
|
blitAt(graphics->abils44->ourImages[curHero->secSkills[0].first*3+3+curHero->secSkills[0].second-1].bitmap, 18, 276, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[0].second-1], 69, 279, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[0].second-1], 69, 279, GEOR13, zwykly, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[0].first], 69, 299, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[0].first], 69, 299, GEOR13, zwykly, curBack);
|
||||||
}
|
}
|
||||||
if(curHero->secSkills.size()>=2)
|
if(curHero->secSkills.size()>=2)
|
||||||
{
|
{
|
||||||
blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[1].first*3+3+curHero->secSkills[1].second-1].bitmap, 161, 276, curBack);
|
blitAt(graphics->abils44->ourImages[curHero->secSkills[1].first*3+3+curHero->secSkills[1].second-1].bitmap, 161, 276, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[1].second-1], 213, 279, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[1].second-1], 213, 279, GEOR13, zwykly, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[1].first], 213, 299, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[1].first], 213, 299, GEOR13, zwykly, curBack);
|
||||||
}
|
}
|
||||||
if(curHero->secSkills.size()>=3)
|
if(curHero->secSkills.size()>=3)
|
||||||
{
|
{
|
||||||
blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[2].first*3+3+curHero->secSkills[2].second-1].bitmap, 18, 324, curBack);
|
blitAt(graphics->abils44->ourImages[curHero->secSkills[2].first*3+3+curHero->secSkills[2].second-1].bitmap, 18, 324, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[2].second-1], 69, 327, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[2].second-1], 69, 327, GEOR13, zwykly, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[2].first], 69, 347, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[2].first], 69, 347, GEOR13, zwykly, curBack);
|
||||||
}
|
}
|
||||||
if(curHero->secSkills.size()>=4)
|
if(curHero->secSkills.size()>=4)
|
||||||
{
|
{
|
||||||
blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[3].first*3+3+curHero->secSkills[3].second-1].bitmap, 161, 324, curBack);
|
blitAt(graphics->abils44->ourImages[curHero->secSkills[3].first*3+3+curHero->secSkills[3].second-1].bitmap, 161, 324, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[3].second-1], 213, 327, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[3].second-1], 213, 327, GEOR13, zwykly, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[3].first], 213, 347, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[3].first], 213, 347, GEOR13, zwykly, curBack);
|
||||||
}
|
}
|
||||||
if(curHero->secSkills.size()>=5)
|
if(curHero->secSkills.size()>=5)
|
||||||
{
|
{
|
||||||
blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[4].first*3+3+curHero->secSkills[4].second-1].bitmap, 18, 372, curBack);
|
blitAt(graphics->abils44->ourImages[curHero->secSkills[4].first*3+3+curHero->secSkills[4].second-1].bitmap, 18, 372, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[4].second-1], 69, 375, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[4].second-1], 69, 375, GEOR13, zwykly, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[4].first], 69, 395, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[4].first], 69, 395, GEOR13, zwykly, curBack);
|
||||||
}
|
}
|
||||||
if(curHero->secSkills.size()>=6)
|
if(curHero->secSkills.size()>=6)
|
||||||
{
|
{
|
||||||
blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[5].first*3+3+curHero->secSkills[5].second-1].bitmap, 161, 372, curBack);
|
blitAt(graphics->abils44->ourImages[curHero->secSkills[5].first*3+3+curHero->secSkills[5].second-1].bitmap, 161, 372, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[5].second-1], 213, 375, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[5].second-1], 213, 375, GEOR13, zwykly, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[5].first], 213, 395, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[5].first], 213, 395, GEOR13, zwykly, curBack);
|
||||||
}
|
}
|
||||||
if(curHero->secSkills.size()>=7)
|
if(curHero->secSkills.size()>=7)
|
||||||
{
|
{
|
||||||
blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[6].first*3+3+curHero->secSkills[6].second-1].bitmap, 18, 420, curBack);
|
blitAt(graphics->abils44->ourImages[curHero->secSkills[6].first*3+3+curHero->secSkills[6].second-1].bitmap, 18, 420, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[6].second-1], 69, 423, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[6].second-1], 69, 423, GEOR13, zwykly, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[6].first], 69, 443, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[6].first], 69, 443, GEOR13, zwykly, curBack);
|
||||||
}
|
}
|
||||||
if(curHero->secSkills.size()>=8)
|
if(curHero->secSkills.size()>=8)
|
||||||
{
|
{
|
||||||
blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[7].first*3+3+curHero->secSkills[7].second-1].bitmap, 161, 420, curBack);
|
blitAt(graphics->abils44->ourImages[curHero->secSkills[7].first*3+3+curHero->secSkills[7].second-1].bitmap, 161, 420, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[7].second-1], 213, 423, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->levels[curHero->secSkills[7].second-1], 213, 423, GEOR13, zwykly, curBack);
|
||||||
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[7].first], 213, 443, GEOR13, zwykly, curBack);
|
CSDL_Ext::printAt(CGI->generaltexth->skillName[curHero->secSkills[7].first], 213, 443, GEOR13, zwykly, curBack);
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
#include "client/CConfigHandler.h"
|
#include "client/CConfigHandler.h"
|
||||||
#include "client/CCreatureAnimation.h"
|
#include "client/CCreatureAnimation.h"
|
||||||
#include "client/Graphics.h"
|
#include "client/Graphics.h"
|
||||||
#include "hch/CAbilityHandler.h"
|
|
||||||
#include "hch/CArtHandler.h"
|
#include "hch/CArtHandler.h"
|
||||||
#include "hch/CGeneralTextHandler.h"
|
#include "hch/CGeneralTextHandler.h"
|
||||||
#include "hch/CHeroHandler.h"
|
#include "hch/CHeroHandler.h"
|
||||||
@ -717,10 +716,10 @@ SDL_Surface * SComponent::getImg()
|
|||||||
return graphics->pskillsb->ourImages[subtype].bitmap;
|
return graphics->pskillsb->ourImages[subtype].bitmap;
|
||||||
break;
|
break;
|
||||||
case secskill44:
|
case secskill44:
|
||||||
return CGI->abilh->abils44->ourImages[subtype*3 + 3 + val - 1].bitmap;
|
return graphics->abils44->ourImages[subtype*3 + 3 + val - 1].bitmap;
|
||||||
break;
|
break;
|
||||||
case secskill:
|
case secskill:
|
||||||
return CGI->abilh->abils82->ourImages[subtype*3 + 3 + val - 1].bitmap;
|
return graphics->abils82->ourImages[subtype*3 + 3 + val - 1].bitmap;
|
||||||
break;
|
break;
|
||||||
case resource:
|
case resource:
|
||||||
return graphics->resources->ourImages[subtype].bitmap;
|
return graphics->resources->ourImages[subtype].bitmap;
|
||||||
@ -1708,10 +1707,10 @@ SDL_Surface * CPlayerInterface::infoWin(const CGObjectInstance * specific) //spe
|
|||||||
{
|
{
|
||||||
switch (specific->ID)
|
switch (specific->ID)
|
||||||
{
|
{
|
||||||
case 34:
|
case HEROI_TYPE:
|
||||||
return graphics->drawHeroInfoWin(dynamic_cast<const CGHeroInstance*>(specific));
|
return graphics->drawHeroInfoWin(dynamic_cast<const CGHeroInstance*>(specific));
|
||||||
break;
|
break;
|
||||||
case 98:
|
case TOWNI_TYPE:
|
||||||
return graphics->drawTownInfoWin(dynamic_cast<const CGTownInstance*>(specific));
|
return graphics->drawTownInfoWin(dynamic_cast<const CGTownInstance*>(specific));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -1973,7 +1972,7 @@ void CPlayerInterface::heroVisitsTown(const CGHeroInstance* hero, const CGTownIn
|
|||||||
void CPlayerInterface::garrisonChanged(const CGObjectInstance * obj)
|
void CPlayerInterface::garrisonChanged(const CGObjectInstance * obj)
|
||||||
{
|
{
|
||||||
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
||||||
if(obj->ID == 34) //hero
|
if(obj->ID == HEROI_TYPE) //hero
|
||||||
{
|
{
|
||||||
const CGHeroInstance * hh;
|
const CGHeroInstance * hh;
|
||||||
if(hh = dynamic_cast<const CGHeroInstance*>(obj))
|
if(hh = dynamic_cast<const CGHeroInstance*>(obj))
|
||||||
@ -1994,7 +1993,7 @@ void CPlayerInterface::garrisonChanged(const CGObjectInstance * obj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (obj->ID == 98) //town
|
else if (obj->ID == TOWNI_TYPE) //town
|
||||||
{
|
{
|
||||||
const CGTownInstance * tt;
|
const CGTownInstance * tt;
|
||||||
if(tt = static_cast<const CGTownInstance*>(obj))
|
if(tt = static_cast<const CGTownInstance*>(obj))
|
||||||
|
@ -220,6 +220,9 @@ Graphics::Graphics()
|
|||||||
tasks += GET_DEF(smi,"CPRSMALL.DEF");
|
tasks += GET_DEF(smi,"CPRSMALL.DEF");
|
||||||
tasks += GET_DEF(smi2,"TWCRPORT.DEF");
|
tasks += GET_DEF(smi2,"TWCRPORT.DEF");
|
||||||
tasks += GET_DEF(flags,"CREST58.DEF");
|
tasks += GET_DEF(flags,"CREST58.DEF");
|
||||||
|
tasks += GET_DEF(abils32,"SECSK32.DEF");
|
||||||
|
tasks += GET_DEF(abils44,"SECSKILL.DEF");
|
||||||
|
tasks += GET_DEF(abils82,"SECSK82.DEF");
|
||||||
|
|
||||||
std::ifstream ifs("config/cr_bgs.txt");
|
std::ifstream ifs("config/cr_bgs.txt");
|
||||||
int id;
|
int id;
|
||||||
|
@ -48,6 +48,8 @@ public:
|
|||||||
std::map< int, std::vector < std::string > > battleACToDef; //maps AC format to vector of appropriate def names
|
std::map< int, std::vector < std::string > > battleACToDef; //maps AC format to vector of appropriate def names
|
||||||
CDefHandler * spellEffectsPics; //bitmaps representing spells affecting a stack in battle
|
CDefHandler * spellEffectsPics; //bitmaps representing spells affecting a stack in battle
|
||||||
std::vector<std::string> guildBgs;// name of bitmaps with imgs for mage guild screen
|
std::vector<std::string> guildBgs;// name of bitmaps with imgs for mage guild screen
|
||||||
|
//abilities
|
||||||
|
CDefHandler * abils32, * abils44, * abils82;
|
||||||
//functions
|
//functions
|
||||||
Graphics();
|
Graphics();
|
||||||
void initializeBattleGraphics();
|
void initializeBattleGraphics();
|
||||||
|
@ -7,8 +7,4 @@
|
|||||||
|
|
||||||
void CAbilityHandler::loadAbilities()
|
void CAbilityHandler::loadAbilities()
|
||||||
{
|
{
|
||||||
abils32 = CDefHandler::giveDef("SECSK32.DEF");
|
|
||||||
abils44 = CDefHandler::giveDef("SECSKILL.DEF");
|
|
||||||
abils82 = CDefHandler::giveDef("SECSK82.DEF");
|
|
||||||
|
|
||||||
}
|
}
|
@ -17,7 +17,7 @@ class CAbilityHandler
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::vector<CAbility *> abilities;
|
std::vector<CAbility *> abilities;
|
||||||
CDefHandler * abils32, * abils44, * abils82;
|
|
||||||
void loadAbilities();
|
void loadAbilities();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -157,8 +157,42 @@ void CHeroHandler::loadHeroes()
|
|||||||
expPerLevel.push_back(22100);
|
expPerLevel.push_back(22100);
|
||||||
expPerLevel.push_back(26420);
|
expPerLevel.push_back(26420);
|
||||||
expPerLevel.push_back(31604);
|
expPerLevel.push_back(31604);
|
||||||
return;
|
|
||||||
|
|
||||||
|
//ballistics info
|
||||||
|
buf = bitmaph->getTextFile("BALLIST.TXT");
|
||||||
|
it = 0;
|
||||||
|
for(int i=0; i<22; ++i)
|
||||||
|
{
|
||||||
|
loadToIt(dump,buf,it,4);
|
||||||
|
}
|
||||||
|
for(int lvl=0; lvl<4; ++lvl)
|
||||||
|
{
|
||||||
|
CHeroHandler::SBallisticsLevelInfo bli;
|
||||||
|
si32 tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.keep = tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.tower = tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.gate = tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.wall = tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.shots = tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.noDmg = tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.oneDmg = tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.twoDmg = tempNum;
|
||||||
|
loadToIt(tempNum,buf,it,4);
|
||||||
|
bli.sum = tempNum;
|
||||||
|
if(lvl!=3)
|
||||||
|
{
|
||||||
|
loadToIt(dump,buf,it,4);
|
||||||
|
}
|
||||||
|
ballistics.push_back(bli);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void CHeroHandler::loadHeroClasses()
|
void CHeroHandler::loadHeroClasses()
|
||||||
{
|
{
|
||||||
|
@ -57,6 +57,19 @@ public:
|
|||||||
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
|
||||||
|
|
||||||
|
struct SBallisticsLevelInfo
|
||||||
|
{
|
||||||
|
ui8 keep, tower, gate, wall; //chance to hit in percent (eg. 87 is 87%)
|
||||||
|
ui8 shots; //how many shots we have
|
||||||
|
ui8 noDmg, oneDmg, twoDmg; //chances for shot dealing certain dmg in percent (eg. 87 is 87%); must sum to 100
|
||||||
|
ui8 sum; //I don't know if it is useful for anything, but it's in config file
|
||||||
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
|
{
|
||||||
|
h & keep & tower & gate & wall & shots & noDmg & oneDmg & twoDmg & sum;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
std::vector<SBallisticsLevelInfo> ballistics; //info about ballistics ability per level; [0] - none; [1] - basic; [2] - adv; [3] - expert
|
||||||
|
|
||||||
unsigned int level(unsigned int experience);
|
unsigned int level(unsigned int experience);
|
||||||
unsigned int reqExp(unsigned int level);
|
unsigned int reqExp(unsigned int level);
|
||||||
|
|
||||||
@ -69,7 +82,7 @@ public:
|
|||||||
|
|
||||||
template <typename Handler> void serialize(Handler &h, const int version)
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
{
|
{
|
||||||
h & heroClasses & heroes & expPerLevel;
|
h & heroClasses & heroes & expPerLevel & ballistics;
|
||||||
if(!h.saving)
|
if(!h.saving)
|
||||||
{
|
{
|
||||||
//restore class pointers
|
//restore class pointers
|
||||||
|
@ -162,9 +162,9 @@ bool CGObjectInstance::operator<(const CGObjectInstance & cmp) const //screen p
|
|||||||
return true;
|
return true;
|
||||||
if(this->pos.y>cmp.pos.y)
|
if(this->pos.y>cmp.pos.y)
|
||||||
return false;
|
return false;
|
||||||
if(cmp.ID==34 && ID!=34)
|
if(cmp.ID==HEROI_TYPE && ID!=HEROI_TYPE)
|
||||||
return true;
|
return true;
|
||||||
if(cmp.ID!=34 && ID==34)
|
if(cmp.ID!=HEROI_TYPE && ID==HEROI_TYPE)
|
||||||
return false;
|
return false;
|
||||||
if(!defInfo->isVisitable() && cmp.defInfo->isVisitable())
|
if(!defInfo->isVisitable() && cmp.defInfo->isVisitable())
|
||||||
return true;
|
return true;
|
||||||
|
@ -10,7 +10,6 @@ class CLodHandler;
|
|||||||
class CArtHandler;
|
class CArtHandler;
|
||||||
class CHeroHandler;
|
class CHeroHandler;
|
||||||
class CCreatureHandler;
|
class CCreatureHandler;
|
||||||
//class CAbilityHandler;
|
|
||||||
class CSpellHandler;
|
class CSpellHandler;
|
||||||
//class CPreGameTextHandler;
|
//class CPreGameTextHandler;
|
||||||
class CBuildingHandler;
|
class CBuildingHandler;
|
||||||
|
4
map.h
4
map.h
@ -528,9 +528,9 @@ struct DLL_EXPORT Mapa : public CMapHeader
|
|||||||
for(int i=0; i<objects.size(); i++)
|
for(int i=0; i<objects.size(); i++)
|
||||||
{
|
{
|
||||||
if(!objects[i]) continue;
|
if(!objects[i]) continue;
|
||||||
if(objects[i]->ID == 34)
|
if(objects[i]->ID == HEROI_TYPE)
|
||||||
heroes.push_back(static_cast<CGHeroInstance*>(objects[i]));
|
heroes.push_back(static_cast<CGHeroInstance*>(objects[i]));
|
||||||
else if(objects[i]->ID == 98)
|
else if(objects[i]->ID == TOWNI_TYPE)
|
||||||
towns.push_back(static_cast<CGTownInstance*>(objects[i]));
|
towns.push_back(static_cast<CGTownInstance*>(objects[i]));
|
||||||
|
|
||||||
addBlockVisTiles(objects[i]); //recreate blockvis map
|
addBlockVisTiles(objects[i]); //recreate blockvis map
|
||||||
|
@ -2057,7 +2057,7 @@ void CGameHandler::moveHero(int hid, int3 pos, bool instant)
|
|||||||
//check if destination tile is free
|
//check if destination tile is free
|
||||||
BOOST_FOREACH(CGObjectInstance* obj, gs->map->terrain[pos.x-1][pos.y][pos.z].blockingObjects)
|
BOOST_FOREACH(CGObjectInstance* obj, gs->map->terrain[pos.x-1][pos.y][pos.z].blockingObjects)
|
||||||
{
|
{
|
||||||
if(obj->ID==34)
|
if(obj->ID==HEROI_TYPE)
|
||||||
{
|
{
|
||||||
if(obj->tempOwner==h->tempOwner)
|
if(obj->tempOwner==h->tempOwner)
|
||||||
return;//TODO: exchange
|
return;//TODO: exchange
|
||||||
|
Loading…
Reference in New Issue
Block a user