… | |
… | |
9 | #include <string.h> |
9 | #include <string.h> |
10 | #include <stdio.h> |
10 | #include <stdio.h> |
11 | |
11 | |
12 | #include <SDL.h> |
12 | #include <SDL.h> |
13 | #include <SDL_image.h> |
13 | #include <SDL_image.h> |
|
|
14 | #include <SDL_mixer.h> |
14 | #include <SDL_opengl.h> |
15 | #include <SDL_opengl.h> |
15 | |
16 | |
16 | #include <glib/gmacros.h> |
17 | #include <glib/gmacros.h> |
17 | |
18 | |
18 | #include <pango/pango.h> |
19 | #include <pango/pango.h> |
… | |
… | |
36 | |
37 | |
37 | #define FOW_DARKNESS 32 |
38 | #define FOW_DARKNESS 32 |
38 | |
39 | |
39 | #define MAP_EXTEND_X 32 |
40 | #define MAP_EXTEND_X 32 |
40 | #define MAP_EXTEND_Y 512 |
41 | #define MAP_EXTEND_Y 512 |
|
|
42 | |
|
|
43 | typedef Mix_Chunk *CFClient__MixChunk; |
|
|
44 | typedef Mix_Music *CFClient__MixMusic; |
41 | |
45 | |
42 | static PangoContext *context; |
46 | static PangoContext *context; |
43 | static PangoFontMap *fontmap; |
47 | static PangoFontMap *fontmap; |
44 | |
48 | |
45 | typedef struct cf_layout { |
49 | typedef struct cf_layout { |
… | |
… | |
382 | |
386 | |
383 | SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); |
387 | SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); |
384 | SDL_GL_SetAttribute (SDL_GL_BUFFER_SIZE, 15); |
388 | SDL_GL_SetAttribute (SDL_GL_BUFFER_SIZE, 15); |
385 | SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 0); |
389 | SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 0); |
386 | |
390 | |
|
|
391 | SDL_EnableUNICODE (1); |
|
|
392 | SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); |
|
|
393 | |
387 | m = SDL_ListModes (0, SDL_FULLSCREEN | SDL_OPENGL); |
394 | m = SDL_ListModes (0, SDL_FULLSCREEN | SDL_OPENGL); |
388 | |
395 | |
389 | if (m && m != (SDL_Rect **)-1) |
396 | if (m && m != (SDL_Rect **)-1) |
390 | while (*m) |
397 | while (*m) |
391 | { |
398 | { |
… | |
… | |
405 | w, h, 0, SDL_OPENGL | (fullscreen ? SDL_FULLSCREEN : 0) |
412 | w, h, 0, SDL_OPENGL | (fullscreen ? SDL_FULLSCREEN : 0) |
406 | ); |
413 | ); |
407 | SDL_WM_SetCaption ("Crossfire+ Client " VERSION, "Crossfire+"); |
414 | SDL_WM_SetCaption ("Crossfire+ Client " VERSION, "Crossfire+"); |
408 | OUTPUT: |
415 | OUTPUT: |
409 | RETVAL |
416 | RETVAL |
|
|
417 | |
|
|
418 | void |
|
|
419 | SDL_PollEvent () |
|
|
420 | PPCODE: |
|
|
421 | { |
|
|
422 | SDL_Event ev; |
|
|
423 | |
|
|
424 | while (SDL_PollEvent (&ev)) |
|
|
425 | { |
|
|
426 | HV *hv = newHV (); |
|
|
427 | hv_store (hv, "type", 4, newSViv (ev.type), 0); |
|
|
428 | switch (ev.type) |
|
|
429 | { |
|
|
430 | case SDL_KEYDOWN: |
|
|
431 | case SDL_KEYUP: |
|
|
432 | hv_store (hv, "state", 5, newSViv (ev.key.state), 0); |
|
|
433 | hv_store (hv, "sym", 3, newSViv (ev.key.keysym.sym), 0); |
|
|
434 | hv_store (hv, "mod", 3, newSViv (ev.key.keysym.mod), 0); |
|
|
435 | hv_store (hv, "unicode", 7, newSViv (ev.key.keysym.unicode), 0); |
|
|
436 | break; |
|
|
437 | |
|
|
438 | case SDL_ACTIVEEVENT: |
|
|
439 | hv_store (hv, "gain", 4, newSViv (ev.active.gain), 0); |
|
|
440 | hv_store (hv, "state", 5, newSViv (ev.active.state), 0); |
|
|
441 | break; |
|
|
442 | |
|
|
443 | case SDL_MOUSEMOTION: |
|
|
444 | hv_store (hv, "state", 5, newSViv (ev.motion.state), 0); |
|
|
445 | hv_store (hv, "x", 1, newSViv (ev.motion.x), 0); |
|
|
446 | hv_store (hv, "y", 1, newSViv (ev.motion.y), 0); |
|
|
447 | hv_store (hv, "xrel", 4, newSViv (ev.motion.xrel), 0); |
|
|
448 | hv_store (hv, "yrel", 4, newSViv (ev.motion.yrel), 0); |
|
|
449 | break; |
|
|
450 | |
|
|
451 | case SDL_MOUSEBUTTONDOWN: |
|
|
452 | case SDL_MOUSEBUTTONUP: |
|
|
453 | hv_store (hv, "button", 6, newSViv (ev.button.button), 0); |
|
|
454 | hv_store (hv, "state", 5, newSViv (ev.button.state), 0); |
|
|
455 | hv_store (hv, "x", 1, newSViv (ev.button.x), 0); |
|
|
456 | hv_store (hv, "y", 1, newSViv (ev.button.y), 0); |
|
|
457 | } |
|
|
458 | |
|
|
459 | XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv))); |
|
|
460 | } |
|
|
461 | } |
|
|
462 | |
|
|
463 | int |
|
|
464 | Mix_OpenAudio (int frequency = 22050, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 512) |
|
|
465 | |
|
|
466 | void |
|
|
467 | Mix_CloseAudio () |
|
|
468 | |
|
|
469 | int |
|
|
470 | Mix_AllocateChannels (int numchans = -1) |
410 | |
471 | |
411 | void |
472 | void |
412 | lowdelay (int fd, int val = 1) |
473 | lowdelay (int fd, int val = 1) |
413 | CODE: |
474 | CODE: |
414 | #ifndef _WIN32 |
475 | #ifndef _WIN32 |
… | |
… | |
1151 | } |
1212 | } |
1152 | } |
1213 | } |
1153 | } |
1214 | } |
1154 | } |
1215 | } |
1155 | |
1216 | |
|
|
1217 | MODULE = CFClient PACKAGE = CFClient::MixChunk |
|
|
1218 | |
|
|
1219 | CFClient::MixChunk |
|
|
1220 | new_from_file (SV *class, char *path) |
|
|
1221 | CODE: |
|
|
1222 | RETVAL = Mix_LoadWAV (path); |
|
|
1223 | OUTPUT: |
|
|
1224 | RETVAL |
|
|
1225 | |
|
|
1226 | void |
|
|
1227 | DESTROY (CFClient::MixChunk self) |
|
|
1228 | CODE: |
|
|
1229 | Mix_FreeChunk (self); |
|
|
1230 | |
|
|
1231 | int |
|
|
1232 | volume (CFClient::MixChunk self, int volume = -1) |
|
|
1233 | CODE: |
|
|
1234 | RETVAL = Mix_VolumeChunk (self, volume); |
|
|
1235 | OUTPUT: |
|
|
1236 | RETVAL |
|
|
1237 | |
|
|
1238 | int |
|
|
1239 | play (CFClient::MixChunk self, int channel = -1, int loops = 0, int ticks = -1) |
|
|
1240 | CODE: |
|
|
1241 | RETVAL = Mix_PlayChannelTimed (channel, self, loops, ticks); |
|
|
1242 | OUTPUT: |
|
|
1243 | RETVAL |
|
|
1244 | |
|
|
1245 | MODULE = CFClient PACKAGE = CFClient::MixMusic |
|
|
1246 | |
|
|
1247 | int |
|
|
1248 | volume (int volume = -1) |
|
|
1249 | CODE: |
|
|
1250 | RETVAL = Mix_VolumeMusic (volume); |
|
|
1251 | OUTPUT: |
|
|
1252 | RETVAL |
|
|
1253 | |
|
|
1254 | CFClient::MixMusic |
|
|
1255 | new_from_file (SV *class, char *path) |
|
|
1256 | CODE: |
|
|
1257 | RETVAL = Mix_LoadMUS (path); |
|
|
1258 | OUTPUT: |
|
|
1259 | RETVAL |
|
|
1260 | |
|
|
1261 | void |
|
|
1262 | DESTROY (CFClient::MixMusic self) |
|
|
1263 | CODE: |
|
|
1264 | Mix_FreeMusic (self); |
|
|
1265 | |
|
|
1266 | int |
|
|
1267 | play (CFClient::MixMusic self, int loops = -1) |
|
|
1268 | CODE: |
|
|
1269 | RETVAL = Mix_PlayMusic (self, loops); |
|
|
1270 | OUTPUT: |
|
|
1271 | RETVAL |
|
|
1272 | |