OpenClonk
C4Def Class Reference

#include <C4Def.h>

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

Public Member Functions

void DefaultDefCore ()
 
bool LoadDefCore (C4Group &hGroup)
 
bool Save (C4Group &hGroup)
 
void CompileFunc (StdCompiler *pComp)
 
 C4Def ()
 
 ~C4Def () override
 
void Clear ()
 
void Default ()
 
bool Load (C4Group &hGroup, StdMeshSkeletonLoader &loader, DWORD dwLoadWhat, const char *szLanguage, class C4SoundSystem *pSoundSystem=nullptr, C4DefGraphicsPtrBackup *gfx_backup=nullptr)
 
void Draw (C4Facet &cgo, bool fSelected=false, DWORD iColor=0, C4Object *pObj=nullptr, int32_t iPhaseX=0, int32_t iPhaseY=0, C4DrawTransform *trans=nullptr, const char *graphicsName=nullptr)
 
C4FacetGetMainFace (C4DefGraphics *pGraphics, DWORD dwClr=0)
 
int32_t GetPlane ()
 
int32_t GetValue (C4Object *pInBase, int32_t iBuyPlayer)
 
void Synchronize ()
 
C4Def const * GetDef () const override
 
C4DefGetDef () override
 
bool Delete () override
 
void IncludeDefinition (C4Def *pIncludeDef)
 
void ResetIncludeDependencies ()
 
C4PropListGetActionByName (const char *actname)
 
C4PropListGetActionByName (C4String *actname)
 
C4PropListStaticIsStatic () override
 
const class C4PropListStaticIsStatic () const
 
void RefCompileFunc (StdCompiler *pComp, C4ValueNumbers *numbers) const
 
StdStrBuf GetDataString () const
 
const char * GetName () const override
 
const C4PropListStaticGetParent () const
 
C4StringGetParentKeyName ()
 
virtual void SetName (const char *NewName=nullptr)
 
virtual void SetOnFire (bool OnFire)
 
virtual C4ObjectGetObject ()
 
virtual C4Object const * GetObject () const
 
virtual C4EffectGetEffect ()
 
virtual C4PropListNumberedGetPropListNumbered ()
 
virtual class C4MapScriptLayerGetMapScriptLayer ()
 
virtual class C4MapScriptMapGetMapScriptMap ()
 
C4PropListGetPrototype () const
 
void RemoveCyclicPrototypes ()
 
virtual bool IsNumbered () const
 
virtual bool GetPropertyByS (const C4String *k, C4Value *pResult) const
 
virtual C4ValueArrayGetProperties () const
 
virtual void SetPropertyByS (C4String *k, const C4Value &to)
 
virtual void ResetProperty (C4String *k)
 
bool GetProperty (C4PropertyName k, C4Value *pResult) const
 
C4StringGetPropertyStr (C4PropertyName k) const
 
C4ValueArrayGetPropertyArray (C4PropertyName n) const
 
C4AulFuncGetFunc (C4PropertyName k) const
 
C4AulFuncGetFunc (C4String *k) const
 
C4AulFuncGetFunc (const char *k) const
 
C4StringEnumerateOwnFuncs (C4String *prev=nullptr) const
 
C4Value Call (C4PropertyName k, C4AulParSet *pPars=nullptr, bool fPassErrors=false)
 
C4Value Call (C4String *k, C4AulParSet *pPars=nullptr, bool fPassErrors=false)
 
C4Value Call (const char *k, C4AulParSet *pPars=nullptr, bool fPassErrors=false)
 
C4PropertyName GetPropertyP (C4PropertyName k) const
 
int32_t GetPropertyBool (C4PropertyName n, bool default_val=false) const
 
int32_t GetPropertyInt (C4PropertyName k, int32_t default_val=0) const
 
C4PropListGetPropertyPropList (C4PropertyName k) const
 
bool HasProperty (C4String *k) const
 
void SetProperty (C4PropertyName k, const C4Value &to)
 
void Freeze ()
 
void Thaw ()
 
void ThawRecursively ()
 
bool IsFrozen () const
 
C4PropListStaticFreezeAndMakeStaticRecursively (std::vector< C4Value > *prop_lists, const C4PropListStatic *parent=nullptr, C4String *key=nullptr)
 
virtual void Denumerate (C4ValueNumbers *)
 
void CompileFunc (StdCompiler *pComp, C4ValueNumbers *)
 
void AppendDataString (StdStrBuf *out, const char *delim, int depth=3, bool ignore_reference_parent=false) const
 
StdStrBuf ToJSON (int depth=10, bool ignore_reference_parent=false) const
 
std::vector< C4String * > GetSortedLocalProperties (bool add_prototype=true) const
 
std::vector< C4String * > GetSortedLocalProperties (const char *prefix, const C4PropList *ignore_overridden) const
 
std::vector< C4String * > GetUnsortedProperties (const char *prefix, C4PropList *ignore_parent=nullptr) const
 
std::vector< C4String * > GetSortedProperties (const char *prefix, C4PropList *ignore_parent=nullptr) const
 
bool operator== (const C4PropList &b) const
 
Iterator begin ()
 
Iterator end ()
 

Static Public Member Functions

static C4PropListNew (C4PropList *prototype=nullptr)
 
static C4PropListStaticNewStatic (C4PropList *prototype, const C4PropListStatic *parent, C4String *key)
 

Public Attributes

C4ID id
 
int32_t rC4XVer [2]
 
C4IDList RequireDef
 
C4Shape Shape
 
C4Rect Entrance
 
C4Rect Collection
 
C4Rect PictureRect
 
C4TargetRect SolidMask
 
C4TargetRect TopFace
 
C4ID BurnTurnTo
 
int32_t GrowthType
 
int32_t CrewMember
 
int32_t NativeCrew
 
int32_t Mass
 
int32_t Value
 
int32_t Exclusive
 
int32_t Category
 
int32_t Constructable
 
int32_t Rotateable
 
int32_t Float
 
int32_t ColorByOwner
 
int32_t NoHorizontalMove
 
int32_t LiftTop
 
int32_t GrabPutGet
 
int32_t UprightAttach
 
int32_t Line
 
int32_t LineIntersect
 
int32_t IncompleteActivity
 
int32_t Oversize
 
int32_t Fragile
 
int32_t Projectile
 
int32_t NoPushEnter
 
int32_t VehicleControl
 
int32_t Pathfinder
 
int32_t MoveToRange
 
int32_t NoMassFromContents
 
int32_t NoStabilize
 
int32_t ClosedContainer
 
int32_t SilentCommands
 
int32_t TemporaryCrew
 
int32_t BlitMode
 
int32_t NoBreath
 
int32_t ConSizeOff
 
int32_t NoGet
 
int32_t RotatedEntrance
 
int32_t NoTransferZones
 
int32_t AllowPictureStack
 
bool HideInCreator
 
char Filename [_MAX_FNAME_LEN]
 
StdCopyStrBuf ConsoleGroupPath
 
int32_t Creation
 
int32_t Count
 
C4DefScriptHost Script
 
C4LangStringTable StringTable
 
C4ComponentHostpClonkNames
 
bool fClonkNamesOwned
 
C4RankSystempRankNames
 
bool fRankNamesOwned
 
C4FacetSurfacepRankSymbols
 
bool fRankSymbolsOwned
 
int32_t iNumRankSymbols
 
C4DefGraphics Graphics
 
CSurface8pSolidMask
 
int32_t Status {1}
 

Protected Member Functions

bool Compile (const char *szSource, const char *szName)
 
bool Decompile (StdStrBuf *pOut, const char *szName)
 
bool LoadActMap (C4Group &hGroup)
 
void CrossMapActMap ()
 
void ClearRefs ()
 

Protected Attributes

C4Facet MainFace
 
C4DefNext
 
bool Temporary
 
const C4PropListStaticParent
 
C4RefCntPointer< C4StringParentKeyName
 

Friends

class C4DefList
 

Detailed Description

Definition at line 98 of file C4Def.h.

Constructor & Destructor Documentation

◆ C4Def()

C4Def::C4Def ( )

Definition at line 26 of file c4def-handle.cpp.

26  : Script(), C4PropListStatic(ScriptEngine.GetPropList(), nullptr, nullptr)
27 {
28  Script.SetDef(this);
29  assert(ScriptEngine.GetPropList());
30  Graphics.pDef = this;
31 
32  Next = nullptr;
33  Script.Clear();
34 }
C4AulScriptEngine ScriptEngine
Definition: C4Globals.cpp:43
C4PropListStatic * GetPropList()
Definition: C4Aul.h:151
C4DefScriptHost Script
Definition: C4Def.h:181
C4DefGraphics Graphics
Definition: C4Def.h:191
C4Def * Next
Definition: C4Def.h:198
void SetDef(C4Def *to_def)
Definition: C4ScriptHost.h:144
C4PropListStatic(C4PropList *prototype, const C4PropListStatic *parent, C4String *key)
Definition: C4PropList.h:267

References C4ScriptHost::Clear(), C4AulScriptEngine::GetPropList(), Graphics, Next, C4DefGraphics::pDef, Script, ScriptEngine, and C4DefScriptHost::SetDef().

Here is the call graph for this function:

◆ ~C4Def()

C4Def::~C4Def ( )
override

Definition at line 36 of file c4def-handle.cpp.

37 {
39  Script.Clear();
40 }
void Clear()
Definition: C4PropList.h:70

References C4PropList::Clear(), C4ScriptHost::Clear(), and Script.

Here is the call graph for this function:

Member Function Documentation

◆ AppendDataString()

void C4PropList::AppendDataString ( StdStrBuf out,
const char *  delim,
int  depth = 3,
bool  ignore_reference_parent = false 
) const
inherited

Definition at line 487 of file C4PropList.cpp.

488 {
489  StdStrBuf & DataString = *out;
490  if (depth <= 0 && Properties.GetSize())
491  {
492  DataString.Append("...");
493  return;
494  }
495  bool has_elements = false;
496  // Append prototype
497  if (prototype)
498  {
499  DataString.Append("Prototype = ");
500  DataString.Append(prototype.GetDataString(depth - 1, ignore_reference_parent ? IsStatic() : nullptr));
501  has_elements = true;
502  }
503  // Append other properties
504  std::list<const C4Property *> sorted_props = Properties.GetSortedListOfElementPointers();
505  for (std::list<const C4Property *>::const_iterator p = sorted_props.begin(); p != sorted_props.end(); ++p)
506  {
507  if (has_elements) DataString.Append(delim);
508  DataString.Append((*p)->Key->GetData());
509  DataString.Append(" = ");
510  DataString.Append((*p)->Value.GetDataString(depth - 1, ignore_reference_parent ? IsStatic() : nullptr));
511  has_elements = true;
512  }
513 }
virtual class C4PropListStatic * IsStatic()
Definition: C4PropList.h:89
std::list< const T * > GetSortedListOfElementPointers() const
unsigned int GetSize() const
StdStrBuf GetDataString(int depth=10, const class C4PropListStatic *ignore_reference_parent=nullptr) const
Definition: C4Value.cpp:131
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:519

References StdStrBuf::Append(), C4PropList::begin(), C4PropList::end(), C4Value::GetDataString(), C4Set< T >::GetSize(), C4Set< T >::GetSortedListOfElementPointers(), and C4PropList::IsStatic().

Referenced by C4Object::GetDataString().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ begin()

C4PropList::Iterator C4PropList::begin ( )
inherited

Definition at line 995 of file C4PropList.cpp.

996 {
998 
999  if (GetPrototype())
1000  {
1001  iter = GetPrototype()->begin();
1002  }
1003  else
1004  {
1005  iter.properties = std::make_shared<std::vector<const C4Property*> >();
1006  }
1007  iter.Reserve(Properties.GetSize());
1008 
1009  const C4Property * p = Properties.First();
1010  while (p)
1011  {
1012  iter.AddProperty(p);
1013  p = Properties.Next(p);
1014  }
1015 
1016  iter.Init();
1017  return iter;
1018 }
C4PropList * GetPrototype() const
Definition: C4PropList.h:85
Iterator begin()
Definition: C4PropList.cpp:995
T const * Next(T const *p) const
T const * First() const

References C4PropList::begin(), C4Set< T >::First(), C4PropList::GetPrototype(), C4Set< T >::GetSize(), and C4Set< T >::Next().

Referenced by C4PropList::AppendDataString(), C4PropList::begin(), C4ParticleProperties::Set(), and C4PropList::ToJSON().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Call() [1/3]

C4Value C4PropList::Call ( C4PropertyName  k,
C4AulParSet pPars = nullptr,
bool  fPassErrors = false 
)
inlineinherited

Definition at line 114 of file C4PropList.h.

115  { return Call(&Strings.P[k], pPars, fPassErrors); }
C4StringTable Strings
Definition: C4Globals.cpp:42
C4Value Call(C4PropertyName k, C4AulParSet *pPars=nullptr, bool fPassErrors=false)
Definition: C4PropList.h:114
C4String P[P_LAST]

References C4StringTable::P, and Strings.

Referenced by C4Command::Acquire(), C4Object::ActivateEntrance(), C4Object::ActivateMenu(), C4Object::AssignDeath(), C4Object::AssignRemoval(), C4Command::Call(), C4GameScriptHost::Call(), C4Effect::CallEffect(), C4Command::CallFailed(), C4Effect::CallStart(), C4Effect::CallStop(), C4Effect::CallTimer(), C4FindObjectFunc::Check(), C4Effect::ClearAll(), C4Object::Collect(), C4SortObjectFunc::CompareGetValue(), C4Object::Contact(), C4GameObjects::CrossCheck(), C4Landscape::P::DigMaterial2Objects(), C4Object::DirectComContents(), C4Object::DoBreath(), C4Object::DoCon(), C4Object::DoDamage(), C4Object::DoEnergy(), C4Object::DoMovement(), C4ObjectMenu::DoRefillInternal(), C4Object::DoSelect(), C4Object::Enter(), C4RoundResults::EvaluateGame(), C4RoundResults::EvaluateGoals(), C4Object::ExecLife(), C4Object::ExecuteCommand(), C4ScriptGuiWindowAction::ExecuteCommand(), C4Object::Exit(), C4Command::Fail(), C4Command::GetTryEnter(), GetValue(), C4Object::GetValue(), GrabLost(), C4Landscape::Incinerate(), C4Effect::Init(), C4Player::Init(), C4ObjectMenu::IsCloseDenied(), C4Effect::Kill(), C4Object::Lift(), C4Game::NewObject(), ObjectActionJump(), ObjectComGrab(), ObjectComPunch(), ObjectComPut(), ObjectComUnGrab(), C4ObjectMenu::OnSelectionChanged(), C4EditCursor::PerformDuplication(), C4EditCursor::PerformDuplicationLegacy(), C4Landscape::P::PostFreeShape(), C4Object::Promote(), C4Object::Push(), C4Game::SaveData(), C4Object::SetAction(), C4GUI::FrameDecoration::SetByDef(), C4Object::SetCommand(), C4Player::SetObjectCrewStatus(), C4Object::SetOwner(), C4Object::StatusActivate(), C4Command::Transfer(), and C4Object::UnSelect().

Here is the caller graph for this function:

◆ Call() [2/3]

C4Value C4PropList::Call ( C4String k,
C4AulParSet pPars = nullptr,
bool  fPassErrors = false 
)
inherited

Definition at line 797 of file C4PropList.cpp.

798 {
799  if (!Status) return C4Value();
800  C4AulFunc *pFn = GetFunc(k);
801  if (!pFn) return C4Value();
802  return pFn->Exec(this, Pars, fPassErrors);
803 }
C4Value Exec(C4PropList *p=nullptr, C4AulParSet *pPars=nullptr, bool fPassErrors=false)
Definition: C4AulFunc.h:72
C4AulFunc * GetFunc(C4PropertyName k) const
Definition: C4PropList.h:109
int32_t Status
Definition: C4PropList.h:173
friend class C4Value
Definition: C4PropList.h:170

References C4PropList::C4Value, C4AulFunc::Exec(), C4PropList::GetFunc(), and C4PropList::Status.

Here is the call graph for this function:

◆ Call() [3/3]

C4Value C4PropList::Call ( const char *  k,
C4AulParSet pPars = nullptr,
bool  fPassErrors = false 
)
inherited

Definition at line 805 of file C4PropList.cpp.

806 {
807  if (!Status) return C4Value();
808  assert(s && s[0]);
809  C4AulFunc *pFn = GetFunc(s);
810  if (!pFn)
811  {
812  if (s[0] != '~')
813  {
814  C4AulExecError err(FormatString("Undefined function: %s", s).getData());
815  if (fPassErrors)
816  throw err;
817  ::ScriptEngine.GetErrorHandler()->OnError(err.what());
818  }
819  return C4Value();
820  }
821  return pFn->Exec(this, Pars, fPassErrors);
822 }
#define s
StdStrBuf FormatString(const char *szFmt,...)
Definition: StdBuf.cpp:270
virtual void OnError(const char *msg)=0
C4AulErrorHandler * GetErrorHandler() const
Definition: C4Aul.h:173

References C4PropList::C4Value, C4AulFunc::Exec(), FormatString(), C4AulScriptEngine::GetErrorHandler(), C4PropList::GetFunc(), C4AulErrorHandler::OnError(), s, ScriptEngine, C4PropList::Status, and C4AulError::what().

Here is the call graph for this function:

◆ Clear()

void C4Def::Clear ( )

Definition at line 322 of file C4Def.cpp.

323 {
324  Script.Clear();
326 
327  Graphics.Clear();
328 
329  StringTable.Clear();
330 
331  if (fClonkNamesOwned)
332  delete pClonkNames;
333  pClonkNames = nullptr;
334 
335  if (fRankNamesOwned)
336  delete pRankNames;
337  pRankNames = nullptr;
338 
339  if (fRankSymbolsOwned)
340  delete pRankSymbols;
341  pRankSymbols = nullptr;
342 
344  delete pSolidMask; pSolidMask = nullptr;
345 }
C4FacetSurface * pRankSymbols
Definition: C4Def.h:189
bool fClonkNamesOwned
Definition: C4Def.h:185
C4RankSystem * pRankNames
Definition: C4Def.h:188
bool fRankSymbolsOwned
Definition: C4Def.h:189
C4ComponentHost * pClonkNames
Definition: C4Def.h:185
CSurface8 * pSolidMask
Definition: C4Def.h:192
C4LangStringTable StringTable
Definition: C4Def.h:182
bool fRankNamesOwned
Definition: C4Def.h:188

References C4ComponentHost::Clear(), C4DefGraphics::Clear(), C4PropList::Clear(), C4ScriptHost::Clear(), fClonkNamesOwned, fRankNamesOwned, fRankSymbolsOwned, Graphics, pClonkNames, pRankNames, pRankSymbols, pSolidMask, Script, and StringTable.

Referenced by C4DefList::Reload().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ClearRefs()

void C4PropList::ClearRefs ( )
inlineprotectedinherited

Definition at line 160 of file C4PropList.h.

160 { for( C4Value * ref: RefSet{Refs}) ref->Set0(); assert(Refs.empty()); }

Referenced by C4Object::AssignRemoval().

Here is the caller graph for this function:

◆ Compile()

bool C4Def::Compile ( const char *  szSource,
const char *  szName 
)
protected

Definition at line 171 of file C4Def.cpp.

172 {
173  return CompileFromBuf_LogWarn<StdCompilerINIRead>(mkNamingAdapt(*this, "DefCore"), StdStrBuf(szSource), szName);
174 }
StdNamingAdapt< T > mkNamingAdapt(T &&rValue, const char *szName)
Definition: StdAdaptors.h:92

References mkNamingAdapt().

Referenced by LoadDefCore().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CompileFunc() [1/2]

void C4Def::CompileFunc ( StdCompiler pComp)

Definition at line 181 of file C4Def.cpp.

182 {
183 
184  pComp->Value(mkNamingAdapt(id, "id", C4ID::None ));
185  pComp->Value(mkNamingAdapt(toC4CArr(rC4XVer), "Version" ));
186  pComp->Value(mkNamingAdapt(mkParAdapt(RequireDef, false), "RequireDef", C4IDList() ));
187 
188  const StdBitfieldEntry<int32_t> Categories[] =
189  {
190 
191  { "C4D_None", C4D_None },
192  { "C4D_StaticBack", C4D_StaticBack },
193  { "C4D_Structure", C4D_Structure },
194  { "C4D_Vehicle", C4D_Vehicle },
195  { "C4D_Living", C4D_Living },
196  { "C4D_Object", C4D_Object },
197 
198  { "C4D_Goal", C4D_Goal },
199  { "C4D_Rule", C4D_Rule },
200  { "C4D_Environment", C4D_Environment },
201 
202  { "C4D_Background", C4D_Background },
203  { "C4D_Parallax", C4D_Parallax },
204  { "C4D_MouseSelect", C4D_MouseSelect },
205  { "C4D_Foreground", C4D_Foreground },
206  { "C4D_MouseIgnore", C4D_MouseIgnore },
207  { "C4D_IgnoreFoW", C4D_IgnoreFoW },
208 
209  { nullptr, 0 }
210  };
211 
212  pComp->Value(mkNamingAdapt(mkBitfieldAdapt<int32_t>(Category, Categories),
213  "Category", 0 ));
214 
215  pComp->Value(mkParAdapt(Shape, static_cast<C4Shape*>(nullptr)));
216  pComp->Value(mkNamingAdapt(Value, "Value", 0 ));
217  pComp->Value(mkNamingAdapt(Mass, "Mass", 0 ));
218  pComp->Value(mkNamingAdapt(SolidMask, "SolidMask", TargetRect0 ));
219  pComp->Value(mkNamingAdapt(TopFace, "TopFace", TargetRect0 ));
220  pComp->Value(mkNamingAdapt(PictureRect, "Picture", Rect0 ));
221  pComp->Value(mkNamingAdapt(Entrance, "Entrance", Rect0 ));
222  pComp->Value(mkNamingAdapt(Collection, "Collection", Rect0 ));
223  pComp->Value(mkNamingAdapt(Exclusive, "Exclusive", 0 ));
224  pComp->Value(mkNamingAdapt(Line, "Line", 0 ));
225  // <Newton> undocumented, but obsolete? I don't understand the sense of this value.
226  pComp->Value(mkNamingAdapt(LineIntersect, "LineIntersect", 0 ));
227  pComp->Value(mkNamingAdapt(CrewMember, "CrewMember", 0 ));
228  pComp->Value(mkNamingAdapt(NativeCrew, "NoStandardCrew", 0 ));
229  pComp->Value(mkNamingAdapt(Constructable, "Construction", 0 ));
230 
231  const StdBitfieldEntry<int32_t> GrabPutGetTypes[] =
232  {
233 
234  { "C4D_GrabGet" ,C4D_Grab_Get},
235  { "C4D_GrabPut" ,C4D_Grab_Put},
236 
237  { nullptr, 0}
238  };
239 
240  pComp->Value(mkNamingAdapt(mkBitfieldAdapt(GrabPutGet, GrabPutGetTypes),
241  "GrabPutGet", 0 ));
242 
243  pComp->Value(mkNamingAdapt(Rotateable, "Rotate", 0 ));
244  pComp->Value(mkNamingAdapt(RotatedEntrance, "RotatedEntrance", 0 ));
245  pComp->Value(mkNamingAdapt(Float, "Float", 0 ));
246  pComp->Value(mkNamingAdapt(ColorByOwner, "ColorByOwner", 0 ));
247  pComp->Value(mkNamingAdapt(NoHorizontalMove, "HorizontalFix", 0 ));
248  pComp->Value(mkNamingAdapt(LiftTop, "LiftTop", 0 ));
249  pComp->Value(mkNamingAdapt(UprightAttach, "UprightAttach", 0 ));
250  pComp->Value(mkNamingAdapt(GrowthType, "StretchGrowth", 0 ));
251  pComp->Value(mkNamingAdapt(IncompleteActivity, "IncompleteActivity", 0 ));
252  pComp->Value(mkNamingAdapt(Oversize, "Oversize", 0 ));
253  // <Newton> Fragile and Projectile are kinda obsolete.
254  // Only used at one point in the command system. Should rather be solved with properties if at all
255  pComp->Value(mkNamingAdapt(Fragile, "Fragile", 0 ));
256  pComp->Value(mkNamingAdapt(Projectile, "Projectile", 0 ));
257 
258  pComp->Value(mkNamingAdapt(NoPushEnter, "NoPushEnter", 0 ));
259  pComp->Value(mkNamingAdapt(VehicleControl, "VehicleControl", 0 ));
260  pComp->Value(mkNamingAdapt(Pathfinder, "Pathfinder", 0 ));
261  pComp->Value(mkNamingAdapt(MoveToRange, "MoveToRange", 0 ));
262  pComp->Value(mkNamingAdapt(NoMassFromContents, "NoMassFromContents", 0 ));
263  pComp->Value(mkNamingAdapt(NoStabilize, "NoStabilize", 0 ));
264  pComp->Value(mkNamingAdapt(ClosedContainer, "ClosedContainer", 0 ));
265  pComp->Value(mkNamingAdapt(SilentCommands, "SilentCommands", 0 ));
266  pComp->Value(mkNamingAdapt(TemporaryCrew, "TemporaryCrew", 0 ));
267  pComp->Value(mkNamingAdapt(BlitMode, "BlitMode", C4D_Blit_Normal ));
268  pComp->Value(mkNamingAdapt(NoBreath, "NoBreath", 0 ));
269  pComp->Value(mkNamingAdapt(ConSizeOff, "ConSizeOff", 0 ));
270  pComp->Value(mkNamingAdapt(NoGet, "NoGet", 0 ));
271  pComp->Value(mkNamingAdapt(NoTransferZones, "NoTransferZones", 0 ));
272 
273  const StdBitfieldEntry<int32_t> AllowPictureStackModes[] =
274  {
275 
276  { "APS_Color", APS_Color },
277  { "APS_Graphics", APS_Graphics },
278  { "APS_Name", APS_Name },
279  { "APS_Overlay", APS_Overlay },
280  { nullptr, 0 }
281  };
282 
283  pComp->Value(mkNamingAdapt(mkBitfieldAdapt<int32_t>(AllowPictureStack, AllowPictureStackModes), //undocumented
284  "AllowPictureStack", 0 ));
285  pComp->Value(mkNamingAdapt(HideInCreator, "HideInCreator", false));
286 }
@ APS_Color
Definition: C4Constants.h:162
@ APS_Graphics
Definition: C4Constants.h:163
@ APS_Name
Definition: C4Constants.h:164
@ APS_Overlay
Definition: C4Constants.h:165
const int32_t C4D_Goal
Definition: C4Def.h:46
const int32_t C4D_Foreground
Definition: C4Def.h:53
const int32_t C4D_IgnoreFoW
Definition: C4Def.h:55
const int32_t C4D_MouseSelect
Definition: C4Def.h:52
const int32_t C4D_Rule
Definition: C4Def.h:47
const int32_t C4D_Background
Definition: C4Def.h:50
const int32_t C4D_Structure
Definition: C4Def.h:41
const int32_t C4D_Living
Definition: C4Def.h:43
const int32_t C4D_MouseIgnore
Definition: C4Def.h:54
const int32_t C4D_Grab_Put
Definition: C4Def.h:62
const int32_t C4D_StaticBack
Definition: C4Def.h:40
const int32_t C4D_Grab_Get
Definition: C4Def.h:63
const int32_t C4D_Object
Definition: C4Def.h:44
#define C4D_Blit_Normal
Definition: C4Def.h:94
const int32_t C4D_None
Definition: C4Def.h:38
const int32_t C4D_Environment
Definition: C4Def.h:48
const int32_t C4D_Parallax
Definition: C4Def.h:51
const int32_t C4D_Vehicle
Definition: C4Def.h:42
const C4TargetRect TargetRect0(0, 0, 0, 0, 0, 0)
const C4Rect Rect0(0, 0, 0, 0)
StdBitfieldAdapt< T > mkBitfieldAdapt(T &rVal, const StdBitfieldEntry< T > *pNames)
Definition: StdAdaptors.h:985
#define toC4CArr(rArr)
Definition: StdAdaptors.h:28
StdParameterAdapt< T, P > mkParAdapt(T &&rObj, P &&rPar)
Definition: StdAdaptors.h:490
Definition: StdAdaptors.h:883
int32_t CrewMember
Definition: C4Def.h:112
int32_t TemporaryCrew
Definition: C4Def.h:140
bool HideInCreator
Definition: C4Def.h:148
int32_t ConSizeOff
Definition: C4Def.h:143
int32_t NoPushEnter
Definition: C4Def.h:132
int32_t Value
Definition: C4Def.h:115
int32_t AllowPictureStack
Definition: C4Def.h:147
int32_t Mass
Definition: C4Def.h:114
int32_t NoStabilize
Definition: C4Def.h:137
C4IDList RequireDef
Definition: C4Def.h:103
int32_t IncompleteActivity
Definition: C4Def.h:128
int32_t MoveToRange
Definition: C4Def.h:135
int32_t Line
Definition: C4Def.h:126
int32_t Projectile
Definition: C4Def.h:131
int32_t ColorByOwner
Definition: C4Def.h:121
int32_t SilentCommands
Definition: C4Def.h:139
int32_t Float
Definition: C4Def.h:120
int32_t UprightAttach
Definition: C4Def.h:125
int32_t RotatedEntrance
Definition: C4Def.h:145
C4TargetRect SolidMask
Definition: C4Def.h:108
int32_t Rotateable
Definition: C4Def.h:119
int32_t Category
Definition: C4Def.h:117
int32_t rC4XVer[2]
Definition: C4Def.h:102
C4Rect Collection
Definition: C4Def.h:106
int32_t NoMassFromContents
Definition: C4Def.h:136
int32_t Constructable
Definition: C4Def.h:118
int32_t Oversize
Definition: C4Def.h:129
int32_t GrowthType
Definition: C4Def.h:111
C4Rect PictureRect
Definition: C4Def.h:107
C4Shape Shape
Definition: C4Def.h:104
int32_t NoTransferZones
Definition: C4Def.h:146
int32_t NoBreath
Definition: C4Def.h:142
int32_t NoGet
Definition: C4Def.h:144
int32_t NoHorizontalMove
Definition: C4Def.h:122
int32_t NativeCrew
Definition: C4Def.h:113
int32_t Pathfinder
Definition: C4Def.h:134
int32_t ClosedContainer
Definition: C4Def.h:138
int32_t VehicleControl
Definition: C4Def.h:133
int32_t LineIntersect
Definition: C4Def.h:127
int32_t Fragile
Definition: C4Def.h:130
int32_t GrabPutGet
Definition: C4Def.h:124
int32_t BlitMode
Definition: C4Def.h:141
int32_t LiftTop
Definition: C4Def.h:123
C4Rect Entrance
Definition: C4Def.h:105
int32_t Exclusive
Definition: C4Def.h:116
C4TargetRect TopFace
Definition: C4Def.h:109
static const C4ID None
Definition: C4Id.h:39
void Value(const T &rStruct)
Definition: StdCompiler.h:161

References AllowPictureStack, APS_Color, APS_Graphics, APS_Name, APS_Overlay, BlitMode, C4D_Background, C4D_Blit_Normal, C4D_Environment, C4D_Foreground, C4D_Goal, C4D_Grab_Get, C4D_Grab_Put, C4D_IgnoreFoW, C4D_Living, C4D_MouseIgnore, C4D_MouseSelect, C4D_None, C4D_Object, C4D_Parallax, C4D_Rule, C4D_StaticBack, C4D_Structure, C4D_Vehicle, Category, ClosedContainer, Collection, ColorByOwner, ConSizeOff, Constructable, CrewMember, Entrance, Exclusive, Float, Fragile, GrabPutGet, GrowthType, HideInCreator, IncompleteActivity, LiftTop, Line, LineIntersect, Mass, mkBitfieldAdapt(), mkNamingAdapt(), mkParAdapt(), MoveToRange, NativeCrew, NoBreath, NoGet, NoHorizontalMove, NoMassFromContents, C4ID::None, NoPushEnter, NoStabilize, NoTransferZones, Oversize, Pathfinder, PictureRect, Projectile, rC4XVer, Rect0(), RequireDef, Rotateable, RotatedEntrance, Shape, SilentCommands, SolidMask, TargetRect0(), TemporaryCrew, toC4CArr, TopFace, UprightAttach, StdCompiler::Value(), Value, and VehicleControl.

Here is the call graph for this function:

◆ CompileFunc() [2/2]

void C4PropList::CompileFunc ( StdCompiler pComp,
C4ValueNumbers numbers 
)
inherited

Definition at line 366 of file C4PropList.cpp.

367 {
368  bool oldFormat = false;
369  // constant proplists are not serialized to savegames, but recreated from the game data instead
370  assert(!constant);
371  if (pComp->isDeserializer() && pComp->hasNaming())
372  {
373  // backwards compat to savegames and scenarios before 5.5
374  try
375  {
376  pComp->Value(constant);
377  oldFormat = true;
378  }
379  catch (StdCompiler::NotFoundException *pEx)
380  {
381  delete pEx;
382  pComp->Value(mkParAdapt(prototype, numbers));
383  }
384  }
385  else
386  pComp->Value(mkParAdapt(prototype, numbers));
388  pComp->Value(mkParAdapt(Properties, numbers));
389  if (oldFormat)
390  {
391  if (Properties.Has(&::Strings.P[P_Prototype]))
392  {
393  prototype = Properties.Get(&::Strings.P[P_Prototype]).Value;
394  Properties.Remove(&::Strings.P[P_Prototype]);
395  }
396  }
397 }
@ P_Prototype
C4Value Value
Definition: C4PropList.h:54
T & Get(H e) const
bool Has(H e) const
void Remove(H e)
virtual bool Separator(Sep eSep=SEP_SEP)
Definition: StdCompiler.h:119
virtual bool isDeserializer()
Definition: StdCompiler.h:53
virtual bool hasNaming()
Definition: StdCompiler.h:58

References C4Set< T >::Get(), C4Set< T >::Has(), StdCompiler::hasNaming(), StdCompiler::isDeserializer(), mkParAdapt(), C4StringTable::P, P_Prototype, C4Set< T >::Remove(), StdCompiler::SEP_SEP2, StdCompiler::Separator(), Strings, StdCompiler::Value(), and C4Property::Value.

Referenced by C4PropListNumbered::CompileFunc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CrossMapActMap()

void C4Def::CrossMapActMap ( )
protected

◆ Decompile()

bool C4Def::Decompile ( StdStrBuf pOut,
const char *  szName 
)
protected

Definition at line 176 of file C4Def.cpp.

177 {
178  return DecompileToBuf_Log<StdCompilerINIWrite>(mkNamingAdapt(*this, "DefCore"), pOut, szName);
179 }

References mkNamingAdapt().

Referenced by Save().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Default()

void C4Def::Default ( )

Definition at line 298 of file C4Def.cpp.

299 {
300  DefaultDefCore();
301  Next=nullptr;
302  Temporary=false;
303  Filename[0]=0;
304  Creation=0;
305  Count=0;
306  MainFace.Set(nullptr,0,0,0,0);
307  Script.Clear();
308  StringTable.Clear();
309  pClonkNames=nullptr;
310  pRankNames=nullptr;
311  pRankSymbols=nullptr;
313  iNumRankSymbols=1;
314  pSolidMask = nullptr;
315 }
char Filename[_MAX_FNAME_LEN]
Definition: C4Def.h:176
int32_t iNumRankSymbols
Definition: C4Def.h:190
int32_t Creation
Definition: C4Def.h:178
C4Facet MainFace
Definition: C4Def.h:195
bool Temporary
Definition: C4Def.h:199
int32_t Count
Definition: C4Def.h:179
void DefaultDefCore()
Definition: C4Def.cpp:91
void Set(C4Surface &rSfc)
Definition: C4Facet.cpp:459

References C4ComponentHost::Clear(), C4ScriptHost::Clear(), Count, Creation, DefaultDefCore(), fClonkNamesOwned, Filename, fRankNamesOwned, fRankSymbolsOwned, iNumRankSymbols, MainFace, Next, pClonkNames, pRankNames, pRankSymbols, pSolidMask, Script, C4Facet::Set(), StringTable, and Temporary.

Here is the call graph for this function:

◆ DefaultDefCore()

void C4Def::DefaultDefCore ( )

Definition at line 91 of file C4Def.cpp.

92 {
93  rC4XVer[0]=rC4XVer[1]=0;
94  RequireDef.Clear();
95  Shape.Default();
96  Entrance.Default();
100  TopFace.Default();
102  GrowthType=0;
103  CrewMember=0;
104  NativeCrew=0;
105  Mass=0;
106  Value=0;
107  Exclusive=0;
108  Category=0;
109  Constructable=0;
110  Rotateable=0;
111  RotatedEntrance=0;
112  Float=0;
113  ColorByOwner=0;
115  LiftTop=0;
116  GrabPutGet=0;
117  UprightAttach=0;
118  Line=0;
119  LineIntersect=0;
121  Oversize=0;
122  Fragile=0;
123  NoPushEnter=0;
124  Projectile=0;
125  VehicleControl=0;
126  Pathfinder=0;
128  MoveToRange=0;
129  NoStabilize=0;
130  ClosedContainer=0;
131  SilentCommands=0;
132  TemporaryCrew=0;
134  NoBreath=0;
135  ConSizeOff=0;
136  NoGet=0;
137  NoTransferZones=0;
138  HideInCreator = false;
139 }
C4ID BurnTurnTo
Definition: C4Def.h:110
void Clear()
Definition: stub-handle.cpp:64
void Default()
Definition: C4Rect.cpp:26
void Default()
Definition: C4Shape.cpp:40
void Default()
Definition: C4Rect.cpp:39

References BlitMode, BurnTurnTo, C4D_Blit_Normal, Category, C4IDList::Clear(), ClosedContainer, Collection, ColorByOwner, ConSizeOff, Constructable, CrewMember, C4Rect::Default(), C4TargetRect::Default(), C4Shape::Default(), Entrance, Exclusive, Float, Fragile, GrabPutGet, GrowthType, HideInCreator, IncompleteActivity, LiftTop, Line, LineIntersect, Mass, MoveToRange, NativeCrew, NoBreath, NoGet, NoHorizontalMove, NoMassFromContents, C4ID::None, NoPushEnter, NoStabilize, NoTransferZones, Oversize, Pathfinder, PictureRect, Projectile, rC4XVer, RequireDef, Rotateable, RotatedEntrance, Shape, SilentCommands, SolidMask, TemporaryCrew, TopFace, UprightAttach, Value, and VehicleControl.

Referenced by Default().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Delete()

bool C4Def::Delete ( )
inlineoverridevirtual

Reimplemented from C4PropList.

Definition at line 216 of file C4Def.h.

216 { return false; }

◆ Denumerate()

void C4PropList::Denumerate ( C4ValueNumbers numbers)
virtualinherited

Reimplemented in C4Effect, C4AulScriptEngine, and C4Object.

Definition at line 321 of file C4PropList.cpp.

322 {
323  const C4Property * p = Properties.First();
324  while (p)
325  {
326  const_cast<C4Value &>(p->Value).Denumerate(numbers);
327  p = Properties.Next(p);
328  }
329  prototype.Denumerate(numbers);
331 }
void RemoveCyclicPrototypes()
Definition: C4PropList.cpp:399
virtual void Denumerate(C4ValueNumbers *)
Definition: C4PropList.cpp:321
void Denumerate(C4ValueNumbers *)
Definition: C4Value.cpp:251

References C4Value::Denumerate(), C4Set< T >::First(), C4Set< T >::Next(), C4PropList::RemoveCyclicPrototypes(), and C4Property::Value.

Referenced by C4Value::Denumerate(), C4Object::Denumerate(), and C4AulScriptEngine::Denumerate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Draw()

void C4Def::Draw ( C4Facet cgo,
bool  fSelected = false,
DWORD  iColor = 0,
C4Object pObj = nullptr,
int32_t  iPhaseX = 0,
int32_t  iPhaseY = 0,
C4DrawTransform trans = nullptr,
const char *  graphicsName = nullptr 
)

Definition at line 607 of file C4Def.cpp.

608 {
609  if(fSelected)
610  pDraw->DrawBoxDw(cgo.Surface, cgo.X, cgo.Y, cgo.X + cgo.Wdt - 1, cgo.Y + cgo.Hgt - 1, C4RGB(0xca, 0, 0));
611 
612  C4DefGraphics* graphics = pObj ? pObj->GetGraphics() : &Graphics;
613  if (graphicsName)
614  {
615  C4DefGraphics *other = graphics->Get(graphicsName);
616  if (other) graphics = other;
617  }
618  graphics->Draw(cgo, iColor, pObj, iPhaseX, iPhaseY, trans);
619 }
C4Draw * pDraw
Definition: C4Draw.cpp:42
#define C4RGB(r, g, b)
Definition: StdColors.h:26
C4DefGraphics * Get(const char *szGrpName)
void Draw(C4Facet &cgo, DWORD iColor, C4Object *pObj, int32_t iPhaseX, int32_t iPhaseY, C4DrawTransform *trans)
void DrawBoxDw(C4Surface *sfcDest, int iX1, int iY1, int iX2, int iY2, DWORD dwClr)
Definition: C4Draw.cpp:840
C4Surface * Surface
Definition: C4Facet.h:117
float Hgt
Definition: C4Facet.h:118
float Wdt
Definition: C4Facet.h:118
float Y
Definition: C4Facet.h:118
float X
Definition: C4Facet.h:118
C4DefGraphics * GetGraphics() const
Definition: C4Object.h:339

References C4RGB, C4DefGraphics::Draw(), C4Draw::DrawBoxDw(), C4DefGraphics::Get(), C4Object::GetGraphics(), Graphics, C4Facet::Hgt, pDraw, C4Facet::Surface, C4Facet::Wdt, C4Facet::X, and C4Facet::Y.

Referenced by C4MainMenu::ActivateGoals(), C4Object::ActivateMenu(), C4MainMenu::ActivateRules(), C4DefList::Draw(), C4MouseControl::Draw(), C4GameMessage::Draw(), C4Object::DrawPicture(), C4Game::DrawPropListSpecImage(), and C4Game::DrawTextSpecImage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ end()

Iterator C4PropList::end ( )
inlineinherited

Definition at line 211 of file C4PropList.h.

211 { return Iterator(); }

Referenced by C4PropList::AppendDataString(), C4ParticleProperties::Set(), and C4PropList::ToJSON().

Here is the caller graph for this function:

◆ EnumerateOwnFuncs()

C4String * C4PropList::EnumerateOwnFuncs ( C4String prev = nullptr) const
inherited

Definition at line 928 of file C4PropList.cpp.

929 {
930  const C4Property * p = prev ? Properties.Next(&Properties.Get(prev)) : Properties.First();
931  while (p)
932  {
933  if (p->Value.getFunction())
934  return p->Key;
935  p = Properties.Next(p);
936  }
937  return nullptr;
938 }
C4String * Key
Definition: C4PropList.h:53
C4AulFunc * getFunction() const
Definition: C4Value.h:119

References C4Set< T >::First(), C4Set< T >::Get(), C4Value::getFunction(), C4Property::Key, C4Set< T >::Next(), and C4Property::Value.

Here is the call graph for this function:

◆ Freeze()

void C4PropList::Freeze ( )
inlineinherited

Definition at line 132 of file C4PropList.h.

132 { constant = true; }

Referenced by C4PropList::FreezeAndMakeStaticRecursively().

Here is the caller graph for this function:

◆ FreezeAndMakeStaticRecursively()

C4PropListStatic * C4PropList::FreezeAndMakeStaticRecursively ( std::vector< C4Value > *  prop_lists,
const C4PropListStatic parent = nullptr,
C4String key = nullptr 
)
inherited

Definition at line 279 of file C4PropList.cpp.

280 {
281  Freeze();
282  // Already static?
283  C4PropListStatic *this_static = IsStatic();
284  if (!this_static)
285  {
286  // Make self static by creating a copy and replacing all references
287  this_static = NewStatic(GetPrototype(), parent, key);
288  this_static->Properties.Swap(&Properties); // grab properties
289  this_static->Status = Status;
290  RefSet pre_freeze_refs{Refs}; // copy to avoid iterator validity headaches
291  C4Value holder = C4VPropList(this); // add another reference to prevent premature deletion
292  for (C4Value * ref : pre_freeze_refs)
293  ref->SetPropList(this_static);
294  // store reference
295  if (prop_lists)
296  prop_lists->push_back(C4VPropList(this_static));
297  // "this" should be deleted as holder goes out of scope
298  }
299  // Iterate over sorted list of elements to make static
300  // Must iterate over sorted list because the order must be defined, just in case it's a network game
301  // and a non-static child proplist is available through different paths it should still get the same name
302  auto prop_names = this_static->GetSortedLocalProperties(false);
303  for (auto prop_name : prop_names)
304  {
305  C4Value child_val;
306  this_static->GetPropertyByS(prop_name, &child_val);
307  C4PropList *child_proplist = child_val.getPropList();
308  if (child_proplist)
309  {
310  // Avoid infinite recursion: Only freeze into unfrozen children and "true" static children
311  C4PropListStatic *child_static = child_proplist->IsStatic();
312  if (!child_static || (child_static->GetParent() == this_static && child_static->GetParentKeyName() == prop_name))
313  {
314  child_proplist->FreezeAndMakeStaticRecursively(prop_lists, this_static, prop_name);
315  }
316  }
317  }
318  return this_static;
319 }
C4Value C4VPropList(C4PropList *p)
Definition: C4Value.h:242
virtual bool GetPropertyByS(const C4String *k, C4Value *pResult) const
Definition: C4PropList.cpp:726
C4PropListStatic * FreezeAndMakeStaticRecursively(std::vector< C4Value > *prop_lists, const C4PropListStatic *parent=nullptr, C4String *key=nullptr)
Definition: C4PropList.cpp:279
std::vector< C4String * > GetSortedLocalProperties(bool add_prototype=true) const
Definition: C4PropList.cpp:545
void Freeze()
Definition: C4PropList.h:132
static C4PropListStatic * NewStatic(C4PropList *prototype, const C4PropListStatic *parent, C4String *key)
Definition: C4PropList.cpp:46
C4String * GetParentKeyName()
Definition: C4PropList.h:276
const C4PropListStatic * GetParent() const
Definition: C4PropList.h:275
C4PropList * getPropList() const
Definition: C4Value.h:116

References C4VPropList(), C4PropList::Freeze(), C4PropList::FreezeAndMakeStaticRecursively(), C4PropListStatic::GetParent(), C4PropListStatic::GetParentKeyName(), C4PropList::GetPropertyByS(), C4Value::getPropList(), C4PropList::GetPrototype(), C4PropList::GetSortedLocalProperties(), C4PropList::IsStatic(), C4PropList::NewStatic(), and C4PropList::Status.

Referenced by C4PropList::FreezeAndMakeStaticRecursively(), and C4AulScriptEngine::Link().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetActionByName() [1/2]

C4PropList * C4Def::GetActionByName ( C4String actname)

Definition at line 667 of file C4Def.cpp.

668 {
669  assert(actname);
670  // If we get the null string or ActIdle by name, return nullptr action
671  if (!actname || actname == &Strings.P[P_Idle]) return nullptr;
672  // otherwise, query actmap
673  C4Value ActMap; GetProperty(P_ActMap, &ActMap);
674  if (!ActMap.getPropList()) return nullptr;
675  C4Value Action; ActMap.getPropList()->GetPropertyByS(actname, &Action);
676  if (!Action.getPropList()) return nullptr;
677  return Action.getPropList();
678 }
@ P_Idle
@ P_ActMap
bool GetProperty(C4PropertyName k, C4Value *pResult) const
Definition: C4PropList.h:105

References C4PropList::GetProperty(), C4PropList::GetPropertyByS(), C4Value::getPropList(), C4StringTable::P, P_ActMap, P_Idle, and Strings.

Here is the call graph for this function:

◆ GetActionByName() [2/2]

C4PropList * C4Def::GetActionByName ( const char *  actname)

Definition at line 657 of file C4Def.cpp.

658 {
659  if (!actname) return nullptr;
660  C4String * actname_str = Strings.RegString(actname);
661  actname_str->IncRef();
662  C4PropList *r = GetActionByName(actname_str);
663  actname_str->DecRef();
664  return r;
665 }
C4PropList * GetActionByName(const char *actname)
Definition: C4Def.cpp:657
void DecRef()
Definition: C4StringTable.h:28
void IncRef()
Definition: C4StringTable.h:27
C4String * RegString(StdStrBuf String)

References C4RefCnt::DecRef(), C4RefCnt::IncRef(), C4StringTable::RegString(), and Strings.

Here is the call graph for this function:

◆ GetDataString()

StdStrBuf C4PropListStatic::GetDataString ( ) const
inherited

Definition at line 229 of file C4PropList.cpp.

230 {
231  StdStrBuf r;
232  if (Parent)
233  {
234  r.Take(Parent->GetDataString());
235  r.AppendChar('.');
236  }
237  assert(ParentKeyName);
238  if (ParentKeyName)
240  return r;
241 }
C4RefCntPointer< C4String > ParentKeyName
Definition: C4PropList.h:279
StdStrBuf GetDataString() const
Definition: C4PropList.cpp:229
const C4PropListStatic * Parent
Definition: C4PropList.h:278
StdStrBuf GetData() const
Definition: C4StringTable.h:50
void AppendChar(char cChar)
Definition: StdBuf.h:588
void Take(char *pnData)
Definition: StdBuf.h:457

References StdStrBuf::Append(), StdStrBuf::AppendChar(), C4String::GetData(), C4PropListStatic::GetDataString(), C4PropListStatic::Parent, C4PropListStatic::ParentKeyName, and StdStrBuf::Take().

Referenced by C4PropertyPath::C4PropertyPath(), C4PropListStatic::GetDataString(), C4AulFunc::GetFullName(), C4DefScriptHost::Parse(), and C4AulScriptContext::ReturnDump().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetDef() [1/2]

C4Def const* C4Def::GetDef ( ) const
inlineoverridevirtual

Reimplemented from C4PropList.

Definition at line 214 of file C4Def.h.

214 { return this; }

◆ GetDef() [2/2]

C4Def* C4Def::GetDef ( )
inlineoverridevirtual

Reimplemented from C4PropList.

Definition at line 215 of file C4Def.h.

215 { return this; }

◆ GetEffect()

C4Effect * C4PropList::GetEffect ( )
virtualinherited

Reimplemented in C4Effect.

Definition at line 678 of file C4PropList.cpp.

679 {
680  if (GetPrototype()) return GetPrototype()->GetEffect();
681  return nullptr;
682 }
virtual C4Effect * GetEffect()
Definition: C4PropList.cpp:678

References C4PropList::GetEffect(), and C4PropList::GetPrototype().

Referenced by C4ValueConv< C4Effect * >::_FromC4V(), and C4PropList::GetEffect().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetFunc() [1/3]

C4AulFunc* C4PropList::GetFunc ( C4PropertyName  k) const
inlineinherited

◆ GetFunc() [2/3]

C4AulFunc * C4PropList::GetFunc ( C4String k) const
inherited

Definition at line 772 of file C4PropList.cpp.

773 {
774  assert(k);
775  if (Properties.Has(k))
776  {
777  return Properties.Get(k).Value.getFunction();
778  }
779  if (GetPrototype())
780  {
781  return GetPrototype()->GetFunc(k);
782  }
783  return nullptr;
784 }

References C4Set< T >::Get(), C4PropList::GetFunc(), C4Value::getFunction(), C4PropList::GetPrototype(), C4Set< T >::Has(), and C4Property::Value.

Here is the call graph for this function:

◆ GetFunc() [3/3]

C4AulFunc * C4PropList::GetFunc ( const char *  k) const
inherited

Definition at line 786 of file C4PropList.cpp.

787 {
788  assert(s);
789  if (s[0] == '~') ++s;
790  C4String * k = Strings.FindString(s);
791  // this string is entirely unused
792  if (!k)
793  return nullptr;
794  return GetFunc(k);
795 }
C4String * FindString(const char *strString) const

References C4StringTable::FindString(), C4PropList::GetFunc(), s, and Strings.

Here is the call graph for this function:

◆ GetMainFace()

C4Facet& C4Def::GetMainFace ( C4DefGraphics pGraphics,
DWORD  dwClr = 0 
)
inline

Definition at line 210 of file C4Def.h.

210 { MainFace.Surface=pGraphics->GetBitmap(dwClr); return MainFace; }
C4Surface * GetBitmap(DWORD dwClr=0)

References C4DefGraphics::GetBitmap(), MainFace, and C4Facet::Surface.

Here is the call graph for this function:

◆ GetMapScriptLayer()

class C4MapScriptLayer * C4PropList::GetMapScriptLayer ( )
virtualinherited

Reimplemented in C4MapScriptLayer.

Definition at line 660 of file C4PropList.cpp.

661 {
662  if (GetPrototype()) return GetPrototype()->GetMapScriptLayer();
663  return nullptr;
664 }
virtual class C4MapScriptLayer * GetMapScriptLayer()
Definition: C4PropList.cpp:660

References C4PropList::GetMapScriptLayer(), and C4PropList::GetPrototype().

Referenced by C4MapScriptAlgoLayer::C4MapScriptAlgoLayer(), and C4PropList::GetMapScriptLayer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetMapScriptMap()

class C4MapScriptMap * C4PropList::GetMapScriptMap ( )
virtualinherited

Reimplemented in C4MapScriptMap.

Definition at line 666 of file C4PropList.cpp.

667 {
668  if (GetPrototype()) return GetPrototype()->GetMapScriptMap();
669  return nullptr;
670 }
virtual class C4MapScriptMap * GetMapScriptMap()
Definition: C4PropList.cpp:666

References C4PropList::GetMapScriptMap(), and C4PropList::GetPrototype().

Referenced by C4PropList::GetMapScriptMap().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetName()

const char * C4PropListStatic::GetName ( ) const
overridevirtualinherited

Reimplemented from C4PropList.

Definition at line 243 of file C4PropList.cpp.

244 {
245  const C4String * s = GetPropertyStr(P_Name);
246  if (!s) s = ParentKeyName;
247  if (!s) return "";
248  return s->GetCStr();
249 }
@ P_Name
C4String * GetPropertyStr(C4PropertyName k) const
Definition: C4PropList.cpp:744

References C4PropList::GetPropertyStr(), P_Name, C4PropListStatic::ParentKeyName, and s.

Referenced by C4MainMenu::ActivateGoals(), C4MainMenu::ActivateRules(), C4Object::AssignRemoval(), C4DefGraphicsAdapt::CompileFunc(), ConstructionCheck(), C4ObjectInfoCore::Default(), C4Command::Fail(), C4GameParameters::GetGameGoalString(), C4ObjectList::GetNameList(), LoadDefCore(), C4DefScriptHost::Parse(), and C4EditCursor::UpdateStatusBar().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetObject() [1/2]

C4Object * C4PropList::GetObject ( )
virtualinherited

Reimplemented in C4Object.

Definition at line 636 of file C4PropList.cpp.

637 {
638  if (GetPrototype()) return GetPrototype()->GetObject();
639  return nullptr;
640 }
virtual C4Object * GetObject()
Definition: C4PropList.cpp:636

References C4PropList::GetObject(), and C4PropList::GetPrototype().

Referenced by C4Value::_getObj(), C4EditCursor::AddToSelection(), C4PropertyPath::C4PropertyPath(), C4ScriptGuiWindowAction::ClearPointers(), C4GameMessage::Draw(), C4ScriptGuiWindowAction::ExecuteCommand(), FnGetEffectsFor(), C4Value::getObj(), C4PropList::GetObject(), C4GameMessage::Init(), Object(), C4EditCursor::RemoveFromSelection(), and C4ScriptGuiWindowProperty::Set().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetObject() [2/2]

C4Object const * C4PropList::GetObject ( ) const
virtualinherited

Reimplemented in C4Object.

Definition at line 642 of file C4PropList.cpp.

643 {
644  if (GetPrototype()) return GetPrototype()->GetObject();
645  return nullptr;
646 }

References C4PropList::GetObject(), and C4PropList::GetPrototype().

Here is the call graph for this function:

◆ GetParent()

const C4PropListStatic* C4PropListStatic::GetParent ( ) const
inlineinherited

Definition at line 275 of file C4PropList.h.

275 { return Parent; }

References C4PropListStatic::Parent.

Referenced by C4ScriptHost::CopyPropList(), C4PropList::FreezeAndMakeStaticRecursively(), and C4Value::ToJSON().

Here is the caller graph for this function:

◆ GetParentKeyName()

C4String* C4PropListStatic::GetParentKeyName ( )
inlineinherited

Definition at line 276 of file C4PropList.h.

276 { return ParentKeyName; }

References C4PropListStatic::ParentKeyName.

Referenced by C4PropList::FreezeAndMakeStaticRecursively().

Here is the caller graph for this function:

◆ GetPlane()

int32_t C4Def::GetPlane ( )
inline

Definition at line 211 of file C4Def.h.

211 { return GetPropertyInt(P_Plane); }
@ P_Plane
int32_t GetPropertyInt(C4PropertyName k, int32_t default_val=0) const
Definition: C4PropList.cpp:855

References C4PropList::GetPropertyInt(), and P_Plane.

Referenced by C4Object::Init(), and C4DefScriptHost::Parse().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetProperties()

C4ValueArray * C4PropList::GetProperties ( ) const
virtualinherited

Reimplemented in C4Effect, and C4Object.

Definition at line 883 of file C4PropList.cpp.

884 {
885  C4ValueArray * a;
886  int i = 0;
887  const bool hasInheritedProperties = GetPrototype() != nullptr;
888  if (hasInheritedProperties)
889  {
891  i = a->GetSize();
892  a->SetSize(i + Properties.GetSize());
893  }
894  else
895  {
896  a = new C4ValueArray(Properties.GetSize());
897  i = 0;
898  }
899  const C4Property * p = Properties.First();
900  while (p)
901  {
902  C4String *newPropertyName = p->Key;
903  assert(newPropertyName != nullptr && "Proplist key is nullpointer");
904  // Do we need to check for duplicate property names?
905  bool skipProperty = false;
906  if (hasInheritedProperties)
907  {
908  for (size_t j = 0; j < i; ++j)
909  {
910  if ((*a)[j].getStr() != newPropertyName) continue;
911  skipProperty = true;
912  break;
913  }
914  }
915  if (!skipProperty)
916  {
917  (*a)[i++] = C4VString(newPropertyName);
918  assert(((*a)[i - 1].GetType() == C4V_String) && "Proplist key is non-string");
919  }
920  p = Properties.Next(p);
921  }
922  // We might have added less properties than initially intended.
923  if (hasInheritedProperties)
924  a->SetSize(i);
925  return a;
926 }
#define a
@ C4V_String
Definition: C4Value.h:29
C4Value C4VString(C4String *pStr)
Definition: C4Value.h:243
virtual C4ValueArray * GetProperties() const
Definition: C4PropList.cpp:883

References a, C4V_String, C4VString(), C4Set< T >::First(), C4PropList::GetProperties(), C4PropList::GetPrototype(), C4Set< T >::GetSize(), C4Property::Key, and C4Set< T >::Next().

Referenced by C4ScriptGuiWindow::CreateFromPropList(), C4AulScriptEngine::GetFunctionNames(), C4PropList::GetProperties(), C4Object::GetProperties(), C4Effect::GetProperties(), and C4ScriptGuiWindowProperty::Set().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetProperty()

bool C4PropList::GetProperty ( C4PropertyName  k,
C4Value pResult 
) const
inlineinherited

◆ GetPropertyArray()

C4ValueArray * C4PropList::GetPropertyArray ( C4PropertyName  n) const
inherited

Definition at line 758 of file C4PropList.cpp.

759 {
760  C4String * k = &Strings.P[n];
761  if (Properties.Has(k))
762  {
763  return Properties.Get(k).Value.getArray();
764  }
765  if (GetPrototype())
766  {
767  return GetPrototype()->GetPropertyArray(n);
768  }
769  return nullptr;
770 }
C4ValueArray * GetPropertyArray(C4PropertyName n) const
Definition: C4PropList.cpp:758
C4ValueArray * getArray() const
Definition: C4Value.h:118

References C4Set< T >::Get(), C4Value::getArray(), C4PropList::GetPropertyArray(), C4PropList::GetPrototype(), C4Set< T >::Has(), C4StringTable::P, Strings, and C4Property::Value.

Referenced by C4EditCursor::DoContextMenu(), C4PropList::GetPropertyArray(), and C4FoWLight::Update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPropertyBool()

int32_t C4PropList::GetPropertyBool ( C4PropertyName  n,
bool  default_val = false 
) const
inherited

Definition at line 841 of file C4PropList.cpp.

842 {
843  C4String * k = &Strings.P[n];
844  if (Properties.Has(k))
845  {
846  return Properties.Get(k).Value.getBool();
847  }
848  if (GetPrototype())
849  {
850  return GetPrototype()->GetPropertyBool(n, default_val);
851  }
852  return default_val;
853 }
int32_t GetPropertyBool(C4PropertyName n, bool default_val=false) const
Definition: C4PropList.cpp:841
bool getBool() const
Definition: C4Value.h:113

References C4Set< T >::Get(), C4Value::getBool(), C4PropList::GetPropertyBool(), C4PropList::GetPrototype(), C4Set< T >::Has(), C4StringTable::P, Strings, and C4Property::Value.

Referenced by C4Object::ExecLife(), and C4PropList::GetPropertyBool().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPropertyByS()

bool C4PropList::GetPropertyByS ( const C4String k,
C4Value pResult 
) const
virtualinherited

Reimplemented in C4Effect, and C4Object.

Definition at line 726 of file C4PropList.cpp.

727 {
728  if (Properties.Has(k))
729  {
730  *pResult = Properties.Get(k).Value;
731  return true;
732  }
733  else if (k == &Strings.P[P_Prototype])
734  {
735  *pResult = prototype;
736  return true;
737  }
738  else if(GetPrototype())
739  return GetPrototype()->GetPropertyByS(k, pResult);
740  else
741  return false;
742 }

References C4Set< T >::Get(), C4PropList::GetPropertyByS(), C4PropList::GetPrototype(), C4Set< T >::Has(), C4StringTable::P, P_Prototype, Strings, and C4Property::Value.

Referenced by C4Value::CompileFunc(), C4ScriptGuiWindow::CreateFromPropList(), C4PropList::FreezeAndMakeStaticRecursively(), GetActionByName(), C4DefList::GetAllDefs(), C4PropList::GetProperty(), C4PropList::GetPropertyByS(), C4Object::GetPropertyByS(), C4Effect::GetPropertyByS(), C4Game::GetTranslatedString(), C4ValueArraySortPropertycomp::operator()(), C4ScriptGuiWindowProperty::Set(), C4Object::SetActionByName(), C4PropList::ThawRecursively(), C4ScriptHost::UnlinkOwnedFunctions(), C4GraphicsOverlay::UpdateFacet(), and C4AulCompiler::ConstexprEvaluator::visit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPropertyInt()

int32_t C4PropList::GetPropertyInt ( C4PropertyName  k,
int32_t  default_val = 0 
) const
inherited

Definition at line 855 of file C4PropList.cpp.

856 {
857  C4String * k = &Strings.P[n];
858  if (Properties.Has(k))
859  {
860  return Properties.Get(k).Value.getInt();
861  }
862  if (GetPrototype())
863  {
864  return GetPrototype()->GetPropertyInt(n, default_val);
865  }
866  return default_val;
867 }
int32_t getInt() const
Definition: C4Value.h:112

References C4Set< T >::Get(), C4Value::getInt(), C4PropList::GetPropertyInt(), C4PropList::GetPrototype(), C4Set< T >::Has(), C4StringTable::P, Strings, and C4Property::Value.

Referenced by C4MouseControl::ButtonUpDragScript(), C4MapScriptAlgoEllipse::C4MapScriptAlgoEllipse(), C4MapScriptAlgoLines::C4MapScriptAlgoLines(), C4MapScriptAlgoOffset::C4MapScriptAlgoOffset(), C4MapScriptAlgoPolygon::C4MapScriptAlgoPolygon(), C4MapScriptAlgoRect::C4MapScriptAlgoRect(), C4MapScriptAlgoRndChecker::C4MapScriptAlgoRndChecker(), C4MapScriptAlgoRotate::C4MapScriptAlgoRotate(), C4MapScriptAlgoScale::C4MapScriptAlgoScale(), C4MapScriptAlgoTurbulence::C4MapScriptAlgoTurbulence(), C4Object::Contact(), C4Object::ContactAction(), C4Object::DoBreath(), C4Object::DoEnergy(), C4MouseControl::DragNone(), C4Object::Draw(), C4Object::DrawActionFace(), C4Game::DrawPropListSpecImage(), C4Object::DrawTopFace(), C4Command::Enter(), C4Object::ExecLife(), C4Object::ExecMovement(), C4ValueProviderAction::Execute(), C4Command::Exit(), C4Command::FlightControl(), C4SoundModifierList::Get(), C4SoundModifier::GetBoolProp(), C4SoundModifier::GetFloatProp(), GetPlane(), C4PropList::GetPropertyInt(), C4Object::GetSolidMaskPlane(), C4Object::Init(), C4Object::IsVisible(), C4Command::MoveTo(), ObjectActionThrow(), ObjectComDrop(), ObjectComJump(), C4Game::PlaceAnimal(), C4Game::PlaceVegetation(), C4Object::Push(), C4Command::Put(), C4Object::ResetProperty(), C4Object::SetAction(), C4Object::SetDir(), C4Object::SetOCF(), C4Object::SetPhase(), C4Object::SideBounds(), C4Command::Throw(), C4Object::UpdateActionFace(), C4MouseControl::UpdateCursorTarget(), C4GraphicsOverlay::UpdateFacet(), C4Object::UpdateFlipDir(), C4Object::UpdateOCF(), and C4Object::VerticalBounds().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPropertyP()

C4PropertyName C4PropList::GetPropertyP ( C4PropertyName  k) const
inherited

Definition at line 824 of file C4PropList.cpp.

825 {
826  C4String * k = &Strings.P[n];
827  if (Properties.Has(k))
828  {
829  C4String * v = Properties.Get(k).Value.getStr();
830  if (v >= &Strings.P[0] && v < &Strings.P[P_LAST])
831  return C4PropertyName(v - &Strings.P[0]);
832  return P_LAST;
833  }
834  if (GetPrototype())
835  {
836  return GetPrototype()->GetPropertyP(n);
837  }
838  return P_LAST;
839 }
C4PropertyName
@ P_LAST
C4PropertyName GetPropertyP(C4PropertyName k) const
Definition: C4PropList.cpp:824
C4String * getStr() const
Definition: C4Value.h:117

References C4Set< T >::Get(), C4PropList::GetPropertyP(), C4PropList::GetPrototype(), C4Value::getStr(), C4Set< T >::Has(), C4StringTable::P, P_LAST, Strings, and C4Property::Value.

Referenced by C4Object::ContactAction(), C4GameObjects::CrossCheck(), C4Object::ExecMovement(), C4Object::GetProcedure(), C4PropList::GetPropertyP(), ObjectComDrop(), C4Object::SetAction(), C4Object::SideBounds(), and C4Object::VerticalBounds().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPropertyPropList()

C4PropList * C4PropList::GetPropertyPropList ( C4PropertyName  k) const
inherited

Definition at line 869 of file C4PropList.cpp.

870 {
871  C4String * k = &Strings.P[n];
872  if (Properties.Has(k))
873  {
874  return Properties.Get(k).Value.getPropList();
875  }
876  if (GetPrototype())
877  {
878  return GetPrototype()->GetPropertyPropList(n);
879  }
880  return nullptr;
881 }
C4PropList * GetPropertyPropList(C4PropertyName k) const
Definition: C4PropList.cpp:869

References C4Set< T >::Get(), C4PropList::GetPropertyPropList(), C4Value::getPropList(), C4PropList::GetPrototype(), C4Set< T >::Has(), C4StringTable::P, Strings, and C4Property::Value.

Referenced by C4MapScriptAlgoLayer::C4MapScriptAlgoLayer(), C4Game::DrawPropListSpecImage(), C4PropList::GetPropertyPropList(), and C4GameMessage::Init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPropertyStr()

C4String * C4PropList::GetPropertyStr ( C4PropertyName  k) const
inherited

Definition at line 744 of file C4PropList.cpp.

745 {
746  C4String * k = &Strings.P[n];
747  if (Properties.Has(k))
748  {
749  return Properties.Get(k).Value.getStr();
750  }
751  if (GetPrototype())
752  {
753  return GetPrototype()->GetPropertyStr(n);
754  }
755  return nullptr;
756 }

References C4Set< T >::Get(), C4PropList::GetPropertyStr(), C4PropList::GetPrototype(), C4Value::getStr(), C4Set< T >::Has(), C4StringTable::P, Strings, and C4Property::Value.

Referenced by C4Game::DrawPropListSpecImage(), C4Object::ExecAction(), C4PropList::GetName(), C4PropListStatic::GetName(), C4PropList::GetPropertyStr(), C4Game::GetTranslatedString(), C4Object::SetAction(), C4Object::SetDir(), C4MouseControl::UpdateCursorTarget(), and C4GraphicsOverlay::UpdateFacet().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPropListNumbered()

C4PropListNumbered * C4PropList::GetPropListNumbered ( )
virtualinherited

Reimplemented in C4PropListNumbered.

Definition at line 672 of file C4PropList.cpp.

673 {
674  if (GetPrototype()) return GetPrototype()->GetPropListNumbered();
675  return nullptr;
676 }
virtual C4PropListNumbered * GetPropListNumbered()
Definition: C4PropList.cpp:672

References C4PropList::GetPropListNumbered(), and C4PropList::GetPrototype().

Referenced by C4Effect::CompileFunc(), C4Value::CompileFunc(), C4AulExec::DirectExec(), and C4PropList::GetPropListNumbered().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPrototype()

C4PropList* C4PropList::GetPrototype ( ) const
inlineinherited

◆ GetSortedLocalProperties() [1/2]

std::vector< C4String * > C4PropList::GetSortedLocalProperties ( bool  add_prototype = true) const
inherited

Definition at line 545 of file C4PropList.cpp.

546 {
547  // return property list without descending into prototype
548  std::list<const C4Property *> sorted_props = Properties.GetSortedListOfElementPointers();
549  std::vector< C4String * > result;
550  result.reserve(sorted_props.size() + add_prototype);
551  if (add_prototype) result.push_back(&::Strings.P[P_Prototype]); // implicit prototype for every prop list
552  for (auto p : sorted_props) result.push_back(p->Key);
553  return result;
554 }

References C4Set< T >::GetSortedListOfElementPointers(), C4StringTable::P, P_Prototype, and Strings.

Referenced by C4PropList::FreezeAndMakeStaticRecursively(), and C4Game::GetTranslatedString().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetSortedLocalProperties() [2/2]

std::vector< C4String * > C4PropList::GetSortedLocalProperties ( const char *  prefix,
const C4PropList ignore_overridden 
) const
inherited

Definition at line 556 of file C4PropList.cpp.

557 {
558  // return property list without descending into prototype
559  // ignore properties that have been overridden by proplist given in ignore_overridden or any of its prototypes up to and excluding this
560  std::vector< C4String * > result;
561  for (const C4Property *pp = Properties.First(); pp; pp = Properties.Next(pp))
562  if (pp->Key != &::Strings.P[P_Prototype])
563  if (!prefix || pp->Key->GetData().BeginsWith(prefix))
564  {
565  // Override check
566  const C4PropList *check = ignore_overridden;
567  bool overridden = false;
568  if (check && check != this)
569  {
570  if (check->HasProperty(pp->Key)) { overridden = true; break; }
571  check = check->GetPrototype();
572  }
573  result.push_back(pp->Key);
574  }
575  // Sort
576  std::sort(result.begin(), result.end(), [](const C4String *a, const C4String *b) -> bool
577  {
578  return strcmp(a->GetCStr(), b->GetCStr()) < 0;
579  });
580  return result;
581 }
#define b
bool HasProperty(C4String *k) const
Definition: C4PropList.h:122

References a, b, C4Set< T >::First(), C4PropList::GetPrototype(), C4PropList::HasProperty(), C4Set< T >::Next(), C4StringTable::P, P_Prototype, and Strings.

Here is the call graph for this function:

◆ GetSortedProperties()

std::vector< C4String * > C4PropList::GetSortedProperties ( const char *  prefix,
C4PropList ignore_parent = nullptr 
) const
inherited

Definition at line 601 of file C4PropList.cpp.

602 {
603  struct sort_cmp {
604  bool operator() (const C4String *a, const C4String *b) const
605  {
606  return strcmp(a->GetCStr(), b->GetCStr()) < 0;
607  }
608  };
609  // Return property list with descending into prototype
610  // But do not include Prototype property
611  std::vector< C4String * > result = GetUnsortedProperties(prefix, ignore_parent);
612  // Sort and remove duplicates
613  std::set< C4String *, sort_cmp > result_set(result.begin(), result.end());
614  result.assign(result_set.begin(), result_set.end());
615  return result;
616 }
std::vector< C4String * > GetUnsortedProperties(const char *prefix, C4PropList *ignore_parent=nullptr) const
Definition: C4PropList.cpp:583

References a, b, and C4PropList::GetUnsortedProperties().

Here is the call graph for this function:

◆ GetUnsortedProperties()

std::vector< C4String * > C4PropList::GetUnsortedProperties ( const char *  prefix,
C4PropList ignore_parent = nullptr 
) const
inherited

Definition at line 583 of file C4PropList.cpp.

584 {
585  // Return property list with descending into prototype
586  // But do not include Prototype property
587  std::vector< C4String * > result;
588  const C4PropList *p = this;
589  do
590  {
591  for (const C4Property *pp = p->Properties.First(); pp; pp = p->Properties.Next(pp))
592  if (pp->Key != &::Strings.P[P_Prototype])
593  if (!prefix || pp->Key->GetData().BeginsWith(prefix))
594  result.push_back(pp->Key);
595  p = p->GetPrototype();
596  if (p == ignore_parent) break;
597  } while (p);
598  return result;
599 }

References C4Set< T >::First(), C4PropList::GetPrototype(), C4Set< T >::Next(), C4StringTable::P, P_Prototype, and Strings.

Referenced by C4PropList::GetSortedProperties(), and C4PropList::ThawRecursively().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetValue()

int32_t C4Def::GetValue ( C4Object pInBase,
int32_t  iBuyPlayer 
)

Definition at line 621 of file C4Def.cpp.

622 {
623  C4Value r = Call(PSF_CalcDefValue, &C4AulParSet(pInBase, iBuyPlayer));
624  int32_t iValue = Value;
625  if (r != C4VNull)
626  iValue = r.getInt();
627  // do any adjustments based on where the item is bought
628  if (pInBase)
629  {
630  r = pInBase->Call(PSF_CalcBuyValue, &C4AulParSet(this, iValue));
631  if (r != C4VNull)
632  iValue = r.getInt();
633  }
634  return iValue;
635 }
#define PSF_CalcDefValue
Definition: C4GameScript.h:81
#define PSF_CalcBuyValue
Definition: C4GameScript.h:91
const C4Value C4VNull
Definition: C4Value.cpp:30

References C4VNull, C4PropList::Call(), C4Value::getInt(), PSF_CalcBuyValue, PSF_CalcDefValue, and Value.

Referenced by C4Menu::DrawElement(), and C4Object::GetValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HasProperty()

bool C4PropList::HasProperty ( C4String k) const
inlineinherited

Definition at line 122 of file C4PropList.h.

122 { return Properties.Has(k); }

References C4Set< T >::Has().

Referenced by C4AulScriptEngine::GetFunctionNames(), C4PropList::GetSortedLocalProperties(), C4MapScriptAlgo::GetXYProps(), and C4AulCompiler::ConstantResolver::visit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IncludeDefinition()

void C4Def::IncludeDefinition ( C4Def pIncludeDef)

Definition at line 641 of file C4Def.cpp.

642 {
643  // inherited rank infos and clonk names, if this definition doesn't have its own
644  if (!fClonkNamesOwned) pClonkNames = pIncludeDef->pClonkNames;
645  if (!fRankNamesOwned) pRankNames = pIncludeDef->pRankNames;
646  if (!fRankSymbolsOwned) { pRankSymbols = pIncludeDef->pRankSymbols; iNumRankSymbols = pIncludeDef->iNumRankSymbols; }
647 }

References fClonkNamesOwned, fRankNamesOwned, fRankSymbolsOwned, iNumRankSymbols, pClonkNames, pRankNames, and pRankSymbols.

Referenced by C4ScriptHost::Parse().

Here is the caller graph for this function:

◆ IsFrozen()

bool C4PropList::IsFrozen ( ) const
inlineinherited

Definition at line 135 of file C4PropList.h.

135 { return constant; }

Referenced by C4PropList::ThawRecursively().

Here is the caller graph for this function:

◆ IsNumbered()

virtual bool C4PropList::IsNumbered ( ) const
inlinevirtualinherited

Reimplemented in C4PropListNumbered.

Definition at line 92 of file C4PropList.h.

92 { return false; }

Referenced by C4Value::Denumerate(), and C4PropList::operator==().

Here is the caller graph for this function:

◆ IsStatic() [1/2]

const class C4PropListStatic* C4PropList::IsStatic ( ) const
inlineinherited

Definition at line 90 of file C4PropList.h.

90 { return const_cast<C4PropList*>(this)->IsStatic(); }

References C4PropList::IsStatic().

Referenced by C4PropList::IsStatic().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsStatic() [2/2]

C4PropListStatic* C4PropListStatic::IsStatic ( )
inlineoverridevirtualinherited

Reimplemented from C4PropList.

Definition at line 271 of file C4PropList.h.

271 { return this; }

Referenced by C4AulCompiler::ConstantResolver::visit().

Here is the caller graph for this function:

◆ Load()

bool C4Def::Load ( C4Group hGroup,
StdMeshSkeletonLoader loader,
DWORD  dwLoadWhat,
const char *  szLanguage,
class C4SoundSystem pSoundSystem = nullptr,
C4DefGraphicsPtrBackup gfx_backup = nullptr 
)

Definition at line 106 of file c4def-handle.cpp.

107 {
108  // Assume ID has been set already!
109 
110  // Register with script engine
111  ::ScriptEngine.RegisterGlobalConstant(id.ToString(), C4VPropList(this));
112  ParentKeyName = ::Strings.RegString(id.ToString());
114 
115  if(!Script.Load(hGroup, "Script.c", nullptr, nullptr))
116  {
117  return false;
118  }
119 
120  return true;
121 }
void RegisterGlobalConstant(const char *szName, const C4Value &rValue)
Definition: C4Aul.cpp:123
virtual bool Load(C4Group &hGroup, const char *szFilename, const char *szLanguage, C4LangStringTable *pLocalTable)
void Reg2List(C4AulScriptEngine *pEngine)

References C4VPropList(), C4ScriptHost::Load(), C4PropListStatic::ParentKeyName, C4ScriptHost::Reg2List(), C4AulScriptEngine::RegisterGlobalConstant(), C4StringTable::RegString(), Script, ScriptEngine, and Strings.

Referenced by c4_mapgen_handle_set_map_library(), C4DefList::Load(), and C4DefList::Reload().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LoadActMap()

bool C4Def::LoadActMap ( C4Group hGroup)
protected

◆ LoadDefCore()

bool C4Def::LoadDefCore ( C4Group hGroup)

Definition at line 141 of file C4Def.cpp.

142 {
143  StdStrBuf Source;
144  if (hGroup.LoadEntryString(C4CFN_DefCore,&Source))
145  {
146  StdStrBuf Name = hGroup.GetFullName() + (const StdStrBuf &)FormatString("%cDefCore.txt", DirectorySeparator);
147  if (!Compile(Source.getData(), Name.getData()))
148  return false;
149  Source.Clear();
150 
151  // Check mass
152  if (Mass < 0)
153  {
154  DebugLogF("WARNING: Def %s (%s) at %s has invalid mass!", GetName(), id.ToString(), hGroup.GetFullName().getData());
155  Mass = 0;
156  }
157 
158  return true;
159  }
160  return false;
161 }
#define C4CFN_DefCore
Definition: C4Components.h:46
bool DebugLogF(const char *strMessage ...)
Definition: C4Log.cpp:290
#define DirectorySeparator
bool Compile(const char *szSource, const char *szName)
Definition: C4Def.cpp:171
StdStrBuf GetFullName() const
Definition: C4Group.cpp:2638
bool LoadEntryString(const char *entry_name, StdStrBuf *buffer)
Definition: C4Group.cpp:2430
const char * GetName() const override
Definition: C4PropList.cpp:243
const char * getData() const
Definition: StdBuf.h:442
void Clear()
Definition: StdBuf.h:466

References C4CFN_DefCore, StdStrBuf::Clear(), Compile(), DebugLogF(), DirectorySeparator, FormatString(), StdStrBuf::getData(), C4Group::GetFullName(), C4PropListStatic::GetName(), C4Group::LoadEntryString(), and Mass.

Referenced by DefFileGetID().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ New()

C4PropList * C4PropList::New ( C4PropList prototype = nullptr)
staticinherited

Definition at line 40 of file C4PropList.cpp.

41 {
42  C4PropList * r = new C4PropListScript(prototype);
43  return r;
44 }

Referenced by CompileNewFunc(), FnPlaceVegetation(), C4ScriptGuiWindowProperty::ToC4Value(), C4ScriptGuiWindow::ToC4Value(), and C4AulCompiler::ConstexprEvaluator::visit().

Here is the caller graph for this function:

◆ NewStatic()

C4PropListStatic * C4PropList::NewStatic ( C4PropList prototype,
const C4PropListStatic parent,
C4String key 
)
staticinherited

Definition at line 46 of file C4PropList.cpp.

47 {
48  return new C4PropListStatic(prototype, parent, key);
49 }

Referenced by C4PropListScen::C4PropListScen(), C4ScriptHost::CopyPropList(), C4PropList::FreezeAndMakeStaticRecursively(), C4ScenarioParameterDefs::RegisterScriptConstants(), and C4AulCompiler::ConstexprEvaluator::visit().

Here is the caller graph for this function:

◆ operator==()

bool C4PropList::operator== ( const C4PropList b) const
inherited

Definition at line 348 of file C4PropList.cpp.

349 {
350  // every numbered proplist has a unique number and is only identical to itself
351  if (this == &b) return true;
352  if (IsNumbered() || b.IsNumbered()) return false;
353  if (Properties.GetSize() != b.Properties.GetSize()) return false;
354  if (GetDef() != b.GetDef()) return false;
355  const C4Property * p = Properties.First();
356  while (p)
357  {
358  const C4Property & bp = b.Properties.Get(p->Key);
359  if (!bp) return false;
360  if (p->Value != bp.Value) return false;
361  p = Properties.Next(p);
362  }
363  return true;
364 }
virtual bool IsNumbered() const
Definition: C4PropList.h:92
virtual C4Def const * GetDef() const
Definition: C4PropList.cpp:654

References b, C4Set< T >::First(), C4PropList::GetDef(), C4Set< T >::GetSize(), C4PropList::IsNumbered(), C4Property::Key, C4Set< T >::Next(), and C4Property::Value.

Here is the call graph for this function:

◆ RefCompileFunc()

void C4PropListStatic::RefCompileFunc ( StdCompiler pComp,
C4ValueNumbers numbers 
) const
inherited

Definition at line 216 of file C4PropList.cpp.

217 {
218  assert(!pComp->isDeserializer());
219  if (Parent)
220  {
221  Parent->RefCompileFunc(pComp, numbers);
223  }
224  if (!ParentKeyName)
225  pComp->excCorrupt("C4PropListStatic::RefCompileFunc without ParentKeyName");
227 }
void RefCompileFunc(StdCompiler *pComp, C4ValueNumbers *numbers) const
Definition: C4PropList.cpp:216
void excCorrupt(const char *szMessage,...)
Definition: StdCompiler.h:249

References StdCompiler::excCorrupt(), C4String::GetData(), StdCompiler::isDeserializer(), mkParAdapt(), C4PropListStatic::Parent, C4PropListStatic::ParentKeyName, StdCompiler::RCT_ID, C4PropListStatic::RefCompileFunc(), StdCompiler::SEP_PART, StdCompiler::Separator(), and StdCompiler::Value().

Referenced by C4Effect::CompileFunc(), C4Value::CompileFunc(), and C4PropListStatic::RefCompileFunc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveCyclicPrototypes()

void C4PropList::RemoveCyclicPrototypes ( )
inherited

Definition at line 399 of file C4PropList.cpp.

400 {
401  // clear any cyclic prototype chains
402  // Use prototype.getPropList() instead of GetPrototype() because denumeration might not be completed yet
403  for(C4PropList * it = prototype.getPropList(); it; it = it->prototype.getPropList())
404  if(it == this)
405  {
406  prototype.Set0();
407  }
408 }
void Set0()
Definition: C4Value.h:332

References C4Value::getPropList(), and C4Value::Set0().

Referenced by C4PropList::Denumerate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ResetIncludeDependencies()

void C4Def::ResetIncludeDependencies ( )

Definition at line 649 of file C4Def.cpp.

650 {
651  // clear all pointers into foreign defs
652  if (!fClonkNamesOwned) pClonkNames = nullptr;
653  if (!fRankNamesOwned) pRankNames = nullptr;
654  if (!fRankSymbolsOwned) { pRankSymbols = nullptr; iNumRankSymbols = 0; }
655 }

References fClonkNamesOwned, fRankNamesOwned, fRankSymbolsOwned, iNumRankSymbols, pClonkNames, pRankNames, and pRankSymbols.

◆ ResetProperty()

void C4PropList::ResetProperty ( C4String k)
virtualinherited

Reimplemented in C4Effect, and C4Object.

Definition at line 961 of file C4PropList.cpp.

962 {
963  if (k == &Strings.P[P_Prototype])
964  prototype.Set0();
965  else
966  Properties.Remove(k);
967 }

References C4StringTable::P, P_Prototype, C4Set< T >::Remove(), C4Value::Set0(), and Strings.

Referenced by C4Object::ResetProperty(), C4Effect::ResetProperty(), C4PropList::SetName(), and C4ScriptHost::UnlinkOwnedFunctions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Save()

bool C4Def::Save ( C4Group hGroup)

Definition at line 163 of file C4Def.cpp.

164 {
165  StdStrBuf Out;
166  if (! Decompile(&Out, FormatString("%s::DefCore.txt", id.ToString()).getData()) )
167  return false;
168  return hGroup.Add(C4CFN_DefCore,Out,false,true);
169 }
bool Decompile(StdStrBuf *pOut, const char *szName)
Definition: C4Def.cpp:176
bool Add(const char *filename, const char *entry_name)
Definition: C4Group.cpp:1621

References C4Group::Add(), C4CFN_DefCore, Decompile(), and FormatString().

Here is the call graph for this function:

◆ SetName()

void C4PropList::SetName ( const char *  NewName = nullptr)
virtualinherited

Reimplemented in C4Object.

Definition at line 625 of file C4PropList.cpp.

626 {
627  if (!NewName)
629  else
630  {
631  SetProperty(P_Name, C4VString(NewName));
632  }
633 }
virtual void ResetProperty(C4String *k)
Definition: C4PropList.cpp:961
void SetProperty(C4PropertyName k, const C4Value &to)
Definition: C4PropList.h:124

References C4VString(), C4StringTable::P, P_Name, C4PropList::ResetProperty(), C4PropList::SetProperty(), and Strings.

Referenced by c4_mapgen_handle_set_map_library(), C4MapScriptHost::InitFunctionMap(), and C4Object::SetName().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetOnFire()

virtual void C4PropList::SetOnFire ( bool  OnFire)
inlinevirtualinherited

Reimplemented in C4Object.

Definition at line 73 of file C4PropList.h.

73 { }

Referenced by C4Effect::ClearAll(), C4Effect::Init(), C4Effect::Kill(), C4Effect::TempReaddUpperEffects(), and C4Effect::TempRemoveUpperEffects().

Here is the caller graph for this function:

◆ SetProperty()

void C4PropList::SetProperty ( C4PropertyName  k,
const C4Value to 
)
inlineinherited

Definition at line 124 of file C4PropList.h.

125  { SetPropertyByS(&Strings.P[k], to); }
virtual void SetPropertyByS(C4String *k, const C4Value &to)
Definition: C4PropList.cpp:940

References C4StringTable::P, C4PropList::SetPropertyByS(), and Strings.

Referenced by C4Game::AllocateTranslatedString(), C4Effect::C4Effect(), C4Object::ChangeDef(), C4Object::Init(), C4DefScriptHost::Parse(), C4ScriptHost::Preparse(), C4Object::SetAction(), C4PropList::SetName(), C4ScriptGuiWindow::ToC4Value(), C4ScriptHost::UnLink(), and C4MapScriptLayer::UpdateSurfaceSize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPropertyByS()

void C4PropList::SetPropertyByS ( C4String k,
const C4Value to 
)
virtualinherited

Reimplemented in C4PropListScen, C4Effect, and C4Object.

Definition at line 940 of file C4PropList.cpp.

941 {
942  assert(!constant);
943  if (k == &Strings.P[P_Prototype])
944  {
945  C4PropList * newpt = to.getPropList();
946  for(C4PropList * it = newpt; it; it = it->GetPrototype())
947  if(it == this)
948  throw C4AulExecError("Trying to create cyclic prototype structure");
949  prototype.SetPropList(newpt);
950  }
951  else if (Properties.Has(k))
952  {
953  Properties.Get(k).Value = to;
954  }
955  else
956  {
957  Properties.Add(C4Property(k, to));
958  }
959 }
T * Add(T const &e)
void SetPropList(C4PropList *PropList)
Definition: C4Value.h:141

References C4Set< T >::Add(), C4Set< T >::Get(), C4Value::getPropList(), C4PropList::GetPrototype(), C4Set< T >::Has(), C4StringTable::P, P_Prototype, C4Value::SetPropList(), Strings, and C4Property::Value.

Referenced by C4AulDefFunc::C4AulDefFunc(), C4AulEngineFunc< RType, ThisType, ParTypes >::C4AulEngineFunc(), C4PropListScen::C4PropListScen(), C4ScriptHost::CopyPropList(), C4PropList::SetProperty(), C4Object::SetPropertyByS(), C4Effect::SetPropertyByS(), C4PropListScen::SetPropertyByS(), C4ScriptGuiWindowProperty::ToC4Value(), C4ScriptGuiWindow::ToC4Value(), C4ScriptHost::UnlinkOwnedFunctions(), C4AulCompiler::PreparseAstVisitor::visit(), C4AulCompiler::ConstexprEvaluator::visit(), and C4AulCompiler::ConstantResolver::visit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Synchronize()

void C4Def::Synchronize ( )

Definition at line 637 of file C4Def.cpp.

638 {
639 }

◆ Thaw()

void C4PropList::Thaw ( )
inlineinherited

Definition at line 133 of file C4PropList.h.

133 { constant = false; }

Referenced by C4PropList::ThawRecursively(), and C4ScriptHost::UnlinkOwnedFunctions().

Here is the caller graph for this function:

◆ ThawRecursively()

void C4PropList::ThawRecursively ( )
inherited

Definition at line 259 of file C4PropList.cpp.

260 {
261  //thaw self and all owned properties
262  Thaw();
263  //C4PropListStatic *s = IsStatic();
264  //if (s) LogF("Thaw: %s", s->GetDataString().getData());
265  auto prop_names = GetUnsortedProperties(nullptr, ::ScriptEngine.GetPropList());
266  for (auto prop_name : prop_names)
267  {
268  C4Value child_val;
269  GetPropertyByS(prop_name, &child_val);
270  //LogF(" %s=%s", prop_name->GetCStr(), child_val.GetDataString(1).getData());
271  C4PropList *child_proplist = child_val.getPropList();
272  if (child_proplist && child_proplist->IsFrozen())
273  {
274  child_proplist->ThawRecursively();
275  }
276  }
277 }
bool IsFrozen() const
Definition: C4PropList.h:135
void Thaw()
Definition: C4PropList.h:133
void ThawRecursively()
Definition: C4PropList.cpp:259

References C4PropList::GetPropertyByS(), C4AulScriptEngine::GetPropList(), C4Value::getPropList(), C4PropList::GetUnsortedProperties(), C4PropList::IsFrozen(), ScriptEngine, C4PropList::Thaw(), and C4PropList::ThawRecursively().

Referenced by C4PropList::ThawRecursively(), and C4AulScriptEngine::UnLink().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ToJSON()

StdStrBuf C4PropList::ToJSON ( int  depth = 10,
bool  ignore_reference_parent = false 
) const
inherited

Definition at line 515 of file C4PropList.cpp.

516 {
517  if (depth <= 0 && Properties.GetSize())
518  {
519  throw new C4JSONSerializationError("maximum depth reached");
520  }
521  StdStrBuf DataString;
522  DataString = "{";
523  bool has_elements = false;
524  // Append prototype
525  if (prototype)
526  {
527  DataString.Append("Prototype:");
528  DataString.Append(prototype.ToJSON(depth - 1, ignore_reference_parent ? IsStatic() : nullptr));
529  has_elements = true;
530  }
531  // Append other properties
532  std::list<const C4Property *> sorted_props = Properties.GetSortedListOfElementPointers();
533  for (std::list<const C4Property *>::const_iterator p = sorted_props.begin(); p != sorted_props.end(); ++p)
534  {
535  if (has_elements) DataString.Append(",");
536  DataString.Append(C4Value((*p)->Key).ToJSON());
537  DataString.Append(":");
538  DataString.Append((*p)->Value.ToJSON(depth - 1, ignore_reference_parent ? IsStatic() : nullptr));
539  has_elements = true;
540  }
541  DataString.Append("}");
542  return DataString;
543 }
StdStrBuf ToJSON(int depth=10, const class C4PropListStatic *ignore_reference_parent=nullptr) const
Definition: C4Value.cpp:189

References StdStrBuf::Append(), C4PropList::begin(), C4PropList::C4Value, C4PropList::end(), C4Set< T >::GetSize(), C4Set< T >::GetSortedListOfElementPointers(), C4PropList::IsStatic(), and C4Value::ToJSON().

Referenced by C4Value::ToJSON().

Here is the call graph for this function:
Here is the caller graph for this function:

Friends And Related Function Documentation

◆ C4DefList

friend class C4DefList
friend

Definition at line 171 of file C4Def.h.

Member Data Documentation

◆ AllowPictureStack

int32_t C4Def::AllowPictureStack

Definition at line 147 of file C4Def.h.

Referenced by C4Object::CanConcatPictureWith(), and CompileFunc().

◆ BlitMode

int32_t C4Def::BlitMode

◆ BurnTurnTo

C4ID C4Def::BurnTurnTo

Definition at line 110 of file C4Def.h.

Referenced by DefaultDefCore().

◆ Category

◆ ClosedContainer

int32_t C4Def::ClosedContainer

Definition at line 138 of file C4Def.h.

Referenced by CompileFunc(), and DefaultDefCore().

◆ Collection

◆ ColorByOwner

int32_t C4Def::ColorByOwner

◆ ConSizeOff

int32_t C4Def::ConSizeOff

Definition at line 143 of file C4Def.h.

Referenced by CompileFunc(), ConstructionCheck(), and DefaultDefCore().

◆ ConsoleGroupPath

StdCopyStrBuf C4Def::ConsoleGroupPath

Definition at line 177 of file C4Def.h.

◆ Constructable

int32_t C4Def::Constructable

◆ Count

◆ Creation

int32_t C4Def::Creation

Definition at line 178 of file C4Def.h.

Referenced by Default().

◆ CrewMember

int32_t C4Def::CrewMember

◆ Entrance

◆ Exclusive

int32_t C4Def::Exclusive

Definition at line 116 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Object::SetOCF().

◆ fClonkNamesOwned

bool C4Def::fClonkNamesOwned

Definition at line 185 of file C4Def.h.

Referenced by Clear(), Default(), IncludeDefinition(), and ResetIncludeDependencies().

◆ Filename

char C4Def::Filename[_MAX_FNAME_LEN]

◆ Float

int32_t C4Def::Float

◆ Fragile

int32_t C4Def::Fragile

Definition at line 130 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Command::Put().

◆ fRankNamesOwned

bool C4Def::fRankNamesOwned

Definition at line 188 of file C4Def.h.

Referenced by Clear(), Default(), IncludeDefinition(), and ResetIncludeDependencies().

◆ fRankSymbolsOwned

bool C4Def::fRankSymbolsOwned

Definition at line 189 of file C4Def.h.

Referenced by Clear(), Default(), IncludeDefinition(), and ResetIncludeDependencies().

◆ GrabPutGet

◆ Graphics

◆ GrowthType

◆ HideInCreator

bool C4Def::HideInCreator

Definition at line 148 of file C4Def.h.

Referenced by CompileFunc(), and DefaultDefCore().

◆ id

◆ IncompleteActivity

int32_t C4Def::IncompleteActivity

◆ iNumRankSymbols

int32_t C4Def::iNumRankSymbols

◆ LiftTop

int32_t C4Def::LiftTop

Definition at line 123 of file C4Def.h.

Referenced by CompileFunc(), and DefaultDefCore().

◆ Line

int32_t C4Def::Line

Definition at line 126 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), C4Object::Draw(), and C4Object::UpdateShape().

◆ LineIntersect

int32_t C4Def::LineIntersect

Definition at line 127 of file C4Def.h.

Referenced by CompileFunc(), and DefaultDefCore().

◆ MainFace

C4Facet C4Def::MainFace
protected

Definition at line 195 of file C4Def.h.

Referenced by Default(), and GetMainFace().

◆ Mass

int32_t C4Def::Mass

◆ MoveToRange

int32_t C4Def::MoveToRange

◆ NativeCrew

int32_t C4Def::NativeCrew

Definition at line 113 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4ObjectInfoList::GetIdle().

◆ Next

◆ NoBreath

int32_t C4Def::NoBreath

Definition at line 142 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Object::ExecLife().

◆ NoGet

int32_t C4Def::NoGet

◆ NoHorizontalMove

int32_t C4Def::NoHorizontalMove

Definition at line 122 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), C4Object::DoMovement(), and C4Object::Push().

◆ NoMassFromContents

int32_t C4Def::NoMassFromContents

Definition at line 136 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Object::UpdateMass().

◆ NoPushEnter

int32_t C4Def::NoPushEnter

Definition at line 132 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Command::Enter().

◆ NoStabilize

int32_t C4Def::NoStabilize

Definition at line 137 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Object::Stabilize().

◆ NoTransferZones

int32_t C4Def::NoTransferZones

Definition at line 146 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Command::MoveTo().

◆ Oversize

int32_t C4Def::Oversize

Definition at line 129 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), C4Object::DoCon(), and C4EditCursor::Move().

◆ Parent

const C4PropListStatic* C4PropListStatic::Parent
protectedinherited

◆ ParentKeyName

◆ Pathfinder

int32_t C4Def::Pathfinder

◆ pClonkNames

C4ComponentHost* C4Def::pClonkNames

◆ PictureRect

◆ pRankNames

◆ pRankSymbols

◆ Projectile

int32_t C4Def::Projectile

Definition at line 131 of file C4Def.h.

Referenced by C4Command::Attack(), CompileFunc(), and DefaultDefCore().

◆ pSolidMask

◆ rC4XVer

int32_t C4Def::rC4XVer[2]

Definition at line 102 of file C4Def.h.

Referenced by C4DefList::CheckEngineVersion(), CompileFunc(), and DefaultDefCore().

◆ RequireDef

C4IDList C4Def::RequireDef

Definition at line 103 of file C4Def.h.

Referenced by C4DefList::CheckRequireDef(), CompileFunc(), and DefaultDefCore().

◆ Rotateable

◆ RotatedEntrance

int32_t C4Def::RotatedEntrance

Definition at line 145 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), C4Object::SetOCF(), and C4Object::UpdateOCF().

◆ Script

◆ Shape

◆ SilentCommands

int32_t C4Def::SilentCommands

Definition at line 139 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Command::Fail().

◆ SolidMask

C4TargetRect C4Def::SolidMask

◆ Status

int32_t C4PropList::Status {1}
inherited

Definition at line 173 of file C4PropList.h.

Referenced by C4Command::Acquire(), C4Command::Activate(), C4GameObjects::Add(), C4ObjectList::Add(), C4FoW::Add(), C4EditCursor::AddToSelection(), C4Object::AssignDeath(), C4ObjectList::AssignInfo(), C4Object::AssignRemoval(), C4Object::At(), C4PropList::Call(), C4Game::CastObjects(), C4ObjectList::CheckCategorySort(), C4ObjectList::CheckSort(), C4Effect::ClearAll(), C4ObjectList::ClearInfo(), C4Object::Collect(), C4ObjectList::CompileFunc(), C4Object::CompileFunc(), C4GameObjects::CrossCheck(), C4ObjectList::DeleteObjects(), C4ObjectList::Denumerate(), C4Landscape::P::DigMaterial2Objects(), C4Object::DirectComContents(), C4Effect::DoDamage(), C4Object::Draw(), C4Game::DrawCrewOverheadText(), C4Object::DrawSelectMark(), C4Object::DrawTopFace(), C4EditCursor::EMMoveObject(), C4Object::Enter(), C4Object::Execute(), C4SoundInstance::Execute(), C4Effect::Execute(), C4ScriptGuiWindowAction::ExecuteCommand(), C4Command::Fail(), C4ObjectList::Find(), C4FindObject::Find(), C4ObjectList::FindOther(), C4GameObjects::FixObjectOrder(), C4PropList::FreezeAndMakeStaticRecursively(), C4Object::GetArea(), C4EditCursor::GetCurrentSelectionPosition(), C4Object::GetEntranceArea(), C4Object::GetInfoString(), C4ObjectList::GetListID(), C4Object::GetMomentum(), C4ObjectList::GetObject(), C4Object::GrabInfo(), GrabLost(), C4GameObjects::GRBroadcast(), C4Effect::Init(), C4GameMessage::Init(), C4Object::IsMoveableBySolidMask(), C4GraphicsOverlay::IsValid(), C4Object::Lift(), C4Player::MakeCrewMember(), C4ObjectList::MassCount(), C4Object::MenuCommand(), C4GameMessageList::New(), C4Game::NewObject(), ObjectComGrab(), ObjectComUnGrab(), C4ObjectList::ObjectCount(), C4EditCursor::PerformDuplicationLegacy(), C4Landscape::P::PostFreeShape(), C4GameObjects::PostLoad(), C4Object::Push(), C4GameObjects::Remove(), C4EditCursor::RemoveFromSelection(), C4AulScriptContext::ReturnDump(), C4GameObjects::SafeObjectPointer(), C4Object::SetAction(), C4Object::SetGraphics(), C4GameObjects::SetOCF(), C4Object::SetOCF(), C4Object::StatusActivate(), C4Object::StatusDeactivate(), C4Effect::TempReaddUpperEffects(), C4Effect::TempRemoveUpperEffects(), C4ObjectList::UpdateFaces(), C4ObjectList::UpdateGraphics(), C4Object::UpdateOCF(), C4Object::UpdatePos(), C4Object::UpdateSolidMask(), C4GameObjects::UpdateSolidMasks(), C4ObjectList::ValidateOwners(), and C4ObjectList::Write().

◆ StringTable

C4LangStringTable C4Def::StringTable

Definition at line 182 of file C4Def.h.

Referenced by Clear(), and Default().

◆ Temporary

bool C4Def::Temporary
protected

Definition at line 199 of file C4Def.h.

Referenced by Default(), and C4DefList::RemoveTemporary().

◆ TemporaryCrew

int32_t C4Def::TemporaryCrew

Definition at line 140 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4ObjectInfoList::Save().

◆ TopFace

C4TargetRect C4Def::TopFace

Definition at line 109 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), C4Object::DrawTopFace(), and C4Object::UpdateFace().

◆ UprightAttach

int32_t C4Def::UprightAttach

Definition at line 125 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Object::ExecAction().

◆ Value

int32_t C4Def::Value

Definition at line 115 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), GetValue(), and C4Game::InitValueOverloads().

◆ VehicleControl

int32_t C4Def::VehicleControl

Definition at line 133 of file C4Def.h.

Referenced by CompileFunc(), DefaultDefCore(), and C4Object::SetCommand().


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