2016-03-12 01:20:51 +01:00
|
|
|
/* Copyright (c) 2002-2012 Croteam Ltd.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of version 2 of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation
|
|
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
|
2016-03-11 14:57:17 +01:00
|
|
|
|
|
|
|
#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. */
|
|
|
|
|
2016-03-12 01:20:51 +01:00
|
|
|
|