mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-24 08:32:34 +02:00
* it's possible to give numbers moved creatures with keyboard in the stack split window
* updated changelog
This commit is contained in:
parent
79ae1441ff
commit
a635ac7143
@ -3216,10 +3216,12 @@ CRecrutationWindow::~CRecrutationWindow()
|
|||||||
|
|
||||||
CSplitWindow::CSplitWindow(int cid, int max, CGarrisonInt *Owner)
|
CSplitWindow::CSplitWindow(int cid, int max, CGarrisonInt *Owner)
|
||||||
{
|
{
|
||||||
|
which = 1;
|
||||||
c=cid;
|
c=cid;
|
||||||
slider = NULL;
|
slider = NULL;
|
||||||
gar = Owner;
|
gar = Owner;
|
||||||
bitmap = BitmapHandler::loadBitmap("GPUCRDIV.bmp");
|
bitmap = BitmapHandler::loadBitmap("GPUCRDIV.bmp");
|
||||||
|
graphics->blueToPlayersAdv(bitmap,LOCPLINT->playerID);
|
||||||
SDL_SetColorKey(bitmap,SDL_SRCCOLORKEY,SDL_MapRGB(bitmap->format,0,255,255));
|
SDL_SetColorKey(bitmap,SDL_SRCCOLORKEY,SDL_MapRGB(bitmap->format,0,255,255));
|
||||||
pos.x = screen->w/2 - bitmap->w/2;
|
pos.x = screen->w/2 - bitmap->w/2;
|
||||||
pos.y = screen->h/2 - bitmap->h/2;
|
pos.y = screen->h/2 - bitmap->h/2;
|
||||||
@ -3247,6 +3249,7 @@ CSplitWindow::~CSplitWindow()
|
|||||||
}
|
}
|
||||||
void CSplitWindow::activate()
|
void CSplitWindow::activate()
|
||||||
{
|
{
|
||||||
|
ClickableL::activate();
|
||||||
LOCPLINT->objsToBlit.push_back(this);
|
LOCPLINT->objsToBlit.push_back(this);
|
||||||
KeyInterested::activate();
|
KeyInterested::activate();
|
||||||
ok->activate();
|
ok->activate();
|
||||||
@ -3255,6 +3258,7 @@ void CSplitWindow::activate()
|
|||||||
}
|
}
|
||||||
void CSplitWindow::deactivate()
|
void CSplitWindow::deactivate()
|
||||||
{
|
{
|
||||||
|
ClickableL::deactivate();
|
||||||
LOCPLINT->objsToBlit.erase(std::find(LOCPLINT->objsToBlit.begin(),LOCPLINT->objsToBlit.end(),this));
|
LOCPLINT->objsToBlit.erase(std::find(LOCPLINT->objsToBlit.begin(),LOCPLINT->objsToBlit.end(),this));
|
||||||
KeyInterested::deactivate();
|
KeyInterested::deactivate();
|
||||||
ok->deactivate();
|
ok->deactivate();
|
||||||
@ -3280,23 +3284,63 @@ void CSplitWindow::sliderMoved(int to)
|
|||||||
}
|
}
|
||||||
void CSplitWindow::show(SDL_Surface * to)
|
void CSplitWindow::show(SDL_Surface * to)
|
||||||
{
|
{
|
||||||
char pom[15];
|
|
||||||
blitAt(bitmap,pos.x,pos.y,screen);
|
blitAt(bitmap,pos.x,pos.y,screen);
|
||||||
ok->show();
|
ok->show();
|
||||||
cancel->show();
|
cancel->show();
|
||||||
slider->show();
|
slider->show();
|
||||||
SDL_itoa(a1,pom,10);
|
printAtMiddle(boost::lexical_cast<std::string>(a1) + (!which ? "_" : ""),pos.x+70,pos.y+237,GEOR16,zwykly,screen);
|
||||||
printAtMiddle(pom,pos.x+70,pos.y+237,GEOR16,zwykly,screen);
|
printAtMiddle(boost::lexical_cast<std::string>(a2) + (which ? "_" : ""),pos.x+233,pos.y+237,GEOR16,zwykly,screen);
|
||||||
SDL_itoa(a2,pom,10);
|
|
||||||
printAtMiddle(pom,pos.x+233,pos.y+237,GEOR16,zwykly,screen);
|
|
||||||
anim->blitPic(screen,pos.x+20,pos.y+54,false);
|
anim->blitPic(screen,pos.x+20,pos.y+54,false);
|
||||||
anim->blitPic(screen,pos.x+177,pos.y+54,false);
|
anim->blitPic(screen,pos.x+177,pos.y+54,false);
|
||||||
}
|
}
|
||||||
void CSplitWindow::keyPressed (const SDL_KeyboardEvent & key)
|
void CSplitWindow::keyPressed (const SDL_KeyboardEvent & key)
|
||||||
{
|
{
|
||||||
//TODO: make manual typing possible
|
if(key.state != SDL_PRESSED)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int &cur = (which ? a2 : a1),
|
||||||
|
&sec = (which ? a1 : a2),
|
||||||
|
ncur = cur;
|
||||||
|
if (key.keysym.sym == SDLK_BACKSPACE)
|
||||||
|
{
|
||||||
|
ncur /= 10;
|
||||||
|
}
|
||||||
|
else if(key.keysym.sym == SDLK_TAB)
|
||||||
|
{
|
||||||
|
which = !which;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int number = key.keysym.sym - SDLK_0;
|
||||||
|
if (number < 0 || number > 9) //not a number presses
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ncur = cur*10 + number;
|
||||||
|
}
|
||||||
|
int delta = ncur - cur;
|
||||||
|
if(delta > sec)
|
||||||
|
{
|
||||||
|
cur += sec;
|
||||||
|
sec = 0;
|
||||||
|
}
|
||||||
|
slider->moveTo(which ? ncur : a1+a2-ncur);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSplitWindow::clickLeft( boost::logic::tribool down )
|
||||||
|
{
|
||||||
|
if(down)
|
||||||
|
{
|
||||||
|
Point click(LOCPLINT->current->motion.x,LOCPLINT->current->motion.y);
|
||||||
|
click -= pos.topLeft();
|
||||||
|
if(Rect(19,216,105,40).isIn(click))
|
||||||
|
which = 0;
|
||||||
|
else if(Rect(175,216,105,40).isIn(click))
|
||||||
|
which = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void CCreInfoWindow::show(SDL_Surface * to)
|
void CCreInfoWindow::show(SDL_Surface * to)
|
||||||
{
|
{
|
||||||
char pom[15];
|
char pom[15];
|
||||||
|
@ -58,10 +58,22 @@ struct Point
|
|||||||
{
|
{
|
||||||
return Point(x+b.x,y+b.y);
|
return Point(x+b.x,y+b.y);
|
||||||
}
|
}
|
||||||
|
Point& operator+=(const Point &b)
|
||||||
|
{
|
||||||
|
x += b.x;
|
||||||
|
y += b.y;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
Point operator-(const Point &b)
|
Point operator-(const Point &b)
|
||||||
{
|
{
|
||||||
return Point(x+b.x,y+b.y);
|
return Point(x+b.x,y+b.y);
|
||||||
}
|
}
|
||||||
|
Point& operator-=(const Point &b)
|
||||||
|
{
|
||||||
|
x -= b.x;
|
||||||
|
y -= b.y;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
bool operator<(const Point &b)
|
bool operator<(const Point &b)
|
||||||
{
|
{
|
||||||
return x < b.x && y < b.y;
|
return x < b.x && y < b.y;
|
||||||
@ -633,7 +645,7 @@ public:
|
|||||||
~CRecrutationWindow();
|
~CRecrutationWindow();
|
||||||
};
|
};
|
||||||
|
|
||||||
class CSplitWindow : public IShowable, public KeyInterested
|
class CSplitWindow : public IShowable, public KeyInterested, public ClickableL
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CGarrisonInt *gar;
|
CGarrisonInt *gar;
|
||||||
@ -651,6 +663,7 @@ public:
|
|||||||
void close();
|
void close();
|
||||||
void deactivate();
|
void deactivate();
|
||||||
void show(SDL_Surface * to = NULL);
|
void show(SDL_Surface * to = NULL);
|
||||||
|
void clickLeft(boost::logic::tribool down);
|
||||||
void keyPressed (const SDL_KeyboardEvent & key);
|
void keyPressed (const SDL_KeyboardEvent & key);
|
||||||
void sliderMoved(int to);
|
void sliderMoved(int to);
|
||||||
};
|
};
|
||||||
|
@ -11,8 +11,10 @@ GENERAL:
|
|||||||
* updating blockmap/visitmap of randomized objects
|
* updating blockmap/visitmap of randomized objects
|
||||||
* fixed crashes on loading maps with flag all mines/dwelling victory condition
|
* fixed crashes on loading maps with flag all mines/dwelling victory condition
|
||||||
* further fixes for leveling-up (stability and identical offered skills bug)
|
* further fixes for leveling-up (stability and identical offered skills bug)
|
||||||
|
* support for numpad keyboard
|
||||||
|
|
||||||
ADVENTURE INTERFACE:
|
ADVENTURE INTERFACE:
|
||||||
|
* added "Next hero" button functionality
|
||||||
* added missing path arrows
|
* added missing path arrows
|
||||||
* corrected centering on hero's position
|
* corrected centering on hero's position
|
||||||
* recalculating hero path after reselecting hero
|
* recalculating hero path after reselecting hero
|
||||||
@ -23,6 +25,8 @@ ADVENTURE INTERFACE:
|
|||||||
|
|
||||||
BATTLES:
|
BATTLES:
|
||||||
* partial support for battle obstacles
|
* partial support for battle obstacles
|
||||||
|
* only one spell can be casted per turn
|
||||||
|
* blocked opening sepllbook if hero doesn't have a one
|
||||||
* spells not known by hero can't be casted
|
* spells not known by hero can't be casted
|
||||||
* spell books won't be placed in War Machine slots after battle
|
* spell books won't be placed in War Machine slots after battle
|
||||||
* attack is now possible when hex under cursor is not displayed
|
* attack is now possible when hex under cursor is not displayed
|
||||||
@ -41,6 +45,8 @@ New spells supported:
|
|||||||
- Misfortune
|
- Misfortune
|
||||||
|
|
||||||
TOWN INTERFACE:
|
TOWN INTERFACE:
|
||||||
|
* cannot build more than one capitol
|
||||||
|
* cannot build shipyard if town is not near water
|
||||||
* Rampart's Treasury requires Miner's Guild
|
* Rampart's Treasury requires Miner's Guild
|
||||||
* minor improvements in Recruitment Window
|
* minor improvements in Recruitment Window
|
||||||
* fixed crash occuring when clicking on hero portrait in Tavern Window, minor improvements for Tavern Window
|
* fixed crash occuring when clicking on hero portrait in Tavern Window, minor improvements for Tavern Window
|
||||||
@ -56,6 +62,8 @@ PREGAME:
|
|||||||
* minor fixes
|
* minor fixes
|
||||||
|
|
||||||
OBJECTS:
|
OBJECTS:
|
||||||
|
* windmill gives 500 gold only during first week ever (not every month)
|
||||||
|
* After the first visit to the Witch Hut, right-click/hover tip mentions the skill available.
|
||||||
New objects supported:
|
New objects supported:
|
||||||
* Prison
|
* Prison
|
||||||
* Magic Well
|
* Magic Well
|
||||||
|
22
global.h
22
global.h
@ -200,6 +200,28 @@ namespace vstd
|
|||||||
}
|
}
|
||||||
using vstd::operator-=;
|
using vstd::operator-=;
|
||||||
|
|
||||||
|
template <typename t1, typename t2>
|
||||||
|
t1 & amax(t1 &a, const t2 &b)
|
||||||
|
{
|
||||||
|
if(a >= b)
|
||||||
|
return a;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
a = b;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
template <typename t1, typename t2>
|
||||||
|
t1 & amin(t1 &a, const t2 &b)
|
||||||
|
{
|
||||||
|
if(a <= b)
|
||||||
|
return a;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
a = b;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
}
|
||||||
#include "CConsoleHandler.h"
|
#include "CConsoleHandler.h"
|
||||||
extern DLL_EXPORT std::ostream *logfile;
|
extern DLL_EXPORT std::ostream *logfile;
|
||||||
extern DLL_EXPORT CConsoleHandler *console;
|
extern DLL_EXPORT CConsoleHandler *console;
|
||||||
|
Loading…
Reference in New Issue
Block a user