OpenClonk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
C4MapCreatorS2 Class Reference

#include <C4MapCreatorS2.h>

Inheritance diagram for C4MapCreatorS2:
[legend]
Collaboration diagram for C4MapCreatorS2:
[legend]

Public Member Functions

 C4MapCreatorS2 (C4SLandscape *pLandscape, C4TextureMap *pTexMap, C4MaterialMap *pMatMap, int iPlayerCount)
 
 ~C4MapCreatorS2 () override
 
void Default ()
 
void Clear ()
 
bool ReadFile (const char *szFilename, C4Group *pGrp)
 
bool ReadScript (const char *szScript)
 
C4MCMapGetMap (const char *szMapName)
 
bool Render (const char *szMapName, CSurface8 *&sfcMap, CSurface8 *&sfcMapBkg)
 
BYTERenderBuf (const char *szMapName, int32_t &sfcWdt, int32_t &sfcHgt)
 
void SetC4SLandscape (C4SLandscape *pLandscape)
 
void ExecuteCallbacks (int32_t iMapZoom)
 
virtual C4MCNodeclone (C4MCParser *pParser, C4MCNode *pToNode)
 
void Reg2Owner (C4MCNode *pOwner)
 
virtual C4MCNodeType Type ()
 
virtual C4MCOverlayOverlay ()
 
C4MCOverlayOwnerOverlay ()
 

Public Attributes

C4MCNodeOwner
 
C4MCNodeChild0
 
C4MCNodeChildL
 
C4MCNodePrev
 
C4MCNodeNext
 
C4MapCreatorS2MapCreator
 
char Name [C4MaxName]
 

Protected Member Functions

bool GlobalScope () override
 
virtual bool SetOp (C4MCTokenType eOp)
 
C4MCNodeGetNodeByName (const char *szName)
 
virtual bool SetField (C4MCParser *pParser, const char *szField, const char *szSVal, int32_t iVal, C4MCTokenType ValType)
 
int32_t IntPar (C4MCParser *pParser, const char *szSVal, int32_t iVal, C4MCTokenType ValType)
 
const char * StrPar (C4MCParser *pParser, const char *szSVal, int32_t iVal, C4MCTokenType ValType)
 
virtual void Evaluate ()
 
void ReEvaluate ()
 

Protected Attributes

C4SLandscapeLandscape
 
C4TextureMapTexMap
 
C4MaterialMapMatMap
 
C4MCMap DefaultMap
 
C4MCOverlay DefaultOverlay
 
C4MCPoint DefaultPoint
 
C4MCMappCurrentMap
 
C4MCCallbackArrayList CallbackArrays
 
int PlayerCount
 

Friends

class C4MCOverlay
 
class C4MCMap
 
class C4MCParser
 
class C4MCCallbackArray
 

Detailed Description

Definition at line 297 of file C4MapCreatorS2.h.

Constructor & Destructor Documentation

C4MapCreatorS2::C4MapCreatorS2 ( C4SLandscape pLandscape,
C4TextureMap pTexMap,
C4MaterialMap pMatMap,
int  iPlayerCount 
)

Definition at line 759 of file C4MapCreatorS2.cpp.

References Default(), DefaultMap, DefaultOverlay, DefaultPoint, Landscape, C4MCNode::MapCreator, MatMap, PlayerCount, and TexMap.

759  : C4MCNode(nullptr)
760 {
761  // me r b creator
762  MapCreator=this;
763  // store members
764  Landscape=pLandscape; TexMap=pTexMap; MatMap=pMatMap;
765  PlayerCount=iPlayerCount;
766  // set engine field for default stuff
767  DefaultMap.MapCreator=this;
770  // default to landscape settings
771  Default();
772 }
C4MaterialMap * MatMap
C4SLandscape * Landscape
C4MCOverlay DefaultOverlay
C4TextureMap * TexMap
C4MCPoint DefaultPoint
C4MCNode(C4MCNode *pOwner=nullptr)
C4MapCreatorS2 * MapCreator

Here is the call graph for this function:

C4MapCreatorS2::~C4MapCreatorS2 ( )
override

Definition at line 774 of file C4MapCreatorS2.cpp.

References Clear().

775 {
776  // clear fields
777  Clear();
778 }

Here is the call graph for this function:

Member Function Documentation

void C4MapCreatorS2::Clear ( )

Definition at line 789 of file C4MapCreatorS2.cpp.

References CallbackArrays, C4MCCallbackArrayList::Clear(), C4MCNode::Clear(), and Default().

Referenced by ~C4MapCreatorS2().

790 {
791  // clear nodes
792  C4MCNode::Clear();
793  // clear callbacks
795  // defaults templates
796  Default();
797 }
C4MCCallbackArrayList CallbackArrays

Here is the call graph for this function:

Here is the caller graph for this function:

virtual C4MCNode* C4MCNode::clone ( C4MCParser pParser,
C4MCNode pToNode 
)
inlinevirtualinherited

Reimplemented in C4MCMap, C4MCPoint, and C4MCOverlay.

Definition at line 156 of file C4MapCreatorS2.h.

References C4MCNode::C4MCNode().

156 { return new C4MCNode(pParser, pToNode, *this, true); }
C4MCNode(C4MCNode *pOwner=nullptr)

Here is the call graph for this function:

void C4MapCreatorS2::Default ( )

Definition at line 780 of file C4MapCreatorS2.cpp.

References C4MCOverlay::Default(), C4MCPoint::Default(), C4MCMap::Default(), DefaultMap, DefaultOverlay, DefaultPoint, and pCurrentMap.

Referenced by C4MapCreatorS2(), and Clear().

781 {
782  // default templates
786  pCurrentMap=nullptr;
787 }
C4MCOverlay DefaultOverlay
C4MCPoint DefaultPoint
void Default()
C4MCMap * pCurrentMap

Here is the call graph for this function:

Here is the caller graph for this function:

virtual void C4MCNode::Evaluate ( )
inlineprotectedvirtualinherited

Reimplemented in C4MCPoint, and C4MCOverlay.

Definition at line 170 of file C4MapCreatorS2.h.

Referenced by C4MCOverlay::Evaluate(), C4MCPoint::Evaluate(), and C4MCNode::ReEvaluate().

170 { } // called when all fields are initialized

Here is the caller graph for this function:

void C4MapCreatorS2::ExecuteCallbacks ( int32_t  iMapZoom)
inline

Definition at line 332 of file C4MapCreatorS2.h.

References C4MCCallbackArrayList::Execute().

332 { CallbackArrays.Execute(iMapZoom); }
void Execute(int32_t iMapZoom)
C4MCCallbackArrayList CallbackArrays

Here is the call graph for this function:

C4MCMap * C4MapCreatorS2::GetMap ( const char *  szMapName)

Definition at line 831 of file C4MapCreatorS2.cpp.

References C4MCNode::ChildL, C4MCNode::GetNodeByName(), MCN_Map, C4MCNode::Prev, and C4MCNode::Type().

Referenced by c4_mapgen_handle_new(), Render(), and RenderBuf().

832 {
833  C4MCMap *pMap=nullptr; C4MCNode *pNode;
834  // get map
835  if (szMapName && *szMapName)
836  {
837  // by name...
838  if ((pNode = GetNodeByName(szMapName)))
839  if (pNode->Type() == MCN_Map)
840  pMap = (C4MCMap *) pNode;
841  }
842  else
843  {
844  // or simply last map entry
845  for (pNode = ChildL; pNode; pNode=pNode->Prev)
846  if (pNode->Type() == MCN_Map)
847  {
848  pMap = (C4MCMap *) pNode;
849  break;
850  }
851  }
852  return pMap;
853 }
C4MCNode * GetNodeByName(const char *szName)
virtual C4MCNodeType Type()
C4MCNode * ChildL
C4MCNode * Prev

Here is the call graph for this function:

Here is the caller graph for this function:

C4MCNode * C4MCNode::GetNodeByName ( const char *  szName)
protectedinherited

Definition at line 255 of file C4MapCreatorS2.cpp.

References C4MCNode::ChildL, C4MCNode::GetNodeByName(), C4MCNode::Owner, C4MCNode::Prev, and SEqual().

Referenced by GetMap(), and C4MCNode::GetNodeByName().

256 {
257  // search local list (backwards: last node has highest priority)
258  for (C4MCNode *pChild=ChildL; pChild; pChild=pChild->Prev)
259  // name match?
260  if (SEqual(pChild->Name, szName))
261  // yeah, success!
262  return pChild;
263  // search owner, if present
264  if (Owner) return Owner->GetNodeByName(szName);
265  // nothing found
266  return nullptr;
267 }
C4MCNode * GetNodeByName(const char *szName)
bool SEqual(const char *szStr1, const char *szStr2)
Definition: Standard.h:93
C4MCNode * ChildL
C4MCNode * Owner
C4MCNode * Prev

Here is the call graph for this function:

Here is the caller graph for this function:

bool C4MapCreatorS2::GlobalScope ( )
inlineoverrideprotectedvirtual

Reimplemented from C4MCNode.

Definition at line 329 of file C4MapCreatorS2.h.

329 { return true; } // it's the global node
int32_t C4MCNode::IntPar ( C4MCParser pParser,
const char *  szSVal,
int32_t  iVal,
C4MCTokenType  ValType 
)
protectedinherited

Definition at line 275 of file C4MapCreatorS2.cpp.

References C4MCErr_FieldValInvalid, MCT_INT, MCT_PERCENT, and MCT_PX.

Referenced by C4MCOverlay::SetField(), and C4MCPoint::SetField().

276 {
277  // check if int32_t
278  if (ValType == MCT_INT || ValType == MCT_PERCENT || ValType == MCT_PX)
279  return iVal;
280  throw C4MCParserErr(pParser, C4MCErr_FieldValInvalid, szSVal);
281 }
#define C4MCErr_FieldValInvalid

Here is the caller graph for this function:

virtual C4MCOverlay* C4MCNode::Overlay ( )
inlinevirtualinherited

Reimplemented in C4MCOverlay.

Definition at line 187 of file C4MapCreatorS2.h.

Referenced by C4MCOverlay::FirstOfChain(), and C4MCOverlay::PeekPix().

187 { return nullptr; } // return overlay, if this is one

Here is the caller graph for this function:

C4MCOverlay * C4MCNode::OwnerOverlay ( )
inherited

Definition at line 246 of file C4MapCreatorS2.cpp.

References C4MCOverlay::Overlay(), and C4MCNode::Owner.

Referenced by C4MCOverlay::Evaluate(), C4MCPoint::Evaluate(), and PreparePeek().

247 {
248  for (C4MCNode *pOwnr=Owner; pOwnr; pOwnr=pOwnr->Owner)
249  if (C4MCOverlay *pOwnrOvrl=pOwnr->Overlay())
250  return pOwnrOvrl;
251  // no overlay-owner
252  return nullptr;
253 }
C4MCOverlay * Overlay() override
C4MCNode * Owner

Here is the call graph for this function:

Here is the caller graph for this function:

bool C4MapCreatorS2::ReadFile ( const char *  szFilename,
C4Group pGrp 
)

Definition at line 799 of file C4MapCreatorS2.cpp.

References C4MCParser, and C4MCParserErr::show().

800 {
801  // create parser and read file
802  try
803  {
804  C4MCParser(this).ParseFile(szFilename, pGrp);
805  }
806  catch (C4MCParserErr err)
807  {
808  err.show();
809  return false;
810  }
811  // success
812  return true;
813 }
friend class C4MCParser

Here is the call graph for this function:

bool C4MapCreatorS2::ReadScript ( const char *  szScript)

Definition at line 815 of file C4MapCreatorS2.cpp.

References C4MCParser, and C4MCParserErr::show().

Referenced by C4Landscape::DrawMap().

816 {
817  // create parser and read
818  try
819  {
820  C4MCParser(this).Parse(szScript);
821  }
822  catch (C4MCParserErr err)
823  {
824  err.show();
825  return false;
826  }
827  // success
828  return true;
829 }
friend class C4MCParser

Here is the call graph for this function:

Here is the caller graph for this function:

void C4MCNode::ReEvaluate ( )
protectedinherited

Definition at line 294 of file C4MapCreatorS2.cpp.

References C4MCNode::Child0, C4MCNode::Evaluate(), and C4MCNode::Next.

Referenced by C4MCMap::SetSize().

295 {
296  // evaluate ourselves
297  Evaluate();
298  // evaluate children
299  for (C4MCNode *pChild=Child0; pChild; pChild=pChild->Next)
300  pChild->ReEvaluate();
301 }
virtual void Evaluate()
C4MCNode * Child0
C4MCNode * Next

Here is the call graph for this function:

Here is the caller graph for this function:

void C4MCNode::Reg2Owner ( C4MCNode pOwner)
inherited

Definition at line 216 of file C4MapCreatorS2.cpp.

References C4MCNode::Child0, C4MCNode::ChildL, C4MCNode::MapCreator, C4MCNode::Next, C4MCNode::Owner, and C4MCNode::Prev.

Referenced by C4MCNode::C4MCNode().

217 {
218  // init list
219  Child0=ChildL=nullptr;
220  // owner?
221  if ((Owner=pOwner))
222  {
223  // link into it
224  if ((Prev = Owner->ChildL))
225  Prev->Next = this;
226  else
227  Owner->Child0 = this;
228  Owner->ChildL = this;
229  MapCreator=pOwner->MapCreator;
230  }
231  else
232  {
233  Prev=nullptr;
234  MapCreator=nullptr;
235  }
236  // we're always last entry
237  Next=nullptr;
238 }
C4MCNode * Child0
C4MCNode * ChildL
C4MCNode * Owner
C4MCNode * Next
C4MCNode * Prev
C4MapCreatorS2 * MapCreator

Here is the caller graph for this function:

bool C4MapCreatorS2::Render ( const char *  szMapName,
CSurface8 *&  sfcMap,
CSurface8 *&  sfcMapBkg 
)

Definition at line 855 of file C4MapCreatorS2.cpp.

References CSurface8::Bits, GetMap(), C4MCOverlay::Hgt, CSurface8::Pitch, C4MCMap::RenderTo(), and C4MCOverlay::Wdt.

Referenced by C4Landscape::DrawMap().

856 {
857  assert(sfcMap == nullptr);
858  assert(sfcMapBkg == nullptr);
859 
860  // get map
861  C4MCMap *pMap=GetMap(szMapName);
862  if (!pMap) return false;
863 
864  // get size
865  int32_t sfcWdt, sfcHgt;
866  sfcWdt=pMap->Wdt; sfcHgt=pMap->Hgt;
867  if (!sfcWdt || !sfcHgt) return false;
868 
869  // create surfaces
870  sfcMap = new CSurface8(sfcWdt, sfcHgt);
871  sfcMapBkg = new CSurface8(sfcWdt, sfcHgt);
872  assert(sfcMap->Pitch == sfcMapBkg->Pitch);
873 
874  // render map to surface
875  pMap->RenderTo(sfcMap->Bits, sfcMapBkg->Bits, sfcMap->Pitch);
876 
877  // success
878  return true;
879 }
BYTE * Bits
Definition: CSurface8.h:30
bool RenderTo(BYTE *pToBuf, BYTE *pToBufBkg, int32_t iPitch)
int Pitch
Definition: CSurface8.h:28
C4MCMap * GetMap(const char *szMapName)

Here is the call graph for this function:

Here is the caller graph for this function:

BYTE * C4MapCreatorS2::RenderBuf ( const char *  szMapName,
int32_t &  sfcWdt,
int32_t &  sfcHgt 
)

Definition at line 886 of file C4MapCreatorS2.cpp.

References GetMap(), C4MCOverlay::Hgt, C4MCMap::RenderTo(), and C4MCOverlay::Wdt.

Referenced by c4_mapgen_handle_new().

887 {
888  // get map
889  C4MCMap *pMap=GetMap(szMapName);
890  if (!pMap) return nullptr;
891 
892  // get size
893  sfcWdt=pMap->Wdt; sfcHgt=pMap->Hgt;
894  if (!sfcWdt || !sfcHgt) return nullptr;
895  int dwSfcWdt = sfcWdt;
896  DWordAlign(dwSfcWdt);
897  sfcWdt = dwSfcWdt;
898 
899  // create buffer
900  BYTE *buf=new BYTE[sfcWdt*sfcHgt];
901 
902  // render and return it
903  pMap->RenderTo(buf, nullptr, sfcWdt);
904  return buf;
905 }
uint8_t BYTE
bool RenderTo(BYTE *pToBuf, BYTE *pToBufBkg, int32_t iPitch)
C4MCMap * GetMap(const char *szMapName)

Here is the call graph for this function:

Here is the caller graph for this function:

void C4MapCreatorS2::SetC4SLandscape ( C4SLandscape pLandscape)
inline

Definition at line 315 of file C4MapCreatorS2.h.

References Landscape.

316  { Landscape=pLandscape; }
C4SLandscape * Landscape
bool C4MCNode::SetField ( C4MCParser pParser,
const char *  szField,
const char *  szSVal,
int32_t  iVal,
C4MCTokenType  ValType 
)
protectedvirtualinherited

Reimplemented in C4MCPoint, and C4MCOverlay.

Definition at line 269 of file C4MapCreatorS2.cpp.

Referenced by C4MCOverlay::SetField().

270 {
271  // no fields in base class
272  return false;
273 }

Here is the caller graph for this function:

virtual bool C4MCNode::SetOp ( C4MCTokenType  eOp)
inlineprotectedvirtualinherited

Reimplemented in C4MCOverlay.

Definition at line 163 of file C4MapCreatorS2.h.

163 { return false; } // set following operator
const char * C4MCNode::StrPar ( C4MCParser pParser,
const char *  szSVal,
int32_t  iVal,
C4MCTokenType  ValType 
)
protectedinherited

Definition at line 283 of file C4MapCreatorS2.cpp.

References C4MCErr_FieldValInvalid, and MCT_IDTF.

Referenced by C4MCOverlay::SetField().

284 {
285  // check if identifier
286  if (ValType != MCT_IDTF)
287  throw C4MCParserErr(pParser, C4MCErr_FieldValInvalid, szSVal);
288  return szSVal;
289 }
#define C4MCErr_FieldValInvalid

Here is the caller graph for this function:

virtual C4MCNodeType C4MCNode::Type ( )
inlinevirtualinherited

Reimplemented in C4MCMap, C4MCPoint, and C4MCOverlay.

Definition at line 186 of file C4MapCreatorS2.h.

References MCN_Node.

Referenced by AlgoPolygon(), and GetMap().

186 { return MCN_Node; } // get node type

Here is the caller graph for this function:

Friends And Related Function Documentation

friend class C4MCCallbackArray
friend

Definition at line 337 of file C4MapCreatorS2.h.

friend class C4MCMap
friend

Definition at line 335 of file C4MapCreatorS2.h.

friend class C4MCOverlay
friend

Definition at line 334 of file C4MapCreatorS2.h.

friend class C4MCParser
friend

Definition at line 336 of file C4MapCreatorS2.h.

Referenced by ReadFile(), and ReadScript().

Member Data Documentation

C4MCCallbackArrayList C4MapCreatorS2::CallbackArrays
protected

Definition at line 326 of file C4MapCreatorS2.h.

Referenced by C4MCCallbackArray::C4MCCallbackArray(), and Clear().

C4MCNode * C4MCNode::ChildL
inherited
C4MCMap C4MapCreatorS2::DefaultMap
protected

Definition at line 322 of file C4MapCreatorS2.h.

Referenced by C4MapCreatorS2(), and Default().

C4MCOverlay C4MapCreatorS2::DefaultOverlay
protected

Definition at line 323 of file C4MapCreatorS2.h.

Referenced by C4MapCreatorS2(), and Default().

C4MCPoint C4MapCreatorS2::DefaultPoint
protected

Definition at line 324 of file C4MapCreatorS2.h.

Referenced by C4MapCreatorS2(), and Default().

C4SLandscape* C4MapCreatorS2::Landscape
protected

Definition at line 319 of file C4MapCreatorS2.h.

Referenced by C4MapCreatorS2(), C4MCMap::Default(), and SetC4SLandscape().

C4MaterialMap* C4MapCreatorS2::MatMap
protected

Definition at line 321 of file C4MapCreatorS2.h.

Referenced by C4MapCreatorS2(), C4MCOverlay::Evaluate(), and C4MCOverlay::SetField().

char C4MCNode::Name[C4MaxName]
inherited

Definition at line 149 of file C4MapCreatorS2.h.

Referenced by AlgoScript(), and C4MCNode::C4MCNode().

C4MCMap* C4MapCreatorS2::pCurrentMap
protected

Definition at line 325 of file C4MapCreatorS2.h.

Referenced by Default(), C4MCCallbackArray::EnablePixel(), and C4MCMap::RenderTo().

int C4MapCreatorS2::PlayerCount
protected

Definition at line 327 of file C4MapCreatorS2.h.

Referenced by C4MapCreatorS2(), and C4MCMap::Default().

C4TextureMap* C4MapCreatorS2::TexMap
protected

Definition at line 320 of file C4MapCreatorS2.h.

Referenced by C4MapCreatorS2(), C4MCOverlay::Evaluate(), and C4MCOverlay::SetField().


The documentation for this class was generated from the following files: