Serious-Engine/Sources/GameMP/PlayerSettings.h
2016-03-11 15:57:17 +02:00

66 lines
2.4 KiB
C++

/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
#ifndef SE_INCL_PLAYERSETTINGS_H
#define SE_INCL_PLAYERSETTINGS_H
#ifdef PRAGMA_ONCE
#pragma once
#endif
/*
* Class responsible for describing player appearance/settings
*/
class CPlayerSettings {
public:
char ps_achModelFile[16]; // filename of the player model (zero padded, not zero terminated)
#define PS_WAS_ONLYNEW 0 // select weapon if you didn't have it before
#define PS_WAS_NONE 1 // never autoselect
#define PS_WAS_ALL 2 // always autoselect
#define PS_WAS_BETTER 3 // only if the new weapon is 'better' than what you hold now
SBYTE ps_iWeaponAutoSelect; // type of weapon autoselection
SBYTE ps_iCrossHairType; // type of crosshair used
#define PSF_HIDEWEAPON (1L<<0) // don't render weapon in 1st person
#define PSF_PREFER3RDPERSON (1L<<1) // auto switch to 3rd person
#define PSF_NOQUOTES (1L<<2) // don't tell quotes
#define PSF_AUTOSAVE (1L<<3) // auto save at specific locations
#define PSF_COMPSINGLECLICK (1L<<4) // invoke computer with single click, not double clicks
#define PSF_SHARPTURNING (1L<<5) // use prescanning to eliminate mouse lag
#define PSF_NOBOBBING (1L<<6) // view bobbing on/off (for people with motion sickness problems)
ULONG ps_ulFlags; // various flags
// get filename for model
CTFileName GetModelFilename(void) const
{
char achModelFile[MAX_PATH+1];
memset(achModelFile, 0, sizeof(achModelFile));
memcpy(achModelFile, ps_achModelFile, sizeof(ps_achModelFile));
CTString strModelFile = "ModelsMP\\Player\\"+CTString(achModelFile)+".amc";
if (!FileExists(strModelFile)) {
strModelFile = "Models\\Player\\"+CTString(achModelFile)+".amc";
}
return strModelFile;
}
};
// NOTE: never instantiate CPlayerSettings, as its size is not fixed to the size defined in engine
// use CUniversalPlayerSettings for instantiating an object
class CUniversalPlayerSettings {
public:
union {
CPlayerSettings ups_ps;
UBYTE ups_aubDummy[NET_MAXSESSIONPROPERTIES];
};
// must have exact the size as allocated block in engine
CUniversalPlayerSettings() {
ASSERT(sizeof(CPlayerSettings)<=MAX_PLAYERAPPEARANCE);
ASSERT(sizeof(CUniversalPlayerSettings)==MAX_PLAYERAPPEARANCE);
}
operator CPlayerSettings&(void) { return ups_ps; }
};
#endif /* include-once check. */