18 #ifndef INC_C4PlayerControl
19 #define INC_C4PlayerControl
53 bool fIsHoldKey{
false};
54 bool fDefaultDisabled{
false};
55 bool fSendCursorPos{
false};
57 int32_t iInitialRepeatDelay;
58 C4ID idControlExtraData;
99 typedef std::vector<C4PlayerControlDef> DefVecImpl;
101 bool clear_previous{
false};
165 void UpdateKeyName();
166 bool operator ==(
const KeyComboItem &cmp)
const {
return Key==cmp.
Key; }
168 typedef std::vector<KeyComboItem> KeyComboVec;
169 KeyComboVec KeyCombo;
170 bool fComboIsSequence;
179 bool fOverrideAssignments{
false};
180 bool is_inherited{
false};
181 bool fRefsResolved{
false};
182 int32_t iGUIGroup{0};
184 int32_t iPriority{0};
219 bool HasCombo()
const {
return KeyCombo.size()>1; }
237 bool has_keyboard{
true};
238 bool has_mouse{
true};
239 bool has_gamepad{
false};
281 typedef std::list<C4PlayerControlAssignmentSet> AssignmentSetList;
282 AssignmentSetList Sets;
283 bool clear_previous{
false};
317 bool Save(
C4Group &hGroup,
const char *szFilename);
343 typedef std::list<C4KeyBinding *> KeyBindingList;
344 KeyBindingList KeyBindings;
347 bool IsCursorPosRequested{
false};
395 bool ExecuteControl(int32_t iControl,
ControlState state,
const C4KeyEventData &rKeyExtraData, int32_t iTriggerMode,
bool fRepeated,
bool fHandleDownStateOnly);
400 void AddKeyBinding(
const C4KeyCodeEx &key,
bool fHoldKey, int32_t idx);
404 bool GetCurrentPlayerCursorPos(int32_t *x_out, int32_t *y_out, int32_t *game_x_out, int32_t *game_y_out);
422 {
return Sync.GetControlDownState(iControl); }
431 bool DoMouseInput(uint8_t mouse_id, int32_t mouseevent,
float game_x,
float game_y,
float gui_x,
float gui_y,
DWORD flags);
434 bool SetControlDisabled(
int ctrl,
bool is_disabled) {
return Sync.SetControlDisabled(ctrl, is_disabled); }
std::vector< C4PlayerControlAssignment > C4PlayerControlAssignmentVec
std::vector< C4KeyCodeEx > C4KeyCodeExVec
std::list< C4PlayerControlRecentKey > C4PlayerControlRecentKeyList
std::vector< const C4PlayerControlAssignment * > C4PlayerControlAssignmentPVec
const float C4GFX_ZoomStep
bool IsWildcardString(const char *szString)
void SetInheritedAssignment(const C4PlayerControlAssignment *to_val)
int32_t GetControl() const
void SetKey(const C4KeyCodeEx &key)
bool IsComboMatched(const C4PlayerControlRecentKeyList &DownKeys, const C4PlayerControlRecentKeyList &RecentKeys) const
int32_t GetGUIGroup() const
const char * GetControlName() const
const C4PlayerControlAssignment * GetInheritedAssignment() const
const char * GetGUIName(const C4PlayerControlDefs &defs) const
StdStrBuf GetKeysAsString(bool human_readable, bool short_name) const
~C4PlayerControlAssignment()=default
void SetControlName(const char *control_name)
bool IsAlwaysUnhandled() const
void CopyKeyFrom(const C4PlayerControlAssignment &src_assignment)
const char * GetGUIDesc(const C4PlayerControlDefs &defs) const
bool operator<(const C4PlayerControlAssignment &cmp) const
bool IsOverrideAssignments() const
bool IsKeyChanged() const
void CompileFunc(StdCompiler *pComp)
int32_t GetTriggerMode() const
bool IsGUIDisabled() const
bool ResolveRefs(class C4PlayerControlAssignmentSet *pParentSet, C4PlayerControlDefs *pControlDefs)
const C4KeyCodeEx & GetTriggerKey() const
@ CTM_HandleDownStatesOnly
bool operator==(const C4PlayerControlAssignment &cmp) const
void SetInherited(bool to_val)
void ResetKeyToInherited()
C4PlayerControlAssignment()
bool IsRefsResolved() const
C4PlayerControlAssignment * GetAssignmentByControlName(const char *szControlName)
bool operator==(const C4PlayerControlAssignmentSet &cmp) const
bool ResolveRefs(C4PlayerControlDefs *pControlDefs)
bool IsWildcardName() const
void RemoveAssignmentByControlName(const char *control_name)
void MergeFrom(const C4PlayerControlAssignmentSet &Src, MergeMode merge_mode)
C4PlayerControlAssignmentSet()=default
void GetAssignmentsByKey(const C4PlayerControlDefs &rDefs, const C4KeyCodeEx &key, bool fHoldKeysOnly, C4PlayerControlAssignmentPVec *pOutVec, const C4PlayerControlRecentKeyList &DownKeys, const C4PlayerControlRecentKeyList &RecentKeys) const
bool IsMouseControlAssigned(int32_t mouseevent) const
const char * GetGUIName() const
C4PlayerControlAssignment * GetAssignmentByControl(int32_t control)
void InitEmptyFromTemplate(const C4PlayerControlAssignmentSet &template_set)
C4Facet GetPicture() const
int32_t GetLayoutOrder() const
C4PlayerControlAssignment * GetAssignmentByIndex(int32_t index)
~C4PlayerControlAssignmentSet()=default
C4PlayerControlAssignment * CreateAssignmentForControl(const char *control_name)
void GetTriggerKeys(const C4PlayerControlDefs &rDefs, C4KeyCodeExVec *pRegularKeys, C4KeyCodeExVec *pHoldKeys) const
void CompileFunc(StdCompiler *pComp)
const char * GetName() const
C4PlayerControlAssignmentSet * GetDefaultSet()
bool ResolveRefs(C4PlayerControlDefs *pControlDefs)
C4PlayerControlAssignmentSet * GetSetByName(const char *szName)
C4PlayerControlAssignmentSet * CreateEmptySetByTemplate(const C4PlayerControlAssignmentSet &template_set)
~C4PlayerControlAssignmentSets()=default
void MergeFrom(const C4PlayerControlAssignmentSets &Src, C4PlayerControlAssignmentSet::MergeMode merge_mode)
int32_t GetSetIndex(const C4PlayerControlAssignmentSet *set) const
bool operator==(const C4PlayerControlAssignmentSets &cmp) const
void CompileFunc(StdCompiler *pComp)
size_t GetSetCount() const
void RemoveSetByName(const char *set_name)
C4PlayerControlAssignmentSets()=default
C4PlayerControlAssignmentSet * GetSetByIndex(int32_t index)
void CompileFunc(StdCompiler *pComp)
C4ID GetExtraData() const
int32_t GetRepeatDelay() const
int32_t GetInitialRepeatDelay() const
bool IsDefaultDisabled() const
const char * GetIdentifier() const
bool Execute(bool fUp, const C4KeyEventData &rKeyExtraData)
@ CDA_ObjectMenuTextComplete
const char * GetGUIName() const
bool IsSyncObjectMenuControl() const
bool operator==(const C4PlayerControlDef &cmp) const
~C4PlayerControlDef()=default
CoordinateSpace GetCoordinateSpace() const
Actions GetAction() const
bool IsSendCursorPos() const
const char * GetGUIDesc() const
C4PlayerControlDefs()=default
void MergeFrom(const C4PlayerControlDefs &Src)
void UpdateInternalCons()
int32_t GetControlIndexByIdentifier(const char *szIdentifier) const
bool operator==(const C4PlayerControlDefs &cmp) const
~C4PlayerControlDefs()=default
void CompileFunc(StdCompiler *pComp)
const C4PlayerControlDef * GetControlByIndex(int32_t idx) const
struct C4PlayerControlDefs::CInternalCons InternalCons
bool Load(C4Group &hGroup, const char *szFilename, C4LangStringTable *pLang)
bool Save(C4Group &hGroup, const char *szFilename)
void CompileFunc(StdCompiler *pComp)
const C4PlayerControlDefs & GetControlDefs() const
const C4PlayerControlAssignmentSets & GetAssignmentSets() const
void ExecuteControlPacket(const class C4ControlPlayerControl *pCtrl)
bool DoMouseInput(uint8_t mouse_id, int32_t mouseevent, float game_x, float game_y, float gui_x, float gui_y, DWORD flags)
bool SetControlDisabled(int ctrl, bool is_disabled)
const CSync::ControlDownState * GetControlDownState(int32_t iControl) const
bool IsControlDisabled(int ctrl) const
void RegisterKeyset(int32_t iPlr, C4PlayerControlAssignmentSet *pKeyset)
void CompileFunc(StdCompiler *pComp)
const char * getData() const
C4KeyEventData MovedState
void CompileFunc(StdCompiler *pComp)
bool operator==(const ControlDownState &cmp) const
ControlDownState(const C4KeyEventData &rDownState, int32_t iDownFrame, bool fDownByUser)
bool SetControlDisabled(int32_t iControl, int32_t iVal)
void SetControlMovedState(int32_t iControl, const C4KeyEventData &rMovedState, int32_t iMovedFrame)
std::vector< int32_t > DisableStateVec
int32_t GetControlDisabled(int32_t iControl) const
bool IsControlDisabled(int32_t iControl) const
void SetControlDownState(int32_t iControl, const C4KeyEventData &rDownState, int32_t iDownFrame, bool fDownByUser)
DownStateVec ControlDownStates
bool operator==(const CSync &cmp) const
void ResetControlDownState(int32_t iControl)
const ControlDownState * GetControlDownState(int32_t iControl) const
void CompileFunc(StdCompiler *pComp)
std::vector< ControlDownState > DownStateVec
DisableStateVec ControlDisableStates
void InitDefaults(const C4PlayerControlDefs &ControlDefs)
int32_t CON_ObjectMenuOKAll
int32_t CON_ObjectMenuSelect
int32_t CON_ObjectMenuCancel
C4PlayerControlRecentKey(const C4KeyCodeEx &pressed_key, const C4KeyCodeEx &matched_key, C4TimeMilliseconds tTime)
bool operator==(const C4KeyCodeEx &cmp)