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);
}
//printing experience - original foramt does not support ui64
//printing experience - original format does not support ui64
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>(CGI->heroh->reqExp(hero->level+1)));

View File

@@ -414,8 +414,12 @@ void CMessage::drawIWindow(CInfoWindow * ret, std::string text, int player, int
}
// Clip window size
amax(txts.first, 80);
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, bw);

View File

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

View File

@@ -69,10 +69,12 @@ public:
bool delComps; //whether comps will be deleted
std::vector<AdventureMapButton *> buttons;
std::vector<SComponent*> components;
CSlider *slider;
virtual void close();
void show(SDL_Surface * to);
void showAll(SDL_Surface * to);
void activate();
void sliderMoved(int to);
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(); //c-tor

View File

@@ -468,16 +468,11 @@ unsigned int CHeroHandler::level (ui64 experience)
int i;
if (experience <= expPerLevel.back())
{
//i = expPerLevel.size() - 1;
//while (experience <= reqExp (i))
// i--;
for (i = expPerLevel.size()-1; experience < expPerLevel[i]; i--);
return i + 1;
}
else
{
//for(i = expPerLevel.size(); experience > reqExp(i); i++);
i = expPerLevel.size() - 1;
while (experience > reqExp (i))
i++;
@@ -496,21 +491,12 @@ ui64 CHeroHandler::reqExp (unsigned int level)
}
else
{
//ui64 exp = expPerLevel[expPerLevel.size()-1];
//level-=(expPerLevel.size()-1);
//while(level>0)
//{
// --level;
// exp*=1.2;
//}
//return exp;
while (level > expPerLevel.size())
{
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 (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 )
{
const IShipyard *obj = IShipyard::castFrom(getObj(objid));
int boatType = 1;
if(obj->state())
{
@@ -3370,7 +3371,22 @@ bool CGameHandler::buildBoat( ui32 objid )
//create boat
NewObject no;
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);
sendAndApply(&no);