diff options
7 files changed, 58 insertions, 9 deletions
diff --git a/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DefCore.txt b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DefCore.txt new file mode 100644 index 0000000..c347606 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=TBMC +Name=ToggleBackgroundMusic +Version=4,9,5 +Category=C4D_StaticBack|C4D_Rule +Width=1 +Height=1 +Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DescDE.txt new file mode 100644 index 0000000..ecc13cb --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DescDE.txt @@ -0,0 +1 @@ +Regel zum Ein- und Ausschalten der Hintergrundmusik.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DescUS.txt new file mode 100644 index 0000000..15bd48e --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/DescUS.txt @@ -0,0 +1 @@ +Rule for enabling/disabling background music.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Graphics.png b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..be6bd78 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Graphics.png diff --git a/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Names.txt b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Names.txt new file mode 100644 index 0000000..75e50ee --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Hintergrundmusik ein-/ausschalten +US:Toggle background music
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Script.c b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Script.c new file mode 100644 index 0000000..ef9b34e --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/ToggleBackgroundMusic.c4d/Script.c @@ -0,0 +1,5 @@ +/*-- Rule: Toggle background music --*/ + +#strict 2 + +protected func Activate(int player) { GameCall("ToggleAmbienceSounds", player); } diff --git a/TemplePushing.c4s/Script.c b/TemplePushing.c4s/Script.c index d123912..5df463a 100644 --- a/TemplePushing.c4s/Script.c +++ b/TemplePushing.c4s/Script.c @@ -10,6 +10,10 @@ static const SORT_SORTCOL_Team = 0, SORT_SORTCOL_Player = 1, SORT_SORTCOL_Leaver static const MaxTeamCount = 3; +static const PlrData_EnableAmbienceSounds = "TemplePushing_EnableAmbienceSounds"; +static const PlrData_EnableAmbienceSounds_Yes = 1; +static const PlrData_EnableAmbienceSounds_No = 2; + static section, mode; static numRelaunches; static deathmatchEnabled, deathmatchWinScore; @@ -79,6 +83,8 @@ func InitializePlayer(int player) SetScoreboardData(PlayerRow(player), SBRD_TeamSortCol, " ", GetPlayerTeam(player)); UpdateScoreboard(player); LaunchClonk(player, GetCrew(player)); + + if (ambienceEnabled) DoAmbienceSounds(player); } func GetRelaunchesLeft(int player) { return numRelaunches - playerDeaths[GetPlayerID(player)]; } @@ -185,15 +191,6 @@ func Script0() LoadScenarioSection(DefinitionCall(sectionID, "SectionName")); loadingSection = false; section = CreateObject(sectionID, 0, 0, NO_OWNER); - - // Play ambience sounds - if (ambienceEnabled) - { - for(var sound in section->SectionAmbienceSounds()) - { - SoundLevel(sound[0], sound[1]); - } - } // Create spawnpoints if (mode != MODE_Apocalyptic) @@ -248,6 +245,7 @@ func Script0() CreateObject(MELE, 0, 0, NO_OWNER); // Create rules + CreateObject(TBMC, 0, 0, NO_OWNER); // Rule for enabling/disabling music if (extinguisherEnabled) CreateObject(_ETG, 0, 0, NO_OWNER); if (suddendeathEnabled) CreateObject(SDDT, 0, 0, NO_OWNER); if (rotateInJumpEnabled) CreateObject(RIJP, 0, 0, NO_OWNER); @@ -683,3 +681,37 @@ func CheckGameStatus() } } } + +func WantsAmbienceSounds(int player) +{ + // Check if user already specified in the past if he wants to enable ambience sounds + var preference = GetPlrExtraData(player, PlrData_EnableAmbienceSounds); + if (preference == PlrData_EnableAmbienceSounds_Yes) return true; + if (preference == PlrData_EnableAmbienceSounds_No) return false; + // Preference not set yet/invalid? Enable for non-league games and disable otherwise. + return !GetLeague(); +} + +func DoAmbienceSounds(int player) +{ + for (var sound in section->SectionAmbienceSounds()) + { + Sound(sound[0], true, 0, sound[1], player + 1, WantsAmbienceSounds(player) * 2 - 1); + } +} + +func ToggleAmbienceSounds(int player) +{ + var preference; + if (WantsAmbienceSounds(player)) + { + preference = PlrData_EnableAmbienceSounds_No; + } + else + { + preference = PlrData_EnableAmbienceSounds_Yes; + } + + SetPlrExtraData(player, PlrData_EnableAmbienceSounds, preference); + DoAmbienceSounds(player); +}
\ No newline at end of file |
