void C4GraphicsOverlay::CompileFunc(StdCompiler *pComp) { // read ID pComp->Value(iID); pComp->Separator(); // read def-graphics pComp->Value(mkDefaultAdapt(C4DefGraphicsAdapt(pSourceGfx), (C4DefGraphics *)NULL)); pComp->Separator(); // read mode pComp->Value(mkIntAdapt(eMode)); pComp->Separator(); // read action (identifier) pComp->Value(mkStringAdaptMIE(Action)); pComp->Separator(); // read blit mode pComp->Value(dwBlitMode); pComp->Separator(); // read phase pComp->Value(iPhase); pComp->Separator(); // read transform pComp->Separator(StdCompiler::SEP_START); pComp->Value(Transform); pComp->Separator(StdCompiler::SEP_END); // read color-modulation if (pComp->Separator()) pComp->Value(mkIntAdapt(dwClrModulation)); else // default if (pComp->isCompiler()) dwClrModulation = 0xffffff; // read overlay target object if (pComp->Separator()) pComp->Value(OverlayObj); else // default if (pComp->isCompiler()) OverlayObj = NULL; // update used facet according to read data if (pComp->isCompiler()) UpdateFacet(); }
void C4GraphicsOverlay::Read(const char **ppInput) { // deprecated assert(false && "C4GraphicsOverlay::Read: deprecated"); #if 0 const char *szReadFrom = *ppInput; // defaults eMode = MODE_None; pSourceGfx = NULL; *Action=0; dwBlitMode = 0; iPhase = 0; iID=0; // read ID SCopyUntil(szReadFrom, OSTR, ',', C4MaxName); szReadFrom += strlen(OSTR); if (*szReadFrom) ++szReadFrom; sscanf(OSTR, "%i", &iID); // read C4ID::Gfxname int32_t iLineLength = SLen(szReadFrom); // not C4ID::Name? if (iLineLength < 6 || szReadFrom[4]!=':' || szReadFrom[5]!=':') { DebugLog("C4Compiler error: Malformed graphics overlay definition!"); return; } // get ID char id[5]; SCopy(szReadFrom, id, 4); szReadFrom += 6; C4Def *pSrcDef = ::Definitions.ID2Def(C4Id(id)); // defaults to NULL for unloaded def if (pSrcDef) { char GfxName[C4MaxName+1]; SCopyUntil(szReadFrom, GfxName, ',', C4MaxName); szReadFrom += strlen(GfxName); if (*szReadFrom) ++szReadFrom; // get graphics - "C4ID::" leads to *szLine == NULL, and thus the default graphic of pSrcDef! pSourceGfx = pSrcDef->Graphics.Get(GfxName); } // read mode DWORD dwRead; SCopyUntil(szReadFrom, OSTR, ',', C4MaxName); szReadFrom += strlen(OSTR); if (*szReadFrom) ++szReadFrom; sscanf(OSTR, "%i", &dwRead); eMode = (Mode) dwRead; // read action SCopyUntil(szReadFrom, Action, ',', C4MaxName); szReadFrom += strlen(Action); if (*szReadFrom) ++szReadFrom; // read blit mode SCopyUntil(szReadFrom, OSTR, ',', C4MaxName); szReadFrom += strlen(OSTR); if (*szReadFrom) ++szReadFrom; sscanf(OSTR, "%i", &dwBlitMode); // read phase SCopyUntil(szReadFrom, OSTR, ',', C4MaxName); szReadFrom += strlen(OSTR); if (*szReadFrom) ++szReadFrom; sscanf(OSTR, "%i", &iPhase); // read transform if (*szReadFrom) ++szReadFrom; // '(' int32_t iScanCnt = sscanf(szReadFrom, "%f,%f,%f,%f,%f,%f,%d", &Transform.mat[0], &Transform.mat[1], &Transform.mat[2], &Transform.mat[3], &Transform.mat[4], &Transform.mat[5], &Transform.FlipDir); if (iScanCnt != 7) { DebugLog("C4Compiler: malformed C4CV_Transform"); } iScanCnt = SCharPos(')', szReadFrom); if (iScanCnt>=0) szReadFrom += iScanCnt+1; // assign ptr immediately after read overlay *ppInput = szReadFrom; // update used facet according to read data UpdateFacet(); #endif }
void C4GraphicsOverlay::Set(Mode aMode, C4DefGraphics *pGfx, const char *szAction, DWORD dwBMode, C4Object *pOvrlObj) { // set values eMode = aMode; pSourceGfx = pGfx; if (szAction) SCopy(szAction, Action, C4MaxName); else *Action=0; dwBlitMode = dwBMode; OverlayObj = pOvrlObj; // (keep transform) // reset phase iPhase = 0; // update used facet UpdateFacet(); }