Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

172 lines
5.7 KiB
C++

#pragma once
#include "controls.hpp"
namespace Adept
{
//#########################################################################
//##################### CControlMappingList #########################
//#########################################################################
class CControlMappingList
{
private:
stlport::vector<ControlData> m_Mappings;
struct ControlDef
{
ControlDef();
~ControlDef();
//stlport::vector<ControlData>::iterator iter[3]; //save "pointer" into mappings vector for key,mouse,joy
// I'll keep the three original copies around for reconstruction if needed
ControlData cd_key;
bool cd_key_valid;
ControlData cd_joy;
bool cd_joy_valid;
ControlData cd_mouse;
bool cd_mouse_valid;
int mesg_id; //unique id of command (-1 if category heading)
int nameresid; //resource id of command name
int control_type; //category (fire,move,misc,lancemate)
int control_mask; //keyboard ctrl/alt/shift bit values
int nKey; //key id
int nMouse; //mouse button id
int nJoy; //joystick button id
int nIdx; //index in gosScript list (adjusted for category)
const char* KeyName() const;
const char* JoyName() const;
const char* MouseName() const;
private:
ControlDef(const ControlDef&); // not defined
ControlDef& operator=(const ControlDef&); // not defined
};
int m_nCount;
ControlDef *m_pcdHead;
bool m_fInvertJoyY;
bool m_fInvertMouseY;
int m_joystickButtons;
int m_Joystick; // id of the joystick being used for mappings.
bool m_ForceFeedBack;
Scalar m_MouseSensitivity;
bool m_joyStickAllowed;
bool m_mouseAllowed;
int m_joyStickShiftValue;
Stuff::Scalar m_joystick_throttle_center;
Stuff::Scalar m_joystick_throttle_dead_low;
Stuff::Scalar m_joystick_throttle_dead_high;
int m_JoystickXAxisType;
int m_JoystickRudderAxisType;
int m_MouseXAxisType;
static int compareControls(const void *elem1, const void *elem2);
void SetInvertStateOfList();
void GetInvertStateOfList();
CControlMappingList (const CControlMappingList&); // not defined
CControlMappingList& operator=(const CControlMappingList&); // not defined
bool AxisButtonUsed (int group,int element);
public:
enum {
NONE_AXIS,
TURNING_AXIS,
TORSO_AXIS
};
CControlMappingList (const char *filename,Entity::ClassData *classdata);
CControlMappingList (const ResourceID& control_stream);
CControlMappingList (void);
~CControlMappingList (void);
void Joystick(int id, Plug* owner);
int Joystick() const { return m_Joystick; }
void JoystickXAxis (int value, Plug* owner);
int JoystickXAxis (void) const
{ return m_JoystickXAxisType; }
void JoystickRudderAxis (int value, Plug* owner);
int JoystickRudderAxis (void) const
{ return m_JoystickRudderAxisType; }
void MouseXAxis (int value, Plug* owner);
int MouseXAxis (void) const
{ return m_MouseXAxisType; }
bool IsJoyYInverted() const { return m_fInvertJoyY; }
void SetJoyYInvert(bool b, Plug* owner);
bool IsMouseYInverted() const { return m_fInvertMouseY; }
void SetMouseYInvert(bool b, Plug* owner);
bool IsMouseAllowed() const { return m_mouseAllowed; }
void SetMouseAllowed(bool b, Plug*);
bool IsJoyStickAllowed() const { return m_joyStickAllowed; }
void SetJoyStickAllowed(bool b, Plug*);
bool IsJoyStickShiftAllowed() const {return m_joyStickShiftValue != -1;}
int SetJoyStickShiftAllowed(bool b, Plug*, int* retIndex1, int* retIndex2);
int GetJoyStickShiftValue() const {return m_joyStickShiftValue;}
int SetJoyStickShiftValue(int n, Plug*, int* retIndex1, int* retIndex2);
Scalar JoyStickThrottleCenter() const {return m_joystick_throttle_center;}
void JoyStickThrottleCenter(Scalar s, Plug*);
Scalar JoyStickThrottleLow() const {return m_joystick_throttle_dead_low;}
void JoyStickThrottleLow(Scalar s, Plug*);
Scalar JoyStickThrottleHigh() const {return m_joystick_throttle_dead_high;}
void JoyStickThrottleHigh(Scalar s, Plug*);
void InitializeThrottleConstants();
bool ForceFeedBack (void) const
{ return m_ForceFeedBack; }
void ForceFeedBack (bool value, Plug* owner);
Scalar MouseSensitivity (void) const
{ return m_MouseSensitivity; }
void MouseSensitivity (Scalar value, Plug* owner);
void SaveList (const ResourceID& control_stream);
void SaveList (MemoryStream& res);
void LoadList (const char *filename,Entity::ClassData *classdata);
void LoadList (const ResourceID& control_stream);
void LoadList (MemoryStream& resource_locker);
void LoadDefault (void);
void ApplyList (Plug *owner);
int GetList(bool fRestoreDefaults);
void SetList(Plug* owner);
void FillDefault (stlport::vector<ControlData>& list);
stlport::vector<ControlData>::iterator StartList (void);
stlport::vector<ControlData>::iterator EndList (void);
void ReplaceList (stlport::vector<ControlData>::iterator start,stlport::vector<ControlData>::iterator end);
stlport::vector<ControlData> &List (void)
{ return m_Mappings; }
int DefListSize() const {return m_nCount;}
const ControlDef& GetControlDef(int i) const {return m_pcdHead[i];}
int AssignControlKey(Plug* owner, int nRow, int newKey, int newModifiers);
int AssignControlJoy(Plug* owner, int nRow, int newJoy, int shift);
int AssignControlMouse(Plug* owner, int nRow, int newMouse);
};
extern CControlMappingList *g_ControlList;
};
//Adept::CControlsMappingList::ControlDef foo;