Example #1
0
void Engine::OnKeyDown(SDLKey key, SDLMod mod)
{
    if(mod & KMOD_LALT)
    {
        if(key == SDLK_F4)
            SetQuit(true);
        else if(key == SDLK_RETURN)
            ToggleFullscreen();
    }

    //if(mod & KMOD_CTRL)
    {
        if(key == SDLK_F1)
            ToggleDebugFlag(EDBG_COLLISION_MAP_OVERLAY);
        else if(key == SDLK_F2)
            ToggleDebugFlag(EDBG_HIDE_SPRITES);
        else if(key == SDLK_F3)
            ToggleDebugFlag(EDBG_HIDE_LAYERS);
        else if(key == SDLK_F4)
            ToggleDebugFlag(EDBG_SHOW_BBOXES);
    }

    if(key == SDLK_PAUSE)
    {
        TogglePause();
    }
}
void
QuitRPC::operator()(bool q)
{
    debug3 << "Executing quit RPC" 
           << "\n\t quit='" << q << "'"
           << endl;

    SetQuit(q);
    Execute();
}
Example #3
0
void Engine::_ProcessEvents(void)
{
    SDL_Event evt;
    while(!s_quit && SDL_PollEvent(&evt))
    {
        if(!OnRawEvent(evt))
            continue;

        switch(evt.type)
        {
            case SDL_KEYDOWN:
                OnKeyDown(evt.key.keysym.sym, evt.key.keysym.mod);
                break;

            case SDL_KEYUP:
                OnKeyUp(evt.key.keysym.sym, evt.key.keysym.mod);
                break;

            case SDL_JOYAXISMOTION:
                OnJoystickEvent(evt.jaxis.type, evt.jaxis.which, evt.jaxis.axis, evt.jaxis.value);
                break;

            case SDL_JOYBUTTONDOWN:
            case SDL_JOYBUTTONUP:
                OnJoystickEvent(evt.jbutton.type, evt.jbutton.which, evt.jbutton.button, evt.jbutton.state);
                break;

            case SDL_JOYHATMOTION:
                OnJoystickEvent(evt.jhat.type, evt.jhat.which, evt.jhat.hat, evt.jhat.value);
                break;

            case SDL_ACTIVEEVENT:
                OnWindowEvent(evt.active.gain);
                break;

            case SDL_VIDEORESIZE:
                OnWindowResize(evt.resize.w, evt.resize.h);
                break;

            case SDL_MOUSEMOTION:
                OnMouseEvent(evt.type, 0, evt.motion.state, evt.motion.x, evt.motion.y, evt.motion.xrel, evt.motion.yrel);
                break;

            case SDL_MOUSEBUTTONDOWN:
            case SDL_MOUSEBUTTONUP:
                OnMouseEvent(evt.type, evt.button.button, evt.button.state, evt.button.x, evt.button.y, 0, 0);
                break;

            case SDL_QUIT:
                SetQuit(true);
                break;
        }
    }
}
Example #4
0
void Engine::_OnSignal(int s)
{
    switch(s)
    {
    case SIGINT:
    case SIGQUIT:
    case SIGTERM:
    case SIGABRT:
#ifdef _WIN32
    case SIGBREAK:
#endif
        SetQuit(true);
        break;
    }
}
Example #5
0
long WINAPI InterfaceWindowProc(HWND hwnd,UINT message,UINT wParam,LONG lParam)
{
	char buf[40];
	
	switch (message)
	{
	case WM_CREATE :
		InterfaceCreate(hwnd,wParam,lParam);
		break;
		
		HANDLE_MSG(hwnd,WM_COMMAND,InterfaceCommand);
		
	case WM_DESTROY :
		SetQuit();
		PostQuitMessage(0);
		return 0;
		
	case WM_CLOSE :
		if (MessageBox(hwnd,"Are you sure you want to exit?",BlakServNameString(),
			MB_YESNO | MB_DEFBUTTON2 | MB_ICONQUESTION) == IDYES)
		{
			DestroyWindow(hwnd);
		}
		break;
		
	case WM_TIMER :
		KillTimer(hwndMain,WIN_TIMER_ID);
		SendDlgItemMessage(hwndMain,IDS_STATUS_WINDOW,SB_SETTEXT,0,(LPARAM)"");
		break;
		
	case WM_NOTIFY: 
		switch (((LPNMHDR) lParam)->code)
		{	 
		case TTN_NEEDTEXT: 
			{ 
				LPTOOLTIPTEXT lpttt; 
				
				lpttt = (LPTOOLTIPTEXT) lParam; 
				lpttt->hinst = hInst; 
				
				/* Specify the resource identifier of the descriptive 
				text for the given button. */
				switch (lpttt->hdr.idFrom)
				{ 
				case IDM_FILE_EXIT : 
					lpttt->lpszText = "Exit";
					break; 
				case IDM_FILE_SAVE :
					lpttt->lpszText = "Save Game";
					break; 
				case IDM_FILE_RELOADSYSTEM :
					lpttt->lpszText = "Reload System";
					break; 
				case IDM_MESSAGES_MESSAGEOFTHEDAY :
					lpttt->lpszText = "Message of the Day";
					break;
				case IDM_HELP_ABOUT :
					lpttt->lpszText = "About";
					break; 
				} 
				break;
			} 
			break;
			
		case TCN_SELCHANGE :
			InterfaceTabChange();
			break;
		case TCN_SELCHANGING :
			return FALSE; /* means we'll allow it to change */
			break;
			
		}
		break;
		
		case WM_BLAK_NEW_INFO :
			InterfaceDrawText(hwnd);
			break;
			
		case WM_BLAK_LOGON :
			sessions_logged_on++;
			/*
			sprintf(buf,"Connections: %i",sessions_logged_on);
			SetDlgItemText(HWND_STATUS,IDC_CONNECTIONS_BORDER,buf);
			*/
			sprintf(buf,"%3i",sessions_logged_on);
			SendDlgItemMessage(hwndMain,IDS_STATUS_WINDOW,SB_SETTEXT,1,(LPARAM)buf);
			
			InterfaceAddList(lParam);
			break;
			
		case WM_BLAK_LOGOFF :
			sessions_logged_on--;
			if (sessions_logged_on < 0)
				eprintf("InterfaceWindowProc sessions_logged_on just went negative!\n");
				/*
				sprintf(buf,"Connections: %i",sessions_logged_on);
				SetDlgItemText(HWND_STATUS,IDC_CONNECTIONS_BORDER,buf);
			*/
			sprintf(buf,"%3i",sessions_logged_on);
			SendDlgItemMessage(hwndMain,IDS_STATUS_WINDOW,SB_SETTEXT,1,(LPARAM)buf);
			
			InterfaceRemoveList(lParam);
			
			break;
			
		case WM_BLAK_UPDATE_SESSION :
			InterfaceUpdateList(lParam);
			break;
			
		case WM_BLAK_UPDATE_CHANNEL :
			InterfaceCheckChannels();
			break;
			
		case WM_BLAK_UPDATE_ADMIN :
			InterfaceUpdateAdmin();
			break;
			
		case WM_BLAK_SIGNAL_CONSOLE :
			if (PlaySound("signal",hInst,SND_RESOURCE | SND_ASYNC) == FALSE)
			{
				MessageBeep(MB_OK);
				break;
			}
			FlashWindow(hwnd,TRUE);
			Sleep(200);
			FlashWindow(hwnd,TRUE);
			break;
			
		case WM_BLAK_SOCKET_ACCEPT :
			AsyncSocketAccept(wParam,WSAGETSELECTEVENT(lParam),WSAGETSELECTERROR(lParam),
				SOCKET_PORT);
			break;
			
		case WM_BLAK_SOCKET_MAINTENANCE_ACCEPT :
			AsyncSocketAccept(wParam,WSAGETSELECTEVENT(lParam),WSAGETSELECTERROR(lParam),
				SOCKET_MAINTENANCE_PORT);
			break;
			
		case WM_BLAK_SMTP_SOCKET_ACCEPT :
			AsyncSMTPSocketAccept(wParam,WSAGETSELECTEVENT(lParam),WSAGETSELECTERROR(lParam));
			break;
			
		case WM_BLAK_SOCKET_NAME_LOOKUP :
			AsyncNameLookup((HANDLE)wParam,WSAGETASYNCERROR(lParam));
			break;
			
		case WM_BLAK_SOCKET_SELECT :
			AsyncSocketSelect(wParam,WSAGETSELECTEVENT(lParam),WSAGETSELECTERROR(lParam));
			break;
			
		default :
			return DefWindowProc(hwnd,message,wParam,lParam);    
   }
   return TRUE;
}