mirror of
https://gitlab.com/skmp/dca3-game.git
synced 2025-08-22 06:13:48 +02:00
Should actually fix the unpluggin problem, also reset Dual analog state when reconnected, in case a normal controller is connected
This commit is contained in:

committed by
Stefanos Kornilios Mitsis Poiitidis
parent
76c5fae015
commit
267f39b9fd
129
src/core/Pad.cpp
129
src/core/Pad.cpp
@@ -1167,6 +1167,11 @@ void CPad::ProcessPCSpecificStuff(void)
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void attachtest (maple_device_t *dev)
|
||||||
|
{
|
||||||
|
CPad::GetPad(0)->IsDualAnalog = false;
|
||||||
|
}
|
||||||
|
|
||||||
void CPad::Update(int16 pad)
|
void CPad::Update(int16 pad)
|
||||||
{
|
{
|
||||||
OldState = NewState;
|
OldState = NewState;
|
||||||
@@ -1433,10 +1438,42 @@ void CPad::Update(int16 pad)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef RW_DC
|
#ifdef RW_DC
|
||||||
|
if (((NewState.RightStickY > 64 && OldState.RightStickY > 64)) || ((NewState.RightStickY) < -64 && (OldState.RightStickY < -64)))
|
||||||
|
{
|
||||||
|
// if (contMaple == nullptr)
|
||||||
|
// CPad::GetPad(0)->IsDualAnalog = false;
|
||||||
|
// else
|
||||||
|
CPad::GetPad(0)->IsDualAnalog = true;
|
||||||
|
}
|
||||||
|
|
||||||
//CPad::IsDualAnalog = cont_has_capabilities(contMaple, CONT_CAPABILITIES_DUAL_ANALOG); //Query controller about Dual analog capabilities
|
//CPad::IsDualAnalog = cont_has_capabilities(contMaple, CONT_CAPABILITIES_DUAL_ANALOG); //Query controller about Dual analog capabilities
|
||||||
|
|
||||||
if (pad == 0)
|
if (pad == 0)
|
||||||
|
{
|
||||||
|
if (contMaple == NULL)
|
||||||
|
{
|
||||||
|
CPad::GetPad(0)->IsDualAnalog = false;
|
||||||
|
NewState.DPadUp = 0;
|
||||||
|
NewState.DPadDown = 0;
|
||||||
|
NewState.DPadLeft = 0;
|
||||||
|
NewState.DPadRight = 0;
|
||||||
|
NewState.A = 0;
|
||||||
|
NewState.B = 0;
|
||||||
|
NewState.C = 0;
|
||||||
|
NewState.D = 0;
|
||||||
|
NewState.X = 0;
|
||||||
|
NewState.Y = 0;
|
||||||
|
NewState.Z = 0;
|
||||||
|
NewState.Start = 0;
|
||||||
|
NewState.RightTrigger = 0;
|
||||||
|
NewState.LeftTrigger = 0;
|
||||||
|
NewState.LeftStickX = 0;
|
||||||
|
NewState.LeftStickY = 0;
|
||||||
|
NewState.RightStickX = 0;
|
||||||
|
NewState.RightStickY = 0;
|
||||||
|
NewState.RightShock = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
NewState.DPadUp = state->dpad_up; //This part could be inside a compiler directive to preserve the old code and just use this block if compil
|
NewState.DPadUp = state->dpad_up; //This part could be inside a compiler directive to preserve the old code and just use this block if compil
|
||||||
NewState.DPadDown = state->dpad_down; //I also changed CControllerState inside Pad.h and created these values for DC controllers
|
NewState.DPadDown = state->dpad_down; //I also changed CControllerState inside Pad.h and created these values for DC controllers
|
||||||
@@ -1459,6 +1496,8 @@ void CPad::Update(int16 pad)
|
|||||||
NewState.RightShock = state->dpad_left;
|
NewState.RightShock = state->dpad_left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NewState.DPadUp = 0;
|
NewState.DPadUp = 0;
|
||||||
@@ -1482,32 +1521,29 @@ void CPad::Update(int16 pad)
|
|||||||
NewState.RightShock = 0;
|
NewState.RightShock = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto contMaple = maple_enum_type(0, MAPLE_FUNC_CONTROLLER);
|
// if (old_contMaple == nullptr && contMaple != nullptr)
|
||||||
auto state = (cont_state_t *)maple_dev_status(contMaple);
|
// {
|
||||||
|
// CPad::GetPad(0)->IsDualAnalog = false;
|
||||||
if (contMaple == nullptr)
|
// NewState.DPadUp = 0;
|
||||||
{
|
// NewState.DPadDown = 0;
|
||||||
//CPad::GetPad(0)->IsDualAnalog = false;
|
// NewState.DPadLeft = 0;
|
||||||
NewState.DPadUp = 0;
|
// NewState.DPadRight = 0;
|
||||||
NewState.DPadDown = 0;
|
// NewState.A = 0;
|
||||||
NewState.DPadLeft = 0;
|
// NewState.B = 0;
|
||||||
NewState.DPadRight = 0;
|
// NewState.C = 0;
|
||||||
NewState.A = 0;
|
// NewState.D = 0;
|
||||||
NewState.B = 0;
|
// NewState.X = 0;
|
||||||
NewState.C = 0;
|
// NewState.Y = 0;
|
||||||
NewState.D = 0;
|
// NewState.Z = 0;
|
||||||
NewState.X = 0;
|
// NewState.Start = 0;
|
||||||
NewState.Y = 0;
|
// NewState.RightTrigger = 0;
|
||||||
NewState.Z = 0;
|
// NewState.LeftTrigger = 0;
|
||||||
NewState.Start = 0;
|
// NewState.LeftStickX = 0;
|
||||||
NewState.RightTrigger = 0;
|
// NewState.LeftStickY = 0;
|
||||||
NewState.LeftTrigger = 0;
|
// NewState.RightStickX = 0;
|
||||||
NewState.LeftStickX = 0;
|
// NewState.RightStickY = 0;
|
||||||
NewState.LeftStickY = 0;
|
// NewState.RightShock = 0;
|
||||||
NewState.RightStickX = 0;
|
// }
|
||||||
NewState.RightStickY = 0;
|
|
||||||
NewState.RightShock = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
NewState = ReconcileTwoControllersInput(PCTempKeyState, PCTempJoyState);
|
NewState = ReconcileTwoControllersInput(PCTempKeyState, PCTempJoyState);
|
||||||
@@ -1526,21 +1562,44 @@ void CPad::Update(int16 pad)
|
|||||||
|
|
||||||
bHornHistory[iCurrHornHistory] = GetHorn();
|
bHornHistory[iCurrHornHistory] = GetHorn();
|
||||||
|
|
||||||
#ifdef RW_DC
|
|
||||||
if (((NewState.RightStickY > 64 && OldState.RightStickY > 64)) || ((NewState.RightStickY) < -64 && (OldState.RightStickY < -64)))
|
|
||||||
{
|
|
||||||
if (contMaple == nullptr)
|
|
||||||
CPad::GetPad(0)->IsDualAnalog = false;
|
|
||||||
else
|
|
||||||
CPad::GetPad(0)->IsDualAnalog = true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef RW_DC
|
||||||
|
auto old_contMaple = contMaple;
|
||||||
|
auto n_dev = maple_enum_count();
|
||||||
|
contMaple = maple_enum_type(0, MAPLE_FUNC_CONTROLLER);
|
||||||
|
state = (cont_state_t *)maple_dev_status(contMaple);
|
||||||
|
#endif
|
||||||
|
// if (n_dev == 0)
|
||||||
|
// {
|
||||||
|
// CPad::GetPad(0)->IsDualAnalog = false;
|
||||||
|
// NewState.DPadUp = 0;
|
||||||
|
// NewState.DPadDown = 0;
|
||||||
|
// NewState.DPadLeft = 0;
|
||||||
|
// NewState.DPadRight = 0;
|
||||||
|
// NewState.A = 0;
|
||||||
|
// NewState.B = 0;
|
||||||
|
// NewState.C = 0;
|
||||||
|
// NewState.D = 0;
|
||||||
|
// NewState.X = 0;
|
||||||
|
// NewState.Y = 0;
|
||||||
|
// NewState.Z = 0;
|
||||||
|
// NewState.Start = 0;
|
||||||
|
// NewState.RightTrigger = 0;
|
||||||
|
// NewState.LeftTrigger = 0;
|
||||||
|
// NewState.LeftStickX = 0;
|
||||||
|
// NewState.LeftStickY = 0;
|
||||||
|
// NewState.RightStickX = 0;
|
||||||
|
// NewState.RightStickY = 0;
|
||||||
|
// NewState.RightShock = 0;
|
||||||
|
// }
|
||||||
|
|
||||||
if ( !bDisplayNoControllerMessage )
|
if ( !bDisplayNoControllerMessage )
|
||||||
CGame::bDemoMode = false;
|
CGame::bDemoMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CPad::DoCheats(void)
|
void CPad::DoCheats(void)
|
||||||
{
|
{
|
||||||
#ifdef DETECT_PAD_INPUT_SWITCH
|
#ifdef DETECT_PAD_INPUT_SWITCH
|
||||||
|
Reference in New Issue
Block a user