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)
 
C4Facet & GetMainFace (C4DefGraphics *pGraphics, DWORD dwClr=0)
 
int32_t GetPlane ()
 
int32_t GetValue (C4Object *pInBase, int32_t iBuyPlayer)
 
void Synchronize ()
 
C4Def const * GetDef () const override
 
C4Def * GetDef () override
 
bool Delete () override
 
void IncludeDefinition (C4Def *pIncludeDef)
 
void ResetIncludeDependencies ()
 
C4PropList * GetActionByName (const char *actname)
 
C4PropList * GetActionByName (C4String *actname)
 
C4PropListStatic * IsStatic () override
 
const class C4PropListStatic * IsStatic () const
 
void RefCompileFunc (StdCompiler *pComp, C4ValueNumbers *numbers) const
 
StdStrBuf GetDataString () const
 
const char * GetName () const override
 
const C4PropListStatic * GetParent () const
 
C4String * GetParentKeyName ()
 
virtual void SetName (const char *NewName=nullptr)
 
virtual void SetOnFire (bool OnFire)
 
virtual C4Object * GetObject ()
 
virtual C4Object const * GetObject () const
 
virtual C4Effect * GetEffect ()
 
virtual C4PropListNumbered * GetPropListNumbered ()
 
virtual class C4MapScriptLayer * GetMapScriptLayer ()
 
virtual class C4MapScriptMap * GetMapScriptMap ()
 
C4PropList * GetPrototype () const
 
void RemoveCyclicPrototypes ()
 
virtual bool IsNumbered () const
 
virtual bool GetPropertyByS (const C4String *k, C4Value *pResult) const
 
virtual C4ValueArray * GetProperties () const
 
virtual void SetPropertyByS (C4String *k, const C4Value &to)
 
virtual void ResetProperty (C4String *k)
 
bool GetProperty (C4PropertyName k, C4Value *pResult) const
 
C4String * GetPropertyStr (C4PropertyName k) const
 
C4ValueArray * GetPropertyArray (C4PropertyName n) const
 
C4AulFunc * GetFunc (C4PropertyName k) const
 
C4AulFunc * GetFunc (C4String *k) const
 
C4AulFunc * GetFunc (const char *k) const
 
C4String * EnumerateOwnFuncs (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
 
C4PropList * GetPropertyPropList (C4PropertyName k) const
 
bool HasProperty (C4String *k) const
 
void SetProperty (C4PropertyName k, const C4Value &to)
 
void Freeze ()
 
void Thaw ()
 
void ThawRecursively ()
 
bool IsFrozen () const
 
C4PropListStatic * FreezeAndMakeStaticRecursively (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 C4PropList * New (C4PropList *prototype=nullptr)
 
static C4PropListStatic * NewStatic (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
 
C4ComponentHost * pClonkNames
 
bool fClonkNamesOwned
 
C4RankSystem * pRankNames
 
bool fRankNamesOwned
 
C4FacetSurface * pRankSymbols
 
bool fRankSymbolsOwned
 
int32_t iNumRankSymbols
 
C4DefGraphics Graphics
 
CSurface8 * pSolidMask
 
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
 
C4Def * Next
 
bool Temporary
 
const C4PropListStatic * Parent
 
C4RefCntPointer< C4String > ParentKeyName
 

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: