Mercurial > sdl-ios-xcode
annotate Xcode-iPhoneOS/Demos/src/mixer.c @ 5225:1fbe1c202501
Renamed SDL_Key to SDL_Keycode to clarify terminology.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 07 Feb 2011 10:40:21 -0800 |
parents | 78db79f5a4e2 |
children |
rev | line source |
---|---|
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 * mixer.c |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 * written by Holmes Futrell |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 * use however you want |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 #import "SDL.h" |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 #import "common.h" |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 #define NUM_CHANNELS 8 /* max number of sounds we can play at once */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 #define NUM_DRUMS 4 /* number of drums in our set */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 #define MILLESECONDS_PER_FRAME 16 /* about 60 frames per second */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 static struct |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 SDL_Rect rect; /* where the button is drawn */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 SDL_Color upColor; /* color when button is not active */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 SDL_Color downColor; /* color when button is active */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 int isPressed; /* is the button being pressed ? */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 int touchIndex; /* what mouse (touch) index pressed the button ? */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 } buttons[NUM_DRUMS]; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 struct sound |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 Uint8 *buffer; /* audio buffer for sound file */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 Uint32 length; /* length of the buffer (in bytes) */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 }; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 /* this array holds the audio for the drum noises */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 static struct sound drums[NUM_DRUMS]; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
31 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
32 /* function declarations */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
33 void handleMouseButtonDown(SDL_Event * event); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
34 void handleMouseButtonUp(SDL_Event * event); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
35 int playSound(struct sound *); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
36 void initializeButtons(); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
37 void audioCallback(void *userdata, Uint8 * stream, int len); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 void loadSound(const char *file, struct sound *s); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
39 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 struct |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 /* channel array holds information about currently playing sounds */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 struct |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
45 Uint8 *position; /* what is the current position in the buffer of this sound ? */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 Uint32 remaining; /* how many bytes remaining before we're done playing the sound ? */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
47 Uint32 timestamp; /* when did this sound start playing ? */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 } channels[NUM_CHANNELS]; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
49 SDL_AudioSpec outputSpec; /* what audio format are we using for output? */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
50 int numSoundsPlaying; /* how many sounds are currently playing */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
51 } mixer; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
52 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 /* sets up the buttons (color, position, state) */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
54 void |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
55 initializeButtons() |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
56 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 int i; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
59 int spacing = 10; /* gap between drum buttons */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
60 SDL_Rect buttonRect; /* keeps track of where to position drum */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
61 SDL_Color upColor = { 86, 86, 140, 255 }; /* color of drum when not pressed */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
62 SDL_Color downColor = { 191, 191, 221, 255 }; /* color of drum when pressed */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
63 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
64 buttonRect.x = spacing; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
65 buttonRect.y = spacing; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
66 buttonRect.w = SCREEN_WIDTH - 2 * spacing; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
67 buttonRect.h = (SCREEN_HEIGHT - (NUM_DRUMS + 1) * spacing) / NUM_DRUMS; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
68 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
69 /* setup each button */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
70 for (i = 0; i < NUM_DRUMS; i++) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
72 buttons[i].rect = buttonRect; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
73 buttons[i].isPressed = 0; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
74 buttons[i].upColor = upColor; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 buttons[i].downColor = downColor; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
76 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
77 buttonRect.y += spacing + buttonRect.h; /* setup y coordinate for next drum */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
78 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
81 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 /* |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 loads a wav file (stored in 'file'), converts it to the mixer's output format, |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 and stores the resulting buffer and length in the sound structure |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
85 */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
86 void |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
87 loadSound(const char *file, struct sound *s) |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
88 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
89 SDL_AudioSpec spec; /* the audio format of the .wav file */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
90 SDL_AudioCVT cvt; /* used to convert .wav to output format when formats differ */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
91 int result; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
92 if (SDL_LoadWAV(file, &spec, &s->buffer, &s->length) == NULL) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
93 fatalError("could not load .wav"); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
94 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
95 /* build the audio converter */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
96 result = SDL_BuildAudioCVT(&cvt, spec.format, spec.channels, spec.freq, |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
97 mixer.outputSpec.format, |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
98 mixer.outputSpec.channels, |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
99 mixer.outputSpec.freq); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 if (result == -1) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
101 fatalError("could not build audio CVT"); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
102 } else if (result != 0) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
103 /* |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
104 this happens when the .wav format differs from the output format. |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
105 we convert the .wav buffer here |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
106 */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
107 cvt.buf = (Uint8 *) SDL_malloc(s->length * cvt.len_mult); /* allocate conversion buffer */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
108 cvt.len = s->length; /* set conversion buffer length */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
109 SDL_memcpy(cvt.buf, s->buffer, s->length); /* copy sound to conversion buffer */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
110 if (SDL_ConvertAudio(&cvt) == -1) { /* convert the sound */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
111 fatalError("could not convert .wav"); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
112 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
113 SDL_free(s->buffer); /* free the original (unconverted) buffer */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
114 s->buffer = cvt.buf; /* point sound buffer to converted buffer */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
115 s->length = cvt.len_cvt; /* set sound buffer's new length */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
116 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
117 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
118 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
119 /* called from main event loop */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
120 void |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
121 handleMouseButtonDown(SDL_Event * event) |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
122 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
123 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
124 int x, y, mouseIndex, i, drumIndex; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
125 |
4490
06c7423f8c60
Updated iPhone keyboard code (which builds and runs on the iPad and iPhone simulator now)
Sam Lantinga <slouken@libsdl.org>
parents:
3685
diff
changeset
|
126 mouseIndex = 0; |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
127 drumIndex = -1; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
128 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
129 SDL_GetMouseState(&x, &y); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
130 /* check if we hit any of the drum buttons */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
131 for (i = 0; i < NUM_DRUMS; i++) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
132 if (x >= buttons[i].rect.x |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
133 && x < buttons[i].rect.x + buttons[i].rect.w |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
134 && y >= buttons[i].rect.y |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
135 && y < buttons[i].rect.y + buttons[i].rect.h) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
136 drumIndex = i; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
137 break; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
138 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
139 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
140 if (drumIndex != -1) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
141 /* if we hit a button */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
142 buttons[drumIndex].touchIndex = mouseIndex; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
143 buttons[drumIndex].isPressed = 1; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
144 playSound(&drums[drumIndex]); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
145 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
146 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
147 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
148 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
149 /* called from main event loop */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
150 void |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
151 handleMouseButtonUp(SDL_Event * event) |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
152 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
153 int i; |
4490
06c7423f8c60
Updated iPhone keyboard code (which builds and runs on the iPad and iPhone simulator now)
Sam Lantinga <slouken@libsdl.org>
parents:
3685
diff
changeset
|
154 int mouseIndex = 0; |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
155 /* check if this should cause any of the buttons to become unpressed */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
156 for (i = 0; i < NUM_DRUMS; i++) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
157 if (buttons[i].touchIndex == mouseIndex) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
158 buttons[i].isPressed = 0; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
159 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
160 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
161 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
162 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
163 /* draws buttons to screen */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
164 void |
5211
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
165 render(SDL_Renderer *renderer) |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
166 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
167 int i; |
5211
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
168 SDL_SetRenderDrawColor(renderer, 50, 50, 50, 255); |
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
169 SDL_RenderClear(renderer); /* draw background (gray) */ |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
170 /* draw the drum buttons */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
171 for (i = 0; i < NUM_DRUMS; i++) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
172 SDL_Color color = |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
173 buttons[i].isPressed ? buttons[i].downColor : buttons[i].upColor; |
5211
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
174 SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.unused); |
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
175 SDL_RenderFillRect(renderer, &buttons[i].rect); |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
176 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
177 /* update the screen */ |
5211
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
178 SDL_RenderPresent(renderer); |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
179 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
180 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
181 /* |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
182 finds a sound channel in the mixer for a sound |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
183 and sets it up to start playing |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
184 */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
185 int |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
186 playSound(struct sound *s) |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
187 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
188 /* |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
189 find an empty channel to play on. |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
190 if no channel is available, use oldest channel |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
191 */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
192 int i; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
193 int selected_channel = -1; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
194 int oldest_channel = 0; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
195 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
196 if (mixer.numSoundsPlaying == 0) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
197 /* we're playing a sound now, so start audio callback back up */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
198 SDL_PauseAudio(0); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
199 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
200 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
201 /* find a sound channel to play the sound on */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
202 for (i = 0; i < NUM_CHANNELS; i++) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
203 if (mixer.channels[i].position == NULL) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
204 /* if no sound on this channel, select it */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
205 selected_channel = i; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
206 break; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
207 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
208 /* if this channel's sound is older than the oldest so far, set it to oldest */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
209 if (mixer.channels[i].timestamp < |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
210 mixer.channels[oldest_channel].timestamp) |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
211 oldest_channel = i; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
212 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
213 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
214 /* no empty channels, take the oldest one */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
215 if (selected_channel == -1) |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
216 selected_channel = oldest_channel; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
217 else |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
218 mixer.numSoundsPlaying++; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
219 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
220 /* point channel data to wav data */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
221 mixer.channels[selected_channel].position = s->buffer; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
222 mixer.channels[selected_channel].remaining = s->length; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
223 mixer.channels[selected_channel].timestamp = SDL_GetTicks(); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
224 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
225 return selected_channel; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
226 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
227 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
228 /* |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
229 Called from SDL's audio system. Supplies sound input with data by mixing together all |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
230 currently playing sound effects. |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
231 */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
232 void |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
233 audioCallback(void *userdata, Uint8 * stream, int len) |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
234 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
235 int i; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
236 int copy_amt; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
237 SDL_memset(stream, mixer.outputSpec.silence, len); /* initialize buffer to silence */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
238 /* for each channel, mix in whatever is playing on that channel */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
239 for (i = 0; i < NUM_CHANNELS; i++) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
240 if (mixer.channels[i].position == NULL) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
241 /* if no sound is playing on this channel */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
242 continue; /* nothing to do for this channel */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
243 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
244 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
245 /* copy len bytes to the buffer, unless we have fewer than len bytes remaining */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
246 copy_amt = |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
247 mixer.channels[i].remaining < |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
248 len ? mixer.channels[i].remaining : len; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
249 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
250 /* mix this sound effect with the output */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
251 SDL_MixAudioFormat(stream, mixer.channels[i].position, |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
252 mixer.outputSpec.format, copy_amt, 150); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
253 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
254 /* update buffer position in sound effect and the number of bytes left */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
255 mixer.channels[i].position += copy_amt; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
256 mixer.channels[i].remaining -= copy_amt; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
257 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
258 /* did we finish playing the sound effect ? */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
259 if (mixer.channels[i].remaining == 0) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
260 mixer.channels[i].position = NULL; /* indicates no sound playing on channel anymore */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
261 mixer.numSoundsPlaying--; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
262 if (mixer.numSoundsPlaying == 0) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
263 /* if no sounds left playing, pause audio callback */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
264 SDL_PauseAudio(1); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
265 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
266 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
267 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
268 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
269 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
270 int |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
271 main(int argc, char *argv[]) |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
272 { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
273 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
274 int done; /* has user tried to quit ? */ |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3277
diff
changeset
|
275 SDL_Window *window; /* main window */ |
5211
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
276 SDL_Renderer *renderer; |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
277 SDL_Event event; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
278 Uint32 startFrame; /* holds when frame started processing */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
279 Uint32 endFrame; /* holds when frame ended processing */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
280 Uint32 delay; /* calculated delay, how long should we wait before next frame? */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
281 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
282 if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
283 fatalError("could not initialize SDL"); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
284 } |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3277
diff
changeset
|
285 window = |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
286 SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
287 SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS); |
5211
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
288 renderer = SDL_CreateRenderer(window, 0, 0); |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
289 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
290 /* initialize the mixer */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
291 SDL_memset(&mixer, 0, sizeof(mixer)); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
292 /* setup output format */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
293 mixer.outputSpec.freq = 44100; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
294 mixer.outputSpec.format = AUDIO_S16LSB; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
295 mixer.outputSpec.channels = 2; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
296 mixer.outputSpec.samples = 256; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
297 mixer.outputSpec.callback = audioCallback; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
298 mixer.outputSpec.userdata = NULL; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
299 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
300 /* open audio for output */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
301 if (SDL_OpenAudio(&mixer.outputSpec, NULL) != 0) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
302 fatalError("Opening audio failed"); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
303 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
304 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
305 /* load our drum noises */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
306 loadSound("ds_kick_big_amb.wav", &drums[3]); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
307 loadSound("ds_brush_snare.wav", &drums[2]); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
308 loadSound("ds_loose_skin_mute.wav", &drums[1]); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
309 loadSound("ds_china.wav", &drums[0]); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
310 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
311 /* setup positions, colors, and state of buttons */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
312 initializeButtons(); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
313 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
314 /* enter main loop */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
315 done = 0; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
316 while (!done) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
317 startFrame = SDL_GetTicks(); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
318 while (SDL_PollEvent(&event)) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
319 switch (event.type) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
320 case SDL_MOUSEBUTTONDOWN: |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
321 handleMouseButtonDown(&event); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
322 break; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
323 case SDL_MOUSEBUTTONUP: |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
324 handleMouseButtonUp(&event); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
325 break; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
326 case SDL_QUIT: |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
327 done = 1; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
328 break; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
329 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
330 } |
5211
78db79f5a4e2
Updated the iPhone demos for the new API
Sam Lantinga <slouken@libsdl.org>
parents:
4490
diff
changeset
|
331 render(renderer); /* draw buttons */ |
3277
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
332 endFrame = SDL_GetTicks(); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
333 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
334 /* figure out how much time we have left, and then sleep */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
335 delay = MILLESECONDS_PER_FRAME - (endFrame - startFrame); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
336 if (delay < 0) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
337 delay = 0; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
338 } else if (delay > MILLESECONDS_PER_FRAME) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
339 delay = MILLESECONDS_PER_FRAME; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
340 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
341 SDL_Delay(delay); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
342 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
343 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
344 /* cleanup code, let's free up those sound buffers */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
345 int i; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
346 for (i = 0; i < NUM_DRUMS; i++) { |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
347 SDL_free(drums[i].buffer); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
348 } |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
349 /* let SDL do its exit code */ |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
350 SDL_Quit(); |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
351 |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
352 return 0; |
20326ba2bda2
This name inconsistency has been bugging me for a while...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
353 } |