Browse Source

Add game speed to the ingame options menu

This removes the option to disable color animations (color cyceling)
pull/843/head
Anders Jenbo 6 years ago
parent
commit
35f9b9d750
  1. 1
      Source/diablo.cpp
  2. 1
      Source/diablo.h
  3. 45
      Source/gamemenu.cpp
  4. 3
      Source/gamemenu.h
  5. 7
      Source/mainmenu.cpp

1
Source/diablo.cpp

@ -42,6 +42,7 @@ int PauseMode;
int sgnTimeoutCurs;
char sgbMouseDown;
int color_cycle_timer;
int ticks_per_sec = 20;
WORD game_speed;
/* rdata */

1
Source/diablo.h

@ -47,6 +47,7 @@ extern int debugmonsttypes;
extern int PauseMode;
extern char sgbMouseDown;
extern int color_cycle_timer;
extern int ticks_per_sec;
extern WORD game_speed;
void FreeGameMem();

45
Source/gamemenu.cpp

@ -4,6 +4,7 @@
* Implementation of the in-game menu functions.
*/
#include "all.h"
#include "../3rdParty/Storm/Source/storm.h"
DEVILUTION_BEGIN_NAMESPACE
@ -36,7 +37,8 @@ TMenuItem sgOptionsMenu[] = {
{ GMENU_ENABLED | GMENU_SLIDER, NULL, &gamemenu_music_volume },
{ GMENU_ENABLED | GMENU_SLIDER, NULL, &gamemenu_sound_volume },
{ GMENU_ENABLED | GMENU_SLIDER, "Gamma", &gamemenu_gamma },
{ GMENU_ENABLED , NULL, &gamemenu_color_cycling },
// { GMENU_ENABLED , NULL, &gamemenu_color_cycling },
{ GMENU_ENABLED | GMENU_SLIDER, "Speed", &gamemenu_speed },
{ GMENU_ENABLED , "Previous Menu", &gamemenu_previous },
{ GMENU_ENABLED , NULL, NULL },
// clang-format on
@ -177,7 +179,8 @@ void gamemenu_options(BOOL bActivate)
gamemenu_get_music();
gamemenu_get_sound();
gamemenu_get_gamma();
gamemenu_get_color_cycling();
gamemenu_get_speed();
//gamemenu_get_color_cycling();
gmenu_set_items(sgOptionsMenu, NULL);
}
@ -302,6 +305,44 @@ int gamemenu_slider_gamma()
return gmenu_slider_get(&sgOptionsMenu[2], 30, 100);
}
void gamemenu_get_speed()
{
if (gbMaxPlayers != 1) {
sgOptionsMenu[3].dwFlags &= ~(GMENU_ENABLED | GMENU_SLIDER);
if (ticks_per_sec >= 50)
sgOptionsMenu[3].pszStr = "Speed: Fastest";
if (ticks_per_sec >= 40)
sgOptionsMenu[3].pszStr = "Speed: Faster";
if (ticks_per_sec >= 30)
sgOptionsMenu[3].pszStr = "Speed: Fast";
else if (ticks_per_sec == 20)
sgOptionsMenu[3].pszStr = "Speed: Normal";
return;
}
sgOptionsMenu[3].dwFlags |= GMENU_ENABLED | GMENU_SLIDER;
sgOptionsMenu[3].pszStr = "Speed";
gmenu_slider_steps(&sgOptionsMenu[3], 46);
gmenu_slider_set(&sgOptionsMenu[3], 20, 50, ticks_per_sec);
}
void gamemenu_speed(BOOL bActivate)
{
if (bActivate) {
if (ticks_per_sec != 20)
ticks_per_sec = 20;
else
ticks_per_sec = 50;
gmenu_slider_set(&sgOptionsMenu[3], 20, 50, ticks_per_sec);
} else {
ticks_per_sec = gmenu_slider_get(&sgOptionsMenu[3], 20, 50);
}
SRegSaveValue("devilutionx", "game speed", 0, ticks_per_sec);
game_speed = 1000 / ticks_per_sec;
}
void gamemenu_color_cycling(BOOL bActivate)
{
BOOL color_cycling;

3
Source/gamemenu.h

@ -36,6 +36,9 @@ void gamemenu_gamma(BOOL bActivate);
int gamemenu_slider_gamma();
void gamemenu_color_cycling(BOOL bActivate);
void gamemenu_get_speed();
void gamemenu_speed(BOOL bActivate);
/* rdata */
extern char *music_toggle_names[];
extern char *sound_toggle_names[];

7
Source/mainmenu.cpp

@ -138,11 +138,10 @@ BOOL mainmenu_single_player()
{
gbMaxPlayers = 1;
int tps = 20;
if (!SRegLoadValue("devilutionx", "game speed", 0, &tps)) {
SRegSaveValue("devilutionx", "game speed", 0, tps);
if (!SRegLoadValue("devilutionx", "game speed", 0, &ticks_per_sec)) {
SRegSaveValue("devilutionx", "game speed", 0, ticks_per_sec);
}
game_speed = 1000 / tps;
game_speed = 1000 / ticks_per_sec;
return mainmenu_init_menu(SELHERO_NEW_DUNGEON);
}

Loading…
Cancel
Save