convert line ends
[canaan.git] / prj / cam / src / shock / shkaitpr.cpp
blob6509045cbf751c4b4ba5770cfc7c5d9bb8d6ab28
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 ///////////////////////////////////////////////////////////////////////////////
7 // $Header: r:/t2repos/thief2/src/shock/shkaitpr.cpp,v 1.2 2000/02/19 12:36:32 toml Exp $
8 //
9 // Turret ability properties
12 #include <shkaitpr.h>
14 #include <property.h>
15 #include <propbase.h>
16 #include <propface.h>
17 #include <proplist.h>
18 #include <propert_.h>
19 #include <dataops_.h>
21 #include <sdesc.h>
22 #include <sdesbase.h>
23 #include <memall.h>
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
35 0, // inactive posn
36 2, // active posn
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 =
63 PROP_AI_TURRET,
64 kPropertyInstantiate,
65 NULL, 0, 0,
66 { AI_ABILITY_CAT, "Turret: parameters" },
69 ////////////////////////////////////////
71 class cAITurretParams : public sAITurretParams
73 public:
74 cAITurretParams() { *this = *(cAITurretParams *)&g_AIDefaultTurretParams; }
77 static sStructDesc TurretDesc = StructDescBuild(cAITurretParams, kStructFlagNone, TurretPropertyFields);
79 ////////////////////////////////////////
81 class cTurretOps : public cClassDataOps<cAITurretParams>
83 public:
84 cTurretOps() : cClassDataOps<cAITurretParams>(kNoFlags) {};
87 typedef cListPropertyStore<cTurretOps> cTurretPropertyStore;
89 typedef cSpecificProperty<IAITurretProperty, &IID_IAITurretProperty, sAITurretParams *, cTurretPropertyStore> cBaseTurretProp;
91 class cAITurretProp : public cBaseTurretProp
93 public:
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 ///////////////////////////////////////////////////////////////////////////////