diff options
author | Ash Wolf <ninji@wuffs.org> | 2023-06-14 00:50:34 +0100 |
---|---|---|
committer | Ash Wolf <ninji@wuffs.org> | 2023-06-14 00:50:34 +0100 |
commit | 37e364b2c6cc7487a1c888d256a73e5337bb7189 (patch) | |
tree | eaf6e857382eef16c2dd940eb4125536fbe068bd /src/T2DLL/T2CrossEquipArray.cpp | |
download | t2win-37e364b2c6cc7487a1c888d256a73e5337bb7189.tar.gz t2win-37e364b2c6cc7487a1c888d256a73e5337bb7189.zip |
initial commit
Diffstat (limited to 'src/T2DLL/T2CrossEquipArray.cpp')
-rw-r--r-- | src/T2DLL/T2CrossEquipArray.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/T2DLL/T2CrossEquipArray.cpp b/src/T2DLL/T2CrossEquipArray.cpp new file mode 100644 index 0000000..3e349aa --- /dev/null +++ b/src/T2DLL/T2CrossEquipArray.cpp @@ -0,0 +1,87 @@ +#include "T2Archive.h" +#include "T2CrossEquipArray.h" +#include "T2FloorCEArray.h" +#include "T2MoverCEArray.h" +#include "T2RouteCEArray.h" +#include "T2TenantCEArray.h" + +T2CrossEquipArray::T2CrossEquipArray() { +} + +/*virtual*/ T2CrossEquipArray::~T2CrossEquipArray() { +} + +void T2CrossEquipArray::AllClear() { + RemoveItemsAt(mItemCount, 1); +} + +void T2CrossEquipArray::ReplaceID(unsigned int oldID, unsigned int newID) { + if (FetchIndexOf(&newID) == 0) { + int oldIDIndex = FetchIndexOf(&oldID); + if (oldIDIndex != 0) + AssignItemsAt(1, oldIDIndex, &newID); + } else { + int oldIDIndex = FetchIndexOf(&oldID); + if (oldIDIndex != 0) + RemoveItemsAt(1, oldIDIndex); + } +} + +void T2CrossEquipArray::Union(T2CrossEquipArray* other) { + LArrayIterator iter(*other); + unsigned int id; + while (iter.Next(&id)) + InsertItemsAt(1, mItemCount + 1, &id); +} + +/*virtual*/ void T2CrossEquipArray::InsertItemsAt(int count, int where, unsigned int* id) { + if (FetchIndexOf(id) == 0) + LArray::InsertItemsAt(count, where, id); +} + +/*virtual*/ void T2CrossEquipArray::Add(unsigned int id) { + if (FetchIndexOf(&id) == 0) + LArray::Add(&id); +} + +/*static*/ T2CrossEquipArray* T2CrossEquipArray::ReadCEArray(T2Archive& archive) { + T2CrossEquipArray *array = NULL; + DWORD classID; + archive >> classID; + + switch (classID) { + case '_CEA': + array = new T2CrossEquipArray; + break; + case 'TCEA': + array = new T2TenantCEArray; + break; + case 'RCEA': + array = new T2RouteCEArray; + break; + case 'FCEA': + array = new T2FloorCEArray; + break; + case 'MCEA': + array = new T2MoverCEArray; + break; + } + + if (array) + array->ReadAsWord(archive); + + return array; +} + +/*static*/ void T2CrossEquipArray::WriteCEArray(T2CrossEquipArray* array, T2Archive& archive) { + DWORD classID; + + if (!array) { + classID = 'xCEA'; + archive << classID; + } else { + classID = array->GetCEClassID(); + archive << classID; + array->WriteAsWord(archive); + } +} |