-
-
Notifications
You must be signed in to change notification settings - Fork 78
/
zcmusic.h
76 lines (64 loc) · 2.38 KB
/
zcmusic.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/* ZQuest Classic Music Library */
/* ------------------------------------ */
/* Wrapper for transparently extending */
/* supported music file formats. */
#ifndef _ZCMUSIC_H_
#define _ZCMUSIC_H_
#if defined ZCM_DLL
#define ZCM_EXTERN extern __declspec(dllexport)
#elif defined ZCM_DLL_IMPORT
#define ZCM_EXTERN extern __declspec(dllimport)
#else
#define ZCM_EXTERN extern
#endif
#include <cstdint>
#include <string>
#ifdef __EMSCRIPTEN__
#include <SDL2/SDL_mixer.h>
#endif
#define ZCMF_DUH 0x00000001
#define ZCMF_OGG 0x00000002
#define ZCMF_MP3 0x00000004
#define ZCMF_GME 0x00000008
#define ZCM_PLAYING 1
#define ZCM_STOPPED 0
#define ZCM_PAUSED -1
#define ZCM_PAUSE 1
#define ZCM_RESUME 0
#define ZCM_TOGGLE -1
ZCM_EXTERN char const * zcmusic_types;
ZCM_EXTERN int32_t zcmusic_bufsz;
typedef struct
{
int32_t type; // uses ZCMF defines
int32_t playing; // -1 = paused, 0 = stopped, 1 = playing
int32_t position; // Only needed to sync Triforce jingle
char filename[256];
int32_t track;
int32_t fadevolume;
int32_t fadeoutframes;
#ifdef __EMSCRIPTEN__
Mix_Music* mus;
#endif
} ZCMUSIC;
ZCM_EXTERN ZCMUSIC* zcmusic_load_for_quest(const char* filename, char* quest_path);
ZCM_EXTERN bool zcmusic_init(int32_t flags = -1);
ZCM_EXTERN bool zcmusic_poll(int32_t flags = -1);
ZCM_EXTERN void zcmusic_exit();
ZCM_EXTERN ZCMUSIC * zcmusic_load_file(const char *filename);
ZCM_EXTERN bool zcmusic_play(ZCMUSIC* zcm, int32_t vol);
ZCM_EXTERN bool zcmusic_pause(ZCMUSIC* zcm, int32_t pause);
ZCM_EXTERN bool zcmusic_stop(ZCMUSIC* zcm);
ZCM_EXTERN bool zcmusic_set_volume(ZCMUSIC* zcm, int32_t vol);
ZCM_EXTERN void zcmusic_unload_file(ZCMUSIC* &zcm);
ZCM_EXTERN int32_t zcmusic_get_tracks(ZCMUSIC* zcm);
ZCM_EXTERN int32_t zcmusic_change_track(ZCMUSIC* zcm, int32_t tracknum);
ZCM_EXTERN std::string zcmusic_get_track_name(ZCMUSIC* zcm, int32_t tracknum);
ZCM_EXTERN int32_t zcmusic_get_curpos(ZCMUSIC* zcm);
ZCM_EXTERN void zcmusic_set_curpos(ZCMUSIC* zcm, int32_t value);
ZCM_EXTERN void zcmusic_set_speed(ZCMUSIC* zcm, int32_t value);
ZCM_EXTERN int32_t zcmusic_get_length(ZCMUSIC* zcm);
ZCM_EXTERN void zcmusic_set_loop(ZCMUSIC* zcm, double start, double end);
ZCM_EXTERN int32_t zcmusic_get_type(ZCMUSIC* zcm);
#undef ZCM_EXTERN
#endif