* @brief Render a missile sprite * @param m Pointer to MissileStruct struct * @param sx Back buffer coordinate * @param sy Back buffer coordinate * @param pre Is the sprite in the background */
| 214 | * @param pre Is the sprite in the background |
| 215 | */ |
| 216 | void DrawMissilePrivate(MissileStruct *m, int sx, int sy, BOOL pre) |
| 217 | { |
| 218 | int mx, my, nCel, frames; |
| 219 | BYTE *pCelBuff; |
| 220 | |
| 221 | if (m->_miPreFlag != pre || !m->_miDrawFlag) |
| 222 | return; |
| 223 | |
| 224 | pCelBuff = m->_miAnimData; |
| 225 | if (!pCelBuff) { |
| 226 | // app_fatal("Draw Missile 2 type %d: NULL Cel Buffer", m->_mitype); |
| 227 | return; |
| 228 | } |
| 229 | nCel = m->_miAnimFrame; |
| 230 | frames = SDL_SwapLE32(*(DWORD *)pCelBuff); |
| 231 | if (nCel < 1 || frames > 50 || nCel > frames) { |
| 232 | // app_fatal("Draw Missile 2: frame %d of %d, missile type==%d", nCel, frames, m->_mitype); |
| 233 | return; |
| 234 | } |
| 235 | mx = sx + m->_mixoff - m->_miAnimWidth2; |
| 236 | my = sy + m->_miyoff; |
| 237 | if (m->_miUniqTrans) |
| 238 | Cl2DrawLightTbl(mx, my, m->_miAnimData, m->_miAnimFrame, m->_miAnimWidth, m->_miUniqTrans + 3); |
| 239 | else if (m->_miLightFlag) |
| 240 | Cl2DrawLight(mx, my, m->_miAnimData, m->_miAnimFrame, m->_miAnimWidth); |
| 241 | else |
| 242 | Cl2Draw(mx, my, m->_miAnimData, m->_miAnimFrame, m->_miAnimWidth); |
| 243 | } |
| 244 | |
| 245 | /** |
| 246 | * @brief Render a missile sprites for a given tile |
no test coverage detected