示例#1
0
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);
	}
}
示例#2
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);
	}
}