1 #ifndef _avp_user_profile_h_ 2 #define _avp_user_profile_h_ 1 3 4 #include "usr_io.h" 5 #include "avp_envinfo.h" 6 #include "game_statistics.h" 7 #include "detaillevels.h" 8 /* KJL 14:17:41 10/12/98 - User profile 9 10 Structures that contains the information required by the single player game 11 12 e.g. which levels have been played, which difficulty levels etc. 13 14 */ 15 #define MAX_NO_OF_USERS 4 16 17 #define MAX_SIZE_OF_USERS_NAME 15 18 19 enum AVP_DIFFICULTY_LEVEL_ID 20 { 21 AVP_DIFFICULTY_LEVEL_NONE, 22 /* the 'none' difficulty level setting can be used to indicate that 23 a level has never been completed */ 24 25 AVP_DIFFICULTY_LEVEL_EASY, 26 AVP_DIFFICULTY_LEVEL_MEDIUM, 27 AVP_DIFFICULTY_LEVEL_HARD, 28 }; 29 30 enum CHEATMODE_ID 31 { 32 CHEATMODE_PIGSTICKING, 33 CHEATMODE_SLUGTRAIL, 34 CHEATMODE_SNIPERMUNCH, 35 CHEATMODE_TERROR, 36 CHEATMODE_SUPERGORE, 37 CHEATMODE_GRENADE, 38 CHEATMODE_MIRROR, 39 CHEATMODE_PIPECLEANER, 40 CHEATMODE_DISCOINFERNO, 41 CHEATMODE_TRIPTASTIC, 42 CHEATMODE_MOTIONBLUR, 43 CHEATMODE_UNDERWATER, 44 CHEATMODE_JOHNWOO, 45 CHEATMODE_WARPSPEED, 46 CHEATMODE_LANDOFTHEGIANTS, 47 CHEATMODE_IMPOSSIBLEMISSION, 48 CHEATMODE_RAINBOWBLOOD, 49 CHEATMODE_TICKERTAPE, 50 CHEATMODE_NAUSEA, 51 CHEATMODE_FREEFALL, 52 CHEATMODE_BALLSOFFIRE, 53 54 MAX_NUMBER_OF_CHEATMODES, 55 56 57 CHEATMODE_NONACTIVE// leave me at the end! 58 59 60 }; 61 62 /* Putting this here to get the definition of the cheat enum. */ 63 typedef struct { 64 AvP_GameStats_Stored StatTargets; 65 enum CHEATMODE_ID CheatModeToActivate; 66 } AvP_Level_Target_Desc; 67 68 typedef struct 69 { 70 char Name[MAX_SIZE_OF_USERS_NAME+1]; 71 72 // SBF: 32-bit time_t 73 uint32_t FileTime; 74 75 // SBF: used to be an incomplete SYSTEMTIME struct, TimeLastUpdated 76 int unused[6]; 77 78 /* KJL 15:14:12 10/12/98 - array to hold level completion data 79 3 species, pad out to 16 levels each */ 80 char LevelCompleted[3][16]; 81 82 unsigned char CheatMode[32]; 83 unsigned char GammaSetting; 84 unsigned char AutoWeaponChangeDisabled : 1; 85 unsigned char SpareBits : 7; //not used 86 char Padding[74]; 87 88 int CDPlayerVolume; 89 90 char MultiplayerCallsign[16]; 91 92 int SmackerSoundVolume; 93 int EffectsSoundVolume; 94 int MoviesAreActive; 95 int IntroOutroMoviesAreActive; 96 97 MENU_DETAIL_LEVEL_OPTIONS DetailLevelSettings; 98 99 PLAYER_INPUT_CONFIGURATION MarineInputPrimaryConfig; 100 PLAYER_INPUT_CONFIGURATION MarineInputSecondaryConfig; 101 PLAYER_INPUT_CONFIGURATION AlienInputPrimaryConfig; 102 PLAYER_INPUT_CONFIGURATION AlienInputSecondaryConfig; 103 PLAYER_INPUT_CONFIGURATION PredatorInputPrimaryConfig; 104 PLAYER_INPUT_CONFIGURATION PredatorInputSecondaryConfig; 105 CONTROL_METHODS ControlMethods; 106 JOYSTICK_CONTROL_METHODS JoystickControlMethods; 107 108 /* This feels a bit bloaty. */ 109 AvP_GameStats_Stored PersonalBests[I_MaxDifficulties][AVP_ENVIRONMENT_END_OF_LIST]; 110 /* Yes, it contains impossible! So sue me! */ 111 112 } AVP_USER_PROFILE; 113 114 115 116 #define SUPERGORE_MODE (CheatMode_Active == CHEATMODE_SUPERGORE) 117 #define SLUGTRAIL_MODE (CheatMode_Active == CHEATMODE_SLUGTRAIL) 118 #define TERROR_MODE (CheatMode_Active == CHEATMODE_TERROR) 119 #define GRENADE_MODE (CheatMode_Active == CHEATMODE_GRENADE) 120 #define PIGSTICKING_MODE (CheatMode_Active == CHEATMODE_PIGSTICKING) 121 #define SNIPERMUNCH_MODE (CheatMode_Active == CHEATMODE_SNIPERMUNCH) 122 #define MIRROR_CHEATMODE (CheatMode_Active == CHEATMODE_MIRROR) 123 #define PIPECLEANER_CHEATMODE (CheatMode_Active == CHEATMODE_PIPECLEANER) 124 #define DISCOINFERNO_CHEATMODE (CheatMode_Active == CHEATMODE_DISCOINFERNO) 125 #define TRIPTASTIC_CHEATMODE (CheatMode_Active == CHEATMODE_TRIPTASTIC) 126 #define MOTIONBLUR_CHEATMODE (CheatMode_Active == CHEATMODE_MOTIONBLUR) 127 #define UNDERWATER_CHEATMODE (CheatMode_Active == CHEATMODE_UNDERWATER) 128 #define JOHNWOO_CHEATMODE (CheatMode_Active == CHEATMODE_JOHNWOO) 129 #define WARPSPEED_CHEATMODE (CheatMode_Active == CHEATMODE_WARPSPEED) 130 #define LANDOFTHEGIANTS_CHEATMODE (CheatMode_Active == CHEATMODE_LANDOFTHEGIANTS) 131 #define IMPOSSIBLEMISSION_CHEATMODE (CheatMode_Active == CHEATMODE_IMPOSSIBLEMISSION) 132 #define RAINBOWBLOOD_CHEATMODE (CheatMode_Active == CHEATMODE_RAINBOWBLOOD) 133 #define TICKERTAPE_CHEATMODE (CheatMode_Active == CHEATMODE_TICKERTAPE) 134 #define NAUSEA_CHEATMODE (CheatMode_Active == CHEATMODE_NAUSEA) 135 #define FREEFALL_CHEATMODE (CheatMode_Active == CHEATMODE_FREEFALL) 136 #define BALLSOFFIRE_CHEATMODE (CheatMode_Active == CHEATMODE_BALLSOFFIRE) 137 138 139 /* e.g. to access a cheat mode 140 141 if (UserProfilePtr->CheatMode[CHEATMODE_PIGSTICKING]&CHEATMODE_IS_ACTIVE) 142 { 143 ... 144 } 145 */ 146 147 148 149 150 #define USER_PROFILES_PATH "User_Profiles/" 151 #define USER_PROFILES_WILDCARD_NAME "*.prf" 152 #define USER_PROFILES_SUFFIX ".prf" 153 154 155 #ifdef __cplusplus 156 extern "C" 157 { 158 #endif 159 160 extern void ExamineSavedUserProfiles(void); 161 extern int NumberOfUserProfiles(void); 162 extern AVP_USER_PROFILE *GetFirstUserProfile(void); 163 extern AVP_USER_PROFILE *GetNextUserProfile(void); 164 extern int SaveUserProfile(AVP_USER_PROFILE *profilePtr); 165 extern void DeleteUserProfile(int number); 166 167 extern void FixCheatModesInUserProfile(AVP_USER_PROFILE *profilePtr); 168 169 extern void GetSettingsFromUserProfile(void); 170 extern void SaveSettingsToUserProfile(AVP_USER_PROFILE *profilePtr); 171 172 extern AVP_USER_PROFILE *UserProfilePtr; 173 174 extern int CheatMode_Active; 175 extern int CheatMode_Species; 176 extern int CheatMode_Environment; 177 178 179 #ifdef __cplusplus 180 }; // extern "C" 181 #endif 182 183 #endif 184