summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2FloorPtrList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/T2DLL/T2FloorPtrList.cpp')
-rw-r--r--src/T2DLL/T2FloorPtrList.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/T2DLL/T2FloorPtrList.cpp b/src/T2DLL/T2FloorPtrList.cpp
index b72c96f..f716e76 100644
--- a/src/T2DLL/T2FloorPtrList.cpp
+++ b/src/T2DLL/T2FloorPtrList.cpp
@@ -1,10 +1,38 @@
#include "T2FloorPtrList.h"
+#include "T2Tenant.h"
+#include "T2TenantArray.h"
+#include "T2TenantArrayList.h"
-T2FloorPtrList::T2FloorPtrList(T2TenantArrayList*) {
+T2FloorPtrList::T2FloorPtrList(T2TenantArrayList* inList) {
+ LArrayIterator iterator(*inList);
+ T2TenantArray *theArray;
+
+ while (iterator.Next(&theArray)) {
+ for (int i = 0; i < T2TenantArray::kGroupSize; i++) {
+ T2Tenant *theTenant = theArray->GetIndexTenant(i);
+ if (theTenant->IsUsed() && theTenant->IsFloor() && theTenant->IsBuildFinish())
+ AddItem(theTenant);
+ }
+ }
}
/*virtual*/ T2FloorPtrList::~T2FloorPtrList() {
}
-int T2FloorPtrList::CalcDistance(int, int) {
+int T2FloorPtrList::CalcDistance(int inIndexA, int inIndexB) {
+ int distance = -1;
+ T2Tenant *theFloorA = (T2Tenant *) GetItem(inIndexA);
+ T2Tenant *theFloorB = (T2Tenant *) GetItem(inIndexB);
+
+ if (theFloorA && theFloorB) {
+ RECT rectA, rectB;
+ theFloorA->GetEquipArea(rectA);
+ theFloorB->GetEquipArea(rectB);
+
+ distance = (rectA.bottom - 1) - (rectB.bottom - 1);
+ if (distance < 0)
+ distance *= -1;
+ }
+
+ return distance;
}