1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

1.Removed unused code from hero handler

2.Minor changes in GUI
3.Attempt to manage different alignments of ships
This commit is contained in:
DjWarmonger
2009-10-28 10:45:45 +00:00
parent 2c77785bc7
commit ddd755c0c1
6 changed files with 40 additions and 23 deletions

View File

@@ -231,7 +231,7 @@ void CHeroWindow::setHero(const CGHeroInstance *hero)
secSkillAreas[g]->hoverText = std::string(bufor); secSkillAreas[g]->hoverText = std::string(bufor);
} }
//printing experience - original foramt does not support ui64 //printing experience - original format does not support ui64
expArea->text = CGI->generaltexth->allTexts[2].c_str(); expArea->text = CGI->generaltexth->allTexts[2].c_str();
boost::replace_first(expArea->text, "%d", boost::lexical_cast<std::string>(hero->level)); boost::replace_first(expArea->text, "%d", boost::lexical_cast<std::string>(hero->level));
boost::replace_first(expArea->text, "%d", boost::lexical_cast<std::string>(CGI->heroh->reqExp(hero->level+1))); boost::replace_first(expArea->text, "%d", boost::lexical_cast<std::string>(CGI->heroh->reqExp(hero->level+1)));

View File

@@ -414,27 +414,31 @@ void CMessage::drawIWindow(CInfoWindow * ret, std::string text, int player, int
} }
// Clip window size // Clip window size
amax(txts.first, 80);
amax(txts.second, 50); amax(txts.second, 50);
if (txts.second > conf.cc.resy - 150)
ret->slider = new CSlider(ret->pos.x + ret->pos.w, ret->pos.y, txts.second, boost::bind (&CInfoWindow::sliderMoved, ret, _1), txts.second, txts.second, 0, false, 0);
else
ret->slider = NULL;
amax(txts.first, 80);
amax(txts.first, comps.w); amax(txts.first, comps.w);
amax(txts.first, bw); amax(txts.first, bw);
amin(txts.first, conf.cc.resx - 150); amin(txts.first, conf.cc.resx - 150);
amin(txts.second, conf.cc.resy - 150); amin(txts.second, conf.cc.resy - 150);
ret->bitmap = drawBox1(txts.first+2*SIDE_MARGIN, txts.second+2*SIDE_MARGIN, player); ret->bitmap = drawBox1 (txts.first + 2*SIDE_MARGIN, txts.second + 2*SIDE_MARGIN, player);
ret->pos.h=ret->bitmap->h; ret->pos.h=ret->bitmap->h;
ret->pos.w=ret->bitmap->w; ret->pos.w=ret->bitmap->w;
ret->pos.x=screen->w/2-(ret->pos.w/2); ret->pos.x=screen->w/2-(ret->pos.w/2);
ret->pos.y=screen->h/2-(ret->pos.h/2); ret->pos.y=screen->h/2-(ret->pos.h/2);
int curh = SIDE_MARGIN; int curh = SIDE_MARGIN;
blitTextOnSur(txtg, fontHeight, curh,ret->bitmap); blitTextOnSur (txtg, fontHeight, curh, ret->bitmap);
if (ret->components.size()) if (ret->components.size())
{ {
curh += BEFORE_COMPONENTS; curh += BEFORE_COMPONENTS;
comps.blitCompsOnSur(_or, 10, curh, ret->bitmap); comps.blitCompsOnSur (_or, 10, curh, ret->bitmap);
} }
if(ret->buttons.size()) if(ret->buttons.size())
{ {

View File

@@ -669,6 +669,8 @@ CInfoWindow::~CInfoWindow()
} }
for(int i=0;i<buttons.size();i++) for(int i=0;i<buttons.size();i++)
delete buttons[i]; delete buttons[i];
if (slider)
delete slider;
} }
void CInfoWindow::activate() void CInfoWindow::activate()
{ {
@@ -676,6 +678,11 @@ void CInfoWindow::activate()
components[i]->activate(); components[i]->activate();
for(int i=0;i<buttons.size();i++) for(int i=0;i<buttons.size();i++)
buttons[i]->activate(); buttons[i]->activate();
if (slider)
slider->activate();
}
void CInfoWindow::sliderMoved(int to)
{
} }
void CInfoWindow::deactivate() void CInfoWindow::deactivate()
{ {
@@ -683,6 +690,8 @@ void CInfoWindow::deactivate()
components[i]->deactivate(); components[i]->deactivate();
for(int i=0;i<buttons.size();i++) for(int i=0;i<buttons.size();i++)
buttons[i]->deactivate(); buttons[i]->deactivate();
if (slider)
slider->deactivate();
} }
void CInfoWindow::showAll( SDL_Surface * to ) void CInfoWindow::showAll( SDL_Surface * to )

View File

@@ -69,10 +69,12 @@ public:
bool delComps; //whether comps will be deleted bool delComps; //whether comps will be deleted
std::vector<AdventureMapButton *> buttons; std::vector<AdventureMapButton *> buttons;
std::vector<SComponent*> components; std::vector<SComponent*> components;
CSlider *slider;
virtual void close(); virtual void close();
void show(SDL_Surface * to); void show(SDL_Surface * to);
void showAll(SDL_Surface * to); void showAll(SDL_Surface * to);
void activate(); void activate();
void sliderMoved(int to);
void deactivate(); void deactivate();
CInfoWindow(std::string text, int player, int charperline, const std::vector<SComponent*> &comps, std::vector<std::pair<std::string,CFunctionList<void()> > > &Buttons, bool delComps); //c-tor CInfoWindow(std::string text, int player, int charperline, const std::vector<SComponent*> &comps, std::vector<std::pair<std::string,CFunctionList<void()> > > &Buttons, bool delComps); //c-tor
CInfoWindow(); //c-tor CInfoWindow(); //c-tor

View File

@@ -468,16 +468,11 @@ unsigned int CHeroHandler::level (ui64 experience)
int i; int i;
if (experience <= expPerLevel.back()) if (experience <= expPerLevel.back())
{ {
//i = expPerLevel.size() - 1;
//while (experience <= reqExp (i))
// i--;
for (i = expPerLevel.size()-1; experience < expPerLevel[i]; i--); for (i = expPerLevel.size()-1; experience < expPerLevel[i]; i--);
return i + 1; return i + 1;
} }
else else
{ {
//for(i = expPerLevel.size(); experience > reqExp(i); i++);
i = expPerLevel.size() - 1; i = expPerLevel.size() - 1;
while (experience > reqExp (i)) while (experience > reqExp (i))
i++; i++;
@@ -490,27 +485,18 @@ ui64 CHeroHandler::reqExp (unsigned int level)
if(!level) if(!level)
return 0; return 0;
if(level <= expPerLevel.size()) if (level <= expPerLevel.size())
{ {
return expPerLevel[level - 1]; return expPerLevel[level-1];
} }
else else
{ {
//ui64 exp = expPerLevel[expPerLevel.size()-1];
//level-=(expPerLevel.size()-1);
//while(level>0)
//{
// --level;
// exp*=1.2;
//}
//return exp;
while (level > expPerLevel.size()) while (level > expPerLevel.size())
{ {
int i = expPerLevel.size() - 1; int i = expPerLevel.size() - 1;
expPerLevel.push_back ((ui64)(expPerLevel[i] + (expPerLevel[i] - expPerLevel[i-1]) * 1.2)); expPerLevel.push_back (expPerLevel[i] + (expPerLevel[i] - expPerLevel[i-1]) * 1.2);
} }
return expPerLevel[level-1]; return expPerLevel[level-1];
//return (ui64)(reqExp(level - 1) + (reqExp(level - 1) - reqExp(level - 2)) * 1.2); //inefficient but follows exactly H3 values
} }
} }

View File

@@ -3332,6 +3332,7 @@ void CGameHandler::objectVisited( const CGObjectInstance * obj, const CGHeroInst
bool CGameHandler::buildBoat( ui32 objid ) bool CGameHandler::buildBoat( ui32 objid )
{ {
const IShipyard *obj = IShipyard::castFrom(getObj(objid)); const IShipyard *obj = IShipyard::castFrom(getObj(objid));
int boatType = 1;
if(obj->state()) if(obj->state())
{ {
@@ -3370,7 +3371,22 @@ bool CGameHandler::buildBoat( ui32 objid )
//create boat //create boat
NewObject no; NewObject no;
no.ID = 8; no.ID = 8;
no.subID = 1; if (obj->o->ID == TOWNI_TYPE)
{
switch ((static_cast<const CGTownInstance*>(obj))->alignment)
{
case 1: //good - standard
boatType = 1;
break;
case -1: //evil
boatType = 0;
break;
case 0: //neutral
boatType = 2;
break;
}
}
no.subID = boatType;
no.pos = tile + int3(1,0,0); no.pos = tile + int3(1,0,0);
sendAndApply(&no); sendAndApply(&no);