summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2FInfoAreaIterator.h
blob: c4b8ece0286bba41be1f80b5d335f9ff16e85da8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef T2DLL_T2FINFOAREAITERATOR_H
#define T2DLL_T2FINFOAREAITERATOR_H
#include "../common.h"

class AFX_CLASS_EXPORT T2FInfoAreaIterator {
public:
	T2FInfoAreaIterator(const T2FloorInfo& inFloorInfo, const RECT&);
	virtual ~T2FInfoAreaIterator();

	void Reset();
	BOOL CurrentV(int& outV) const;
	BOOL Current(T2UnitInfo*& outUnitInfo);
	BOOL Next(T2UnitInfo*& outUnitInfo);
	BOOL NextTenant(T2Tenant*& outTenant);
	void GetTenantRect(RECT& outRect);
	BOOL NextRequest(T2Request*& outRequest);
	BOOL NextMover(T2Mover*& outMover);

protected:
	BOOL CalcNextUnitInfo();
	BOOL IsValidPosition() const;

	const T2FloorInfo &mFloorInfo;
	RECT mRect;
	int mSkipAmount;
	int mCurrV;
	int mCurrH;
	T2UnitInfo *mCurrUnitInfo;
	unsigned int mLastIDSeen;
};

inline BOOL T2FInfoAreaIterator::IsValidPosition() const {
    return (mCurrH > -1);
}
#endif