2007-07-28 12:44:10 +03:00
# include "stdafx.h"
# include "CGameInterface.h"
2007-08-04 22:01:22 +03:00
# include "CAdvMapInterface.h"
2007-08-04 00:47:34 +03:00
# include "CMessage.h"
2007-09-18 16:30:26 +03:00
# include "mapHandler.h"
2007-08-04 00:47:34 +03:00
# include "SDL_Extensions.h"
2007-08-04 22:01:22 +03:00
# include "SDL_framerate.h"
2007-08-29 15:18:31 +03:00
# include "CScreenHandler.h"
# include "CCursorHandler.h"
2007-09-13 16:34:59 +03:00
# include "CCallback.h"
2007-09-18 16:30:26 +03:00
# include "SDL_Extensions.h"
2007-09-30 19:16:00 +03:00
# include "hch/CLodHandler.h"
2007-10-05 23:38:14 +03:00
# include "CPathfinder.h"
2007-09-30 19:16:00 +03:00
# include <sstream>
2007-07-28 12:44:10 +03:00
using namespace CSDL_Ext ;
2007-09-15 18:44:08 +03:00
class OCM_HLP_CGIN
{
public :
bool operator ( ) ( const std : : pair < CObjectInstance * , SDL_Rect > & a , const std : : pair < CObjectInstance * , SDL_Rect > & b ) const
{
return ( * a . first ) < ( * b . first ) ;
}
} ocmptwo_cgin ;
2007-10-13 23:31:50 +03:00
CSimpleWindow : : ~ CSimpleWindow ( )
{
SDL_FreeSurface ( bitmap ) ;
bitmap = NULL ;
}
2007-08-04 00:47:34 +03:00
CButtonBase : : CButtonBase ( )
{
2007-08-08 22:28:56 +03:00
curimg = 0 ;
2007-08-04 00:47:34 +03:00
type = - 1 ;
abs = false ;
active = false ;
ourObj = NULL ;
state = 0 ;
}
2007-07-28 12:44:10 +03:00
void CButtonBase : : show ( )
{
2007-08-06 07:03:34 +03:00
if ( abs )
2007-08-04 00:47:34 +03:00
{
2007-08-08 22:28:56 +03:00
blitAt ( imgs [ curimg ] [ state ] , pos . x , pos . y ) ;
2007-08-04 00:47:34 +03:00
updateRect ( & pos ) ;
}
else
{
2007-08-08 22:28:56 +03:00
blitAt ( imgs [ curimg ] [ state ] , pos . x + ourObj - > pos . x , pos . y + ourObj - > pos . y ) ;
2007-08-04 00:47:34 +03:00
updateRect ( & genRect ( pos . h , pos . w , pos . x + ourObj - > pos . x , pos . y + ourObj - > pos . y ) ) ;
}
}
2007-08-25 07:56:25 +03:00
ClickableL : : ClickableL ( )
{
pressedL = false ;
}
2007-08-20 00:12:55 +03:00
void ClickableL : : clickLeft ( tribool down )
{
if ( down )
pressedL = true ;
else
pressedL = false ;
}
2007-08-04 00:47:34 +03:00
void ClickableL : : activate ( )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > lclickable . push_back ( this ) ;
2007-08-04 00:47:34 +03:00
}
void ClickableL : : deactivate ( )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > lclickable . erase
( std : : find ( LOCPLINT - > lclickable . begin ( ) , LOCPLINT - > lclickable . end ( ) , this ) ) ;
2007-08-04 00:47:34 +03:00
}
2007-08-25 07:56:25 +03:00
ClickableR : : ClickableR ( )
{
pressedR = false ;
}
2007-08-04 00:47:34 +03:00
void ClickableR : : activate ( )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > rclickable . push_back ( this ) ;
2007-08-04 00:47:34 +03:00
}
void ClickableR : : deactivate ( )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > rclickable . erase ( std : : find ( LOCPLINT - > rclickable . begin ( ) , LOCPLINT - > rclickable . end ( ) , this ) ) ;
2007-08-04 00:47:34 +03:00
}
void Hoverable : : activate ( )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > hoverable . push_back ( this ) ;
2007-08-04 00:47:34 +03:00
}
void Hoverable : : deactivate ( )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > hoverable . erase ( std : : find ( LOCPLINT - > hoverable . begin ( ) , LOCPLINT - > hoverable . end ( ) , this ) ) ;
2007-08-04 00:47:34 +03:00
}
2007-08-07 14:54:50 +03:00
void Hoverable : : hover ( bool on )
{
hovered = on ;
}
2007-08-04 00:47:34 +03:00
void KeyInterested : : activate ( )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > keyinterested . push_back ( this ) ;
2007-08-04 00:47:34 +03:00
}
void KeyInterested : : deactivate ( )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - >
keyinterested . erase ( std : : find ( LOCPLINT - > keyinterested . begin ( ) , LOCPLINT - > keyinterested . end ( ) , this ) ) ;
2007-08-04 22:01:22 +03:00
}
2007-08-27 17:15:03 +03:00
void MotionInterested : : activate ( )
{
LOCPLINT - > motioninterested . push_back ( this ) ;
}
void MotionInterested : : deactivate ( )
{
LOCPLINT - >
motioninterested . erase ( std : : find ( LOCPLINT - > motioninterested . begin ( ) , LOCPLINT - > motioninterested . end ( ) , this ) ) ;
}
2007-08-06 07:03:34 +03:00
CPlayerInterface : : CPlayerInterface ( int Player , int serial )
2007-08-04 22:01:22 +03:00
{
playerID = Player ;
2007-08-06 07:03:34 +03:00
serialID = serial ;
CGI - > localPlayer = playerID ;
2007-08-04 22:01:22 +03:00
human = true ;
2007-09-30 19:16:00 +03:00
hInfo = CGI - > bitmaph - > loadBitmap ( " HEROQVBK.bmp " ) ;
2007-10-17 01:39:11 +03:00
SDL_SetColorKey ( hInfo , SDL_SRCCOLORKEY , SDL_MapRGB ( hInfo - > format , 0 , 255 , 255 ) ) ;
slotsPos . push_back ( std : : pair < int , int > ( 44 , 82 ) ) ;
slotsPos . push_back ( std : : pair < int , int > ( 80 , 82 ) ) ;
slotsPos . push_back ( std : : pair < int , int > ( 116 , 82 ) ) ;
slotsPos . push_back ( std : : pair < int , int > ( 26 , 131 ) ) ;
slotsPos . push_back ( std : : pair < int , int > ( 62 , 131 ) ) ;
slotsPos . push_back ( std : : pair < int , int > ( 98 , 131 ) ) ;
slotsPos . push_back ( std : : pair < int , int > ( 134 , 131 ) ) ;
luck22 = CGI - > spriteh - > giveDefEss ( " ILCK22.DEF " ) ;
luck30 = CGI - > spriteh - > giveDefEss ( " ILCK30.DEF " ) ;
luck42 = CGI - > spriteh - > giveDefEss ( " ILCK42.DEF " ) ;
luck82 = CGI - > spriteh - > giveDefEss ( " ILCK82.DEF " ) ;
morale22 = CGI - > spriteh - > giveDefEss ( " IMRL22.DEF " ) ;
morale30 = CGI - > spriteh - > giveDefEss ( " IMRL30.DEF " ) ;
morale42 = CGI - > spriteh - > giveDefEss ( " IMRL42.DEF " ) ;
morale82 = CGI - > spriteh - > giveDefEss ( " IMRL82.DEF " ) ;
2007-08-06 07:03:34 +03:00
}
2007-09-14 16:11:10 +03:00
void CPlayerInterface : : init ( CCallback * CB )
2007-08-06 07:03:34 +03:00
{
2007-09-14 16:11:10 +03:00
cb = CB ;
2007-08-06 07:03:34 +03:00
CGI - > localPlayer = serialID ;
adventureInt = new CAdvMapInt ( playerID ) ;
2007-08-04 22:01:22 +03:00
}
void CPlayerInterface : : yourTurn ( )
{
2007-08-06 07:03:34 +03:00
CGI - > localPlayer = serialID ;
unsigned char & animVal = LOCPLINT - > adventureInt - > anim ; //for animations handling
2007-08-04 22:01:22 +03:00
adventureInt - > show ( ) ;
//show rest of things
//initializing framerate keeper
2007-09-13 16:34:59 +03:00
mainFPSmng = new FPSmanager ;
SDL_initFramerate ( mainFPSmng ) ;
SDL_setFramerate ( mainFPSmng , 24 ) ;
2007-08-04 22:01:22 +03:00
SDL_Event sEvent ;
//framerate keeper initialized
for ( ; ; ) // main loop
{
2007-08-21 16:48:18 +03:00
CGI - > screenh - > updateScreen ( ) ;
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > updateScreen = false ;
2007-08-27 17:15:03 +03:00
while ( SDL_PollEvent ( & sEvent ) ) //wait for event...
2007-08-04 22:01:22 +03:00
{
handleEvent ( & sEvent ) ;
}
2007-08-06 07:03:34 +03:00
+ + LOCPLINT - > adventureInt - > animValHitCount ; //for animations
if ( LOCPLINT - > adventureInt - > animValHitCount = = 2 )
2007-08-04 22:01:22 +03:00
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > animValHitCount = 0 ;
2007-08-04 22:01:22 +03:00
+ + animVal ;
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > updateScreen = true ;
2007-08-04 22:01:22 +03:00
}
2007-08-06 07:03:34 +03:00
if ( LOCPLINT - > adventureInt - > scrollingLeft )
2007-08-04 22:01:22 +03:00
{
2007-08-17 20:42:21 +03:00
if ( LOCPLINT - > adventureInt - > position . x > - Woff )
2007-08-04 22:01:22 +03:00
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > position . x - - ;
LOCPLINT - > adventureInt - > updateScreen = true ;
2007-08-04 22:01:22 +03:00
}
}
2007-08-06 07:03:34 +03:00
if ( LOCPLINT - > adventureInt - > scrollingRight )
2007-08-04 22:01:22 +03:00
{
2007-08-17 20:42:21 +03:00
if ( LOCPLINT - > adventureInt - > position . x < CGI - > ac - > map . width - 19 + 4 )
2007-08-04 22:01:22 +03:00
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > position . x + + ;
LOCPLINT - > adventureInt - > updateScreen = true ;
2007-08-04 22:01:22 +03:00
}
}
2007-08-06 07:03:34 +03:00
if ( LOCPLINT - > adventureInt - > scrollingUp )
2007-08-04 22:01:22 +03:00
{
2007-08-17 20:42:21 +03:00
if ( LOCPLINT - > adventureInt - > position . y > - Hoff )
2007-08-04 22:01:22 +03:00
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > position . y - - ;
LOCPLINT - > adventureInt - > updateScreen = true ;
2007-08-04 22:01:22 +03:00
}
}
2007-08-06 07:03:34 +03:00
if ( LOCPLINT - > adventureInt - > scrollingDown )
2007-08-04 22:01:22 +03:00
{
2007-08-17 20:42:21 +03:00
if ( LOCPLINT - > adventureInt - > position . y < CGI - > ac - > map . height - 18 + 4 )
2007-08-04 22:01:22 +03:00
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > position . y + + ;
LOCPLINT - > adventureInt - > updateScreen = true ;
2007-08-04 22:01:22 +03:00
}
}
2007-08-06 07:03:34 +03:00
if ( LOCPLINT - > adventureInt - > updateScreen )
2007-08-04 22:01:22 +03:00
{
adventureInt - > update ( ) ;
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > updateScreen = false ;
2007-08-04 22:01:22 +03:00
}
2007-10-13 23:31:50 +03:00
for ( int i = 0 ; i < objsToBlit . size ( ) ; i + + )
blitAt ( objsToBlit [ i ] - > bitmap , objsToBlit [ i ] - > pos . x , objsToBlit [ i ] - > pos . y ) ;
2007-08-04 22:01:22 +03:00
SDL_Delay ( 5 ) ; //give time for other apps
2007-09-13 16:34:59 +03:00
SDL_framerateDelay ( mainFPSmng ) ;
2007-08-04 22:01:22 +03:00
}
2007-08-29 13:05:50 +03:00
}
2007-08-04 22:01:22 +03:00
2007-09-15 18:44:08 +03:00
inline void subRect ( const int & x , const int & y , const int & z , SDL_Rect & r , const int & hid )
{
for ( int h = 0 ; h < CGI - > mh - > ttiles [ x ] [ y ] [ z ] . objects . size ( ) ; + + h )
if ( CGI - > mh - > ttiles [ x ] [ y ] [ z ] . objects [ h ] . first - > id = = hid )
CGI - > mh - > ttiles [ x ] [ y ] [ z ] . objects [ h ] . second = r ;
}
inline void delObjRect ( const int & x , const int & y , const int & z , const int & hid )
{
for ( int h = 0 ; h < CGI - > mh - > ttiles [ x ] [ y ] [ z ] . objects . size ( ) ; + + h )
if ( CGI - > mh - > ttiles [ x ] [ y ] [ z ] . objects [ h ] . first - > id = = hid )
CGI - > mh - > ttiles [ x ] [ y ] [ z ] . objects . erase ( CGI - > mh - > ttiles [ x ] [ y ] [ z ] . objects . begin ( ) + h ) ;
}
2007-08-29 13:05:50 +03:00
void CPlayerInterface : : heroMoved ( const HeroMoveDetails & details )
{
2007-10-20 00:12:37 +03:00
adventureInt - > minimap . draw ( ) ;
2007-09-13 16:34:59 +03:00
//initializing objects and performing first step of move
2007-10-05 21:16:22 +03:00
CObjectInstance * ho = details . ho ; //object representing this hero
int3 hp = details . src ;
2007-10-05 23:38:14 +03:00
if ( adventureInt - > terrain . currentPath ) //&& hero is moving
{
adventureInt - > terrain . currentPath - > nodes . erase ( adventureInt - > terrain . currentPath - > nodes . end ( ) - 1 ) ;
}
2007-10-09 18:15:35 +03:00
int3 buff = details . ho - > pos ;
buff . x - = 11 ;
buff . y - = 9 ;
buff = repairScreenPos ( buff ) ;
LOCPLINT - > adventureInt - > position = buff ; //actualizing screen pos
2007-09-13 16:34:59 +03:00
if ( details . dst . x + 1 = = details . src . x & & details . dst . y + 1 = = details . src . y ) //tl
{
2007-09-15 21:04:12 +03:00
ho - > moveDir = 1 ;
2007-10-08 21:47:23 +03:00
ho - > isStanding = false ;
2007-09-15 18:44:08 +03:00
CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 31 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 1 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 33 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 65 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 31 , 1 ) ) ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 1 , 1 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 33 , 1 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 65 , 1 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 31 , 33 ) ) ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 1 , 33 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 33 , 33 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 65 , 33 ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x = = details . src . x & & details . dst . y + 1 = = details . src . y ) //t
{
2007-09-15 21:04:12 +03:00
ho - > moveDir = 2 ;
2007-10-08 21:47:23 +03:00
ho - > isStanding = false ;
2007-09-15 18:44:08 +03:00
CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 0 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 32 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 64 , - 31 ) ) ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 0 , 1 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 32 , 1 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 64 , 1 ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 0 , 33 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 32 , 33 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 64 , 33 ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y + 1 = = details . src . y ) //tr
{
2007-09-15 21:04:12 +03:00
ho - > moveDir = 3 ;
2007-10-08 21:47:23 +03:00
ho - > isStanding = false ;
2007-09-15 18:44:08 +03:00
CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 1 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 31 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 63 , - 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 2 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 95 , - 31 ) ) ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 1 , 1 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 31 , 1 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 63 , 1 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 95 , 1 ) ) ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , - 1 , 33 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 31 , 33 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 63 , 33 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 95 , 33 ) ) ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y = = details . src . y ) //r
{
2007-09-15 21:04:12 +03:00
ho - > moveDir = 4 ;
2007-10-08 21:47:23 +03:00
ho - > isStanding = false ;
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 1 , 0 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 31 , 0 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 63 , 0 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 95 , 0 ) ) ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , - 1 , 32 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 31 , 32 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 63 , 32 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 95 , 32 ) ) ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y - 1 = = details . src . y ) //br
{
2007-09-15 21:04:12 +03:00
ho - > moveDir = 5 ;
2007-10-08 21:47:23 +03:00
ho - > isStanding = false ;
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 1 , - 1 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 31 , - 1 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 63 , - 1 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 95 , - 1 ) ) ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , - 1 , 31 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 31 , 31 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 63 , 31 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 95 , 31 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 1 , 63 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 31 , 63 ) ) ) ;
CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 63 , 63 ) ) ) ;
CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 95 , 63 ) ) ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x = = details . src . x & & details . dst . y - 1 = = details . src . y ) //b
{
2007-09-15 21:04:12 +03:00
ho - > moveDir = 6 ;
2007-10-08 21:47:23 +03:00
ho - > isStanding = false ;
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 0 , - 1 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 32 , - 1 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 64 , - 1 ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 0 , 31 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 32 , 31 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 64 , 31 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 0 , 63 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 32 , 63 ) ) ) ;
CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 64 , 63 ) ) ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x + 1 = = details . src . x & & details . dst . y - 1 = = details . src . y ) //bl
{
2007-09-15 21:04:12 +03:00
ho - > moveDir = 7 ;
2007-10-08 21:47:23 +03:00
ho - > isStanding = false ;
2007-09-15 18:44:08 +03:00
CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 31 , - 1 ) ) ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 1 , - 1 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 33 , - 1 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 65 , - 1 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 31 , 31 ) ) ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 1 , 31 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 33 , 31 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 65 , 31 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 31 , 63 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 1 , 63 ) ) ) ;
CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 33 , 63 ) ) ) ;
CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , 65 , 63 ) ) ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x + 1 = = details . src . x & & details . dst . y = = details . src . y ) //l
{
2007-09-15 21:04:12 +03:00
ho - > moveDir = 8 ;
2007-10-08 21:47:23 +03:00
ho - > isStanding = false ;
2007-09-15 18:44:08 +03:00
CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 31 , 0 ) ) ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 1 , 0 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 33 , 0 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 65 , 0 ) , ho - > id ) ;
CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . push_back ( std : : make_pair ( ho , genRect ( 32 , 32 , - 31 , 32 ) ) ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 1 , 32 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 33 , 32 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 65 , 32 ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
2007-09-15 18:44:08 +03:00
//first initializing done
SDL_framerateDelay ( mainFPSmng ) ; // after first move
//main moving
2007-09-15 21:04:12 +03:00
for ( int i = 1 ; i < 32 ; i + = 4 )
2007-09-13 16:34:59 +03:00
{
if ( details . dst . x + 1 = = details . src . x & & details . dst . y + 1 = = details . src . y ) //tl
{
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 3 , hp . y - 2 , hp . z , genRect ( 32 , 32 , - 31 + i , - 31 + i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y - 2 , hp . z , genRect ( 32 , 32 , 1 + i , - 31 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 2 , hp . z , genRect ( 32 , 32 , 33 + i , - 31 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 2 , hp . z , genRect ( 32 , 32 , 65 + i , - 31 + i ) , ho - > id ) ;
subRect ( hp . x - 3 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 31 + i , 1 + i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 1 + i , 1 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 33 + i , 1 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 65 + i , 1 + i ) , ho - > id ) ;
subRect ( hp . x - 3 , hp . y , hp . z , genRect ( 32 , 32 , - 31 + i , 33 + i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 1 + i , 33 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 33 + i , 33 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 65 + i , 33 + i ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x = = details . src . x & & details . dst . y + 1 = = details . src . y ) //t
{
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 2 , hp . y - 2 , hp . z , genRect ( 32 , 32 , 0 , - 31 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 2 , hp . z , genRect ( 32 , 32 , 32 , - 31 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 2 , hp . z , genRect ( 32 , 32 , 64 , - 31 + i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 0 , 1 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 32 , 1 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 64 , 1 + i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 0 , 33 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 32 , 33 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 64 , 33 + i ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y + 1 = = details . src . y ) //tr
{
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 2 , hp . y - 2 , hp . z , genRect ( 32 , 32 , - 1 - i , - 31 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 2 , hp . z , genRect ( 32 , 32 , 31 - i , - 31 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 2 , hp . z , genRect ( 32 , 32 , 63 - i , - 31 + i ) , ho - > id ) ;
subRect ( hp . x + 1 , hp . y - 2 , hp . z , genRect ( 32 , 32 , 95 - i , - 31 + i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 1 - i , 1 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 31 - i , 1 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 63 - i , 1 + i ) , ho - > id ) ;
subRect ( hp . x + 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 95 - i , 1 + i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , - 1 - i , 33 + i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 31 - i , 33 + i ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 63 - i , 33 + i ) , ho - > id ) ;
subRect ( hp . x + 1 , hp . y , hp . z , genRect ( 32 , 32 , 95 - i , 33 + i ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 2 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 2 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y = = details . src . y ) //r
{
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 1 - i , 0 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 31 - i , 0 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 63 - i , 0 ) , ho - > id ) ;
subRect ( hp . x + 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 95 - i , 0 ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , - 1 - i , 32 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 31 - i , 32 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 63 - i , 32 ) , ho - > id ) ;
subRect ( hp . x + 1 , hp . y , hp . z , genRect ( 32 , 32 , 95 - i , 32 ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y - 1 = = details . src . y ) //br
{
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 1 - i , - 1 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 31 - i , - 1 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 63 - i , - 1 - i ) , ho - > id ) ;
subRect ( hp . x + 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 95 - i , - 1 - i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , - 1 - i , 31 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 31 - i , 31 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 63 - i , 31 - i ) , ho - > id ) ;
subRect ( hp . x + 1 , hp . y , hp . z , genRect ( 32 , 32 , 95 - i , 31 - i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y + 1 , hp . z , genRect ( 32 , 32 , - 1 - i , 63 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y + 1 , hp . z , genRect ( 32 , 32 , 31 - i , 63 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y + 1 , hp . z , genRect ( 32 , 32 , 63 - i , 63 - i ) , ho - > id ) ;
subRect ( hp . x + 1 , hp . y + 1 , hp . z , genRect ( 32 , 32 , 95 - i , 63 - i ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x + 1 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x = = details . src . x & & details . dst . y - 1 = = details . src . y ) //b
{
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 0 , - 1 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 32 , - 1 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 64 , - 1 - i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 0 , 31 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 32 , 31 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 64 , 31 - i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y + 1 , hp . z , genRect ( 32 , 32 , 0 , 63 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y + 1 , hp . z , genRect ( 32 , 32 , 32 , 63 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y + 1 , hp . z , genRect ( 32 , 32 , 64 , 63 - i ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x + 1 = = details . src . x & & details . dst . y - 1 = = details . src . y ) //bl
{
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 3 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 31 + i , - 1 - i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 1 + i , - 1 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 33 + i , - 1 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 65 + i , - 1 - i ) , ho - > id ) ;
subRect ( hp . x - 3 , hp . y , hp . z , genRect ( 32 , 32 , - 31 + i , 31 - i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 1 + i , 31 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 33 + i , 31 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 65 + i , 31 - i ) , ho - > id ) ;
subRect ( hp . x - 3 , hp . y + 1 , hp . z , genRect ( 32 , 32 , - 31 + i , 63 - i ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y + 1 , hp . z , genRect ( 32 , 32 , 1 + i , 63 - i ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y + 1 , hp . z , genRect ( 32 , 32 , 33 + i , 63 - i ) , ho - > id ) ;
subRect ( hp . x , hp . y + 1 , hp . z , genRect ( 32 , 32 , 65 + i , 63 - i ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y + 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
else if ( details . dst . x + 1 = = details . src . x & & details . dst . y = = details . src . y ) //l
{
2007-09-15 18:44:08 +03:00
subRect ( hp . x - 3 , hp . y - 1 , hp . z , genRect ( 32 , 32 , - 31 + i , 0 ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 1 + i , 0 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y - 1 , hp . z , genRect ( 32 , 32 , 33 + i , 0 ) , ho - > id ) ;
subRect ( hp . x , hp . y - 1 , hp . z , genRect ( 32 , 32 , 65 + i , 0 ) , ho - > id ) ;
subRect ( hp . x - 3 , hp . y , hp . z , genRect ( 32 , 32 , - 31 + i , 32 ) , ho - > id ) ;
subRect ( hp . x - 2 , hp . y , hp . z , genRect ( 32 , 32 , 1 + i , 32 ) , ho - > id ) ;
subRect ( hp . x - 1 , hp . y , hp . z , genRect ( 32 , 32 , 33 + i , 32 ) , ho - > id ) ;
subRect ( hp . x , hp . y , hp . z , genRect ( 32 , 32 , 65 + i , 32 ) , ho - > id ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y - 1 ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 3 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 2 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x - 1 ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
std : : stable_sort ( CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . begin ( ) , CGI - > mh - > ttiles [ hp . x ] [ hp . y ] [ hp . z ] . objects . end ( ) , ocmptwo_cgin ) ;
2007-09-13 16:34:59 +03:00
}
2007-09-15 18:44:08 +03:00
LOCPLINT - > adventureInt - > update ( ) ; //updating screen
2007-09-18 20:01:47 +03:00
CGI - > screenh - > updateScreen ( ) ;
2007-10-03 22:56:08 +03:00
LOCPLINT - > adventureInt - > anim + + ;
2007-09-15 18:44:08 +03:00
SDL_framerateDelay ( mainFPSmng ) ; //for animation purposes
2007-10-03 21:53:49 +03:00
} //for(int i=1; i<32; i+=4)
2007-09-15 18:44:08 +03:00
//main moving done
//finishing move
if ( details . dst . x + 1 = = details . src . x & & details . dst . y + 1 = = details . src . y ) //tl
{
delObjRect ( hp . x , hp . y - 2 , hp . z , ho - > id ) ;
delObjRect ( hp . x , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x - 1 , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x - 3 , hp . y , hp . z , ho - > id ) ;
}
else if ( details . dst . x = = details . src . x & & details . dst . y + 1 = = details . src . y ) //t
{
delObjRect ( hp . x , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x - 1 , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y , hp . z , ho - > id ) ;
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y + 1 = = details . src . y ) //tr
{
delObjRect ( hp . x - 2 , hp . y - 2 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x + 1 , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x - 1 , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y , hp . z , ho - > id ) ;
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y = = details . src . y ) //r
{
delObjRect ( hp . x - 2 , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y , hp . z , ho - > id ) ;
}
else if ( details . dst . x - 1 = = details . src . x & & details . dst . y - 1 = = details . src . y ) //br
{
delObjRect ( hp . x - 2 , hp . y + 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x + 1 , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 1 , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y - 1 , hp . z , ho - > id ) ;
}
else if ( details . dst . x = = details . src . x & & details . dst . y - 1 = = details . src . y ) //b
{
delObjRect ( hp . x , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 1 , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y - 1 , hp . z , ho - > id ) ;
}
else if ( details . dst . x + 1 = = details . src . x & & details . dst . y - 1 = = details . src . y ) //bl
{
delObjRect ( hp . x , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 1 , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 2 , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x - 3 , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x , hp . y , hp . z , ho - > id ) ;
delObjRect ( hp . x , hp . y + 1 , hp . z , ho - > id ) ;
}
else if ( details . dst . x + 1 = = details . src . x & & details . dst . y = = details . src . y ) //l
{
delObjRect ( hp . x , hp . y - 1 , hp . z , ho - > id ) ;
delObjRect ( hp . x , hp . y , hp . z , ho - > id ) ;
2007-09-13 16:34:59 +03:00
}
2007-10-05 21:16:22 +03:00
ho - > pos = details . dst ; //copy of hero's position
2007-10-08 21:47:23 +03:00
//ho->moveDir = 0; //move ended
ho - > isStanding = true ;
2007-09-15 18:44:08 +03:00
//move finished
2007-10-14 15:11:18 +03:00
adventureInt - > heroList . draw ( ) ;
2007-08-04 22:01:22 +03:00
}
2007-09-14 16:11:10 +03:00
void CPlayerInterface : : heroKilled ( const CHeroInstance * hero )
{
}
void CPlayerInterface : : heroCreated ( const CHeroInstance * hero )
{
}
2007-08-04 22:01:22 +03:00
2007-09-30 19:16:00 +03:00
SDL_Surface * CPlayerInterface : : infoWin ( void * specific ) //specific=0 => draws info about selected town/hero //TODO - gdy sie dorobi sensowna hierarchie klas ins. to wywalic tego brzydkiego void*
{
if ( specific )
; //TODO: dorobic, ale w ogole to moze lepiej najpierw zastapic tego voida czym innym
else
{
if ( adventureInt - > selection . type = = HEROI_TYPE )
{
char * buf = new char [ 10 ] ;
SDL_Surface * ret = copySurface ( hInfo ) ;
SDL_SetColorKey ( ret , SDL_SRCCOLORKEY , SDL_MapRGB ( ret - > format , 0 , 255 , 255 ) ) ;
2007-10-18 23:14:26 +03:00
blueToPlayersAdv ( ret , playerID ) ; // zygzyg - nie koloruje, tylko odrobine smieci
2007-09-30 19:16:00 +03:00
const CHeroInstance * curh = ( const CHeroInstance * ) adventureInt - > selection . selected ;
2007-10-17 01:39:11 +03:00
printAt ( curh - > name , 75 , 15 , GEOR13 , zwykly , ret ) ;
2007-09-30 19:16:00 +03:00
for ( int i = 0 ; i < PRIMARY_SKILLS ; i + + )
{
itoa ( curh - > primSkills [ i ] , buf , 10 ) ;
2007-10-17 01:39:11 +03:00
printAtMiddle ( buf , 84 + 28 * i , 68 , GEOR13 , zwykly , ret ) ;
}
for ( std : : map < int , std : : pair < CCreature * , int > > : : const_iterator i = curh - > army . slots . begin ( ) ; i ! = curh - > army . slots . end ( ) ; i + + )
{
blitAt ( CGI - > creh - > smallImgs [ ( * i ) . second . first - > idNumber ] , slotsPos [ ( * i ) . first ] . first + 1 , slotsPos [ ( * i ) . first ] . second + 1 , ret ) ;
itoa ( ( * i ) . second . second , buf , 10 ) ;
printAtMiddle ( buf , slotsPos [ ( * i ) . first ] . first + 17 , slotsPos [ ( * i ) . first ] . second + 39 , GEORM , zwykly , ret ) ;
2007-09-30 19:16:00 +03:00
}
2007-10-17 01:39:11 +03:00
blitAt ( curh - > type - > portraitLarge , 11 , 12 , ret ) ;
2007-09-30 19:16:00 +03:00
itoa ( curh - > mana , buf , 10 ) ;
2007-10-17 01:39:11 +03:00
printAtMiddle ( buf , 166 , 109 , GEORM , zwykly , ret ) ; //mana points
2007-09-30 19:16:00 +03:00
delete buf ;
2007-10-17 01:39:11 +03:00
blitAt ( morale22 - > ourImages [ curh - > getCurrentMorale ( ) + 3 ] . bitmap , 14 , 84 , ret ) ;
blitAt ( luck22 - > ourImages [ curh - > getCurrentLuck ( ) + 3 ] . bitmap , 14 , 101 , ret ) ;
//SDL_SaveBMP(ret,"inf1.bmp");
2007-09-30 19:16:00 +03:00
return ret ;
}
else if ( adventureInt - > selection . type = = TOWNI_TYPE )
{
2007-10-20 00:12:37 +03:00
char * buf = new char [ 10 ] ;
SDL_Surface * ret = copySurface ( hInfo ) ;
return ret ;
2007-09-30 19:16:00 +03:00
}
else
return NULL ;
}
return NULL ;
}
2007-08-04 22:01:22 +03:00
void CPlayerInterface : : handleEvent ( SDL_Event * sEvent )
{
2007-08-20 00:12:55 +03:00
current = sEvent ;
2007-08-21 16:48:18 +03:00
if ( sEvent - > type = = SDL_MOUSEMOTION )
{
CGI - > curh - > cursorMove ( sEvent - > motion . x , sEvent - > motion . y ) ;
}
2007-08-04 22:01:22 +03:00
if ( sEvent - > type = = SDL_QUIT )
exit ( 0 ) ;
else if ( sEvent - > type = = SDL_KEYDOWN )
{
switch ( sEvent - > key . keysym . sym )
{
case SDLK_LEFT :
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingLeft = true ;
2007-08-04 22:01:22 +03:00
break ;
}
case ( SDLK_RIGHT ) :
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingRight = true ;
2007-08-04 22:01:22 +03:00
break ;
}
case ( SDLK_UP ) :
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingUp = true ;
2007-08-04 22:01:22 +03:00
break ;
}
case ( SDLK_DOWN ) :
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingDown = true ;
2007-08-04 22:01:22 +03:00
break ;
}
case ( SDLK_q ) :
{
exit ( 0 ) ;
break ;
}
case ( SDLK_u ) :
{
2007-08-08 22:28:56 +03:00
adventureInt - > underground . clickLeft ( true ) ;
2007-08-04 22:01:22 +03:00
}
}
} //keydown end
else if ( sEvent - > type = = SDL_KEYUP )
{
switch ( sEvent - > key . keysym . sym )
{
case SDLK_LEFT :
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingLeft = false ;
2007-08-04 22:01:22 +03:00
break ;
}
case ( SDLK_RIGHT ) :
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingRight = false ;
2007-08-04 22:01:22 +03:00
break ;
}
case ( SDLK_UP ) :
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingUp = false ;
2007-08-04 22:01:22 +03:00
break ;
}
case ( SDLK_DOWN ) :
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingDown = false ;
2007-08-04 22:01:22 +03:00
break ;
}
2007-08-06 07:03:34 +03:00
case ( SDLK_u ) :
{
2007-08-08 22:28:56 +03:00
adventureInt - > underground . clickLeft ( false ) ;
2007-08-06 07:03:34 +03:00
}
2007-08-04 22:01:22 +03:00
}
} //keyup end
else if ( sEvent - > type = = SDL_MOUSEMOTION )
{
2007-08-06 07:03:34 +03:00
for ( int i = 0 ; i < hoverable . size ( ) ; i + + )
{
if ( isItIn ( & hoverable [ i ] - > pos , sEvent - > motion . x , sEvent - > motion . y ) )
{
if ( ! hoverable [ i ] - > hovered )
hoverable [ i ] - > hover ( true ) ;
}
else if ( hoverable [ i ] - > hovered )
{
hoverable [ i ] - > hover ( false ) ;
}
}
2007-08-27 17:15:03 +03:00
for ( int i = 0 ; i < motioninterested . size ( ) ; i + + )
{
if ( isItIn ( & motioninterested [ i ] - > pos , sEvent - > motion . x , sEvent - > motion . y ) )
{
motioninterested [ i ] - > mouseMoved ( sEvent - > motion ) ;
}
}
2007-08-04 22:01:22 +03:00
if ( sEvent - > motion . x < 15 )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingLeft = true ;
2007-08-04 22:01:22 +03:00
}
else
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingLeft = false ;
2007-08-04 22:01:22 +03:00
}
if ( sEvent - > motion . x > ekran - > w - 15 )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingRight = true ;
2007-08-04 22:01:22 +03:00
}
else
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingRight = false ;
2007-08-04 22:01:22 +03:00
}
if ( sEvent - > motion . y < 15 )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingUp = true ;
2007-08-04 22:01:22 +03:00
}
else
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingUp = false ;
2007-08-04 22:01:22 +03:00
}
if ( sEvent - > motion . y > ekran - > h - 15 )
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingDown = true ;
2007-08-04 22:01:22 +03:00
}
else
{
2007-08-06 07:03:34 +03:00
LOCPLINT - > adventureInt - > scrollingDown = false ;
}
2007-09-14 16:11:10 +03:00
} //mousemotion end
2007-08-06 07:03:34 +03:00
else if ( ( sEvent - > type = = SDL_MOUSEBUTTONDOWN ) & & ( sEvent - > button . button = = SDL_BUTTON_LEFT ) )
{
for ( int i = 0 ; i < lclickable . size ( ) ; i + + )
{
if ( isItIn ( & lclickable [ i ] - > pos , sEvent - > motion . x , sEvent - > motion . y ) )
{
lclickable [ i ] - > clickLeft ( true ) ;
}
2007-08-04 22:01:22 +03:00
}
}
2007-08-06 07:03:34 +03:00
else if ( ( sEvent - > type = = SDL_MOUSEBUTTONUP ) & & ( sEvent - > button . button = = SDL_BUTTON_LEFT ) )
{
for ( int i = 0 ; i < lclickable . size ( ) ; i + + )
{
if ( isItIn ( & lclickable [ i ] - > pos , sEvent - > motion . x , sEvent - > motion . y ) )
{
lclickable [ i ] - > clickLeft ( false ) ;
}
else
lclickable [ i ] - > clickLeft ( boost : : logic : : indeterminate ) ;
}
}
2007-10-13 23:31:50 +03:00
else if ( ( sEvent - > type = = SDL_MOUSEBUTTONDOWN ) & & ( sEvent - > button . button = = SDL_BUTTON_RIGHT ) )
{
for ( int i = 0 ; i < rclickable . size ( ) ; i + + )
{
if ( isItIn ( & rclickable [ i ] - > pos , sEvent - > motion . x , sEvent - > motion . y ) )
{
rclickable [ i ] - > clickRight ( true ) ;
}
}
}
else if ( ( sEvent - > type = = SDL_MOUSEBUTTONUP ) & & ( sEvent - > button . button = = SDL_BUTTON_RIGHT ) )
{
for ( int i = 0 ; i < rclickable . size ( ) ; i + + )
{
if ( isItIn ( & rclickable [ i ] - > pos , sEvent - > motion . x , sEvent - > motion . y ) )
{
rclickable [ i ] - > clickRight ( false ) ;
}
else
rclickable [ i ] - > clickRight ( boost : : logic : : indeterminate ) ;
}
}
2007-08-20 00:12:55 +03:00
current = NULL ;
2007-08-06 07:03:34 +03:00
2007-10-09 18:15:35 +03:00
} //event end
int3 CPlayerInterface : : repairScreenPos ( int3 pos )
{
if ( pos . x < = - Woff )
pos . x = - Woff + 1 ;
if ( pos . y < = - Hoff )
pos . y = - Hoff + 1 ;
if ( pos . x > CGI - > mh - > reader - > map . width - this - > adventureInt - > terrain . tilesw + Woff )
pos . x = CGI - > mh - > reader - > map . width - this - > adventureInt - > terrain . tilesw + Woff ;
if ( pos . y > CGI - > mh - > reader - > map . height - this - > adventureInt - > terrain . tilesh + Hoff )
pos . y = CGI - > mh - > reader - > map . height - this - > adventureInt - > terrain . tilesh + Hoff ;
return pos ;
}