2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
6 ///////////////////////////////////////////////////////////////////////////////
7 // $Header: r:/t2repos/thief2/src/shock/shkaitpr.cpp,v 1.2 2000/02/19 12:36:32 toml Exp $
9 // Turret ability properties
24 #include <dbmem.h> // must be last header!
26 ///////////////////////////////////////////////////////////////////////////////
28 IAITurretProperty
* g_pAITurretProperty
;
30 ////////////////////////////////////////
32 const sAITurretParams g_AIDefaultTurretParams
=
34 0, // raise/lower joint num
37 0.1, // raise/lower speed
38 1, // rotational joint
39 0.1, // facing epsilon
40 0.5, // firing epsilon
43 ///////////////////////////////////////////////////////////////////////////////
45 // PROPERTY: "AI_Turret", Complex
48 static sFieldDesc TurretPropertyFields
[] =
50 { "Raise/Lower Joint", kFieldTypeInt
, FieldLocation(sAITurretParams
, m_jointRaise
), kFieldFlagNone
},
51 { "Inactive Posn", kFieldTypeFloat
, FieldLocation(sAITurretParams
, m_inactivePos
), kFieldFlagNone
},
52 { "Active Posn", kFieldTypeFloat
, FieldLocation(sAITurretParams
, m_activePos
), kFieldFlagNone
},
53 { "Raise/Lower Speed", kFieldTypeFloat
, FieldLocation(sAITurretParams
, m_raiseSpeed
), kFieldFlagNone
},
54 { "Rotational Joint", kFieldTypeInt
, FieldLocation(sAITurretParams
, m_jointRotate
), kFieldFlagNone
},
55 { "Facing Epsilon", kFieldTypeFloat
, FieldLocation(sAITurretParams
, m_facingEpsilon
), kFieldFlagNone
},
56 { "Firing Epsilon", kFieldTypeFloat
, FieldLocation(sAITurretParams
, m_fireEpsilon
), kFieldFlagNone
},
59 ////////////////////////////////////////
61 static sPropertyDesc g_AITurretPropertyDesc
=
66 { AI_ABILITY_CAT
, "Turret: parameters" },
69 ////////////////////////////////////////
71 class cAITurretParams
: public sAITurretParams
74 cAITurretParams() { *this = *(cAITurretParams
*)&g_AIDefaultTurretParams
; }
77 static sStructDesc TurretDesc
= StructDescBuild(cAITurretParams
, kStructFlagNone
, TurretPropertyFields
);
79 ////////////////////////////////////////
81 class cTurretOps
: public cClassDataOps
<cAITurretParams
>
84 cTurretOps() : cClassDataOps
<cAITurretParams
>(kNoFlags
) {};
87 typedef cListPropertyStore
<cTurretOps
> cTurretPropertyStore
;
89 typedef cSpecificProperty
<IAITurretProperty
, &IID_IAITurretProperty
, sAITurretParams
*, cTurretPropertyStore
> cBaseTurretProp
;
91 class cAITurretProp
: public cBaseTurretProp
94 cAITurretProp(const sPropertyDesc
* desc
) : cBaseTurretProp(desc
) {};
96 STANDARD_DESCRIBE_TYPE(cAITurretParams
);
99 ///////////////////////////////////////////////////////////////////////////////
101 // Initialization and cleanup
104 void AIInitTurretProp(void)
106 g_pAITurretProperty
= new cAITurretProp(&g_AITurretPropertyDesc
);
107 StructDescRegister(&TurretDesc
);
110 ///////////////////////////////////////
112 void AITermTurretProp(void)
114 SafeRelease(g_pAITurretProperty
);
117 ///////////////////////////////////////////////////////////////////////////////