tr_audio.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "eruta.h"
  2. #include "toruby.h"
  3. #include "rh.h"
  4. #include "state.h"
  5. #include "image.h"
  6. #include "fifi.h"
  7. #include "store.h"
  8. #include "scegra.h"
  9. #include "sound.h"
  10. #include <mruby/hash.h>
  11. #include <mruby/class.h>
  12. #include <mruby/data.h>
  13. #include <mruby/array.h>
  14. #include "tr_macro.h"
  15. #include "tr_audio.h"
  16. TR_WRAP_NOARG_INT(tr_playing_samples_max, audio_playing_samples_max)
  17. TR_WRAP_IIIIB_INT(tr_play_sound_ex, audio_play_sound_ex)
  18. TR_WRAP_I_INT(tr_play_sound, audio_play_sound)
  19. TR_WRAP_I_BOOL(tr_stop_sound,audio_stop_sound)
  20. TR_WRAP_I_BOOL(tr_set_music, audio_set_music)
  21. TR_WRAP_NOARG_BOOL(tr_play_music, audio_play_music)
  22. TR_WRAP_NOARG_BOOL(tr_stop_music, audio_stop_music)
  23. TR_WRAP_NOARG_BOOL(tr_music_playing_p, audio_music_playing_p)
  24. /** Initialize mruby bindings to audio functionality.
  25. * Eru is the parent module, which is normally named "Eruta" on the
  26. * ruby side. */
  27. int tr_audio_init(mrb_state * mrb, struct RClass * eru) {
  28. struct RClass *aud;
  29. /* Audio class/module and class/module methods. */
  30. aud = mrb_define_class_under(mrb, eru, "Audio" , mrb->object_class);
  31. TR_CLASS_METHOD_NOARG(mrb, aud, "playing_sounds_max", tr_playing_samples_max);
  32. TR_CLASS_METHOD_ARGC(mrb, aud , "play_sound_ex" , tr_play_sound_ex, 4);
  33. TR_CLASS_METHOD_ARGC(mrb, aud , "play_sound" , tr_play_sound, 1);
  34. TR_CLASS_METHOD_ARGC(mrb, aud , "stop_sound" , tr_stop_sound, 1);
  35. TR_CLASS_METHOD_ARGC(mrb, aud , "music_id=" , tr_set_music, 1);
  36. TR_CLASS_METHOD_NOARG(mrb, aud , "play_music" , tr_play_music);
  37. TR_CLASS_METHOD_NOARG(mrb, aud , "stop_music" , tr_stop_music);
  38. TR_CLASS_METHOD_NOARG(mrb, aud , "music_playing?" , tr_music_playing_p);
  39. return 0;
  40. }