Exemplo n.º 1
0
TCOD_mouse_t TCOD_mouse_get_status() {
	TCOD_mouse_t ms;
	int charWidth, charHeight;
	int wheel, mb1, mb2, mb3, fsx, fsy;
	
	_bah_libtcod_TCODMouse__Status(&ms.x, &ms.y, &ms.dx, &ms.dy, &mb1, &mb2, &mb3, &wheel, &fsx, &fsy);

	ms.lbutton = (mb1) ? true : false;
	ms.rbutton = (mb2) ? true : false;
	ms.mbutton = (mb3) ? true : false;
	ms.wheel_up = (wheel > 0) ?  1 : 0;
	ms.wheel_down = (wheel < 0) ? 1 : 0;
	
	// FIXME : implement this properly....
	ms.lbutton_pressed = false;
	ms.rbutton_pressed = false;
	ms.mbutton_pressed = false;

	TCOD_sys_get_char_size(&charWidth,&charHeight);
	ms.cx = (ms.x - fsx) / charWidth;
	ms.cy = (ms.y - fsy) / charHeight;
	ms.dcx = ms.dx / charWidth;
	ms.dcy = ms.dy / charHeight;
	return ms;
}
Exemplo n.º 2
0
TCOD_mouse_t TCOD_mouse_get_status() {
	TCOD_mouse_t ms;
	int charWidth, charHeight;
	static bool lbut=false;
	static bool rbut=false;
	static bool mbut=false;
	Uint8 buttons;
	SDL_PumpEvents();

	buttons = SDL_GetMouseState(&ms.x,&ms.y);
	SDL_GetRelativeMouseState(&ms.dx,&ms.dy);
	ms.lbutton = (buttons & SDL_BUTTON(SDL_BUTTON_LEFT)) ? 1 : 0;
	ms.lbutton_pressed=false;
	if (ms.lbutton) lbut=true;
	else if( lbut ) {
		lbut=false;
		ms.lbutton_pressed=true;
	}
	if ( mouse_force_bl ) {
		ms.lbutton_pressed=true;
		mouse_force_bl=false;
	}

	ms.rbutton = (buttons & SDL_BUTTON(SDL_BUTTON_RIGHT)) ? 1 : 0;
	ms.rbutton_pressed=false;
	if (ms.rbutton) rbut=true;
	else if( rbut ) {
		rbut=false;
		ms.rbutton_pressed=true;
	}
	if ( mouse_force_br ) {
		ms.rbutton_pressed=true;
		mouse_force_br=false;
	}

	ms.mbutton = (buttons & SDL_BUTTON(SDL_BUTTON_MIDDLE)) ? 1 : 0;
	ms.mbutton_pressed=false;
	if (ms.mbutton) mbut=true;
	else if( mbut ) {
		mbut=false;
		ms.mbutton_pressed=true;
	}
	if ( mouse_force_bm ) {
		ms.mbutton_pressed=true;
		mouse_force_bm=false;
	}

	ms.wheel_up = (buttons & SDL_BUTTON(SDL_BUTTON_WHEELUP)) ? 1 : 0;
	ms.wheel_down = (buttons & SDL_BUTTON(SDL_BUTTON_WHEELDOWN)) ? 1 : 0;
	TCOD_sys_get_char_size(&charWidth,&charHeight);
	ms.cx = (ms.x - fullscreen_offsetx) / charWidth;
	ms.cy = (ms.y - fullscreen_offsety) / charHeight;
	ms.dcx = ms.dx / charWidth;
	ms.dcy = ms.dy / charHeight;
	return ms;
}
Exemplo n.º 3
0
static boolean processSpecialKeystrokes(TCOD_key_t k, boolean text) {
	if (k.vk == TCODK_PRINTSCREEN) {
		// screenshot
		TCOD_sys_save_screenshot(NULL);
		return true;
	} else if ( (k.vk == TCODK_F12) || ((k.lalt || k.ralt) && (k.vk == TCODK_ENTER || k.vk == TCODK_KPENTER) )) {
		if (!isFullScreen) {
			int font_w, font_h;

			TCOD_sys_get_char_size(&font_w, &font_h);
			if (desktop_width < font_w * COLS || desktop_height < font_h * ROWS) {
				// refuse to go full screen if the font is too big
				return true;
			}
		}

		isFullScreen = !isFullScreen;
		TCOD_console_set_fullscreen(isFullScreen);
		return true;
	}
/*
	} else if ((k.vk == TCODK_PAGEUP
				|| ((!text) && k.vk == TCODK_CHAR && (k.c == '=' || k.c == '+')))
			   && brogueFontSize < 13) {
		
		if (isFullScreen) {
			TCOD_console_set_fullscreen(0);
			isFullScreen = 0;
		}

		brogueFontSize++;
		TCOD_console_delete(NULL);

		initWithFont(brogueFontSize);

		TCOD_console_flush();
		return true;
	} else if ((k.vk == TCODK_PAGEDOWN
				|| ((!text) && k.vk == TCODK_CHAR && k.c == '-'))
			   && brogueFontSize > 1) {

		if (isFullScreen) {
			TCOD_console_set_fullscreen(0);
			isFullScreen = 0;
		}

		brogueFontSize--;
		TCOD_console_delete(NULL);

		initWithFont(brogueFontSize);
		TCOD_console_flush();
		return true;
	}
*/
	return false;
}
Exemplo n.º 4
0
/* mouse stuff */
TCOD_mouse_t TCOD_mouse_get_status() {
  static int oldMouseX=-1,oldMouseY=-1;
  TCOD_mouse_t ms;
  int charWidth, charHeight;
  static bool lbut=false;
  static bool rbut=false;
  static bool mbut=false;
  
  if (!input) {
	if ( !renderWindow ) return ms;
	input=sfRenderWindow_GetInput(renderWindow);
  }

  ms.lbutton = sfInput_IsMouseButtonDown(input,sfButtonLeft);
  ms.lbutton_pressed=false;
  if (ms.lbutton) lbut=true;
  else if( lbut ) {
  	lbut=false;
  	ms.lbutton_pressed=true;
  }
  ms.rbutton = sfInput_IsMouseButtonDown(input,sfButtonRight);
  ms.rbutton_pressed=false;
  if (ms.rbutton) rbut=true;
  else if( rbut ) {
  	rbut=false;
  	ms.rbutton_pressed=true;
  }
  ms.mbutton = sfInput_IsMouseButtonDown(input,sfButtonMiddle);
  ms.mbutton_pressed=false;
  if (ms.mbutton) mbut=true;
  else if( mbut ) {
  	mbut=false;
  	ms.mbutton_pressed=true;
  }

  ms.x = (int) sfInput_GetMouseX(input);
  ms.y = (int) sfInput_GetMouseY(input);
  
  if ( oldMouseX != -1 ) {
  	ms.dx=ms.x - oldMouseX;
  	ms.dy=ms.y - oldMouseY;
  } else {
  	ms.dx=0;
  	ms.dy=0;
  }
  oldMouseX=ms.x;
  oldMouseY=ms.y;
  
  TCOD_sys_get_char_size(&charWidth,&charHeight);
  ms.cx = ms.x / charWidth;
  ms.cy = ms.y / charHeight;
  ms.dcx = ms.dx / charWidth;
  ms.dcy = ms.dy / charHeight;
  return ms;
}
Exemplo n.º 5
0
Arquivo: sys.cpp Projeto: AMouri/Rouge
void TCODSystem::getCharSize(int *w, int *h) {
	TCOD_sys_get_char_size(w,h);
}
Exemplo n.º 6
0
static TCOD_event_t TCOD_sys_handle_event(SDL_Event *ev,TCOD_event_t eventMask, TCOD_key_t *key, TCOD_mouse_t *mouse) {
	TCOD_event_t retMask=0;
	switch(ev->type) {
		case SDL_KEYDOWN : {		 
			TCOD_key_t tmpKey=TCOD_sys_SDLtoTCOD(ev,TCOD_KEY_PRESSED);
			if ( (TCOD_EVENT_KEY_PRESS & eventMask) != 0) {
				retMask|=TCOD_EVENT_KEY_PRESS; 
				if ( key ) *key = tmpKey; 
				return retMask;					
			}
		}
		break;
		case SDL_KEYUP : { 
			TCOD_key_t tmpKey=TCOD_sys_SDLtoTCOD(ev,TCOD_KEY_RELEASED);
			if ( (TCOD_EVENT_KEY_RELEASE & eventMask) != 0) {
				retMask|=TCOD_EVENT_KEY_RELEASE; 
				if ( key ) *key = tmpKey;
				return retMask;					
			}
		}
		break;
		case SDL_MOUSEMOTION : 
			if ( (TCOD_EVENT_MOUSE_MOVE & eventMask) != 0) {
				SDL_MouseMotionEvent *mme=&ev->motion;
				int charWidth, charHeight;
				/*SDL_GetMouseState(&mouse->x,&mouse->y);*/
				/*SDL_GetRelativeMouseState(&mouse->dx,&mouse->dy);*/
				retMask|=TCOD_EVENT_MOUSE_MOVE;
				mouse->dx += mme->xrel;
				mouse->dy += mme->yrel;
				mouse->x=mme->x;
				mouse->y=mme->y;				
				TCOD_sys_get_char_size(&charWidth,&charHeight);
				mouse->cx = (mouse->x - TCOD_ctx.fullscreen_offsetx) / charWidth;
				mouse->cy = (mouse->y - TCOD_ctx.fullscreen_offsety) / charHeight;
				mouse->dcx = mouse->dx / charWidth;
				mouse->dcy = mouse->dy / charHeight;
				return retMask;
			}
		break; 
		case SDL_MOUSEBUTTONDOWN : 
			if ( (TCOD_EVENT_MOUSE_PRESS & eventMask) != 0) {
				SDL_MouseButtonEvent *mev=&ev->button;
				retMask|=TCOD_EVENT_MOUSE_PRESS;
				switch (mev->button) {
					case SDL_BUTTON_LEFT : mouse->lbutton=mousebl=true; break;
					case SDL_BUTTON_MIDDLE : mouse->mbutton=mousebm=true; break;
					case SDL_BUTTON_RIGHT : mouse->rbutton=mousebr=true; break;
					case SDL_BUTTON_WHEELUP : mouse->wheel_up=true; break;
					case SDL_BUTTON_WHEELDOWN : mouse->wheel_down=true;break;
				}
				return retMask;
			}
		break; 
		case SDL_MOUSEBUTTONUP : 
			if ( (TCOD_EVENT_MOUSE_RELEASE & eventMask) != 0) {
				SDL_MouseButtonEvent *mev=&ev->button;
				retMask|=TCOD_EVENT_MOUSE_RELEASE;
				switch (mev->button) {
					case SDL_BUTTON_LEFT : if (mousebl) mouse->lbutton_pressed = mouse_force_bl=true; mouse->lbutton = mousebl=false; break;
					case SDL_BUTTON_MIDDLE : if (mousebm) mouse->mbutton_pressed = mouse_force_bm=true; mouse->mbutton = mousebm=false; break;
					case SDL_BUTTON_RIGHT : if (mousebr) mouse->rbutton_pressed = mouse_force_br=true; mouse->rbutton = mousebr=false; break;
				}
				return retMask;
			}
		break;
		case SDL_QUIT :
			TCOD_console_set_window_closed();
		break;
		case SDL_VIDEOEXPOSE :
			TCOD_sys_console_to_bitmap(screen,TCOD_console_get_width(NULL),TCOD_console_get_height(NULL),consoleBuffer,prevConsoleBuffer);
		break;			
		default : break; 
	}
	return retMask;
}