convert line ends
[canaan.git] / prj / cam / src / sim / plyskill.cpp
blobdfcc063df9fb0f9675f45f75900f541dff9911eb
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 // $Header: r:/t2repos/thief2/src/sim/plyskill.cpp,v 1.9 2000/02/19 13:27:45 toml Exp $
7 //
8 // This contains static data about the set of skills that the player knows
9 // for each mode he has (where mode determined by wielded item).
11 #include <plyskill.h>
12 #include <cfgdbg.h>
13 #include <lg.h>
14 #include <memall.h>
15 #include <dbmem.h> // must be last header!
17 static tSkillID g_aUnarmedSkills[] =
19 "PlayerEmptyIdle",
22 static tSkillID g_aBowSkills[] =
24 "PlayerBowBegin",
27 static tSkillID g_aSwordSkills[] =
29 "PlayerSwordBegin",
32 static tSkillID g_aSwordStartActionSkills[kPlayerSwordNumActions] =
34 "PlayerSwordBlock",
35 "PlayerSwordWindShort",
36 "PlayerSwordWindMedium",
37 "PlayerSwordWindLong",
40 static tSkillID g_aLockPickSkills[] =
42 "PlayerLockPickIdle",
45 static tSkillID g_aFlexiBowSkills[] =
47 "FlexBowBegin",
53 typedef struct sSkillSetInfo
55 tSkillID *pSkills;
56 int nSkills;
57 tSkillID *pStartActionSkills;
58 int nStartActionSkills;
59 } sSkillSetInfo;
61 static sSkillSetInfo g_aPlayerSkills[kPlayerNumModes] = \
63 { // Unarmed skills
64 g_aUnarmedSkills, sizeof(g_aUnarmedSkills)/sizeof(tSkillID), \
66 { // Bow skills
67 g_aBowSkills, sizeof(g_aBowSkills)/sizeof(tSkillID),
69 { // Sword skills
70 g_aSwordSkills, sizeof(g_aSwordSkills)/sizeof(tSkillID),
71 g_aSwordStartActionSkills, sizeof(g_aSwordStartActionSkills)/sizeof(tSkillID),
73 { // Lockpick skills
74 g_aLockPickSkills, sizeof(g_aLockPickSkills)/sizeof(tSkillID),
76 { // Flexibow skills
77 g_aFlexiBowSkills, sizeof(g_aFlexiBowSkills)/sizeof(tSkillID),
82 void PlayerSkillsGetForMode(const ePlayerMode mode, int *nSkills, tSkillID **ppSkills)
84 if(mode!=kPlayerModeInvalid)
86 *nSkills=g_aPlayerSkills[mode].nSkills;
87 *ppSkills=g_aPlayerSkills[mode].pSkills;
88 } else
90 nSkills=0;
91 *ppSkills=NULL;
93 return;
96 // returns the skill to begin with in specified player mode
98 // Assuming that convention is followed that beginning skill always appears first
99 tSkillID PlayerSkillsGetStartingForMode(const ePlayerMode mode)
101 if(mode==kPlayerModeInvalid || mode>=kPlayerNumModes || g_aPlayerSkills[mode].nSkills<1)
103 return NULL;
104 } else
106 return g_aPlayerSkills[mode].pSkills[0];
110 // returns the skill to begin action from in specified player mode
111 BOOL PlayerSkillGetStartActionSkillForMode(const ePlayerMode mode, tPlayerActionType actionType, tSkillID *pSkillID)
113 if(mode==kPlayerModeInvalid || mode>=kPlayerNumModes ||
114 g_aPlayerSkills[mode].nStartActionSkills<=actionType || g_aPlayerSkills[mode].pStartActionSkills==NULL )
116 Warning(("No player action %d for mode %d\n",actionType,mode));
117 return FALSE;
118 } else
120 *pSkillID=g_aPlayerSkills[mode].pStartActionSkills[actionType];
121 return TRUE;