2011-12-14 00:23:17 +03:00
# pragma once
2009-04-16 14:14:13 +03:00
struct SDL_Thread ;
class CDefHandler ;
struct SDL_Surface ;
2009-04-15 17:03:31 +03:00
/*
* CCursorhandler . h , part of VCMI engine
*
* Authors : listed in file AUTHORS in main folder
*
* License : GNU General Public License v2 .0 or later
* Full text of license available in license . txt file , in main folder
*
2009-04-16 14:14:13 +03:00
*/
2012-03-31 00:36:07 +03:00
namespace ECursor
{
enum ECursorTypes { ADVENTURE , COMBAT , DEFAULT , SPELLBOOK } ;
enum EBattleCursors { COMBAT_BLOCKED , COMBAT_MOVE , COMBAT_FLY , COMBAT_SHOOT ,
COMBAT_HERO , COMBAT_QUERY , COMBAT_POINTER ,
//various attack frames
COMBAT_SHOOT_PENALTY = 15 , COMBAT_SHOOT_CATAPULT , COMBAT_HEAL ,
COMBAT_SACRIFICE , COMBAT_TELEPORT } ;
}
2011-02-22 13:52:36 +02:00
/// handles mouse cursor
class CCursorHandler
2009-04-16 14:14:13 +03:00
{
public :
int mode , number ;
SDL_Surface * help ;
2009-11-28 21:55:40 +02:00
SDL_Surface * dndImage ;
2009-04-16 14:14:13 +03:00
bool Show ;
std : : vector < CDefHandler * > cursors ;
int xpos , ypos ; //position of cursor
2009-10-25 16:36:11 +02:00
void initCursor ( ) ; //inits cursorHandler - run only once, it's not memleak-proof (rev 1333)
2009-04-16 14:14:13 +03:00
void cursorMove ( const int & x , const int & y ) ; //change cursor's positions to (x, y)
void changeGraphic ( const int & type , const int & no ) ; //changes cursor graphic for type type (0 - adventure, 1 - combat, 2 - default, 3 - spellbook) and frame no (not used for type 3)
2009-11-28 21:55:40 +02:00
void dragAndDropCursor ( SDL_Surface * image ) ; // Replace cursor with a custom image.
2009-04-16 14:14:13 +03:00
void draw1 ( ) ;
2011-04-17 21:02:13 +03:00
void draw ( SDL_Surface * to ) ;
2009-08-30 15:47:40 +03:00
void shiftPos ( int & x , int & y ) ;
2009-04-16 14:14:13 +03:00
void draw2 ( ) ;
2011-04-05 20:38:24 +03:00
void hide ( ) { Show = 0 ; } ;
void show ( ) { Show = 1 ; } ;
void centerCursor ( ) ;
2009-10-25 16:36:11 +02:00
~ CCursorHandler ( ) ;
2009-04-16 14:14:13 +03:00
} ;