void PagingTouchAddonTextures (void) { int i; for (i = 0; i < MAX_ADDON_BITMAP_FILES; i++) PageInAddonBitmap (-i - 1); }
static void CacheAddonTextures (void) { int i; for (i = 0; i < MAX_ADDON_BITMAP_FILES; i++) { PageInAddonBitmap (-i - 1); BM_ADDON (i)->SetTranspType (0); BM_ADDON (i)->SetupTexture (1, 1); } }
void DrawObjectBlob (CObject *objP, int bmi0, int bmi, int iFrame, tRgbaColorf *colorP, float fAlpha) { CBitmap* bmP; tRgbaColorf color; int nType = objP->info.nType; int nId = objP->info.nId; #if 0 int bMuzzleFlash = 0; #endif int bAdditive = 0, bEnergy = 0, nTransp = (nType == OBJ_POWERUP) ? 3 : 2; fix xSize; float fScale; if ((nType == OBJ_WEAPON) && (objP->info.nId == OMEGA_ID) && omegaLightnings.Exist ()) return; #if DBG if ((nType == nDbgObjType) && ((nDbgObjId < 0) || (objP->info.nId == nDbgObjId))) nDbgObjType = nDbgObjType; #endif if (gameOpts->render.textures.bUseHires [0] || gameOpts->render.effects.bTransparent) { if (fAlpha) { bAdditive = (nType == OBJ_FIREBALL) || (nType == OBJ_EXPLOSION) || ((nType == OBJ_WEAPON) && (objP->info.nId == OMEGA_ID)); #if 0 bMuzzleFlash = (nType == OBJ_FIREBALL) && ((nId == 11) || (nId == 12) || (nId == 15) || (nId == 22) || (nId == 86)); #endif } else { if (nType == OBJ_POWERUP) { if (IsEnergyPowerup (nId)) { fAlpha = 2.0f / 3.0f; bEnergy = 1; } else fAlpha = 1.0f; } else if ((nType != OBJ_FIREBALL) && (nType != OBJ_EXPLOSION)) fAlpha = 1.0f; else { fAlpha = 2.0f / 3.0f; bAdditive = 1; } } } else { nTransp = 3; fAlpha = 1.0f; } #if 0 if (bmi < 0) { PageInAddonBitmap (bmi); bmP = gameData.pig.tex.addonBitmaps - bmi - 1; #if DBG if ((objP->rType.vClipInfo.nCurFrame < 0) || (objP->rType.vClipInfo.nCurFrame >= bmP->FrameCount ())) { objP->rType.vClipInfo.nCurFrame = 0; return; } #endif } else { LoadBitmap (bmi, 0); bmP = gameData.pig.tex.bitmaps [0] + bmi; } #else if (bmi < 0) { bmP = gameData.pig.tex.addonBitmaps - bmi - 1; bmP = bmP->SetCurFrame (iFrame); } else { CBitmap* bmoP; bmP = gameData.pig.tex.bitmaps [0] + bmi; if ((bmP->Type () == BM_TYPE_STD) && (bmoP = bmP->Override ())) bmP = bmoP->SetCurFrame (iFrame); } #endif //bmP->SetupTexture (1, 1); if (!bmP) return; #if 0 if (!bmP->Prepared () && bmP->PrepareTexture (1, 0)) return; #endif fScale = ObjectBlobColor (objP, bmP, &color); if (colorP /*&& (bmi >= 0)*/) *colorP = color; //memcpy (colorP, gameData.pig.tex.bitmapColors + bmi, sizeof (tRgbaColorf)); xSize = objP->info.xSize; if (nType == OBJ_POWERUP) { if ((bEnergy && gameOpts->render.coronas.bPowerups) || (!bEnergy && gameOpts->render.coronas.bWeapons)) RenderPowerupCorona (objP, color.red, color.green, color.blue, coronaIntensities [gameOpts->render.coronas.nObjIntensity]); } if ((objP->info.nType == OBJ_POWERUP) && (objP->info.nId == POW_SHIELD_BOOST) && !gameStates.app.bNostalgia && gameOpts->render.powerups.b3D && gameOpts->render.powerups.b3DShields) { if ((objP->mType.physInfo.velocity.IsZero ()) && (objP->info.movementType != MT_SPINNING)) { objP->info.movementType = MT_SPINNING; objP->mType.spinRate = objP->info.position.mOrient.UVec () * (I2X (1) / 8); } //the actual shield in the sprite texture has 3/4 of the textures size DrawShieldSphere (objP, 3 * color.red / 2, 3 * color.green / 2, 3 * color.blue / 2, 1.0f, 3 * objP->info.xSize / 4); } else if ((gameOpts->render.bDepthSort > 0) && (fAlpha < 1)) { if (bAdditive) { #if 1 color.red = color.green = color.blue = 0.5f; #else if ((nType == OBJ_FIREBALL) && (fScale > 0)) { fScale = 1.0f - fScale / 6.0f; color.red *= fScale; color.green *= fScale; color.blue *= fScale; } #endif } else color.red = color.green = color.blue = 1; color.alpha = fAlpha; if (bmP->Width () > bmP->Height ()) transparencyRenderer.AddSprite (bmP, objP->info.position.vPos, &color, xSize, FixMulDiv (xSize, bmP->Height (), bmP->Width ()), iFrame, bAdditive, (nType == OBJ_FIREBALL) ? 10.0f : 0.0f); else transparencyRenderer.AddSprite (bmP, objP->info.position.vPos, &color, FixMulDiv (xSize, bmP->Width (), bmP->Height ()), xSize, iFrame, bAdditive, (nType == OBJ_FIREBALL) ? 10.0f : 0.0f); } else { if (bmP->Width () > bmP->Height ()) G3DrawBitmap (objP->info.position.vPos, xSize, FixMulDiv (xSize, bmP->Height (), bmP->Width ()), bmP, NULL, fAlpha, nTransp); else G3DrawBitmap (objP->info.position.vPos, FixMulDiv (xSize, bmP->Width (), bmP->Height ()), xSize, bmP, NULL, fAlpha, nTransp); } gameData.render.nTotalSprites++; }
void LoadAddonTextures (void) { for (int i = 0; i < MAX_ADDON_BITMAP_FILES; i++) PageInAddonBitmap (-i - 1); }