forked from Mirrors/openclonk
Move some stuff to C4GameObjects
parent
cb1e6e6a5c
commit
07b58d88f3
|
@ -83,6 +83,12 @@ class C4GameObjects : public C4NotifyingObjectList
|
|||
|
||||
bool ValidateOwners();
|
||||
bool AssignInfo();
|
||||
void AssignPlrViewRange();
|
||||
void SortByCategory();
|
||||
void SyncClearance();
|
||||
void ResetAudibility();
|
||||
void UpdateTransferZones();
|
||||
void SetOCF();
|
||||
protected:
|
||||
C4Set<C4PropList *> PropLists;
|
||||
friend class C4PropList;
|
||||
|
|
|
@ -82,7 +82,6 @@ class C4ObjectList
|
|||
iterator begin();
|
||||
const iterator end();
|
||||
|
||||
void SortByCategory();
|
||||
void Default();
|
||||
void Clear();
|
||||
void Sort();
|
||||
|
@ -98,11 +97,6 @@ class C4ObjectList
|
|||
void CloseMenus();
|
||||
void UpdateGraphics(bool fGraphicsChanged);
|
||||
void UpdateFaces(bool bUpdateShape);
|
||||
void SyncClearance();
|
||||
void ResetAudibility();
|
||||
void UpdateTransferZones();
|
||||
void SetOCF();
|
||||
void GetIDList(C4IDList &rList, int32_t dwCategory=C4D_All);
|
||||
void ClearInfo(C4ObjectInfo *pInfo);
|
||||
|
||||
typedef int SortProc(C4Object *, C4Object *);
|
||||
|
@ -113,7 +107,6 @@ class C4ObjectList
|
|||
|
||||
BOOL AssignInfo();
|
||||
BOOL ValidateOwners();
|
||||
BOOL AssignPlrViewRange();
|
||||
StdStrBuf GetNameList(C4DefList &rDefs, DWORD dwCategory=C4D_All);
|
||||
BOOL IsClear() const;
|
||||
BOOL DenumerateRead();
|
||||
|
|
|
@ -942,3 +942,61 @@ bool C4GameObjects::AssignInfo()
|
|||
if (!InactiveObjects.AssignInfo()) fSucc = false;
|
||||
return fSucc;
|
||||
}
|
||||
|
||||
void C4GameObjects::AssignPlrViewRange()
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
for (cLnk=Last; cLnk; cLnk=cLnk->Prev)
|
||||
if (cLnk->Obj->Status)
|
||||
cLnk->Obj->AssignPlrViewRange();
|
||||
}
|
||||
|
||||
void C4GameObjects::SortByCategory()
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
BOOL fSorted;
|
||||
// Sort by category
|
||||
do
|
||||
{
|
||||
fSorted = TRUE;
|
||||
for (cLnk=First; cLnk && cLnk->Next; cLnk=cLnk->Next)
|
||||
if ((cLnk->Obj->Category & C4D_SortLimit) < (cLnk->Next->Obj->Category & C4D_SortLimit))
|
||||
{
|
||||
RemoveLink(cLnk);
|
||||
InsertLink(cLnk,cLnk->Next);
|
||||
fSorted = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (!fSorted);
|
||||
}
|
||||
|
||||
void C4GameObjects::SyncClearance()
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
for (cLnk=First; cLnk; cLnk=cLnk->Next)
|
||||
if (cLnk->Obj)
|
||||
cLnk->Obj->SyncClearance();
|
||||
}
|
||||
|
||||
void C4GameObjects::UpdateTransferZones()
|
||||
{
|
||||
C4Object *cobj; C4ObjectLink *clnk;
|
||||
for (clnk=First; clnk && (cobj=clnk->Obj); clnk=clnk->Next)
|
||||
cobj->Call(PSF_UpdateTransferZone);
|
||||
}
|
||||
|
||||
void C4GameObjects::ResetAudibility()
|
||||
{
|
||||
C4Object *cobj; C4ObjectLink *clnk;
|
||||
for (clnk=First; clnk && (cobj=clnk->Obj); clnk=clnk->Next)
|
||||
cobj->Audible=cobj->AudiblePan=0;
|
||||
}
|
||||
|
||||
void C4GameObjects::SetOCF()
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
for (cLnk=First; cLnk; cLnk=cLnk->Next)
|
||||
if (cLnk->Obj->Status)
|
||||
cLnk->Obj->SetOCF();
|
||||
}
|
||||
|
|
|
@ -608,16 +608,6 @@ BOOL C4ObjectList::AssignInfo()
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL C4ObjectList::AssignPlrViewRange()
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
for (cLnk=Last; cLnk; cLnk=cLnk->Prev)
|
||||
if (cLnk->Obj->Status)
|
||||
cLnk->Obj->AssignPlrViewRange();
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
void C4ObjectList::ClearInfo(C4ObjectInfo *pInfo)
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
|
@ -727,14 +717,6 @@ void C4NotifyingObjectList::RemoveLink(C4ObjectLink *pLnk)
|
|||
ObjectListChangeListener.OnObjectRemove(this, pLnk);
|
||||
}
|
||||
|
||||
void C4ObjectList::SyncClearance()
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
for (cLnk=First; cLnk; cLnk=cLnk->Next)
|
||||
if (cLnk->Obj)
|
||||
cLnk->Obj->SyncClearance();
|
||||
}
|
||||
|
||||
void C4ObjectList::UpdateGraphics(bool fGraphicsChanged)
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
|
@ -758,17 +740,6 @@ void C4ObjectList::DrawSelectMark(C4TargetFacet &cgo, float Zoom)
|
|||
cLnk->Obj->DrawSelectMark(cgo, Zoom);
|
||||
}
|
||||
|
||||
void C4ObjectList::GetIDList(C4IDList &rList, int32_t dwCategory)
|
||||
{
|
||||
C4ObjectLink *clnk;
|
||||
C4Def *pDef;
|
||||
rList.Clear();
|
||||
for (clnk=First; clnk && clnk->Obj; clnk=clnk->Next)
|
||||
if (clnk->Obj->Status)
|
||||
if ((dwCategory==C4D_All) || ( (pDef=C4Id2Def(clnk->Obj->Def->id)) && (pDef->Category & dwCategory) ))
|
||||
rList.IncreaseIDCount(clnk->Obj->Def->id);
|
||||
}
|
||||
|
||||
void C4ObjectList::CloseMenus()
|
||||
{
|
||||
C4Object *cobj; C4ObjectLink *clnk;
|
||||
|
@ -776,14 +747,6 @@ void C4ObjectList::CloseMenus()
|
|||
cobj->CloseMenu(true);
|
||||
}
|
||||
|
||||
void C4ObjectList::SetOCF()
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
for (cLnk=First; cLnk; cLnk=cLnk->Next)
|
||||
if (cLnk->Obj->Status)
|
||||
cLnk->Obj->SetOCF();
|
||||
}
|
||||
|
||||
void C4ObjectList::Copy(const C4ObjectList &rList)
|
||||
{
|
||||
Clear(); Default();
|
||||
|
@ -798,40 +761,6 @@ void C4ObjectList::Default()
|
|||
pEnumerated=NULL;
|
||||
}
|
||||
|
||||
void C4ObjectList::UpdateTransferZones()
|
||||
{
|
||||
C4Object *cobj; C4ObjectLink *clnk;
|
||||
for (clnk=First; clnk && (cobj=clnk->Obj); clnk=clnk->Next)
|
||||
cobj->Call(PSF_UpdateTransferZone);
|
||||
}
|
||||
|
||||
void C4ObjectList::ResetAudibility()
|
||||
{
|
||||
C4Object *cobj; C4ObjectLink *clnk;
|
||||
for (clnk=First; clnk && (cobj=clnk->Obj); clnk=clnk->Next)
|
||||
cobj->Audible=cobj->AudiblePan=0;
|
||||
}
|
||||
|
||||
void C4ObjectList::SortByCategory()
|
||||
{
|
||||
C4ObjectLink *cLnk;
|
||||
BOOL fSorted;
|
||||
// Sort by category
|
||||
do
|
||||
{
|
||||
fSorted = TRUE;
|
||||
for (cLnk=First; cLnk && cLnk->Next; cLnk=cLnk->Next)
|
||||
if ((cLnk->Obj->Category & C4D_SortLimit) < (cLnk->Next->Obj->Category & C4D_SortLimit))
|
||||
{
|
||||
RemoveLink(cLnk);
|
||||
InsertLink(cLnk,cLnk->Next);
|
||||
fSorted = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (!fSorted);
|
||||
}
|
||||
|
||||
BOOL C4ObjectList::OrderObjectBefore(C4Object *pObj1, C4Object *pObj2)
|
||||
{
|
||||
// safety
|
||||
|
|
Loading…
Reference in New Issue