void CPlayer::extendedNotify(IEvent *e) { if (e->compareType("event_sdlmanager_keydown")) { CSDLManagerEVENTKeyDown *request = (CSDLManagerEVENTKeyDown *)e; iKeys |= (request->getKey() == SDLK_w ? CPLAYER_KEYS_UP : 0); iKeys |= (request->getKey() == SDLK_a ? CPLAYER_KEYS_LEFT : 0); iKeys |= (request->getKey() == SDLK_s ? CPLAYER_KEYS_DOWN : 0); iKeys |= (request->getKey() == SDLK_d ? CPLAYER_KEYS_RIGHT : 0); iKeys |= (request->getKey() == SDLK_q ? CPLAYER_KEYS_ROTATELEFT : 0); iKeys |= (request->getKey() == SDLK_e ? CPLAYER_KEYS_ROTATERIGHT : 0); } else if (e->compareType("event_sdlmanager_keyup")) { CSDLManagerEVENTKeyUp *request = (CSDLManagerEVENTKeyUp *)e; iKeys &= ~(request->getKey() == SDLK_w ? CPLAYER_KEYS_UP : 0); iKeys &= ~(request->getKey() == SDLK_a ? CPLAYER_KEYS_LEFT : 0); iKeys &= ~(request->getKey() == SDLK_s ? CPLAYER_KEYS_DOWN : 0); iKeys &= ~(request->getKey() == SDLK_d ? CPLAYER_KEYS_RIGHT : 0); iKeys &= ~(request->getKey() == SDLK_q ? CPLAYER_KEYS_ROTATELEFT : 0); iKeys &= ~(request->getKey() == SDLK_e ? CPLAYER_KEYS_ROTATERIGHT : 0); } }
void CCamera::notify(IEvent *e) { if (e->compareType("event_sdlmanager_keydown")) { CSDLManagerEVENTKeyDown *request = (CSDLManagerEVENTKeyDown *)e; iCameraKeys |= (request->getKey() == SDLK_w ? CCAMERA_UP : 0); iCameraKeys |= (request->getKey() == SDLK_a ? CCAMERA_LEFT : 0); iCameraKeys |= (request->getKey() == SDLK_s ? CCAMERA_DOWN : 0); iCameraKeys |= (request->getKey() == SDLK_d ? CCAMERA_RIGHT : 0); if (request->getKey() == SDLK_q) { fCameraRotation -= 90.0; } if (request->getKey() == SDLK_e) { fCameraRotation += 90.0; } } else if (e->compareType("event_sdlmanager_keyup")) { CSDLManagerEVENTKeyUp *request = (CSDLManagerEVENTKeyUp *)e; iCameraKeys &= ~(request->getKey() == SDLK_w ? CCAMERA_UP : 0); iCameraKeys &= ~(request->getKey() == SDLK_a ? CCAMERA_LEFT : 0); iCameraKeys &= ~(request->getKey() == SDLK_s ? CCAMERA_DOWN : 0); iCameraKeys &= ~(request->getKey() == SDLK_d ? CCAMERA_RIGHT : 0); } else if (e->compareType("event_sdlmanager_windoweventresize")) { CSDLManagerEVENTWindowEventResize *request = (CSDLManagerEVENTWindowEventResize *)e; fWindowWidth = request->getWidth() / 16.0; fWindowHeight = request->getHeight() / 16.0; glClearColor(0.0, 0.0, 0.0, 0.0); glViewport(0, 0, request->getWidth(), request->getHeight()); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-fWindowWidth, fWindowWidth, -fWindowHeight, fWindowHeight, -256.0, 256.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glEnable(GL_CULL_FACE); glFrontFace(GL_CCW); //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); } }