ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/Client.xs
(Generate patch)

Comparing deliantra/Deliantra-Client/Client.xs (file contents):
Revision 1.69 by root, Sun Apr 30 08:09:44 2006 UTC vs.
Revision 1.75 by root, Mon May 8 18:28:40 2006 UTC

1#ifdef _WIN32 1#ifdef _WIN32
2# include <malloc.h> 2# include <malloc.h>
3# pragma warning(disable:4244)
3#endif 4#endif
4 5
5#include "EXTERN.h" 6#include "EXTERN.h"
6#include "perl.h" 7#include "perl.h"
7#include "XSUB.h" 8#include "XSUB.h"
258 } 259 }
259 } 260 }
260} 261}
261 262
262static void 263static void
263music_finished () 264music_finished (void)
264{ 265{
265 SDL_UserEvent ev; 266 SDL_UserEvent ev;
266 267
267 ev.type = SDL_USEREVENT; 268 ev.type = SDL_USEREVENT;
268 ev.code = 0; 269 ev.code = 0;
269 ev.data1 = 0; 270 ev.data1 = 0;
271 ev.data2 = 0;
272
273 SDL_PushEvent ((SDL_Event *)&ev);
274}
275
276static void
277channel_finished (int channel)
278{
279 SDL_UserEvent ev;
280
281 ev.type = SDL_USEREVENT;
282 ev.code = 1;
283 ev.data1 = (void *)(long)channel;
270 ev.data2 = 0; 284 ev.data2 = 0;
271 285
272 SDL_PushEvent ((SDL_Event *)&ev); 286 SDL_PushEvent ((SDL_Event *)&ev);
273} 287}
274 288
457 471
458 while (SDL_PollEvent (&ev)) 472 while (SDL_PollEvent (&ev))
459 { 473 {
460 HV *hv = newHV (); 474 HV *hv = newHV ();
461 hv_store (hv, "type", 4, newSViv (ev.type), 0); 475 hv_store (hv, "type", 4, newSViv (ev.type), 0);
476
462 switch (ev.type) 477 switch (ev.type)
463 { 478 {
464 case SDL_KEYDOWN: 479 case SDL_KEYDOWN:
465 case SDL_KEYUP: 480 case SDL_KEYUP:
466 hv_store (hv, "state", 5, newSViv (ev.key.state), 0); 481 hv_store (hv, "state", 5, newSViv (ev.key.state), 0);
486 case SDL_MOUSEBUTTONUP: 501 case SDL_MOUSEBUTTONUP:
487 hv_store (hv, "button", 6, newSViv (ev.button.button), 0); 502 hv_store (hv, "button", 6, newSViv (ev.button.button), 0);
488 hv_store (hv, "state", 5, newSViv (ev.button.state), 0); 503 hv_store (hv, "state", 5, newSViv (ev.button.state), 0);
489 hv_store (hv, "x", 1, newSViv (ev.button.x), 0); 504 hv_store (hv, "x", 1, newSViv (ev.button.x), 0);
490 hv_store (hv, "y", 1, newSViv (ev.button.y), 0); 505 hv_store (hv, "y", 1, newSViv (ev.button.y), 0);
506 break;
507
508 case SDL_USEREVENT:
509 hv_store (hv, "code", 4, newSViv (ev.user.code), 0);
510 hv_store (hv, "data1", 5, newSViv ((IV)ev.user.data1), 0);
511 hv_store (hv, "data2", 5, newSViv ((IV)ev.user.data2), 0);
512 break;
491 } 513 }
492 514
493 XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv))); 515 XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv)));
494 } 516 }
495} 517}
496 518
497int 519int
498Mix_OpenAudio (int frequency = 22050, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 512) 520Mix_OpenAudio (int frequency = 48000, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 2048)
499 POSTCALL: 521 POSTCALL:
500 Mix_HookMusicFinished (music_finished); 522 Mix_HookMusicFinished (music_finished);
523 Mix_ChannelFinished (channel_finished);
501 524
502void 525void
503Mix_CloseAudio () 526Mix_CloseAudio ()
504 527
505int 528int
640 exit (1); 663 exit (1);
641 664
642MODULE = CFClient PACKAGE = CFClient::Font 665MODULE = CFClient PACKAGE = CFClient::Font
643 666
644CFClient::Font 667CFClient::Font
645new_from_file (SV *class, char *path) 668new_from_file (SV *class, char *path, int id = 0)
646 CODE: 669 CODE:
647{ 670{
648 int count; 671 int count;
649 FcPattern *pattern = FcFreeTypeQuery ((const FcChar8 *)path, 0, 0, &count); 672 FcPattern *pattern = FcFreeTypeQuery ((const FcChar8 *)path, id, 0, &count);
650 RETVAL = pango_fc_font_description_from_pattern (pattern, 0); 673 RETVAL = pango_fc_font_description_from_pattern (pattern, 0);
651 FcPatternDestroy (pattern); 674 FcPatternDestroy (pattern);
652} 675}
653 OUTPUT: 676 OUTPUT:
654 RETVAL 677 RETVAL
1460void glEnd () 1483void glEnd ()
1461 1484
1462void glColor (float r, float g, float b, float a = 1.0) 1485void glColor (float r, float g, float b, float a = 1.0)
1463 PROTOTYPE: @ 1486 PROTOTYPE: @
1464 CODE: 1487 CODE:
1465 glColor4f (r, g, b, a); 1488 glColor4ub (r * 255., g * 255., b * 255., a * 255.);
1466 1489
1467void glVertex (float x, float y, float z = 0.) 1490void glVertex (float x, float y, float z = 0.)
1468 CODE: 1491 CODE:
1469 glVertex3f (x, y, z); 1492 glVertex3f (x, y, z);
1470 1493

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines