MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Service_Draw

Method Service_Draw

Source/Amiga/Graphics_Amiga.cpp:1225–1266  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1223}
1224
1225void cGraphics_Amiga::Service_Draw(int16 pSpriteID, int16 pX, int16 pY) {
1226
1227 uint8* di = mSurface->GetSurfaceBuffer() + 16;
1228
1229 pY += 16;
1230 di += mSurface->GetWidth() * pY;
1231 di += pX;
1232
1233 uint8* si = 0;
1234
1235 if (stru_A918A[pSpriteID].mSpriteSheet == 0) {
1236 si = mImageService.mData->data();
1237 mBMHD_Current = mImageService.GetHeader();
1238 }
1239 else {
1240 si = mSpriteSheet_RankFont.mData->data();
1241 mBMHD_Current = mSpriteSheet_RankFont.GetHeader();
1242 }
1243
1244 int16 d0 = stru_A918A[pSpriteID].mWidth << 1;
1245 mFodder->mDraw_Source_SkipPixelsPerRow = 40 - d0;
1246 mFodder->mDraw_Dest_SkipPixelsPerRow = mSurface->GetWidth() - (d0 * 8);
1247 mFodder->mVideo_Draw_PaletteIndex = 0;
1248
1249 si += stru_A918A[pSpriteID].mOffset;
1250
1251 // Height
1252 for (int16 dx = stru_A918A[pSpriteID].mHeight; dx > 0; --dx) {
1253
1254 // Width
1255 for (int16 cx = 0; cx < stru_A918A[pSpriteID].mWidth; ++cx) {
1256
1257 DrawPixels_16(si, di, mFodder->mVideo_Draw_PaletteIndex);
1258
1259 di += 16;
1260 si += 2;
1261 }
1262
1263 si += mFodder->mDraw_Source_SkipPixelsPerRow;
1264 di += mFodder->mDraw_Dest_SkipPixelsPerRow;
1265 }
1266}
1267
1268void cGraphics_Amiga::Mission_Intro_Load_Resources(const eTileTypes pTileset) {
1269

Callers 2

Service_KIA_LoopMethod · 0.80

Calls 3

GetSurfaceBufferMethod · 0.80
GetWidthMethod · 0.80
GetHeaderMethod · 0.80

Tested by

no test coverage detected