mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-28 20:40:47 +00:00
- use global variables to track automap state
So far implemented in Duke/RR.
This commit is contained in:
parent
89a15335df
commit
7859a29e95
17 changed files with 55 additions and 51 deletions
|
@ -991,7 +991,6 @@ ReservedSpace GameInterface::GetReservedScreenSpace(int viewsize)
|
||||||
return { top, 25 };
|
return { top, 25 };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
::GameInterface* CreateInterface()
|
::GameInterface* CreateInterface()
|
||||||
{
|
{
|
||||||
return new GameInterface;
|
return new GameInterface;
|
||||||
|
|
|
@ -126,7 +126,7 @@ struct GameInterface : ::GameInterface
|
||||||
FString GetCoordString() override;
|
FString GetCoordString() override;
|
||||||
void clearlocalinputstate() override;
|
void clearlocalinputstate() override;
|
||||||
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
||||||
|
|
||||||
GameStats getStats() override;
|
GameStats getStats() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -210,7 +210,7 @@ void ctrlGetInput(void)
|
||||||
hud_scale = hud_scale - 4;
|
hud_scale = hud_scale - 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (gViewMode == 2 || gViewMode == 4)
|
if (gViewMode == 4)
|
||||||
{
|
{
|
||||||
gZoom = ClipLow(gZoom - (gZoom >> 4), 64);
|
gZoom = ClipLow(gZoom - (gZoom >> 4), 64);
|
||||||
gViewMap.nZoom = gZoom;
|
gViewMap.nZoom = gZoom;
|
||||||
|
@ -231,7 +231,8 @@ void ctrlGetInput(void)
|
||||||
hud_scale = hud_scale + 4;
|
hud_scale = hud_scale + 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (gViewMode == 2 || gViewMode == 4)
|
if (
|
||||||
|
gViewMode == 4)
|
||||||
{
|
{
|
||||||
gZoom = ClipHigh(gZoom + (gZoom >> 4), 4096);
|
gZoom = ClipHigh(gZoom + (gZoom >> 4), 4096);
|
||||||
gViewMap.nZoom = gZoom;
|
gViewMap.nZoom = gZoom;
|
||||||
|
|
|
@ -94,7 +94,6 @@ static uint32_t conshade;
|
||||||
static bool conline;
|
static bool conline;
|
||||||
|
|
||||||
extern int gametic;
|
extern int gametic;
|
||||||
extern bool automapactive; // in AM_map.c
|
|
||||||
extern bool advancedemo;
|
extern bool advancedemo;
|
||||||
|
|
||||||
extern FBaseCVar *CVars;
|
extern FBaseCVar *CVars;
|
||||||
|
|
|
@ -100,6 +100,17 @@ static ClockTicks lastototalclk;
|
||||||
static uint64_t elapsedTime;
|
static uint64_t elapsedTime;
|
||||||
static uint64_t lastTime;
|
static uint64_t lastTime;
|
||||||
|
|
||||||
|
int automapMode;
|
||||||
|
bool automapFollow;
|
||||||
|
|
||||||
|
CCMD(togglemap)
|
||||||
|
{
|
||||||
|
automapMode++;
|
||||||
|
if (automapMode == am_count) automapMode = am_off;
|
||||||
|
if ((g_gameType & GAMEFLAG_BLOOD) && automapMode == am_overlay) automapMode = am_full; // todo: investigate if this can be re-enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
glcycle_t thinktime, actortime, gameupdatetime, drawtime;
|
glcycle_t thinktime, actortime, gameupdatetime, drawtime;
|
||||||
|
|
||||||
gamestate_t gamestate = GS_STARTUP;
|
gamestate_t gamestate = GS_STARTUP;
|
||||||
|
|
|
@ -210,3 +210,18 @@ void updatePauseStatus();
|
||||||
void updatePauseStatus(bool state, bool multiplayer);
|
void updatePauseStatus(bool state, bool multiplayer);
|
||||||
extern int paused;
|
extern int paused;
|
||||||
extern int chatmodeon;
|
extern int chatmodeon;
|
||||||
|
|
||||||
|
enum AM_Mode
|
||||||
|
{
|
||||||
|
am_off,
|
||||||
|
am_overlay,
|
||||||
|
am_full,
|
||||||
|
am_count
|
||||||
|
};
|
||||||
|
extern int automapMode;
|
||||||
|
extern bool automapFollow;
|
||||||
|
|
||||||
|
inline bool automapControlsActive()
|
||||||
|
{
|
||||||
|
return automapMode != am_off;
|
||||||
|
}
|
||||||
|
|
|
@ -63,7 +63,6 @@ struct GameInterface
|
||||||
virtual void clearlocalinputstate() {}
|
virtual void clearlocalinputstate() {}
|
||||||
virtual void UpdateScreenSize() {}
|
virtual void UpdateScreenSize() {}
|
||||||
virtual void FreeGameData() {}
|
virtual void FreeGameData() {}
|
||||||
virtual bool automapActive() { return false; }
|
|
||||||
virtual void PlayHudSound() {}
|
virtual void PlayHudSound() {}
|
||||||
virtual FString statFPS() { return "FPS display not available"; }
|
virtual FString statFPS() { return "FPS display not available"; }
|
||||||
virtual GameStats getStats() { return {}; }
|
virtual GameStats getStats() { return {}; }
|
||||||
|
|
|
@ -307,8 +307,8 @@ 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();
|
void clearlocalinputstate() override;
|
||||||
|
|
||||||
FString statFPS() override;
|
FString statFPS() override;
|
||||||
::GameStats getStats() override;
|
::GameStats getStats() override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -414,7 +414,7 @@ static void G_DrawOverheadMap(int32_t cposx, int32_t cposy, int32_t czoom, int16
|
||||||
#if 0
|
#if 0
|
||||||
for (TRAVERSE_CONNECT(p))
|
for (TRAVERSE_CONNECT(p))
|
||||||
{
|
{
|
||||||
if (ud.scrollmode && p == screenpeek) continue;
|
if (automapFollow && p == screenpeek) continue;
|
||||||
|
|
||||||
auto const pPlayer = &ps[p];
|
auto const pPlayer = &ps[p];
|
||||||
auto const pSprite = (uspriteptr_t)&sprite[pPlayer->i];
|
auto const pSprite = (uspriteptr_t)&sprite[pPlayer->i];
|
||||||
|
|
|
@ -277,6 +277,7 @@ enum EQuote
|
||||||
QUOTE_MIGHTY_FOOT = 80 ,
|
QUOTE_MIGHTY_FOOT = 80 ,
|
||||||
QUOTE_WEAPON_MODE_OFF = 82 ,
|
QUOTE_WEAPON_MODE_OFF = 82 ,
|
||||||
QUOTE_MAP_FOLLOW_OFF = 83 ,
|
QUOTE_MAP_FOLLOW_OFF = 83 ,
|
||||||
|
QUOTE_MAP_FOLLOW_ON = 84 ,
|
||||||
QUOTE_RUN_MODE_OFF = 85 ,
|
QUOTE_RUN_MODE_OFF = 85 ,
|
||||||
QUOTE_JETPACK = 88 ,
|
QUOTE_JETPACK = 88 ,
|
||||||
QUOTE_SCUBA = 89 ,
|
QUOTE_SCUBA = 89 ,
|
||||||
|
|
|
@ -39,7 +39,6 @@ struct GameInterface : public ::GameInterface
|
||||||
void clearlocalinputstate() override;
|
void clearlocalinputstate() override;
|
||||||
bool GenerateSavePic() override;
|
bool GenerateSavePic() override;
|
||||||
void PlayHudSound() override;
|
void PlayHudSound() override;
|
||||||
bool automapActive() override;
|
|
||||||
FString statFPS() override;
|
FString statFPS() override;
|
||||||
GameStats getStats() override;
|
GameStats getStats() override;
|
||||||
void DrawNativeMenuText(int fontnum, int state, double xpos, double ypos, float fontscale, const char* text, int flags) override;
|
void DrawNativeMenuText(int fontnum, int state, double xpos, double ypos, float fontscale, const char* text, int flags) override;
|
||||||
|
@ -58,7 +57,8 @@ struct GameInterface : public ::GameInterface
|
||||||
bool CheatAllowed(bool printmsg) override;
|
bool CheatAllowed(bool printmsg) override;
|
||||||
void ExitFromMenu() override;
|
void ExitFromMenu() override;
|
||||||
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
||||||
void DrawPlayerSprite(const DVector2& origin, bool onteam);
|
void DrawPlayerSprite(const DVector2& origin, bool onteam) override;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Dispatcher
|
struct Dispatcher
|
||||||
|
|
|
@ -282,7 +282,7 @@ void displayrest(double smoothratio)
|
||||||
|
|
||||||
if (ud.camerasprite == -1)
|
if (ud.camerasprite == -1)
|
||||||
{
|
{
|
||||||
if (ud.overhead_on != 2)
|
if (automapMode != am_full)
|
||||||
{
|
{
|
||||||
if (!isRR() && pp->newowner >= 0)
|
if (!isRR() && pp->newowner >= 0)
|
||||||
cameratext(pp->newowner);
|
cameratext(pp->newowner);
|
||||||
|
@ -296,11 +296,11 @@ void displayrest(double smoothratio)
|
||||||
moveclouds();
|
moveclouds();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ud.overhead_on > 0)
|
if (automapMode != am_off)
|
||||||
{
|
{
|
||||||
dointerpolations(smoothratio);
|
dointerpolations(smoothratio);
|
||||||
|
|
||||||
if (ud.scrollmode == 0)
|
if (!automapFollow)
|
||||||
{
|
{
|
||||||
if (pp->newowner == -1 && playrunning())
|
if (pp->newowner == -1 && playrunning())
|
||||||
{
|
{
|
||||||
|
@ -337,7 +337,7 @@ void displayrest(double smoothratio)
|
||||||
cang = ud.fola;
|
cang = ud.fola;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ud.overhead_on == 2)
|
if (automapMode == am_full)
|
||||||
{
|
{
|
||||||
twod->ClearScreen();
|
twod->ClearScreen();
|
||||||
renderDrawMapView(cposx, cposy, pp->zoom, cang);
|
renderDrawMapView(cposx, cposy, pp->zoom, cang);
|
||||||
|
@ -352,7 +352,7 @@ void displayrest(double smoothratio)
|
||||||
if (isRR()) drawstatusbar_r(screenpeek);
|
if (isRR()) drawstatusbar_r(screenpeek);
|
||||||
else drawstatusbar_d(screenpeek);
|
else drawstatusbar_d(screenpeek);
|
||||||
|
|
||||||
if (ps[myconnectindex].newowner == -1 && ud.overhead_on == 0 && cl_crosshair && ud.camerasprite == -1)
|
if (ps[myconnectindex].newowner == -1 && automapMode == am_off && cl_crosshair && ud.camerasprite == -1)
|
||||||
{
|
{
|
||||||
int32_t a = TILE_CROSSHAIR;
|
int32_t a = TILE_CROSSHAIR;
|
||||||
|
|
||||||
|
@ -621,7 +621,7 @@ void drawoverheadmap(int cposx, int cposy, int czoom, int cang)
|
||||||
|
|
||||||
for (p = connecthead; p >= 0; p = connectpoint2[p])
|
for (p = connecthead; p >= 0; p = connectpoint2[p])
|
||||||
{
|
{
|
||||||
if (ud.scrollmode && p == screenpeek) continue;
|
if (automapFollow && p == screenpeek) continue;
|
||||||
|
|
||||||
ox = sprite[ps[p].i].x - cposx;
|
ox = sprite[ps[p].i].x - cposx;
|
||||||
oy = sprite[ps[p].i].y - cposy;
|
oy = sprite[ps[p].i].y - cposy;
|
||||||
|
@ -734,11 +734,6 @@ ReservedSpace GameInterface::GetReservedScreenSpace(int viewsize)
|
||||||
return { 0, sbar };
|
return { 0, sbar };
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GameInterface::automapActive()
|
|
||||||
{
|
|
||||||
return ud.overhead_on != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
::GameInterface* CreateInterface()
|
::GameInterface* CreateInterface()
|
||||||
{
|
{
|
||||||
return new GameInterface;
|
return new GameInterface;
|
||||||
|
|
|
@ -65,7 +65,7 @@ void nonsharedkeys(void)
|
||||||
if (System_WantGuiCapture())
|
if (System_WantGuiCapture())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!ALT_IS_PRESSED && ud.overhead_on == 0)
|
if (!ALT_IS_PRESSED && automapMode == am_off)
|
||||||
{
|
{
|
||||||
if (buttonMap.ButtonDown(gamefunc_Enlarge_Screen))
|
if (buttonMap.ButtonDown(gamefunc_Enlarge_Screen))
|
||||||
{
|
{
|
||||||
|
@ -117,17 +117,17 @@ void nonsharedkeys(void)
|
||||||
FTA(QUOTE_WEAPON_MODE_OFF - ud.showweapons, &ps[screenpeek]);
|
FTA(QUOTE_WEAPON_MODE_OFF - ud.showweapons, &ps[screenpeek]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ud.overhead_on && buttonMap.ButtonDown(gamefunc_Map_Follow_Mode))
|
if (automapMode != am_off && buttonMap.ButtonDown(gamefunc_Map_Follow_Mode))
|
||||||
{
|
{
|
||||||
buttonMap.ClearButton(gamefunc_Map_Follow_Mode);
|
buttonMap.ClearButton(gamefunc_Map_Follow_Mode);
|
||||||
ud.scrollmode = 1 - ud.scrollmode;
|
automapFollow = !automapFollow;
|
||||||
if (ud.scrollmode)
|
if (automapFollow)
|
||||||
{
|
{
|
||||||
ud.folx = ps[screenpeek].oposx;
|
ud.folx = ps[screenpeek].oposx;
|
||||||
ud.foly = ps[screenpeek].oposy;
|
ud.foly = ps[screenpeek].oposy;
|
||||||
ud.fola = ps[screenpeek].getoang();
|
ud.fola = ps[screenpeek].getoang();
|
||||||
}
|
}
|
||||||
FTA(QUOTE_MAP_FOLLOW_OFF + ud.scrollmode, &ps[myconnectindex]);
|
FTA(automapFollow? QUOTE_MAP_FOLLOW_ON : QUOTE_MAP_FOLLOW_OFF, &ps[myconnectindex]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fixme: This really should be done via CCMD, not via hard coded key checks - but that needs alternative Shift and Alt bindings.
|
// Fixme: This really should be done via CCMD, not via hard coded key checks - but that needs alternative Shift and Alt bindings.
|
||||||
|
@ -181,7 +181,7 @@ void nonsharedkeys(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ud.overhead_on != 0)
|
if (automapMode != am_off)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
if (nonsharedtimer > 0 || totalclock < nonsharedtimer)
|
if (nonsharedtimer > 0 || totalclock < nonsharedtimer)
|
||||||
|
@ -203,22 +203,6 @@ void nonsharedkeys(void)
|
||||||
ps[myconnectindex].zoom = clamp(ps[myconnectindex].zoom, 48, 2048);
|
ps[myconnectindex].zoom = clamp(ps[myconnectindex].zoom, 48, 2048);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Map))
|
|
||||||
{
|
|
||||||
buttonMap.ClearButton(gamefunc_Map);
|
|
||||||
if (ud.last_overhead != ud.overhead_on && ud.last_overhead)
|
|
||||||
{
|
|
||||||
ud.overhead_on = ud.last_overhead;
|
|
||||||
ud.last_overhead = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ud.overhead_on++;
|
|
||||||
if (ud.overhead_on == 3) ud.overhead_on = 0;
|
|
||||||
ud.last_overhead = ud.overhead_on;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
@ -1152,9 +1136,9 @@ static void FinalizeInput(int playerNum, input_t& input, bool vehicle)
|
||||||
auto p = &ps[playerNum];
|
auto p = &ps[playerNum];
|
||||||
bool blocked = movementBlocked(playerNum) || sprite[p->i].extra <= 0 || (p->dead_flag && !ud.god);
|
bool blocked = movementBlocked(playerNum) || sprite[p->i].extra <= 0 || (p->dead_flag && !ud.god);
|
||||||
|
|
||||||
if ((ud.scrollmode && ud.overhead_on) || blocked)
|
if ((automapFollow && automapMode != am_off) || blocked)
|
||||||
{
|
{
|
||||||
if (ud.scrollmode && ud.overhead_on)
|
if (automapFollow && automapMode != am_off)
|
||||||
{
|
{
|
||||||
ud.folfvel = input.fvel;
|
ud.folfvel = input.fvel;
|
||||||
ud.folavel = fix16_to_int(input.q16avel);
|
ud.folavel = fix16_to_int(input.q16avel);
|
||||||
|
|
|
@ -472,7 +472,7 @@ void displayrooms(int snum, int smoothratio)
|
||||||
|
|
||||||
p = &ps[snum];
|
p = &ps[snum];
|
||||||
|
|
||||||
if (ud.overhead_on == 2 || p->cursectnum == -1)
|
if (automapMode == am_full || p->cursectnum == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Do not light up the fog in RRRA's E2L1. Ideally this should apply to all foggy levels but all others use lookup table hacks for their fog.
|
// Do not light up the fog in RRRA's E2L1. Ideally this should apply to all foggy levels but all others use lookup table hacks for their fog.
|
||||||
|
|
|
@ -179,7 +179,7 @@ PalEntry DDukeCommonStatusBar::LightForShade(int shade)
|
||||||
|
|
||||||
void DDukeCommonStatusBar::PrintLevelStats(int bottomy)
|
void DDukeCommonStatusBar::PrintLevelStats(int bottomy)
|
||||||
{
|
{
|
||||||
if (ud.overhead_on == 2)
|
if (automapMode == am_full)
|
||||||
{
|
{
|
||||||
// Automap label printer moved here so that it is on top of the screen border.
|
// Automap label printer moved here so that it is on top of the screen border.
|
||||||
FString mapname;
|
FString mapname;
|
||||||
|
@ -194,7 +194,7 @@ void DDukeCommonStatusBar::PrintLevelStats(int bottomy)
|
||||||
font = isNamWW2GI() ? ConFont : SmallFont;
|
font = isNamWW2GI() ? ConFont : SmallFont;
|
||||||
if (isNamWW2GI()) color = CR_ORANGE;
|
if (isNamWW2GI()) color = CR_ORANGE;
|
||||||
}
|
}
|
||||||
int top = am_nameontop ? 0 : 200 - Scale(bottomy < 0 ? RelTop : bottomy, hud_scale, 100) - isRR()? 25 : 20;
|
int top = am_nameontop ? 0 : ( 200 - Scale(bottomy < 0 ? RelTop : bottomy, hud_scale, 100) - (isRR()? 25 : 20));
|
||||||
if (!(currentLevel->flags & MI_USERMAP))
|
if (!(currentLevel->flags & MI_USERMAP))
|
||||||
DrawText(twod, font, color, 5, top + 6, GStrings.localize(gVolumeNames[volfromlevelnum(currentLevel->levelNumber)]),
|
DrawText(twod, font, color, 5, top + 6, GStrings.localize(gVolumeNames[volfromlevelnum(currentLevel->levelNumber)]),
|
||||||
DTA_FullscreenScale, FSMode_ScaleToFit43, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, DTA_ScaleX, scale, DTA_ScaleY, scale, DTA_KeepRatio, true, TAG_DONE);
|
DTA_FullscreenScale, FSMode_ScaleToFit43, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, DTA_ScaleX, scale, DTA_ScaleY, scale, DTA_KeepRatio, true, TAG_DONE);
|
||||||
|
|
|
@ -59,7 +59,7 @@ struct user_defs
|
||||||
unsigned char god, cashman, eog;
|
unsigned char god, cashman, eog;
|
||||||
unsigned char show_help, scrollmode, clipping;
|
unsigned char show_help, scrollmode, clipping;
|
||||||
char user_name[MAXPLAYERS][32];
|
char user_name[MAXPLAYERS][32];
|
||||||
unsigned char overhead_on, last_overhead, showweapons;
|
unsigned char showweapons;
|
||||||
unsigned char user_pals[MAXPLAYERS];
|
unsigned char user_pals[MAXPLAYERS];
|
||||||
|
|
||||||
short from_bonus;
|
short from_bonus;
|
||||||
|
|
|
@ -2384,7 +2384,7 @@ struct GameInterface : ::GameInterface
|
||||||
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
ReservedSpace GetReservedScreenSpace(int viewsize) override;
|
||||||
void clearlocalinputstate() override;
|
void clearlocalinputstate() override;
|
||||||
void QuitToTitle() override;
|
void QuitToTitle() override;
|
||||||
|
|
||||||
FString statFPS() override;
|
FString statFPS() override;
|
||||||
GameStats getStats() override;
|
GameStats getStats() override;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue