keyboard/mouse handling
This commit is contained in:
parent
20b6a64228
commit
d6d661c434
File diff suppressed because one or more lines are too long
48
src/main.c
48
src/main.c
@ -1817,14 +1817,27 @@ emb_draw_fillrect(PyObject *self, PyObject *args)
|
||||
return Py_BuildValue("i",-1);
|
||||
}
|
||||
//int textwidth(char *s)
|
||||
emb_string_get_width(PyObject *self, PyObject *args)
|
||||
emb_get_width(PyObject *self, PyObject *args)
|
||||
{
|
||||
char *txt;
|
||||
if(!PyArg_ParseTuple(args, "s:",&txt))
|
||||
if(!PyArg_ParseTuple(args, "s:get_width",&txt))
|
||||
return NULL;
|
||||
return Py_BuildValue("i",textwidth(txt));
|
||||
}
|
||||
|
||||
//SDL_GetMouseState(&x, &y)
|
||||
emb_get_mouse(PyObject *self, PyObject *args)
|
||||
{
|
||||
int x,y,mask,b1,b2,b3;
|
||||
if(!PyArg_ParseTuple(args, ":get_mouse"))
|
||||
return NULL;
|
||||
mask=SDL_GetMouseState(&x, &y);
|
||||
b1=mask&SDL_BUTTON(1);
|
||||
b2=mask&SDL_BUTTON(2);
|
||||
b3=mask&SDL_BUTTON(3);
|
||||
return Py_BuildValue("(ii(iii))",x,y,b1,b2,b3);
|
||||
}
|
||||
|
||||
static PyMethodDef EmbMethods[] = { //WARNING! don't forget to register your function here!
|
||||
{"create", emb_create, METH_VARARGS|METH_KEYWORDS, "create a particle."},
|
||||
{"log", emb_log, METH_VARARGS, "logs an error string to the console."},
|
||||
@ -1854,7 +1867,8 @@ static PyMethodDef EmbMethods[] = { //WARNING! don't forget to register your fun
|
||||
{"draw_text", emb_draw_text, METH_VARARGS, "draw some text."},
|
||||
{"draw_rect", emb_draw_rect, METH_VARARGS, "draw a rect."},
|
||||
{"draw_fillrect", emb_draw_fillrect, METH_VARARGS, "draw a rect."},
|
||||
{"string_get_width", emb_string_get_width, METH_VARARGS, "get string width."},
|
||||
{"get_width", emb_get_width, METH_VARARGS, "get string width."},
|
||||
{"get_mouse", emb_get_mouse, METH_VARARGS, "get mouse status."},
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
@ -1891,7 +1905,7 @@ int main(int argc, char *argv[])
|
||||
SDL_AudioSpec fmt;
|
||||
int username_flash = 0, username_flash_t = 1;
|
||||
GSPEED = 1;
|
||||
PyObject *pname,*pmodule,*pfunc,*pvalue,*pargs,*pstep;
|
||||
PyObject *pname,*pmodule,*pfunc,*pvalue,*pargs,*pstep,*pkey;
|
||||
|
||||
/* Set 16-bit stereo audio at 22Khz */
|
||||
fmt.freq = 22050;
|
||||
@ -1927,14 +1941,23 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
pstep=PyObject_GetAttrString(pmodule,"step");//get the handler function
|
||||
if(pstep && PyCallable_Check(pfunc))//check if it's really a function
|
||||
if(pstep && PyCallable_Check(pstep))//check if it's really a function
|
||||
{
|
||||
printf("step function found.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("unable to find step function. ignoring.\n");
|
||||
//return -1;
|
||||
}
|
||||
|
||||
pkey=PyObject_GetAttrString(pmodule,"keypress");//get the handler function
|
||||
if(pstep && PyCallable_Check(pkey))//check if it's really a function
|
||||
{
|
||||
printf("key function found.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("unable to find key function. ignoring.\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -2207,6 +2230,19 @@ int main(int argc, char *argv[])
|
||||
do_s_check = (do_s_check+1) & 15;
|
||||
}
|
||||
|
||||
if(pkey!=NULL && sdl_key!=NULL)
|
||||
{
|
||||
pargs=Py_BuildValue("(c)",sdl_key);
|
||||
pvalue = PyObject_CallObject(pkey, pargs);
|
||||
Py_DECREF(pargs);
|
||||
pargs=NULL;
|
||||
if(pvalue==NULL)
|
||||
strcpy(console_error,"failed to execute key code.");
|
||||
//Py_DECREF(pvalue);
|
||||
//puts("a");
|
||||
pvalue=NULL;
|
||||
}
|
||||
|
||||
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"))
|
||||
|
@ -75,7 +75,17 @@ def _handle(txt):
|
||||
except Exception as ex:
|
||||
error(ex)
|
||||
|
||||
#optional key handler:
|
||||
"""def keypress(key):
|
||||
try:
|
||||
_key(key)
|
||||
except Exception as ex:
|
||||
error(ex)"""
|
||||
def _key(key):
|
||||
print "key %s"%key
|
||||
#optional step handler:
|
||||
|
||||
"""
|
||||
def step():
|
||||
try:
|
||||
a=handle.glob
|
||||
@ -84,7 +94,7 @@ def step():
|
||||
try:
|
||||
_step()
|
||||
except Exception as ex:
|
||||
error(ex)
|
||||
error(ex)"""
|
||||
|
||||
def _step():
|
||||
try:
|
||||
@ -94,9 +104,20 @@ def _step():
|
||||
step.i=0
|
||||
step.txt="!FUCK YEAH!"
|
||||
#toggle_pause()
|
||||
mouse=tpt.get_mouse()
|
||||
step.txt=repr(mouse)
|
||||
xx=50+abs(25-(step.i%50))
|
||||
w=tpt.string_get_width(step.txt)+16
|
||||
tpt.draw_fillrect(xx-8,92,w,32,0,0,0,128)
|
||||
w=tpt.get_width(step.txt)+16
|
||||
r=0
|
||||
g=0
|
||||
b=0
|
||||
if(mouse[0]>xx-8 and mouse[0]<xx+w-8 and mouse[1]>92 and mouse[1]<92+32):
|
||||
r=255
|
||||
if(mouse[2][0]):
|
||||
g=255
|
||||
if(mouse[2][2]):
|
||||
b=255
|
||||
tpt.draw_fillrect(xx-8,92,w,32,r,g,b,128)
|
||||
tpt.draw_rect(xx-8,92,w,32,255,255,255)
|
||||
tpt.draw_text(xx,100,step.txt,255,255,255)
|
||||
step.i+=1
|
||||
|
Loading…
Reference in New Issue
Block a user