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(); }
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; } } }
void Engine::_OnSignal(int s) { switch(s) { case SIGINT: case SIGQUIT: case SIGTERM: case SIGABRT: #ifdef _WIN32 case SIGBREAK: #endif SetQuit(true); break; } }
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; }