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:
@@ -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)));
|
||||
|
@@ -414,27 +414,31 @@ 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);
|
||||
|
||||
amin(txts.first, conf.cc.resx - 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.w=ret->bitmap->w;
|
||||
ret->pos.x=screen->w/2-(ret->pos.w/2);
|
||||
ret->pos.y=screen->h/2-(ret->pos.h/2);
|
||||
|
||||
int curh = SIDE_MARGIN;
|
||||
blitTextOnSur(txtg, fontHeight, curh,ret->bitmap);
|
||||
blitTextOnSur (txtg, fontHeight, curh, ret->bitmap);
|
||||
|
||||
if (ret->components.size())
|
||||
{
|
||||
curh += BEFORE_COMPONENTS;
|
||||
comps.blitCompsOnSur(_or, 10, curh, ret->bitmap);
|
||||
comps.blitCompsOnSur (_or, 10, curh, ret->bitmap);
|
||||
}
|
||||
if(ret->buttons.size())
|
||||
{
|
||||
|
@@ -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 )
|
||||
|
@@ -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
|
||||
|
@@ -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++;
|
||||
@@ -490,27 +485,18 @@ ui64 CHeroHandler::reqExp (unsigned int level)
|
||||
if(!level)
|
||||
return 0;
|
||||
|
||||
if(level <= expPerLevel.size())
|
||||
if (level <= expPerLevel.size())
|
||||
{
|
||||
return expPerLevel[level - 1];
|
||||
return expPerLevel[level-1];
|
||||
}
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user