| 106 | } |
| 107 | |
| 108 | void SdlBaseManager::run() |
| 109 | { |
| 110 | #ifndef EMSCRIPTEN |
| 111 | while (!mExit) |
| 112 | #endif |
| 113 | { |
| 114 | while (SDL_PollEvent(&mEvent) != 0) |
| 115 | { |
| 116 | switch (mEvent.type) |
| 117 | { |
| 118 | // keyboard events |
| 119 | case SDL_KEYDOWN: |
| 120 | mKeyCode = mEvent.key.keysym.sym; |
| 121 | keyPressed(mKeyCode, nullptr); |
| 122 | break; |
| 123 | case SDL_TEXTINPUT: |
| 124 | mKeyCode = SDLK_UNKNOWN; |
| 125 | keyPressed(mKeyCode, &mEvent.text); |
| 126 | break; |
| 127 | case SDL_KEYUP: |
| 128 | keyReleased(mEvent.key); |
| 129 | break; |
| 130 | // mouse events |
| 131 | case SDL_MOUSEMOTION: mouseMoved(mEvent.motion); break; |
| 132 | case SDL_MOUSEBUTTONDOWN: mousePressed(mEvent.button); break; |
| 133 | case SDL_MOUSEBUTTONUP: mouseReleased(mEvent.button); break; |
| 134 | case SDL_MOUSEWHEEL: |
| 135 | mouseWheelMoved(mEvent.wheel); |
| 136 | break; |
| 137 | // drop file events |
| 138 | case SDL_DROPFILE: |
| 139 | break; |
| 140 | // windows events |
| 141 | case SDL_WINDOWEVENT: |
| 142 | switch (mEvent.window.event) |
| 143 | { |
| 144 | case SDL_WINDOWEVENT_CLOSE: mExit = true; break; |
| 145 | case SDL_WINDOWEVENT_RESIZED: _windowResized(mEvent.window.data1, mEvent.window.data2); break; |
| 146 | case SDL_WINDOWEVENT_FOCUS_GAINED: mWindowOn = true; break; |
| 147 | case SDL_WINDOWEVENT_FOCUS_LOST: mWindowOn = false; break; |
| 148 | default: break; |
| 149 | } |
| 150 | break; |
| 151 | default: break; |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | mFpsCounter++; |
| 156 | drawOneFrame(); |
| 157 | if (!mWindowOn) |
| 158 | SDL_Delay(50); |
| 159 | } |
| 160 | } |
| 161 | |
| 162 | void SdlBaseManager::destroy() |
| 163 | { |
no outgoing calls
no test coverage detected