Serious-Engine/Sources/GameMP/PlayerSettings.h

80 lines
2.9 KiB
C
Raw Normal View History

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