mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-28 12:30:46 +00:00
- processed all remaining local input CCMDs and removed some bits only needed for multiplayer.
These MP bits should be reimplemented as network commands later, they only take up valuable space in the bit field.
This commit is contained in:
parent
ee7d558282
commit
d62d2eaec7
26 changed files with 123 additions and 225 deletions
|
@ -74,6 +74,7 @@ char gUserMapFilename[BMAX_PATH];
|
||||||
short BloodVersion = 0x115;
|
short BloodVersion = 0x115;
|
||||||
|
|
||||||
int gNetPlayers;
|
int gNetPlayers;
|
||||||
|
int gQuitRequest;
|
||||||
|
|
||||||
int gChokeCounter = 0;
|
int gChokeCounter = 0;
|
||||||
|
|
||||||
|
@ -81,7 +82,6 @@ double g_gameUpdateTime, g_gameUpdateAndDrawTime;
|
||||||
double g_gameUpdateAvgTime = 0.001;
|
double g_gameUpdateAvgTime = 0.001;
|
||||||
|
|
||||||
bool gQuitGame;
|
bool gQuitGame;
|
||||||
int gQuitRequest;
|
|
||||||
|
|
||||||
enum gametokens
|
enum gametokens
|
||||||
{
|
{
|
||||||
|
@ -522,7 +522,6 @@ bool gRestartGame = false;
|
||||||
|
|
||||||
void ProcessFrame(void)
|
void ProcessFrame(void)
|
||||||
{
|
{
|
||||||
char buffer[128];
|
|
||||||
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
||||||
{
|
{
|
||||||
auto& inp = gPlayer[i].input;
|
auto& inp = gPlayer[i].input;
|
||||||
|
@ -538,6 +537,7 @@ void ProcessFrame(void)
|
||||||
}
|
}
|
||||||
gNetFifoTail++;
|
gNetFifoTail++;
|
||||||
|
|
||||||
|
#if 0
|
||||||
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
||||||
{
|
{
|
||||||
if (gPlayer[i].input.syncFlags.quit)
|
if (gPlayer[i].input.syncFlags.quit)
|
||||||
|
@ -561,6 +561,7 @@ void ProcessFrame(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
viewClearInterpolations();
|
viewClearInterpolations();
|
||||||
{
|
{
|
||||||
if (paused || gEndGameMgr.at0 || (gGameOptions.nGameType == 0 && M_Active()))
|
if (paused || gEndGameMgr.at0 || (gGameOptions.nGameType == 0 && M_Active()))
|
||||||
|
@ -703,7 +704,6 @@ void GameInterface::app_init()
|
||||||
Printf(PRINT_NONOTIFY, "Initializing sound system\n");
|
Printf(PRINT_NONOTIFY, "Initializing sound system\n");
|
||||||
sndInit();
|
sndInit();
|
||||||
registerosdcommands();
|
registerosdcommands();
|
||||||
registerinputcommands();
|
|
||||||
|
|
||||||
gChoke.sub_83ff0(518, sub_84230);
|
gChoke.sub_83ff0(518, sub_84230);
|
||||||
UpdateDacs(0, true);
|
UpdateDacs(0, true);
|
||||||
|
@ -792,8 +792,10 @@ static void drawBackground()
|
||||||
{
|
{
|
||||||
twod->ClearScreen();
|
twod->ClearScreen();
|
||||||
DrawTexture(twod, tileGetTexture(2518, true), 0, 0, DTA_FullscreenEx, FSMode_ScaleToFit43, TAG_DONE);
|
DrawTexture(twod, tileGetTexture(2518, true), 0, 0, DTA_FullscreenEx, FSMode_ScaleToFit43, TAG_DONE);
|
||||||
|
#if 0
|
||||||
if (gQuitRequest && !gQuitGame)
|
if (gQuitRequest && !gQuitGame)
|
||||||
netBroadcastMyLogoff(gQuitRequest == 2);
|
netBroadcastMyLogoff(gQuitRequest == 2);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void commonTicker()
|
static void commonTicker()
|
||||||
|
|
|
@ -87,7 +87,6 @@ struct GameInterface : ::GameInterface
|
||||||
void DrawCenteredTextScreen(const DVector2& origin, const char* text, int position, bool bg) override;
|
void DrawCenteredTextScreen(const DVector2& origin, const char* text, int position, bool bg) override;
|
||||||
void QuitToTitle() override;
|
void QuitToTitle() override;
|
||||||
FString GetCoordString() override;
|
FString GetCoordString() override;
|
||||||
void clearlocalinputstate() override;
|
|
||||||
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
||||||
|
|
||||||
GameStats getStats() override;
|
GameStats getStats() override;
|
||||||
|
|
|
@ -44,8 +44,6 @@ InputPacket gInput, gNetInput;
|
||||||
bool bSilentAim = false;
|
bool bSilentAim = false;
|
||||||
|
|
||||||
int iTurnCount = 0;
|
int iTurnCount = 0;
|
||||||
static int WeaponToSend;
|
|
||||||
static SYNCFLAGS BitsToSend;
|
|
||||||
|
|
||||||
void ctrlInit(void)
|
void ctrlInit(void)
|
||||||
{
|
{
|
||||||
|
@ -131,7 +129,7 @@ void ctrlGetInput(void)
|
||||||
InputPacket input = {};
|
InputPacket input = {};
|
||||||
|
|
||||||
bool mouseaim = in_mousemode || buttonMap.ButtonDown(gamefunc_Mouse_Aiming);
|
bool mouseaim = in_mousemode || buttonMap.ButtonDown(gamefunc_Mouse_Aiming);
|
||||||
if (!mouseaim) gInput.syncFlags.lookCenter = 1;
|
if (!mouseaim) gInput.actions |= SB_CENTERVIEW;
|
||||||
|
|
||||||
if (numplayers == 1)
|
if (numplayers == 1)
|
||||||
{
|
{
|
||||||
|
@ -141,15 +139,8 @@ void ctrlGetInput(void)
|
||||||
|
|
||||||
CONTROL_GetInput(&info);
|
CONTROL_GetInput(&info);
|
||||||
|
|
||||||
if (gQuitRequest)
|
|
||||||
gInput.syncFlags.quit = 1;
|
|
||||||
|
|
||||||
gInput.syncFlags.value |= BitsToSend.value;
|
|
||||||
ApplyGlobalInput(gInput, &info);
|
ApplyGlobalInput(gInput, &info);
|
||||||
|
|
||||||
BitsToSend.value = 0;
|
|
||||||
WeaponToSend = 0;
|
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Shrink_Screen))
|
if (buttonMap.ButtonDown(gamefunc_Shrink_Screen))
|
||||||
{
|
{
|
||||||
if (automapMode != am_off)
|
if (automapMode != am_off)
|
||||||
|
@ -200,7 +191,7 @@ void ctrlGetInput(void)
|
||||||
gInput.syncFlags.lookDown |= buttonMap.ButtonDown(gamefunc_Look_Down);
|
gInput.syncFlags.lookDown |= buttonMap.ButtonDown(gamefunc_Look_Down);
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Look_Up) || buttonMap.ButtonDown(gamefunc_Look_Down))
|
if (buttonMap.ButtonDown(gamefunc_Look_Up) || buttonMap.ButtonDown(gamefunc_Look_Down))
|
||||||
gInput.syncFlags.lookCenter = 1;
|
gInput.actions |= SB_CENTERVIEW;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gInput.syncFlags.lookUp |= buttonMap.ButtonDown(gamefunc_Aim_Up);
|
gInput.syncFlags.lookUp |= buttonMap.ButtonDown(gamefunc_Aim_Up);
|
||||||
|
@ -332,26 +323,4 @@ void ctrlGetInput(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// CCMD based input. The basics are from Randi's ZDuke but this uses dynamic
|
|
||||||
// registration to only have the commands active when this game module runs.
|
|
||||||
//
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void registerinputcommands()
|
|
||||||
{
|
|
||||||
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend.lookCenter = 1; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend.holsterWeapon = 1; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend.spin180 = 1; return CCMD_OK; });
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
|
||||||
void GameInterface::clearlocalinputstate()
|
|
||||||
{
|
|
||||||
WeaponToSend = 0;
|
|
||||||
BitsToSend.value = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
END_BLD_NS
|
END_BLD_NS
|
||||||
|
|
|
@ -295,8 +295,7 @@ void GameInterface::QuitToTitle()
|
||||||
gQuitGame = true;
|
gQuitGame = true;
|
||||||
gRestartGame = true;
|
gRestartGame = true;
|
||||||
}
|
}
|
||||||
else
|
//else gQuitRequest = 2;
|
||||||
gQuitRequest = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
END_BLD_NS
|
END_BLD_NS
|
||||||
|
|
|
@ -42,7 +42,6 @@ void sub_5571C(char mode);
|
||||||
void sub_557C4(int x, int y, int interpolation);
|
void sub_557C4(int x, int y, int interpolation);
|
||||||
void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz, int smooth, int viewPlayer);
|
void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz, int smooth, int viewPlayer);
|
||||||
int32_t registerosdcommands(void);
|
int32_t registerosdcommands(void);
|
||||||
void registerinputcommands(void);
|
|
||||||
int qanimateoffs(int a1, int a2);
|
int qanimateoffs(int a1, int a2);
|
||||||
int32_t qgetpalookup(int32_t a1, int32_t a2);
|
int32_t qgetpalookup(int32_t a1, int32_t a2);
|
||||||
void HookReplaceFunctions();
|
void HookReplaceFunctions();
|
||||||
|
|
|
@ -295,6 +295,21 @@ CCMD(invuse)
|
||||||
ActionsToSend |= SB_INVUSE;
|
ActionsToSend |= SB_INVUSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CCMD(centerview)
|
||||||
|
{
|
||||||
|
ActionsToSend |= SB_CENTERVIEW;
|
||||||
|
}
|
||||||
|
|
||||||
|
CCMD(turnaround)
|
||||||
|
{
|
||||||
|
ActionsToSend |= SB_TURNAROUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
CCMD(holsterweapon)
|
||||||
|
{
|
||||||
|
ActionsToSend |= SB_HOLSTER;
|
||||||
|
}
|
||||||
|
|
||||||
CCMD(pause)
|
CCMD(pause)
|
||||||
{
|
{
|
||||||
sendPause = true;
|
sendPause = true;
|
||||||
|
@ -328,4 +343,25 @@ void ApplyGlobalInput(InputPacket& input, ControlInfo *info)
|
||||||
input.actions |= ActionsToSend;
|
input.actions |= ActionsToSend;
|
||||||
ActionsToSend = 0;
|
ActionsToSend = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
void registerinputcommands()
|
||||||
|
{
|
||||||
|
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend.lookCenter = 1; return CCMD_OK; });
|
||||||
|
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend.holsterWeapon = 1; return CCMD_OK; });
|
||||||
|
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend.spin180 = 1; return CCMD_OK; });
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// CCMD based input. The basics are from Randi's ZDuke but this uses dynamic
|
||||||
|
// registration to only have the commands active when this game module runs.
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
C_RegisterFunction("backoff", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_ESCAPE; return CCMD_OK; });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -66,11 +66,11 @@ int32_t handleevents(void);
|
||||||
|
|
||||||
enum GameFunction_t
|
enum GameFunction_t
|
||||||
{
|
{
|
||||||
gamefunc_Move_Forward,
|
gamefunc_Move_Forward, //
|
||||||
gamefunc_Move_Backward,
|
gamefunc_Move_Backward, //
|
||||||
gamefunc_Turn_Left,
|
gamefunc_Turn_Left, //
|
||||||
gamefunc_Turn_Right,
|
gamefunc_Turn_Right, //
|
||||||
gamefunc_Strafe,
|
gamefunc_Strafe, //
|
||||||
gamefunc_Fire,
|
gamefunc_Fire,
|
||||||
gamefunc_Open,
|
gamefunc_Open,
|
||||||
gamefunc_Run,
|
gamefunc_Run,
|
||||||
|
@ -81,8 +81,8 @@ enum GameFunction_t
|
||||||
gamefunc_Look_Down,
|
gamefunc_Look_Down,
|
||||||
gamefunc_Look_Left,
|
gamefunc_Look_Left,
|
||||||
gamefunc_Look_Right,
|
gamefunc_Look_Right,
|
||||||
gamefunc_Strafe_Left,
|
gamefunc_Strafe_Left, //
|
||||||
gamefunc_Strafe_Right,
|
gamefunc_Strafe_Right, //
|
||||||
gamefunc_Aim_Up,
|
gamefunc_Aim_Up,
|
||||||
gamefunc_Aim_Down,
|
gamefunc_Aim_Down,
|
||||||
gamefunc_Shrink_Screen, // Automap only
|
gamefunc_Shrink_Screen, // Automap only
|
||||||
|
|
|
@ -18,14 +18,17 @@ enum ESyncBits_ : uint32_t
|
||||||
SB_INVPREV = 1 << 11,
|
SB_INVPREV = 1 << 11,
|
||||||
SB_INVNEXT = 1 << 12,
|
SB_INVNEXT = 1 << 12,
|
||||||
SB_INVUSE = 1 << 13,
|
SB_INVUSE = 1 << 13,
|
||||||
|
SB_CENTERVIEW = 1 << 14,
|
||||||
|
SB_TURNAROUND = 1 << 15,
|
||||||
|
SB_HOLSTER = 1 << 16,
|
||||||
|
|
||||||
SB_WEAPONMASK_BITS = (15u * SB_FIRST_WEAPON_BIT), // Weapons take up 4 bits
|
SB_WEAPONMASK_BITS = (15u * SB_FIRST_WEAPON_BIT), // Weapons take up 4 bits
|
||||||
SB_ITEMUSE_BITS = (127u * SB_ITEM_BIT_1),
|
SB_ITEMUSE_BITS = (127u * SB_ITEM_BIT_1),
|
||||||
|
|
||||||
SB_BUTTON_MASK = 0, // all input from buttons (i.e. active while held)
|
SB_BUTTON_MASK = 0, // all input from buttons (i.e. active while held)
|
||||||
SB_INTERFACE_MASK = (SB_INVPREV|SB_INVNEXT|SB_INVUSE), // all input from CCMDs
|
SB_INTERFACE_MASK = (SB_INVPREV|SB_INVNEXT|SB_INVUSE|SB_CENTERVIEW|SB_TURNAROUND|SB_HOLSTER), // all input from CCMDs
|
||||||
SB_INTERFACE_BITS = (SB_WEAPONMASK_BITS | SB_ITEMUSE_BITS | SB_INTERFACE_MASK)
|
SB_INTERFACE_BITS = (SB_WEAPONMASK_BITS | SB_ITEMUSE_BITS | SB_INTERFACE_MASK),
|
||||||
|
SB_ALL = ~0u
|
||||||
};
|
};
|
||||||
|
|
||||||
// enforce type safe operations on the input bits.
|
// enforce type safe operations on the input bits.
|
||||||
|
@ -67,19 +70,13 @@ enum EDukeSyncBits_ : uint32_t
|
||||||
SKB_LOOK_RIGHT = 1 << 7,
|
SKB_LOOK_RIGHT = 1 << 7,
|
||||||
SKB_LOOK_UP = 1 << 13,
|
SKB_LOOK_UP = 1 << 13,
|
||||||
SKB_LOOK_DOWN = 1 << 14,
|
SKB_LOOK_DOWN = 1 << 14,
|
||||||
SKB_MULTIFLAG = 1 << 17,
|
|
||||||
SKB_CENTER_VIEW = 1 << 18,
|
|
||||||
SKB_HOLSTER = 1 << 19,
|
|
||||||
SKB_QUICK_KICK = 1 << 22,
|
SKB_QUICK_KICK = 1 << 22,
|
||||||
SKB_AIMMODE = 1 << 23,
|
SKB_AIMMODE = 1 << 23,
|
||||||
SKB_GAMEQUIT = 1 << 26,
|
|
||||||
SKB_TURNAROUND = 1 << 28,
|
|
||||||
SKB_OPEN = 1 << 29,
|
SKB_OPEN = 1 << 29,
|
||||||
SKB_ESCAPE = 1u << 31,
|
SKB_ESCAPE = 1u << 31,
|
||||||
|
|
||||||
SKB_INTERFACE_BITS = (SKB_QUICK_KICK | \
|
SKB_INTERFACE_BITS = (SKB_QUICK_KICK | \
|
||||||
SKB_HOLSTER | \
|
SKB_OPEN | SKB_ESCAPE),
|
||||||
SKB_TURNAROUND | SKB_OPEN | SKB_ESCAPE),
|
|
||||||
|
|
||||||
SKB_NONE = 0,
|
SKB_NONE = 0,
|
||||||
SKB_ALL = ~0u
|
SKB_ALL = ~0u
|
||||||
|
@ -102,15 +99,12 @@ union SYNCFLAGS
|
||||||
unsigned int shoot2 : 1;
|
unsigned int shoot2 : 1;
|
||||||
unsigned int lookUp : 1;
|
unsigned int lookUp : 1;
|
||||||
unsigned int lookDown : 1;
|
unsigned int lookDown : 1;
|
||||||
|
|
||||||
|
|
||||||
unsigned int action : 1;
|
unsigned int action : 1;
|
||||||
unsigned int jab : 1;
|
unsigned int jab : 1;
|
||||||
unsigned int holsterWeapon : 1;
|
|
||||||
unsigned int lookCenter : 1;
|
|
||||||
unsigned int lookLeft : 1;
|
unsigned int lookLeft : 1;
|
||||||
unsigned int lookRight : 1;
|
unsigned int lookRight : 1;
|
||||||
unsigned int spin180 : 1;
|
|
||||||
unsigned int quit : 1;
|
|
||||||
unsigned int restart : 1;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -122,9 +116,7 @@ union SYNCFLAGS
|
||||||
|
|
||||||
|
|
||||||
#define SK_AUTO_AIM 7
|
#define SK_AUTO_AIM 7
|
||||||
#define SK_CENTER_VIEW 8
|
|
||||||
|
|
||||||
#define SK_MESSAGE 11
|
|
||||||
#define SK_LOOK_UP 12
|
#define SK_LOOK_UP 12
|
||||||
#define SK_LOOK_DOWN 13
|
#define SK_LOOK_DOWN 13
|
||||||
#define SK_CRAWL_LOCK 14
|
#define SK_CRAWL_LOCK 14
|
||||||
|
@ -137,11 +129,7 @@ union SYNCFLAGS
|
||||||
#define SK_CRAWL 20
|
#define SK_CRAWL 20
|
||||||
#define SK_SNAP_UP 21
|
#define SK_SNAP_UP 21
|
||||||
#define SK_SNAP_DOWN 22
|
#define SK_SNAP_DOWN 22
|
||||||
#define SK_QUIT_GAME 23
|
|
||||||
|
|
||||||
#define SK_TURN_180 25
|
|
||||||
|
|
||||||
#define SK_HIDE_WEAPON 30
|
|
||||||
#define SK_SPACE_BAR 31
|
#define SK_SPACE_BAR 31
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
BEGIN_PS_NS
|
BEGIN_PS_NS
|
||||||
|
|
||||||
|
extern short bPlayerPan;
|
||||||
|
extern short bLockPan;
|
||||||
|
|
||||||
extern const char* s_buildRev;
|
extern const char* s_buildRev;
|
||||||
extern const char* s_buildTimestamp;
|
extern const char* s_buildTimestamp;
|
||||||
|
@ -58,7 +60,6 @@ BEGIN_PS_NS
|
||||||
|
|
||||||
void uploadCinemaPalettes();
|
void uploadCinemaPalettes();
|
||||||
int32_t registerosdcommands(void);
|
int32_t registerosdcommands(void);
|
||||||
void registerinputcommands();
|
|
||||||
void InitFonts();
|
void InitFonts();
|
||||||
|
|
||||||
int htimer = 0;
|
int htimer = 0;
|
||||||
|
@ -584,7 +585,17 @@ void GameTicker()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (localInput.actions & SB_CENTERVIEW)
|
||||||
|
{
|
||||||
|
bLockPan = false;
|
||||||
|
bPlayerPan = false;
|
||||||
|
PlayerList[nLocalPlayer].q16horiz = fix16_from_int(92);
|
||||||
|
nDestVertPan[nLocalPlayer] = fix16_from_int(92);
|
||||||
|
}
|
||||||
|
if (localInput.actions & SB_TURNAROUND)
|
||||||
|
{
|
||||||
|
// todo
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sPlayerInput[nLocalPlayer].xVel = lPlayerXVel;
|
sPlayerInput[nLocalPlayer].xVel = lPlayerXVel;
|
||||||
|
@ -687,7 +698,6 @@ void GameInterface::app_init()
|
||||||
|
|
||||||
SetCheats(excheats, countof(excheats));
|
SetCheats(excheats, countof(excheats));
|
||||||
registerosdcommands();
|
registerosdcommands();
|
||||||
registerinputcommands();
|
|
||||||
if (nNetPlayerCount == -1)
|
if (nNetPlayerCount == -1)
|
||||||
{
|
{
|
||||||
nNetPlayerCount = nCfgNetPlayers - 1;
|
nNetPlayerCount = nCfgNetPlayers - 1;
|
||||||
|
|
|
@ -252,7 +252,6 @@ struct GameInterface : ::GameInterface
|
||||||
bool SaveGame(FSaveGameNode* sv) override;
|
bool SaveGame(FSaveGameNode* sv) override;
|
||||||
bool CanSave() override;
|
bool CanSave() override;
|
||||||
ReservedSpace GetReservedScreenSpace(int viewsize) override { return { 0, 24 }; }
|
ReservedSpace GetReservedScreenSpace(int viewsize) override { return { 0, 24 }; }
|
||||||
void clearlocalinputstate() override;
|
|
||||||
void QuitToTitle();
|
void QuitToTitle();
|
||||||
|
|
||||||
FString statFPS() override;
|
FString statFPS() override;
|
||||||
|
|
|
@ -31,7 +31,6 @@ BEGIN_PS_NS
|
||||||
extern short bPlayerPan;
|
extern short bPlayerPan;
|
||||||
extern short bLockPan;
|
extern short bLockPan;
|
||||||
|
|
||||||
int BitsToSend;
|
|
||||||
bool g_MyAimMode;
|
bool g_MyAimMode;
|
||||||
|
|
||||||
short nInputStack = 0;
|
short nInputStack = 0;
|
||||||
|
@ -371,32 +370,4 @@ void PlayerInterruptKeys(bool after)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
END_PS_NS
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// CCMD based input. The basics are from Randi's ZDuke but this uses dynamic
|
|
||||||
// registration to only have the commands active when this game module runs.
|
|
||||||
//
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
int ccmd_centerview(CCmdFuncPtr parm);
|
|
||||||
|
|
||||||
|
|
||||||
void registerinputcommands()
|
|
||||||
{
|
|
||||||
C_RegisterFunction("centerview", nullptr, ccmd_centerview);
|
|
||||||
|
|
||||||
// These are only here to silence the engine when the keys bound to them are pressed. The functions do not exist.
|
|
||||||
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { return CCMD_OK; });
|
|
||||||
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { return CCMD_OK; });
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
|
||||||
void GameInterface::clearlocalinputstate()
|
|
||||||
{
|
|
||||||
BitsToSend = 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
END_PS_NS
|
|
||||||
|
|
|
@ -2870,17 +2870,6 @@ loc_1BD2E:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int ccmd_centerview(CCmdFuncPtr parm)
|
|
||||||
{
|
|
||||||
return CCMD_OK;
|
|
||||||
bLockPan = false;
|
|
||||||
bPlayerPan = false;
|
|
||||||
PlayerList[nLocalPlayer].q16horiz = fix16_from_int(92);
|
|
||||||
nDestVertPan[nLocalPlayer] = fix16_from_int(92);
|
|
||||||
return CCMD_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static SavegameHelper sgh("player",
|
static SavegameHelper sgh("player",
|
||||||
SV(lPlayerXVel),
|
SV(lPlayerXVel),
|
||||||
SV(lPlayerYVel),
|
SV(lPlayerYVel),
|
||||||
|
|
|
@ -47,7 +47,6 @@ BEGIN_DUKE_NS
|
||||||
void SetDispatcher();
|
void SetDispatcher();
|
||||||
void InitCheats();
|
void InitCheats();
|
||||||
int registerosdcommands(void);
|
int registerosdcommands(void);
|
||||||
void registerinputcommands(void);
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
|
@ -331,7 +330,6 @@ static void Startup(void)
|
||||||
InitCheats();
|
InitCheats();
|
||||||
checkcommandline();
|
checkcommandline();
|
||||||
registerosdcommands();
|
registerosdcommands();
|
||||||
registerinputcommands();
|
|
||||||
|
|
||||||
screenpeek = myconnectindex;
|
screenpeek = myconnectindex;
|
||||||
ps[myconnectindex].palette = BASEPAL;
|
ps[myconnectindex].palette = BASEPAL;
|
||||||
|
|
|
@ -197,6 +197,7 @@ int domovethings()
|
||||||
GetNextInput();
|
GetNextInput();
|
||||||
updateinterpolations();
|
updateinterpolations();
|
||||||
|
|
||||||
|
#if 0
|
||||||
j = -1;
|
j = -1;
|
||||||
for (i = connecthead; i >= 0; i = connectpoint2[i])
|
for (i = connecthead; i >= 0; i = connectpoint2[i])
|
||||||
{
|
{
|
||||||
|
@ -227,6 +228,7 @@ int domovethings()
|
||||||
}
|
}
|
||||||
else j = i;
|
else j = i;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//if(ud.recstat == 1) record();
|
//if(ud.recstat == 1) record();
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,6 @@ int PHEIGHT = PHEIGHT_DUKE;
|
||||||
int duke3d_globalflags;
|
int duke3d_globalflags;
|
||||||
InputPacket loc;
|
InputPacket loc;
|
||||||
uint8_t ready2send;
|
uint8_t ready2send;
|
||||||
int gamequit;
|
|
||||||
int playerswhenstarted;
|
int playerswhenstarted;
|
||||||
int show_shareware;
|
int show_shareware;
|
||||||
int screenpeek;
|
int screenpeek;
|
||||||
|
|
|
@ -52,7 +52,6 @@ extern int32_t PHEIGHT;
|
||||||
extern int duke3d_globalflags;
|
extern int duke3d_globalflags;
|
||||||
extern uint8_t ready2send;
|
extern uint8_t ready2send;
|
||||||
extern InputPacket loc;
|
extern InputPacket loc;
|
||||||
extern int gamequit;
|
|
||||||
extern int playerswhenstarted;
|
extern int playerswhenstarted;
|
||||||
extern int show_shareware;
|
extern int show_shareware;
|
||||||
extern int screenpeek;
|
extern int screenpeek;
|
||||||
|
|
|
@ -146,6 +146,12 @@ inline ESyncBits PlayerInputBits(int pl, ESyncBits bits)
|
||||||
return (sync[pl].actions & bits);
|
return (sync[pl].actions & bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void PlayerSetInput(int pl, ESyncBits bit)
|
||||||
|
{
|
||||||
|
sync[pl].actions |= bit;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline int PlayerNewWeapon(int pl)
|
inline int PlayerNewWeapon(int pl)
|
||||||
{
|
{
|
||||||
return sync[pl].getNewWeapon();
|
return sync[pl].getNewWeapon();
|
||||||
|
|
|
@ -39,8 +39,6 @@ source as it is released.
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
static EDukeSyncBits BitsToSend;
|
|
||||||
|
|
||||||
// State timer counters.
|
// State timer counters.
|
||||||
static int nonsharedtimer;
|
static int nonsharedtimer;
|
||||||
static int turnheldtime;
|
static int turnheldtime;
|
||||||
|
@ -336,7 +334,7 @@ void hud_input(int snum)
|
||||||
// Here we have to be extra careful that the weapons do not get mixed up, so let's keep the code for Duke and RR completely separate.
|
// Here we have to be extra careful that the weapons do not get mixed up, so let's keep the code for Duke and RR completely separate.
|
||||||
fi.selectweapon(snum, weap);
|
fi.selectweapon(snum, weap);
|
||||||
|
|
||||||
if (PlayerInput(snum, SKB_HOLSTER))
|
if (PlayerInput(snum, SB_HOLSTER))
|
||||||
{
|
{
|
||||||
if (p->curr_weapon > KNEE_WEAPON)
|
if (p->curr_weapon > KNEE_WEAPON)
|
||||||
{
|
{
|
||||||
|
@ -564,7 +562,7 @@ void hud_input(int snum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlayerInput(snum, SKB_TURNAROUND) && p->one_eighty_count == 0)
|
if (PlayerInput(snum, SB_TURNAROUND) && p->one_eighty_count == 0)
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iReturnVarID, 0, -1, snum);
|
SetGameVarID(g_iReturnVarID, 0, -1, snum);
|
||||||
OnEvent(EVENT_TURNAROUND, -1, snum, -1);
|
OnEvent(EVENT_TURNAROUND, -1, snum, -1);
|
||||||
|
@ -612,13 +610,6 @@ static void processInputBits(player_struct *p, ControlInfo &info)
|
||||||
if (buttonMap.ButtonDown(gamefunc_Fire)) loc.sbits |= SKB_FIRE;
|
if (buttonMap.ButtonDown(gamefunc_Fire)) loc.sbits |= SKB_FIRE;
|
||||||
if (buttonMap.ButtonDown(gamefunc_Open)) loc.sbits |= SKB_OPEN;
|
if (buttonMap.ButtonDown(gamefunc_Open)) loc.sbits |= SKB_OPEN;
|
||||||
|
|
||||||
// These 3 bits are only available when not riding a bike or boat.
|
|
||||||
if (onVehicle) BitsToSend &= ~(SKB_HOLSTER|SKB_TURNAROUND|SKB_CENTER_VIEW);
|
|
||||||
loc.sbits |= BitsToSend;
|
|
||||||
BitsToSend = 0;
|
|
||||||
|
|
||||||
if (gamequit) loc.sbits |= SKB_GAMEQUIT;
|
|
||||||
|
|
||||||
if (!onVehicle)
|
if (!onVehicle)
|
||||||
{
|
{
|
||||||
if (buttonMap.ButtonDown(gamefunc_Jump)) loc.sbits |= SKB_JUMP;
|
if (buttonMap.ButtonDown(gamefunc_Jump)) loc.sbits |= SKB_JUMP;
|
||||||
|
@ -637,7 +628,12 @@ static void processInputBits(player_struct *p, ControlInfo &info)
|
||||||
if (buttonMap.ButtonDown(gamefunc_Quick_Kick)) loc.sbits |= SKB_QUICK_KICK;
|
if (buttonMap.ButtonDown(gamefunc_Quick_Kick)) loc.sbits |= SKB_QUICK_KICK;
|
||||||
if (in_mousemode || buttonMap.ButtonDown(gamefunc_Mouse_Aiming)) loc.sbits |= SKB_AIMMODE;
|
if (in_mousemode || buttonMap.ButtonDown(gamefunc_Mouse_Aiming)) loc.sbits |= SKB_AIMMODE;
|
||||||
|
|
||||||
ApplyGlobalInput(loc, &info);
|
}
|
||||||
|
ApplyGlobalInput(loc, &info);
|
||||||
|
if (onVehicle)
|
||||||
|
{
|
||||||
|
// mask out all actions not compatible with vehicles.
|
||||||
|
loc.actions &= ~(SB_WEAPONMASK_BITS | SB_TURNAROUND | SB_CENTERVIEW | SB_HOLSTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Dpad_Aiming))
|
if (buttonMap.ButtonDown(gamefunc_Dpad_Aiming))
|
||||||
|
@ -1102,7 +1098,6 @@ void GetInput()
|
||||||
if (paused)
|
if (paused)
|
||||||
{
|
{
|
||||||
loc = {};
|
loc = {};
|
||||||
if (gamequit) loc.sbits |= SKB_GAMEQUIT;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1145,26 +1140,9 @@ void GetInput()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// CCMD based input. The basics are from Randi's ZDuke but this uses dynamic
|
|
||||||
// registration to only have the commands active when this game module runs.
|
|
||||||
//
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void registerinputcommands()
|
|
||||||
{
|
|
||||||
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_CENTER_VIEW; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_HOLSTER; return CCMD_OK; });
|
|
||||||
|
|
||||||
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_TURNAROUND; return CCMD_OK; });
|
|
||||||
C_RegisterFunction("backoff", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= SKB_ESCAPE; return CCMD_OK; });
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
||||||
void GameInterface::clearlocalinputstate()
|
void GameInterface::clearlocalinputstate()
|
||||||
{
|
{
|
||||||
BitsToSend = 0;
|
|
||||||
nonsharedtimer = 0;
|
nonsharedtimer = 0;
|
||||||
turnheldtime = 0;
|
turnheldtime = 0;
|
||||||
lastcontroltime = 0;
|
lastcontroltime = 0;
|
||||||
|
|
|
@ -1264,7 +1264,7 @@ void selectweapon_d(int snum, int weap) // playernum, weaponnum
|
||||||
|
|
||||||
if (p->holster_weapon)
|
if (p->holster_weapon)
|
||||||
{
|
{
|
||||||
PlayerSetInput(snum, SKB_HOLSTER);
|
PlayerSetInput(snum, SB_HOLSTER);
|
||||||
p->weapon_pos = -9;
|
p->weapon_pos = -9;
|
||||||
}
|
}
|
||||||
else if (j >= MIN_WEAPON && p->gotweapon[j] && (unsigned int)p->curr_weapon != j) switch (j)
|
else if (j >= MIN_WEAPON && p->gotweapon[j] && (unsigned int)p->curr_weapon != j) switch (j)
|
||||||
|
@ -2518,14 +2518,14 @@ static void operateweapon(int snum, EDukeSyncBits sb_snum, int psect)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void processweapon(int snum, EDukeSyncBits sb_snum, int psect)
|
static void processweapon(int snum, ESyncBits actions, EDukeSyncBits sb_snum, int psect)
|
||||||
{
|
{
|
||||||
auto p = &ps[snum];
|
auto p = &ps[snum];
|
||||||
int pi = p->i;
|
int pi = p->i;
|
||||||
auto s = &sprite[pi];
|
auto s = &sprite[pi];
|
||||||
int shrunk = (s->yrepeat < 32);
|
int shrunk = (s->yrepeat < 32);
|
||||||
|
|
||||||
if (isNamWW2GI() && (sb_snum & SKB_HOLSTER)) // 'Holster Weapon
|
if (isNamWW2GI() && (actions & SB_HOLSTER)) // 'Holster Weapon
|
||||||
{
|
{
|
||||||
if (isWW2GI())
|
if (isWW2GI())
|
||||||
{
|
{
|
||||||
|
@ -2604,6 +2604,7 @@ void processinput_d(int snum)
|
||||||
int j, i, k, doubvel, fz, cz, hz, lz, truefdist;
|
int j, i, k, doubvel, fz, cz, hz, lz, truefdist;
|
||||||
char shrunk;
|
char shrunk;
|
||||||
EDukeSyncBits sb_snum;
|
EDukeSyncBits sb_snum;
|
||||||
|
ESyncBits actions;
|
||||||
short psect, psectlotag, pi;
|
short psect, psectlotag, pi;
|
||||||
struct player_struct* p;
|
struct player_struct* p;
|
||||||
spritetype* s;
|
spritetype* s;
|
||||||
|
@ -2615,6 +2616,7 @@ void processinput_d(int snum)
|
||||||
resetinputhelpers(p);
|
resetinputhelpers(p);
|
||||||
|
|
||||||
sb_snum = PlayerInputBits(snum, SKB_ALL);
|
sb_snum = PlayerInputBits(snum, SKB_ALL);
|
||||||
|
actions = PlayerInputBits(snum, SB_ALL);
|
||||||
|
|
||||||
auto sb_fvel = PlayerInputForwardVel(snum);
|
auto sb_fvel = PlayerInputForwardVel(snum);
|
||||||
auto sb_svel = PlayerInputSideVel(snum);
|
auto sb_svel = PlayerInputSideVel(snum);
|
||||||
|
@ -2737,8 +2739,8 @@ void processinput_d(int snum)
|
||||||
|
|
||||||
fi.doincrements(p);
|
fi.doincrements(p);
|
||||||
|
|
||||||
if (isWW2GI() && aplWeaponWorksLike[p->curr_weapon][snum] == HANDREMOTE_WEAPON) processweapon(snum, sb_snum, psect);
|
if (isWW2GI() && aplWeaponWorksLike[p->curr_weapon][snum] == HANDREMOTE_WEAPON) processweapon(snum, actions, sb_snum, psect);
|
||||||
if (!isWW2GI() && p->curr_weapon == HANDREMOTE_WEAPON) processweapon(snum, sb_snum, psect);
|
if (!isWW2GI() && p->curr_weapon == HANDREMOTE_WEAPON) processweapon(snum, actions, sb_snum, psect);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3001,7 +3003,7 @@ HORIZONLY:
|
||||||
}
|
}
|
||||||
|
|
||||||
// center_view
|
// center_view
|
||||||
if (sb_snum & SKB_CENTER_VIEW || p->hard_landing)
|
if (actions & SB_CENTERVIEW || p->hard_landing)
|
||||||
{
|
{
|
||||||
playerCenterView(snum);
|
playerCenterView(snum);
|
||||||
}
|
}
|
||||||
|
@ -3066,12 +3068,7 @@ HORIZONLY:
|
||||||
}
|
}
|
||||||
|
|
||||||
// HACKS
|
// HACKS
|
||||||
processweapon(snum, sb_snum, psect);
|
processweapon(snum, actions, sb_snum, psect);
|
||||||
}
|
|
||||||
|
|
||||||
void processweapon_d(int s, EDukeSyncBits ss, int p)
|
|
||||||
{
|
|
||||||
processweapon(s, ss, p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void processmove_d(int snum, EDukeSyncBits sb_snum, int psect, int fz, int cz, int shrunk, int truefdist)
|
void processmove_d(int snum, EDukeSyncBits sb_snum, int psect, int fz, int cz, int shrunk, int truefdist)
|
||||||
|
|
|
@ -1067,7 +1067,7 @@ void selectweapon_r(int snum, int weap)
|
||||||
|
|
||||||
if (p->holster_weapon)
|
if (p->holster_weapon)
|
||||||
{
|
{
|
||||||
PlayerSetInput(snum, SKB_HOLSTER);
|
PlayerSetInput(snum, SB_HOLSTER);
|
||||||
p->weapon_pos = -9;
|
p->weapon_pos = -9;
|
||||||
}
|
}
|
||||||
else if (j >= MIN_WEAPON && p->gotweapon[j] && p->curr_weapon != j) switch (j)
|
else if (j >= MIN_WEAPON && p->gotweapon[j] && p->curr_weapon != j) switch (j)
|
||||||
|
@ -3402,6 +3402,7 @@ void processinput_r(int snum)
|
||||||
int j, i, k, doubvel, fz, cz, hz, lz, truefdist, var60;
|
int j, i, k, doubvel, fz, cz, hz, lz, truefdist, var60;
|
||||||
char shrunk;
|
char shrunk;
|
||||||
EDukeSyncBits sb_snum;
|
EDukeSyncBits sb_snum;
|
||||||
|
ESyncBits actions;
|
||||||
short psect, psectlotag, pi;
|
short psect, psectlotag, pi;
|
||||||
struct player_struct* p;
|
struct player_struct* p;
|
||||||
spritetype* s;
|
spritetype* s;
|
||||||
|
@ -3413,6 +3414,7 @@ void processinput_r(int snum)
|
||||||
resetinputhelpers(p);
|
resetinputhelpers(p);
|
||||||
|
|
||||||
sb_snum = PlayerInputBits(snum, SKB_ALL);
|
sb_snum = PlayerInputBits(snum, SKB_ALL);
|
||||||
|
actions = PlayerInputBits(snum, SB_ALL);
|
||||||
|
|
||||||
auto sb_fvel = PlayerInputForwardVel(snum);
|
auto sb_fvel = PlayerInputForwardVel(snum);
|
||||||
auto sb_svel = PlayerInputSideVel(snum);
|
auto sb_svel = PlayerInputSideVel(snum);
|
||||||
|
@ -4027,7 +4029,7 @@ HORIZONLY:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sb_snum & SKB_CENTER_VIEW || p->hard_landing)
|
if (actions & SB_CENTERVIEW || p->hard_landing)
|
||||||
{
|
{
|
||||||
playerCenterView(snum);
|
playerCenterView(snum);
|
||||||
}
|
}
|
||||||
|
@ -4103,11 +4105,6 @@ HORIZONLY:
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
void processweapon_r(int s, EDukeSyncBits ss, int p)
|
|
||||||
{
|
|
||||||
processweapon(s, ss, p);
|
|
||||||
}
|
|
||||||
|
|
||||||
void processmove_r(int snum, EDukeSyncBits sb_snum, int psect, int fz, int cz, int shrunk, int truefdist)
|
void processmove_r(int snum, EDukeSyncBits sb_snum, int psect, int fz, int cz, int shrunk, int truefdist)
|
||||||
{
|
{
|
||||||
int psectlotag = sector[psect].lotag;
|
int psectlotag = sector[psect].lotag;
|
||||||
|
|
|
@ -198,7 +198,6 @@ void GameInterface::app_init()
|
||||||
Printf("Copyright (c) 1997 3D Realms Entertainment\n");
|
Printf("Copyright (c) 1997 3D Realms Entertainment\n");
|
||||||
|
|
||||||
registerosdcommands();
|
registerosdcommands();
|
||||||
registerinputcommands();
|
|
||||||
|
|
||||||
engineInit();
|
engineInit();
|
||||||
auto pal = fileSystem.LoadFile("3drealms.pal", 0);
|
auto pal = fileSystem.LoadFile("3drealms.pal", 0);
|
||||||
|
|
|
@ -2223,7 +2223,6 @@ void LoadSaveMsg(const char *msg);
|
||||||
void UpdateStatusBar(int arg);
|
void UpdateStatusBar(int arg);
|
||||||
void InitFonts();
|
void InitFonts();
|
||||||
int32_t registerosdcommands(void);
|
int32_t registerosdcommands(void);
|
||||||
void registerinputcommands();
|
|
||||||
void SW_InitMultiPsky(void);
|
void SW_InitMultiPsky(void);
|
||||||
|
|
||||||
extern int PlayClock;
|
extern int PlayClock;
|
||||||
|
@ -2269,7 +2268,6 @@ struct GameInterface : ::GameInterface
|
||||||
void SetAmbience(bool on) override { if (on) StartAmbientSound(); else StopAmbientSound(); }
|
void SetAmbience(bool on) override { if (on) StartAmbientSound(); else StopAmbientSound(); }
|
||||||
FString GetCoordString() override;
|
FString GetCoordString() override;
|
||||||
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
||||||
void clearlocalinputstate() override;
|
|
||||||
void QuitToTitle() override;
|
void QuitToTitle() override;
|
||||||
void ResetFollowPos(bool message) override;
|
void ResetFollowPos(bool message) override;
|
||||||
|
|
||||||
|
|
|
@ -34,11 +34,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
||||||
|
|
||||||
BEGIN_SW_NS
|
BEGIN_SW_NS
|
||||||
|
|
||||||
SWBOOL MultiPlayQuitFlag = FALSE;
|
|
||||||
|
|
||||||
int BitsToSend = 0;
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
FunctionKeys(PLAYERp pp)
|
FunctionKeys(PLAYERp pp)
|
||||||
{
|
{
|
||||||
|
@ -118,9 +113,6 @@ getinput(InputPacket *loc, SWBOOL tied)
|
||||||
|
|
||||||
lastInputTicks = currentHiTicks;
|
lastInputTicks = currentHiTicks;
|
||||||
|
|
||||||
// MAKE SURE THIS WILL GET SET
|
|
||||||
SET_LOC_KEY(loc->bits, SK_QUIT_GAME, MultiPlayQuitFlag);
|
|
||||||
|
|
||||||
bool mouseaim = in_mousemode || buttonMap.ButtonDown(gamefunc_Mouse_Aiming);
|
bool mouseaim = in_mousemode || buttonMap.ButtonDown(gamefunc_Mouse_Aiming);
|
||||||
|
|
||||||
if (!CommEnabled)
|
if (!CommEnabled)
|
||||||
|
@ -419,9 +411,6 @@ getinput(InputPacket *loc, SWBOOL tied)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
loc->bits |= BitsToSend;
|
|
||||||
BitsToSend = 0;
|
|
||||||
|
|
||||||
SET_LOC_KEY(loc->bits, SK_OPERATE, buttonMap.ButtonDown(gamefunc_Open));
|
SET_LOC_KEY(loc->bits, SK_OPERATE, buttonMap.ButtonDown(gamefunc_Open));
|
||||||
SET_LOC_KEY(loc->bits, SK_JUMP, buttonMap.ButtonDown(gamefunc_Jump));
|
SET_LOC_KEY(loc->bits, SK_JUMP, buttonMap.ButtonDown(gamefunc_Jump));
|
||||||
SET_LOC_KEY(loc->bits, SK_CRAWL, buttonMap.ButtonDown(gamefunc_Crouch));
|
SET_LOC_KEY(loc->bits, SK_CRAWL, buttonMap.ButtonDown(gamefunc_Crouch));
|
||||||
|
@ -459,27 +448,4 @@ getinput(InputPacket *loc, SWBOOL tied)
|
||||||
FunctionKeys(pp);
|
FunctionKeys(pp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// CCMD based input. The basics are from Randi's ZDuke but this uses dynamic
|
|
||||||
// registration to only have the commands active when this game module runs.
|
|
||||||
//
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void registerinputcommands()
|
|
||||||
{
|
|
||||||
C_RegisterFunction("centerview", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_CENTER_VIEW); return CCMD_OK; });
|
|
||||||
C_RegisterFunction("holsterweapon", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_HIDE_WEAPON); return CCMD_OK; });
|
|
||||||
|
|
||||||
C_RegisterFunction("turnaround", nullptr, [](CCmdFuncPtr)->int { BitsToSend |= BIT(SK_TURN_180); return CCMD_OK; });
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is called from ImputState::ClearAllInput and resets all static state being used here.
|
|
||||||
void GameInterface::clearlocalinputstate()
|
|
||||||
{
|
|
||||||
BitsToSend = 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
END_SW_NS
|
END_SW_NS
|
||||||
|
|
|
@ -6627,18 +6627,18 @@ pWeaponUnHideKeys(PANEL_SPRITEp psp, PANEL_STATEp state)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TEST_SYNC_KEY(psp->PlayerP, SK_HIDE_WEAPON))
|
if (psp->PlayerP->input.actions & SB_HOLSTER)
|
||||||
{
|
{
|
||||||
if (FLAG_KEY_PRESSED(psp->PlayerP, SK_HIDE_WEAPON))
|
if (psp->PlayerP->KeyPressBits & SB_HOLSTER)
|
||||||
{
|
{
|
||||||
FLAG_KEY_RELEASE(psp->PlayerP, SK_HIDE_WEAPON);
|
psp->PlayerP->KeyPressBits &= ~SB_HOLSTER;
|
||||||
pSetState(psp, state);
|
pSetState(psp, state);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FLAG_KEY_RESET(psp->PlayerP, SK_HIDE_WEAPON);
|
psp->PlayerP->KeyPressBits |= SB_HOLSTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TEST_SYNC_KEY(psp->PlayerP, SK_SHOOT))
|
if (TEST_SYNC_KEY(psp->PlayerP, SK_SHOOT))
|
||||||
|
@ -6671,19 +6671,19 @@ pWeaponHideKeys(PANEL_SPRITEp psp, PANEL_STATEp state)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TEST_SYNC_KEY(psp->PlayerP, SK_HIDE_WEAPON))
|
if (psp->PlayerP->input.actions & SB_HOLSTER)
|
||||||
{
|
{
|
||||||
if (FLAG_KEY_PRESSED(psp->PlayerP, SK_HIDE_WEAPON))
|
if (psp->PlayerP->KeyPressBits & SB_HOLSTER)
|
||||||
{
|
{
|
||||||
|
psp->PlayerP->KeyPressBits &= ~SB_HOLSTER;
|
||||||
PutStringInfo(psp->PlayerP,"Weapon Holstered");
|
PutStringInfo(psp->PlayerP,"Weapon Holstered");
|
||||||
FLAG_KEY_RELEASE(psp->PlayerP, SK_HIDE_WEAPON);
|
|
||||||
pSetState(psp, state);
|
pSetState(psp, state);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FLAG_KEY_RESET(psp->PlayerP, SK_HIDE_WEAPON);
|
psp->PlayerP->KeyPressBits |= SB_HOLSTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -1566,13 +1566,13 @@ DoPlayerTurn(PLAYERp pp, fix16_t *pq16ang, fix16_t q16angvel)
|
||||||
|
|
||||||
if (!TEST(pp->Flags, PF_TURN_180))
|
if (!TEST(pp->Flags, PF_TURN_180))
|
||||||
{
|
{
|
||||||
if (TEST_SYNC_KEY(pp, SK_TURN_180))
|
if (pp->input.actions & SB_TURNAROUND)
|
||||||
{
|
{
|
||||||
if (FLAG_KEY_PRESSED(pp, SK_TURN_180))
|
if (pp->KeyPressBits & SB_TURNAROUND)
|
||||||
{
|
{
|
||||||
short delta_ang;
|
short delta_ang;
|
||||||
|
|
||||||
FLAG_KEY_RELEASE(pp, SK_TURN_180);
|
pp->KeyPressBits &= ~SB_TURNAROUND;
|
||||||
|
|
||||||
pp->turn180_target = NORM_ANGLE(fix16_to_int(*pq16ang) + 1024);
|
pp->turn180_target = NORM_ANGLE(fix16_to_int(*pq16ang) + 1024);
|
||||||
|
|
||||||
|
@ -1591,7 +1591,7 @@ DoPlayerTurn(PLAYERp pp, fix16_t *pq16ang, fix16_t q16angvel)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FLAG_KEY_RESET(pp, SK_TURN_180);
|
pp->KeyPressBits |= SB_TURNAROUND;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1938,7 +1938,7 @@ DoPlayerHorizon(PLAYERp pp, fix16_t *pq16horiz, fix16_t q16aimvel)
|
||||||
SET(pp->Flags, PF_LOCK_HORIZ | PF_LOOKING);
|
SET(pp->Flags, PF_LOCK_HORIZ | PF_LOOKING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TEST_SYNC_KEY(pp, SK_CENTER_VIEW))
|
if (pp->input.actions & SB_CENTERVIEW)
|
||||||
{
|
{
|
||||||
if (PedanticMode)
|
if (PedanticMode)
|
||||||
pp->q16horizbase = fix16_from_int(100);
|
pp->q16horizbase = fix16_from_int(100);
|
||||||
|
|
|
@ -83,18 +83,16 @@ DoPrediction(PLAYERp ppp)
|
||||||
|
|
||||||
// get rid of input bits so it doesn't go into other code branches that would
|
// get rid of input bits so it doesn't go into other code branches that would
|
||||||
// get it out of sync
|
// get it out of sync
|
||||||
ppp->input.actions &= ~(SB_WEAPONMASK_BITS|SB_ITEMUSE_BITS);
|
ppp->input.actions &= ~(SB_WEAPONMASK_BITS|SB_ITEMUSE_BITS|SB_HOLSTER|SB_CENTERVIEW);
|
||||||
ppp->KeyPressBits |= (SB_WEAPONMASK_BITS|SB_ITEMUSE_BITS|SB_INVNEXT|SB_INVPREV|SB_INVUSE);
|
ppp->KeyPressBits |= (SB_WEAPONMASK_BITS|SB_ITEMUSE_BITS|SB_INVNEXT|SB_INVPREV|SB_INVUSE|SB_HOLSTER|SB_CENTERVIEW);
|
||||||
RESET(ppp->input.bits,
|
RESET(ppp->input.bits,
|
||||||
BIT(SK_SHOOT)|BIT(SK_OPERATE)|BIT(SK_HIDE_WEAPON)|
|
BIT(SK_SHOOT)|BIT(SK_OPERATE)|
|
||||||
BIT(SK_AUTO_AIM)|
|
BIT(SK_AUTO_AIM)
|
||||||
BIT(SK_CENTER_VIEW)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
SET(ppp->KeyPressFlags,
|
SET(ppp->KeyPressFlags,
|
||||||
BIT(SK_SHOOT)|BIT(SK_OPERATE)|BIT(SK_HIDE_WEAPON)|
|
BIT(SK_SHOOT)|BIT(SK_OPERATE)|
|
||||||
BIT(SK_AUTO_AIM)|
|
BIT(SK_AUTO_AIM)
|
||||||
BIT(SK_CENTER_VIEW)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// back up things so they won't get stepped on
|
// back up things so they won't get stepped on
|
||||||
|
|
Loading…
Reference in a new issue