18 #ifndef INC_C4MapCreatorS2
19 #define INC_C4MapCreatorS2
21 #define C4MC_SizeRes 100
22 #define C4MC_ZoomRes 100
25 #define C4MC_Overlay "overlay"
26 #define C4MC_Point "point"
27 #define C4MC_Map "map"
29 #define C4MC_DefAlgo "solid"
32 #define C4MCErr_404 "file not found"
33 #define C4MCErr_NoGroup "internal error: no group"
35 #define C4MCErr_EOF "unexpected end of file"
36 #define C4MCErr_NoDirGlobal "can't use directives in local scope"
37 #define C4MCErr_UnknownDir "unknown directive: %s"
38 #define C4MCErr_MapNoGlobal "can't declare map in local scope"
39 #define C4MCErr_OpTypeErr "operator type mismatch"
40 #define C4MCErr_IdtfExp "identifier expected"
41 #define C4MCErr_UnnamedNoGlbl "unnamed objects not allowed in global scope"
42 #define C4MCErr_BlOpenExp "'{' expected"
43 #define C4MCErr_OpsNoGlobal "operators not allowed in global scope"
44 #define C4MCErr_SColonOrOpExp "';' or operator expected"
45 #define C4MCErr_Obj2Exp "second operand expected"
46 #define C4MCErr_ReinstNoGlobal "can't reinstanciate object '%s' in global scope"
47 #define C4MCErr_UnknownObj "unknown object: %s"
48 #define C4MCErr_ReinstUnknown "can't reinstanciate '%s'; object type is unknown"
49 #define C4MCErr_EqSColonBlOpenExp "'=', ';' or '{' expected"
50 #define C4MCErr_FieldConstExp "constant for field '%s' expected"
51 #define C4MCErr_SColonExp "';' expected"
52 #define C4MCErr_Field404 "field '%s' not found"
53 #define C4MCErr_FieldValInvalid "'%s' is not a valid value for this field"
54 #define C4MCErr_MatNotFound "material '%s' not found"
55 #define C4MCErr_TexNotFound "texture '%s' not found"
56 #define C4MCErr_AlgoNotFound "algorithm '%s' not found"
57 #define C4MCErr_SFuncNotFound "script func '%s' not found in scenario script"
58 #define C4MCErr_PointOnlyOvl "point only allowed in overlays"
59 #define C4MCErr_NoRecTemplate "cannot use template '%s' within itself"
121 void Execute(int32_t iMapZoom);
139 void Execute(int32_t iMapZoom);
178 {
if (percent)
return value * relative_to /
C4MC_SizeRes;
else return value; }
179 void Set(int32_t value,
bool percent)
180 { this->value = value; this->percent = percent; }
237 bool PeekPix(int32_t iX, int32_t iY);
287 void SetSize(int32_t iWdt, int32_t iHgt);
313 BYTE *
RenderBuf(
const char *szMapName, int32_t &sfcWdt, int32_t &sfcHgt);
364 int32_t CurrTokenVal;
367 bool AdvanceSpaces();
370 void ParseValue(
C4MCNode *pToNode,
const char *szFieldName);
379 void Parse(
const char *szScript);
380 void ParseMemFile(
const char *szScript,
const char *szFilename);
C4MCAlgorithm C4MCAlgoMap[]
C4MapCreatorS2 * pMapCreator
C4MCCallbackArray(C4AulFunc *pSFunc, C4MapCreatorS2 *pMapCreator)
void Execute(int32_t iMapZoom)
C4MCCallbackArray * pNext
void EnablePixel(int32_t iX, int32_t iY)
void Execute(int32_t iMapZoom)
C4MCCallbackArray * pFirst
void Add(C4MCCallbackArray *pNewArray)
C4MCMap(C4MCNode *pOwner=nullptr)
bool RenderTo(BYTE *pToBuf, BYTE *pToBufBkg, int32_t iPitch)
C4MCNodeType Type() override
C4MCNode * clone(C4MCParser *pParser, C4MCNode *pToNode) override
void SetSize(int32_t iWdt, int32_t iHgt)
void Set(int32_t value, bool percent)
int32_t Evaluate(int32_t relative_to)
virtual bool SetField(C4MCParser *pParser, const char *szField, const char *szSVal, int32_t iVal, C4MCTokenType ValType)
C4MCNode * GetNodeByName(const char *szName)
const char * StrPar(C4MCParser *pParser, const char *szSVal, int32_t iVal, C4MCTokenType ValType)
virtual bool SetOp(C4MCTokenType eOp)
C4MCOverlay * OwnerOverlay()
C4MapCreatorS2 * MapCreator
virtual bool GlobalScope()
int32_t IntPar(C4MCParser *pParser, const char *szSVal, int32_t iVal, C4MCTokenType ValType)
C4MCNode(C4MCNode *pOwner=nullptr)
virtual C4MCOverlay * Overlay()
virtual C4MCNodeType Type()
virtual C4MCNode * clone(C4MCParser *pParser, C4MCNode *pToNode)
void Reg2Owner(C4MCNode *pOwner)
C4MCNode * clone(C4MCParser *pParser, C4MCNode *pToNode) override
bool RenderPix(int32_t iX, int32_t iY, BYTE &rPix, BYTE &rPixBkg, C4MCTokenType eLastOp=MCT_NONE, bool fLastSet=false, bool fDraw=true, C4MCOverlay **ppPixelSetOverlay=nullptr)
C4MCCallbackArray * pEvaluateFunc
bool SetField(C4MCParser *pParser, const char *szField, const char *szSVal, int32_t iVal, C4MCTokenType ValType) override
char Texture[C4M_MaxName+1]
C4MCCallbackArray * pDrawFunc
bool PeekPix(int32_t iX, int32_t iY)
C4MCOverlay * Overlay() override
bool CheckMask(int32_t iX, int32_t iY)
C4MCOverlay * FirstOfChain()
C4MCOverlay(C4MCNode *pOwner=nullptr)
C4MCNodeType Type() override
bool InBounds(int32_t iX, int32_t iY)
C4MCAlgorithm * GetAlgo(const char *szName)
bool SetOp(C4MCTokenType eOp) override
C4MCAlgorithm * Algorithm
C4MCParserErr(C4MCParser *pParser, const char *szMsg)
C4MCParser(C4MapCreatorS2 *pMapCreator)
void ParseFile(const char *szFilename, C4Group *pGrp)
void ParseMemFile(const char *szScript, const char *szFilename)
void Parse(const char *szScript)
bool SetField(C4MCParser *pParser, const char *szField, const char *szSVal, int32_t iVal, C4MCTokenType ValType) override
C4MCPoint(C4MCNode *pOwner=nullptr)
C4MCNodeType Type() override
C4MCNode * clone(C4MCParser *pParser, C4MCNode *pToNode) override
~C4MapCreatorS2() override
C4MapCreatorS2(C4SLandscape *pLandscape, C4TextureMap *pTexMap, C4MaterialMap *pMatMap, int iPlayerCount)
C4MCCallbackArrayList CallbackArrays
BYTE * RenderBuf(const char *szMapName, int32_t &sfcWdt, int32_t &sfcHgt)
void SetC4SLandscape(C4SLandscape *pLandscape)
bool GlobalScope() override
bool ReadFile(const char *szFilename, C4Group *pGrp)
bool ReadScript(const char *szScript)
C4MCOverlay DefaultOverlay
void ExecuteCallbacks(int32_t iMapZoom)
C4MCMap * GetMap(const char *szMapName)
bool Render(const char *szMapName, CSurface8 *&sfcMap, CSurface8 *&sfcMapBkg)
char Identifier[C4MaxName]
bool(* Function)(C4MCOverlay *, int32_t, int32_t)