move some key stuff out of sdl_poll, zoom won't be triggered even when disabled by lua now

Conflicts:

	src/interface.c
	src/main.c
This commit is contained in:
jacob1 2012-07-23 12:10:54 -04:00 committed by Simon Robertshaw
parent 23f9de6f81
commit daeddd5519
3 changed files with 109 additions and 98 deletions

View File

@ -196,7 +196,7 @@ typedef struct ui_richtext ui_richtext;
int SLALT;
extern SDLMod sdl_mod;
extern int sdl_key, sdl_rkey, sdl_wheel, sdl_caps, sdl_ascii, sdl_zoom_trig;
extern int sdl_key, sdl_rkey, sdl_wheel, sdl_ascii, sdl_zoom_trig;
#if (defined(LIN32) || defined(LIN64)) && defined(SDL_VIDEO_DRIVER_X11)
extern SDL_SysWMinfo sdl_wminfo;
extern Atom XA_CLIPBOARD, XA_TARGETS;
@ -319,6 +319,8 @@ int color_menu_ui(pixel *vid_buf, int i, int *cr, int *cg, int *cb, int b, int b
int sdl_poll(void);
void stickmen_keys();
void set_cmode(int cm);
char *download_ui(pixel *vid_buf, char *uri, int *len);

View File

@ -46,7 +46,7 @@
#include "save.h"
SDLMod sdl_mod;
int sdl_key, sdl_rkey, sdl_wheel, sdl_caps=0, sdl_ascii, sdl_zoom_trig=0;
int sdl_key, sdl_rkey, sdl_wheel, sdl_ascii, sdl_zoom_trig=0;
#if (defined(LIN32) || defined(LIN64)) && defined(SDL_VIDEO_DRIVER_X11)
SDL_SysWMinfo sdl_wminfo;
Atom XA_CLIPBOARD, XA_TARGETS;
@ -2891,93 +2891,18 @@ int sdl_poll(void)
case SDL_KEYDOWN:
sdl_key=event.key.keysym.sym;
sdl_ascii=event.key.keysym.unicode;
if (event.key.keysym.sym == SDLK_CAPSLOCK)
sdl_caps = 1;
if (event.key.keysym.sym=='z')
{
if (event.key.keysym.mod&KMOD_ALT)//toggle
sdl_zoom_trig = (!sdl_zoom_trig)*2;
else
sdl_zoom_trig = 1;
}
if ( event.key.keysym.sym == SDLK_PLUS)
if (event.key.keysym.sym == SDLK_PLUS)
{
sdl_wheel++;
}
if ( event.key.keysym.sym == SDLK_MINUS)
if (event.key.keysym.sym == SDLK_MINUS)
{
sdl_wheel--;
}
// 4
//1 8 2
if (event.key.keysym.sym == SDLK_RIGHT)
{
player.comm = (int)(player.comm)|0x02; //Go right command
}
if (event.key.keysym.sym == SDLK_LEFT)
{
player.comm = (int)(player.comm)|0x01; //Go left command
}
if (event.key.keysym.sym == SDLK_DOWN && ((int)(player.comm)&0x08)!=0x08)
{
player.comm = (int)(player.comm)|0x08; //Go left command
}
if (event.key.keysym.sym == SDLK_UP && ((int)(player.comm)&0x04)!=0x04)
{
player.comm = (int)(player.comm)|0x04; //Jump command
}
if (event.key.keysym.sym == SDLK_d)
{
player2.comm = (int)(player2.comm)|0x02; //Go right command
}
if (event.key.keysym.sym == SDLK_a)
{
player2.comm = (int)(player2.comm)|0x01; //Go left command
}
if (event.key.keysym.sym == SDLK_s && ((int)(player2.comm)&0x08)!=0x08)
{
player2.comm = (int)(player2.comm)|0x08; //Go left command
}
if (event.key.keysym.sym == SDLK_w && ((int)(player2.comm)&0x04)!=0x04)
{
player2.comm = (int)(player2.comm)|0x04; //Jump command
}
break;
case SDL_KEYUP:
sdl_rkey=event.key.keysym.sym;
if (event.key.keysym.sym == SDLK_CAPSLOCK)
sdl_caps = 0;
if (event.key.keysym.sym == 'z' && sdl_zoom_trig==1)//if ==2 then it was toggled with alt+z, don't turn off on keyup
sdl_zoom_trig = 0;
if (event.key.keysym.sym == SDLK_RIGHT || event.key.keysym.sym == SDLK_LEFT)
{
player.pcomm = player.comm; //Saving last movement
player.comm = (int)(player.comm)&12; //Stop command
}
if (event.key.keysym.sym == SDLK_UP)
{
player.comm = (int)(player.comm)&11;
}
if (event.key.keysym.sym == SDLK_DOWN)
{
player.comm = (int)(player.comm)&7;
}
if (event.key.keysym.sym == SDLK_d || event.key.keysym.sym == SDLK_a)
{
player2.pcomm = player2.comm; //Saving last movement
player2.comm = (int)(player2.comm)&12; //Stop command
}
if (event.key.keysym.sym == SDLK_w)
{
player2.comm = (int)(player2.comm)&11;
}
if (event.key.keysym.sym == SDLK_s)
{
player2.comm = (int)(player2.comm)&7;
}
break;
case SDL_MOUSEBUTTONDOWN:
if (event.button.button == SDL_BUTTON_WHEELUP)
@ -3037,6 +2962,73 @@ int sdl_poll(void)
return 0;
}
void stickmen_keys()
{
// 4
//1 8 2
if (sdl_key == SDLK_RIGHT)
{
player.comm = (int)(player.comm)|0x02; //Go right command
}
if (sdl_key == SDLK_LEFT)
{
player.comm = (int)(player.comm)|0x01; //Go left command
}
if (sdl_key == SDLK_DOWN && ((int)(player.comm)&0x08)!=0x08)
{
player.comm = (int)(player.comm)|0x08; //Use element command
}
if (sdl_key == SDLK_UP && ((int)(player.comm)&0x04)!=0x04)
{
player.comm = (int)(player.comm)|0x04; //Jump command
}
if (sdl_key == SDLK_d)
{
player2.comm = (int)(player2.comm)|0x02; //Go right command
}
if (sdl_key == SDLK_a)
{
player2.comm = (int)(player2.comm)|0x01; //Go left command
}
if (sdl_key == SDLK_s && ((int)(player2.comm)&0x08)!=0x08)
{
player2.comm = (int)(player2.comm)|0x08; //Use element command
}
if (sdl_key == SDLK_w && ((int)(player2.comm)&0x04)!=0x04)
{
player2.comm = (int)(player2.comm)|0x04; //Jump command
}
if (sdl_rkey == SDLK_RIGHT || sdl_rkey == SDLK_LEFT)
{
player.pcomm = player.comm; //Saving last movement
player.comm = (int)(player.comm)&12; //Stop command
}
if (sdl_rkey == SDLK_UP)
{
player.comm = (int)(player.comm)&11;
}
if (sdl_rkey == SDLK_DOWN)
{
player.comm = (int)(player.comm)&7;
}
if (sdl_rkey == SDLK_d || sdl_rkey == SDLK_a)
{
player2.pcomm = player2.comm; //Saving last movement
player2.comm = (int)(player2.comm)&12; //Stop command
}
if (sdl_rkey == SDLK_w)
{
player2.comm = (int)(player2.comm)&11;
}
if (sdl_rkey == SDLK_s)
{
player2.comm = (int)(player2.comm)&7;
}
}
void set_cmode(int cm) // sets to given view mode
{
int cmode = cm;

View File

@ -1287,6 +1287,7 @@ int main(int argc, char *argv[])
#endif
if (sys_shortcuts==1)//all shortcuts can be disabled by python scripts
{
stickmen_keys();
if (sdl_key=='q' || sdl_key==SDLK_ESCAPE)
{
if (confirm_ui(vid_buf, "You are about to quit", "Are you sure you want to quit?", "Quit"))
@ -1713,31 +1714,47 @@ int main(int argc, char *argv[])
if (it > 50)
it = 50;
}*/
if (sdl_key=='z'&&(sdl_mod & (KMOD_LCTRL|KMOD_RCTRL))) // Undo
if (sdl_key=='z') // Undo
{
int cbx, cby, cbi;
if (sdl_mod & (KMOD_LCTRL|KMOD_RCTRL))
{
int cbx, cby, cbi;
for (cbi=0; cbi<NPART; cbi++)
parts[cbi] = cb_parts[cbi];
parts_lastActiveIndex = NPART-1;
for (cbi=0; cbi<NPART; cbi++)
parts[cbi] = cb_parts[cbi];
parts_lastActiveIndex = NPART-1;
for (cby = 0; cby<YRES; cby++)
for (cbx = 0; cbx<XRES; cbx++)
pmap[cby][cbx] = cb_pmap[cby][cbx];
for (cby = 0; cby<YRES; cby++)
for (cbx = 0; cbx<XRES; cbx++)
pmap[cby][cbx] = cb_pmap[cby][cbx];
for (cby = 0; cby<(YRES/CELL); cby++)
for (cbx = 0; cbx<(XRES/CELL); cbx++)
{
vx[cby][cbx] = cb_vx[cby][cbx];
vy[cby][cbx] = cb_vy[cby][cbx];
pv[cby][cbx] = cb_pv[cby][cbx];
hv[cby][cbx] = cb_hv[cby][cbx];
bmap[cby][cbx] = cb_bmap[cby][cbx];
emap[cby][cbx] = cb_emap[cby][cbx];
}
for (cby = 0; cby<(YRES/CELL); cby++)
for (cbx = 0; cbx<(XRES/CELL); cbx++)
{
vx[cby][cbx] = cb_vx[cby][cbx];
vy[cby][cbx] = cb_vy[cby][cbx];
pv[cby][cbx] = cb_pv[cby][cbx];
hv[cby][cbx] = cb_hv[cby][cbx];
bmap[cby][cbx] = cb_bmap[cby][cbx];
emap[cby][cbx] = cb_emap[cby][cbx];
}
force_stacking_check = 1;//check for excessive stacking of particles next time update_particles is run
force_stacking_check = 1;//check for excessive stacking of particles next time update_particles is run
}
else
{
if (sdl_mod & KMOD_ALT)//toggle
sdl_zoom_trig = (!sdl_zoom_trig)*2;
else
sdl_zoom_trig = 1;
}
}
<<<<<<< HEAD
=======
if (sdl_rkey == 'z' && sdl_zoom_trig==1)//if ==2 then it was toggled with alt+z, don't turn off on keyup
sdl_zoom_trig = 0;
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
>>>>>>> 230ab97... move some key stuff out of sdl_poll, zoom won't be triggered even when disabled by lua now
}
#ifdef INTERNAL
int counterthing;