mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 23:01:59 +00:00
- serialize the temporary music volume that can be set through ACS.
This commit is contained in:
parent
40bf8a421e
commit
da74b9df95
7 changed files with 25 additions and 4 deletions
|
@ -87,6 +87,7 @@
|
||||||
#include "vm.h"
|
#include "vm.h"
|
||||||
#include "events.h"
|
#include "events.h"
|
||||||
#include "dobjgc.h"
|
#include "dobjgc.h"
|
||||||
|
#include "i_music.h"
|
||||||
|
|
||||||
#include "gi.h"
|
#include "gi.h"
|
||||||
|
|
||||||
|
@ -600,6 +601,7 @@ void G_ChangeLevel(const char *levelname, int position, int flags, int nextSkill
|
||||||
|
|
||||||
startpos = position;
|
startpos = position;
|
||||||
gameaction = ga_completed;
|
gameaction = ga_completed;
|
||||||
|
level.SetMusicVolume(1.0);
|
||||||
|
|
||||||
if (nextinfo != NULL)
|
if (nextinfo != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1469,6 +1471,7 @@ void G_InitLevelLocals ()
|
||||||
level.levelnum = info->levelnum;
|
level.levelnum = info->levelnum;
|
||||||
level.Music = info->Music;
|
level.Music = info->Music;
|
||||||
level.musicorder = info->musicorder;
|
level.musicorder = info->musicorder;
|
||||||
|
level.MusicVolume = 1.f;
|
||||||
|
|
||||||
level.LevelName = level.info->LookupLevelName();
|
level.LevelName = level.info->LookupLevelName();
|
||||||
level.NextMap = info->NextMap;
|
level.NextMap = info->NextMap;
|
||||||
|
@ -1960,6 +1963,17 @@ DEFINE_ACTION_FUNCTION(FLevelLocals, SetInterMusic)
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
|
void FLevelLocals::SetMusicVolume(float f)
|
||||||
|
{
|
||||||
|
MusicVolume = f;
|
||||||
|
I_SetMusicVolume(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline T VecDiff(const T& v1, const T& v2)
|
inline T VecDiff(const T& v1, const T& v2)
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,7 @@ struct FLevelLocals
|
||||||
void Tick ();
|
void Tick ();
|
||||||
void AddScroller (int secnum);
|
void AddScroller (int secnum);
|
||||||
void SetInterMusic(const char *nextmap);
|
void SetInterMusic(const char *nextmap);
|
||||||
|
void SetMusicVolume(float v);
|
||||||
|
|
||||||
uint8_t md5[16]; // for savegame validation. If the MD5 does not match the savegame won't be loaded.
|
uint8_t md5[16]; // for savegame validation. If the MD5 does not match the savegame won't be loaded.
|
||||||
int time; // time in the hub
|
int time; // time in the hub
|
||||||
|
@ -149,6 +150,7 @@ struct FLevelLocals
|
||||||
int skyfog;
|
int skyfog;
|
||||||
|
|
||||||
float pixelstretch;
|
float pixelstretch;
|
||||||
|
float MusicVolume;
|
||||||
|
|
||||||
bool IsJumpingAllowed() const;
|
bool IsJumpingAllowed() const;
|
||||||
bool IsCrouchingAllowed() const;
|
bool IsCrouchingAllowed() const;
|
||||||
|
@ -162,6 +164,7 @@ struct FLevelLocals
|
||||||
{
|
{
|
||||||
return headgamenode;
|
return headgamenode;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern FLevelLocals level;
|
extern FLevelLocals level;
|
||||||
|
|
|
@ -6689,7 +6689,7 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACSF_SetMusicVolume:
|
case ACSF_SetMusicVolume:
|
||||||
I_SetMusicVolume(ACSToFloat(args[0]));
|
level.SetMusicVolume(ACSToFloat(args[0]));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACSF_CheckProximity:
|
case ACSF_CheckProximity:
|
||||||
|
|
|
@ -1094,7 +1094,7 @@ static void HandleReply(player_t *player, bool isconsole, int nodenum, int reply
|
||||||
|
|
||||||
if (isconsole)
|
if (isconsole)
|
||||||
{
|
{
|
||||||
I_SetMusicVolume (1.f);
|
I_SetMusicVolume (level.MusicVolume);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -546,19 +546,22 @@ void P_SerializeSounds(FSerializer &arc)
|
||||||
DSeqNode::SerializeSequences (arc);
|
DSeqNode::SerializeSequences (arc);
|
||||||
const char *name = NULL;
|
const char *name = NULL;
|
||||||
uint8_t order;
|
uint8_t order;
|
||||||
|
float musvol = level.MusicVolume;
|
||||||
|
|
||||||
if (arc.isWriting())
|
if (arc.isWriting())
|
||||||
{
|
{
|
||||||
order = S_GetMusic(&name);
|
order = S_GetMusic(&name);
|
||||||
}
|
}
|
||||||
arc.StringPtr("musicname", name)
|
arc.StringPtr("musicname", name)
|
||||||
("musicorder", order);
|
("musicorder", order)
|
||||||
|
("musicvolume", musvol);
|
||||||
|
|
||||||
if (arc.isReading())
|
if (arc.isReading())
|
||||||
{
|
{
|
||||||
if (!S_ChangeMusic(name, order))
|
if (!S_ChangeMusic(name, order))
|
||||||
if (level.cdtrack == 0 || !S_ChangeCDMusic(level.cdtrack, level.cdid))
|
if (level.cdtrack == 0 || !S_ChangeCDMusic(level.cdtrack, level.cdid))
|
||||||
S_ChangeMusic(level.Music, level.musicorder);
|
S_ChangeMusic(level.Music, level.musicorder);
|
||||||
|
level.SetMusicVolume(musvol);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3651,6 +3651,7 @@ void P_SetupLevel (const char *lumpname, int position)
|
||||||
|
|
||||||
if (!savegamerestore)
|
if (!savegamerestore)
|
||||||
{
|
{
|
||||||
|
level.SetMusicVolume(level.MusicVolume);
|
||||||
for (i = 0; i < MAXPLAYERS; ++i)
|
for (i = 0; i < MAXPLAYERS; ++i)
|
||||||
{
|
{
|
||||||
players[i].killcount = players[i].secretcount
|
players[i].killcount = players[i].secretcount
|
||||||
|
|
|
@ -886,7 +886,7 @@ bool Win32GLVideo::InitHardware (HWND Window, int multisample)
|
||||||
{
|
{
|
||||||
// let's try to get the best version possible. Some drivers only give us the version we request
|
// let's try to get the best version possible. Some drivers only give us the version we request
|
||||||
// which breaks all version checks for feature support. The highest used features we use are from version 4.4, and 3.0 is a requirement.
|
// which breaks all version checks for feature support. The highest used features we use are from version 4.4, and 3.0 is a requirement.
|
||||||
static int versions[] = { 45, 44, 43, 42, 41, 40, 33, 32, 31, 30, -1 };
|
static int versions[] = { 46, 45, 44, 43, 42, 41, 40, 33, 32, 31, 30, -1 };
|
||||||
|
|
||||||
for (int i = 0; versions[i] > 0; i++)
|
for (int i = 0; versions[i] > 0; i++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue