| 177 | } |
| 178 | |
| 179 | void |
| 180 | loop() |
| 181 | { |
| 182 | SDL_Event event; |
| 183 | |
| 184 | while (SDL_PollEvent(&event)) { |
| 185 | switch (event.type) { |
| 186 | case SDL_WINDOWEVENT: |
| 187 | if (event.window.event == SDL_WINDOWEVENT_RESIZED) { |
| 188 | SDL_RenderSetViewport(renderer, NULL); |
| 189 | displayrect.w = window_w = event.window.data1; |
| 190 | displayrect.h = window_h = event.window.data2; |
| 191 | } |
| 192 | break; |
| 193 | case SDL_MOUSEBUTTONDOWN: |
| 194 | displayrect.x = event.button.x - window_w / 2; |
| 195 | displayrect.y = event.button.y - window_h / 2; |
| 196 | break; |
| 197 | case SDL_MOUSEMOTION: |
| 198 | if (event.motion.state) { |
| 199 | displayrect.x = event.motion.x - window_w / 2; |
| 200 | displayrect.y = event.motion.y - window_h / 2; |
| 201 | } |
| 202 | break; |
| 203 | case SDL_KEYDOWN: |
| 204 | if (event.key.keysym.sym == SDLK_SPACE) { |
| 205 | paused = !paused; |
| 206 | break; |
| 207 | } |
| 208 | if (event.key.keysym.sym != SDLK_ESCAPE) { |
| 209 | break; |
| 210 | } |
| 211 | case SDL_QUIT: |
| 212 | done = SDL_TRUE; |
| 213 | break; |
| 214 | } |
| 215 | } |
| 216 | |
| 217 | #ifndef __EMSCRIPTEN__ |
| 218 | SDL_Delay(fpsdelay); |
| 219 | #endif |
| 220 | |
| 221 | if (!paused) { |
| 222 | i = (i + 1) % MOOSEFRAMES_COUNT; |
| 223 | |
| 224 | SDL_UpdateTexture(MooseTexture, NULL, MooseFrame[i], MOOSEPIC_W); |
| 225 | } |
| 226 | SDL_RenderClear(renderer); |
| 227 | SDL_RenderCopy(renderer, MooseTexture, NULL, &displayrect); |
| 228 | SDL_RenderPresent(renderer); |
| 229 | |
| 230 | #ifdef __EMSCRIPTEN__ |
| 231 | if (done) { |
| 232 | emscripten_cancel_main_loop(); |
| 233 | } |
| 234 | #endif |
| 235 | } |
| 236 |
no test coverage detected