summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2MoverDef.h
blob: d4ef61780865282ab74f9813dba287d8257a1ee2 (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#pragma once
#include "common.h"
#include "T2EquipDef.h"

class AFX_CLASS_EXPORT T2MoverDef : public T2EquipDef {
public:
	T2MoverDef(DWORD, T2PluginSpecifier&, CResFile*, T2WorldDef*, T2MoverPlugin*);
	virtual ~T2MoverDef();

    int GetMinLength() const { return mMinLength; }
    int GetMaxLength() const { return mMaxLength; }
    virtual BOOL IsMover() { return true; }

	virtual void GetName(CString&);
    virtual BOOL InitObject(T2Object*) { return false; }
    virtual CURSORTYPE QueryCursor(T2TowerDoc*, POINT, CString&, RECT&, POINT&, int, unsigned int, int);
    virtual int CalcMentenanceCostProc(const T2HaveOutViewObject*) const;
	virtual AREACHECKCODE AreaCheck(T2TowerDoc* inDoc, RECT& inRect, unsigned int, BOOL inShowError);
	virtual int ClickProc(T2TowerDoc*, RECT*, unsigned int&);
	virtual BOOL MakeRequestProc(T2TowerDoc*, T2Equip*);
	virtual PROCCODE AddModuleProc(T2TowerDoc*, T2Equip*, RECT*);
	virtual int GetMinMaxRangeProc(T2TowerDoc*, T2Equip*, int);
	virtual int HandleUpProc(T2TowerDoc*, T2Equip*, POINT);
	virtual int HandleDownProc(T2TowerDoc*, T2Equip*, POINT);
	virtual int ClickShaftProc(T2TowerDoc*, T2Equip*, POINT);
	virtual int CalcModulePatIndex(int numPeople);
    virtual int CalcModulePosProc(T2Equip*, T2MoverModule*, ERequestUpDown) { return -1; }
    virtual int CalcModuleRectProc(const T2Mover*, const T2MoverModule*, RECT&, int&) const { return 0; }
	virtual int IsaKindOfStopProc(T2TowerDoc*, T2Equip*, int, int) const;
	virtual T2InfoDialog* ShowInfoDialog(T2TowerDoc*, T2Mover*, CPoint);
	virtual int GetInfoDialogID(T2TowerDoc*, const T2Mover*, PARTCODE, int) const;
	virtual T2InfoDialog* ConstructInfoDialog(T2Mover*, PARTCODE, int);

    BOOL InitObject(T2Mover*, const POINT&);

	int GetSpeed(int i) const {
        return (i >= 0 && i < 3) ? mSpeed[i] : 0;
    }
	BOOL IsStair();
	void GetAddSize(RECT& r) const;
	int GetDefaultWait() const;
	int GetMaxModule() const;
	void GetModuleInset(RECT& r) const;
	int GetMaxStop() const;
	T2BitImage* GetOffBitMap() const;
	int GetScore() const;
	static unsigned int GetRequiredRequestSpace();

protected:
    RECT mAddSize;
    int mMaxLength;
    int mMinLength;
    int mMaxStop;
    int mDefaultWait;
    int mSpeed[3];
    int mMaxModule;
    int m188;
    int m18C;
    int m190;
    int m194;
    RECT mModuleInset;
    int mScore;
    int m1AC;
    int m1B0[3];
    T2BitImage *mOffBitMap;

    friend class T2TowerDoc;
};

inline BOOL T2MoverDef::IsStair() {
    return IsSetAttribute(kMoverAttrIsStair);
}

inline void T2MoverDef::GetAddSize(RECT& r) const {
    r = mAddSize;
}

inline int T2MoverDef::GetDefaultWait() const {
    return mDefaultWait;
}

inline int T2MoverDef::GetMaxModule() const {
    return mMaxModule;
}

inline void T2MoverDef::GetModuleInset(RECT& r) const {
    r = mModuleInset;
}

inline int T2MoverDef::GetMaxStop() const {
    return mMaxStop;
}

inline T2BitImage* T2MoverDef::GetOffBitMap() const {
    return mOffBitMap;
}

inline int T2MoverDef::GetScore() const {
    return mScore;
}

inline /*static*/ unsigned int T2MoverDef::GetRequiredRequestSpace() {
    return 4;
}