mirror of https://github.com/OpenTTD/OpenTTD
(svn r6292) -Cleanup: Indentation, bracing, etc.
parent
d7e1d08d53
commit
463ae887ea
206
video/sdl_v.c
206
video/sdl_v.c
|
@ -184,6 +184,7 @@ static bool CreateMainSurface(int w, int h)
|
||||||
if (icon != NULL) {
|
if (icon != NULL) {
|
||||||
/* Get the colourkey, which will be magenta */
|
/* Get the colourkey, which will be magenta */
|
||||||
uint32 rgbmap = SDL_CALL SDL_MapRGB(icon->format, 255, 0, 255);
|
uint32 rgbmap = SDL_CALL SDL_MapRGB(icon->format, 255, 0, 255);
|
||||||
|
|
||||||
SDL_CALL SDL_SetColorKey(icon, SDL_SRCCOLORKEY, rgbmap);
|
SDL_CALL SDL_SetColorKey(icon, SDL_SRCCOLORKEY, rgbmap);
|
||||||
SDL_CALL SDL_WM_SetIcon(icon, NULL);
|
SDL_CALL SDL_WM_SetIcon(icon, NULL);
|
||||||
SDL_CALL SDL_FreeSurface(icon);
|
SDL_CALL SDL_FreeSurface(icon);
|
||||||
|
@ -263,6 +264,7 @@ static uint32 ConvertSdlKeyIntoMy(SDL_keysym *sym)
|
||||||
{
|
{
|
||||||
const VkMapping *map;
|
const VkMapping *map;
|
||||||
uint key = 0;
|
uint key = 0;
|
||||||
|
|
||||||
for (map = _vk_mapping; map != endof(_vk_mapping); ++map) {
|
for (map = _vk_mapping; map != endof(_vk_mapping); ++map) {
|
||||||
if ((uint)(sym->sym - map->vk_from) <= map->vk_count) {
|
if ((uint)(sym->sym - map->vk_from) <= map->vk_count) {
|
||||||
key = sym->sym - map->vk_from + map->map_to;
|
key = sym->sym - map->vk_from + map->map_to;
|
||||||
|
@ -290,13 +292,15 @@ static uint32 ConvertSdlKeyIntoMy(SDL_keysym *sym)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// META are the command keys on mac
|
// META are the command keys on mac
|
||||||
if (sym->mod & KMOD_META) key |= WKC_META;
|
if (sym->mod & KMOD_META) key |= WKC_META;
|
||||||
if (sym->mod & KMOD_SHIFT) key |= WKC_SHIFT;
|
if (sym->mod & KMOD_SHIFT) key |= WKC_SHIFT;
|
||||||
if (sym->mod & KMOD_CTRL) key |= WKC_CTRL;
|
if (sym->mod & KMOD_CTRL) key |= WKC_CTRL;
|
||||||
if (sym->mod & KMOD_ALT) key |= WKC_ALT;
|
if (sym->mod & KMOD_ALT) key |= WKC_ALT;
|
||||||
// these two lines really help porting hotkey combos. Uncomment to use -- Bjarni
|
// these two lines really help porting hotkey combos. Uncomment to use -- Bjarni
|
||||||
//printf("scancode character pressed %d\n", sym->scancode);
|
#if 0
|
||||||
//printf("unicode character pressed %d\n", sym->unicode);
|
printf("scancode character pressed %d\n", sym->scancode);
|
||||||
|
printf("unicode character pressed %d\n", sym->unicode);
|
||||||
|
#endif
|
||||||
return (key << 16) + sym->unicode;
|
return (key << 16) + sym->unicode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,105 +310,103 @@ static int PollEvent(void)
|
||||||
{
|
{
|
||||||
SDL_Event ev;
|
SDL_Event ev;
|
||||||
|
|
||||||
if (!SDL_CALL SDL_PollEvent(&ev))
|
if (!SDL_CALL SDL_PollEvent(&ev)) return -2;
|
||||||
return -2;
|
|
||||||
|
|
||||||
switch (ev.type) {
|
switch (ev.type) {
|
||||||
case SDL_MOUSEMOTION:
|
case SDL_MOUSEMOTION:
|
||||||
if (_cursor.fix_at) {
|
if (_cursor.fix_at) {
|
||||||
int dx = ev.motion.x - _cursor.pos.x;
|
int dx = ev.motion.x - _cursor.pos.x;
|
||||||
int dy = ev.motion.y - _cursor.pos.y;
|
int dy = ev.motion.y - _cursor.pos.y;
|
||||||
if (dx != 0 || dy != 0) {
|
if (dx != 0 || dy != 0) {
|
||||||
_cursor.delta.x += dx;
|
_cursor.delta.x += dx;
|
||||||
_cursor.delta.y += dy;
|
_cursor.delta.y += dy;
|
||||||
SDL_CALL SDL_WarpMouse(_cursor.pos.x, _cursor.pos.y);
|
SDL_CALL SDL_WarpMouse(_cursor.pos.x, _cursor.pos.y);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
_cursor.delta.x = ev.motion.x - _cursor.pos.x;
|
|
||||||
_cursor.delta.y = ev.motion.y - _cursor.pos.y;
|
|
||||||
_cursor.pos.x = ev.motion.x;
|
|
||||||
_cursor.pos.y = ev.motion.y;
|
|
||||||
_cursor.dirty = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
|
||||||
if (_rightclick_emulate && (SDL_CALL SDL_GetModState() & (KMOD_LCTRL | KMOD_RCTRL)))
|
|
||||||
ev.button.button = SDL_BUTTON_RIGHT;
|
|
||||||
|
|
||||||
switch (ev.button.button) {
|
|
||||||
case SDL_BUTTON_LEFT:
|
|
||||||
_left_button_down = true;
|
|
||||||
break;
|
|
||||||
case SDL_BUTTON_RIGHT:
|
|
||||||
_right_button_down = true;
|
|
||||||
_right_button_clicked = true;
|
|
||||||
break;
|
|
||||||
case SDL_BUTTON_WHEELUP:
|
|
||||||
_cursor.wheel--;
|
|
||||||
break;
|
|
||||||
case SDL_BUTTON_WHEELDOWN:
|
|
||||||
_cursor.wheel++;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_MOUSEBUTTONUP:
|
|
||||||
if (_rightclick_emulate) {
|
|
||||||
_right_button_down = false;
|
|
||||||
_left_button_down = false;
|
|
||||||
_left_button_clicked = false;
|
|
||||||
} else if (ev.button.button == SDL_BUTTON_LEFT) {
|
|
||||||
_left_button_down = false;
|
|
||||||
_left_button_clicked = false;
|
|
||||||
} else if (ev.button.button == SDL_BUTTON_RIGHT) {
|
|
||||||
_right_button_down = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_ACTIVEEVENT:
|
|
||||||
if (!(ev.active.state & SDL_APPMOUSEFOCUS)) break;
|
|
||||||
|
|
||||||
if (ev.active.gain) { // mouse entered the window, enable cursor
|
|
||||||
_cursor.in_window = true;
|
|
||||||
} else {
|
|
||||||
UndrawMouseCursor(); // mouse left the window, undraw cursor
|
|
||||||
_cursor.in_window = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_QUIT:
|
|
||||||
// do not ask to quit on the main screen
|
|
||||||
if (_game_mode != GM_MENU) {
|
|
||||||
if (_patches.autosave_on_exit) {
|
|
||||||
DoExitSave();
|
|
||||||
return 0;
|
|
||||||
} else {
|
} else {
|
||||||
AskExitGame();
|
_cursor.delta.x = ev.motion.x - _cursor.pos.x;
|
||||||
|
_cursor.delta.y = ev.motion.y - _cursor.pos.y;
|
||||||
|
_cursor.pos.x = ev.motion.x;
|
||||||
|
_cursor.pos.y = ev.motion.y;
|
||||||
|
_cursor.dirty = true;
|
||||||
}
|
}
|
||||||
} else {
|
break;
|
||||||
return 0;
|
|
||||||
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
|
if (_rightclick_emulate && (SDL_CALL SDL_GetModState() & (KMOD_LCTRL | KMOD_RCTRL))) {
|
||||||
|
ev.button.button = SDL_BUTTON_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (ev.button.button) {
|
||||||
|
case SDL_BUTTON_LEFT:
|
||||||
|
_left_button_down = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDL_BUTTON_RIGHT:
|
||||||
|
_right_button_down = true;
|
||||||
|
_right_button_clicked = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDL_BUTTON_WHEELUP: _cursor.wheel--; break;
|
||||||
|
case SDL_BUTTON_WHEELDOWN: _cursor.wheel++; break;
|
||||||
|
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDL_MOUSEBUTTONUP:
|
||||||
|
if (_rightclick_emulate) {
|
||||||
|
_right_button_down = false;
|
||||||
|
_left_button_down = false;
|
||||||
|
_left_button_clicked = false;
|
||||||
|
} else if (ev.button.button == SDL_BUTTON_LEFT) {
|
||||||
|
_left_button_down = false;
|
||||||
|
_left_button_clicked = false;
|
||||||
|
} else if (ev.button.button == SDL_BUTTON_RIGHT) {
|
||||||
|
_right_button_down = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDL_ACTIVEEVENT:
|
||||||
|
if (!(ev.active.state & SDL_APPMOUSEFOCUS)) break;
|
||||||
|
|
||||||
|
if (ev.active.gain) { // mouse entered the window, enable cursor
|
||||||
|
_cursor.in_window = true;
|
||||||
|
} else {
|
||||||
|
UndrawMouseCursor(); // mouse left the window, undraw cursor
|
||||||
|
_cursor.in_window = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDL_QUIT:
|
||||||
|
// do not ask to quit on the main screen
|
||||||
|
if (_game_mode != GM_MENU) {
|
||||||
|
if (_patches.autosave_on_exit) {
|
||||||
|
DoExitSave();
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
AskExitGame();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDL_KEYDOWN: /* Toggle full-screen on ALT + ENTER/F */
|
||||||
|
if ((ev.key.keysym.mod & (KMOD_ALT | KMOD_META)) &&
|
||||||
|
(ev.key.keysym.sym == SDLK_RETURN || ev.key.keysym.sym == SDLK_f)) {
|
||||||
|
ToggleFullScreen(!_fullscreen);
|
||||||
|
} else {
|
||||||
|
_pressed_key = ConvertSdlKeyIntoMy(&ev.key.keysym);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDL_VIDEORESIZE: {
|
||||||
|
int w = clamp(ev.resize.w, 64, MAX_SCREEN_WIDTH);
|
||||||
|
int h = clamp(ev.resize.h, 64, MAX_SCREEN_HEIGHT);
|
||||||
|
ChangeResInGame(w, h);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_KEYDOWN: /* Toggle full-screen on ALT + ENTER/F */
|
|
||||||
if ((ev.key.keysym.mod & (KMOD_ALT | KMOD_META)) &&
|
|
||||||
(ev.key.keysym.sym == SDLK_RETURN || ev.key.keysym.sym == SDLK_f)) {
|
|
||||||
ToggleFullScreen(!_fullscreen);
|
|
||||||
} else {
|
|
||||||
_pressed_key = ConvertSdlKeyIntoMy(&ev.key.keysym);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_VIDEORESIZE: {
|
|
||||||
int w = clamp(ev.resize.w, 64, MAX_SCREEN_WIDTH);
|
|
||||||
int h = clamp(ev.resize.h, 64, MAX_SCREEN_HEIGHT);
|
|
||||||
ChangeResInGame(w, h);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -511,8 +513,10 @@ static void SdlVideoFullScreen(bool full_screen)
|
||||||
{
|
{
|
||||||
_fullscreen = full_screen;
|
_fullscreen = full_screen;
|
||||||
GetVideoModes(); // get the list of available video modes
|
GetVideoModes(); // get the list of available video modes
|
||||||
if (!_video_driver->change_resolution(_cur_resolution[0], _cur_resolution[1]))
|
if (!_video_driver->change_resolution(_cur_resolution[0], _cur_resolution[1])) {
|
||||||
_fullscreen ^= true; // switching resolution failed, put back full_screen to original status
|
// switching resolution failed, put back full_screen to original status
|
||||||
|
_fullscreen ^= true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const HalVideoDriver _sdl_video_driver = {
|
const HalVideoDriver _sdl_video_driver = {
|
||||||
|
|
Loading…
Reference in New Issue