Revert "Forgot another coin thingamajigger."
This reverts commit 8e96e05c24.
This commit is contained in:
@@ -1,210 +1,218 @@
|
||||
--[[
|
||||
[en] The Branch table replaces the various functions used for branching in the
|
||||
StepMania 4 default theme.
|
||||
Lines with a single string (e.g. TitleMenu = "ScreenTitleMenu") are referenced
|
||||
in the metrics as Branch.keyname.
|
||||
If the line is a function, you'll have to use Branch.keyname() instead.
|
||||
--]]
|
||||
|
||||
-- used for various SMOnline-enabled screens:
|
||||
function SMOnlineScreen()
|
||||
for pn in ivalues(GAMESTATE:GetHumanPlayers()) do
|
||||
if not IsSMOnlineLoggedIn(pn) then
|
||||
return "ScreenSMOnlineLogin"
|
||||
end
|
||||
end
|
||||
return "ScreenNetRoom"
|
||||
end
|
||||
|
||||
function SelectMusicOrCourse()
|
||||
if IsNetSMOnline() then
|
||||
return "ScreenNetSelectMusic"
|
||||
elseif GAMESTATE:IsCourseMode() then
|
||||
return "ScreenSelectCourse"
|
||||
else
|
||||
return "ScreenSelectMusic"
|
||||
end
|
||||
end
|
||||
|
||||
-- functions used for Routine mode
|
||||
function IsRoutine()
|
||||
return GAMESTATE:GetCurrentStyle() and GAMESTATE:GetCurrentStyle():GetStyleType() == "StyleType_TwoPlayersSharedSides"
|
||||
end
|
||||
|
||||
Branch = {
|
||||
Init = function() return "ScreenInit" end,
|
||||
AfterInit = function()
|
||||
if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then
|
||||
return Branch.TitleMenu()
|
||||
else
|
||||
return "ScreenLogo"
|
||||
end
|
||||
end,
|
||||
NoiseTrigger = function()
|
||||
local hour = Hour()
|
||||
return hour > 3 and hour < 6 and "ScreenNoise" or "ScreenInit"
|
||||
end,
|
||||
TitleMenu = function()
|
||||
-- home mode is the most assumed use of sm5.
|
||||
if GAMESTATE:GetCoinMode() == "CoinMode_Home" then
|
||||
return "ScreenTitleMenu"
|
||||
end
|
||||
return "ScreenTitleJoin"
|
||||
end,
|
||||
StartGame = function()
|
||||
-- Check to see if there are 0 songs installed. Also make sure to check
|
||||
-- that the additional song count is also 0, because there is
|
||||
-- a possibility someone will use their existing StepMania simfile
|
||||
-- collection with sm-ssc via AdditionalFolders/AdditionalSongFolders.
|
||||
if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then
|
||||
return "ScreenHowToInstallSongs"
|
||||
end
|
||||
if PROFILEMAN:GetNumLocalProfiles() >= 2 then
|
||||
return "ScreenSelectProfile"
|
||||
else
|
||||
if IsNetConnected() then
|
||||
return "ScreenSelectStyle"
|
||||
else
|
||||
if THEME:GetMetric("Common","AutoSetStyle") == false then
|
||||
return "ScreenSelectStyle"
|
||||
else
|
||||
return "ScreenProfileLoad"
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
OptionsEdit = function()
|
||||
-- Similar to above, don't let anyone in here with 0 songs.
|
||||
if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then
|
||||
return "ScreenHowToInstallSongs"
|
||||
end
|
||||
return "ScreenOptionsEdit"
|
||||
end,
|
||||
AfterSelectStyle = function()
|
||||
if IsNetConnected() then
|
||||
ReportStyle()
|
||||
GAMESTATE:ApplyGameCommand("playmode,regular")
|
||||
end
|
||||
if IsNetSMOnline() then
|
||||
return SMOnlineScreen()
|
||||
end
|
||||
if IsNetConnected() then
|
||||
return "ScreenNetRoom"
|
||||
end
|
||||
return "ScreenProfileLoad"
|
||||
|
||||
--return CHARMAN:GetAllCharacters() ~= nil and "ScreenSelectCharacter" or "ScreenGameInformation"
|
||||
end,
|
||||
AfterSelectProfile = function()
|
||||
if ( THEME:GetMetric("Common","AutoSetStyle") == true ) then
|
||||
-- use SelectStyle in online...
|
||||
return IsNetConnected() and "ScreenSelectStyle" or "ScreenSelectPlayMode"
|
||||
else
|
||||
return "ScreenSelectStyle"
|
||||
end
|
||||
end,
|
||||
AfterProfileLoad = function()
|
||||
return "ScreenSelectPlayMode"
|
||||
end,
|
||||
AfterProfileSave = function()
|
||||
-- Might be a little too broken? -- Midiman
|
||||
if GAMESTATE:IsEventMode() then
|
||||
return SelectMusicOrCourse()
|
||||
elseif STATSMAN:GetCurStageStats():AllFailed() then
|
||||
return "ScreenGameOver"
|
||||
elseif GAMESTATE:GetSmallestNumStagesLeftForAnyHumanPlayer() == 0 then
|
||||
return "ScreenEvaluationSummary"
|
||||
else
|
||||
return SelectMusicOrCourse()
|
||||
end
|
||||
end,
|
||||
GetGameInformationScreen = function()
|
||||
bTrue = PREFSMAN:GetPreference("ShowInstructions")
|
||||
return (bTrue and GoToMusic() or "ScreenGameInformation")
|
||||
end,
|
||||
AfterSMOLogin = SMOnlineScreen(),
|
||||
BackOutOfPlayerOptions = function()
|
||||
return SelectMusicOrCourse()
|
||||
end,
|
||||
BackOutOfStageInformation = function()
|
||||
return SelectMusicOrCourse()
|
||||
end,
|
||||
AfterSelectMusic = function()
|
||||
if SCREENMAN:GetTopScreen():GetGoToOptions() then
|
||||
return SelectFirstOptionsScreen()
|
||||
else
|
||||
return "ScreenStageInformation"
|
||||
end
|
||||
end,
|
||||
PlayerOptions = function()
|
||||
local pm = GAMESTATE:GetPlayMode()
|
||||
local restricted = { "PlayMode_Oni", "PlayMode_Rave",
|
||||
--"PlayMode_Battle" -- ??
|
||||
}
|
||||
local optionsScreen = "ScreenPlayerOptions"
|
||||
for i=1,#restricted do
|
||||
if restricted[i] == pm then
|
||||
optionsScreen = "ScreenPlayerOptionsRestricted"
|
||||
end
|
||||
end
|
||||
if SCREENMAN:GetTopScreen():GetGoToOptions() then
|
||||
return optionsScreen
|
||||
else
|
||||
return "ScreenStageInformation"
|
||||
end
|
||||
end,
|
||||
SongOptions = function()
|
||||
if SCREENMAN:GetTopScreen():GetGoToOptions() then
|
||||
return "ScreenSongOptions"
|
||||
else
|
||||
return "ScreenStageInformation"
|
||||
end
|
||||
end,
|
||||
GameplayScreen = function()
|
||||
return IsRoutine() and "ScreenGameplayShared" or "ScreenGameplay"
|
||||
end,
|
||||
AfterGameplay = function()
|
||||
-- pick an evaluation screen based on settings.
|
||||
if IsNetSMOnline() then
|
||||
return "ScreenNetEvaluation"
|
||||
else
|
||||
-- todo: account for courses etc?
|
||||
return "ScreenEvaluationNormal"
|
||||
end
|
||||
end,
|
||||
AfterEvaluation = function()
|
||||
if GAMESTATE:IsCourseMode() then
|
||||
return "ScreenProfileSave"
|
||||
else
|
||||
local maxStages = PREFSMAN:GetPreference("SongsPerPlay")
|
||||
local stagesLeft = GAMESTATE:GetSmallestNumStagesLeftForAnyHumanPlayer()
|
||||
local allFailed = STATSMAN:GetCurStageStats():AllFailed()
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
|
||||
if GAMESTATE:IsEventMode() or stagesLeft >= 1 then
|
||||
return "ScreenProfileSave"
|
||||
elseif song:IsLong() and maxStages <= 2 and stagesLeft < 1 and allFailed then
|
||||
return "ScreenProfileSaveSummary"
|
||||
elseif song:IsMarathon() and maxStages <= 3 and stagesLeft < 1 and allFailed then
|
||||
return "ScreenProfileSaveSummary"
|
||||
elseif maxStages >= 2 and stagesLeft < 1 and allFailed then
|
||||
return "ScreenProfileSaveSummary"
|
||||
elseif allFailed then
|
||||
return "ScreenProfileSaveSummary"
|
||||
else
|
||||
return "ScreenProfileSave"
|
||||
end
|
||||
end
|
||||
end,
|
||||
AfterSummary = function()
|
||||
return "ScreenProfileSaveSummary"
|
||||
end,
|
||||
Network = function()
|
||||
return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu"
|
||||
end,
|
||||
AfterSaveSummary = function()
|
||||
return "ScreenGameOver"
|
||||
-- [[ Enable when Finished ]]
|
||||
-- return GAMESTATE:AnyPlayerHasRankingFeats() and "ScreenNameEntryTraditional" or "ScreenGameOver"
|
||||
end,
|
||||
}
|
||||
--[[
|
||||
[en] The Branch table replaces the various functions used for branching in the
|
||||
StepMania 4 default theme.
|
||||
Lines with a single string (e.g. TitleMenu = "ScreenTitleMenu") are referenced
|
||||
in the metrics as Branch.keyname.
|
||||
If the line is a function, you'll have to use Branch.keyname() instead.
|
||||
--]]
|
||||
|
||||
-- used for various SMOnline-enabled screens:
|
||||
function SMOnlineScreen()
|
||||
for pn in ivalues(GAMESTATE:GetHumanPlayers()) do
|
||||
if not IsSMOnlineLoggedIn(pn) then
|
||||
return "ScreenSMOnlineLogin"
|
||||
end
|
||||
end
|
||||
return "ScreenNetRoom"
|
||||
end
|
||||
|
||||
function SelectMusicOrCourse()
|
||||
if IsNetSMOnline() then
|
||||
return "ScreenNetSelectMusic"
|
||||
elseif GAMESTATE:IsCourseMode() then
|
||||
return "ScreenSelectCourse"
|
||||
else
|
||||
return "ScreenSelectMusic"
|
||||
end
|
||||
end
|
||||
|
||||
-- functions used for Routine mode
|
||||
function IsRoutine()
|
||||
return GAMESTATE:GetCurrentStyle() and GAMESTATE:GetCurrentStyle():GetStyleType() == "StyleType_TwoPlayersSharedSides"
|
||||
end
|
||||
|
||||
Branch = {
|
||||
Init = function() return "ScreenInit" end,
|
||||
AfterInit = function()
|
||||
if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then
|
||||
return Branch.TitleMenu()
|
||||
else
|
||||
return "ScreenLogo"
|
||||
end
|
||||
end,
|
||||
NoiseTrigger = function()
|
||||
local hour = Hour()
|
||||
return hour > 3 and hour < 6 and "ScreenNoise" or "ScreenInit"
|
||||
end,
|
||||
TitleMenu = function()
|
||||
-- home mode is the most assumed use of sm-ssc.
|
||||
if GAMESTATE:GetCoinMode() == "CoinMode_Home" then
|
||||
return "ScreenTitleMenu"
|
||||
end
|
||||
-- arcade junk:
|
||||
if GAMESTATE:GetCoinsNeededToJoin() > GAMESTATE:GetCoins() then
|
||||
-- if no credits are inserted, don't show the Join screen. SM4 has
|
||||
-- this as the initial screen, but that means we'd be stuck in a
|
||||
-- loop with ScreenInit. No good.
|
||||
return "ScreenTitleJoin"
|
||||
else
|
||||
return "ScreenTitleJoin"
|
||||
end
|
||||
end,
|
||||
StartGame = function()
|
||||
-- Check to see if there are 0 songs installed. Also make sure to check
|
||||
-- that the additional song count is also 0, because there is
|
||||
-- a possibility someone will use their existing StepMania simfile
|
||||
-- collection with sm-ssc via AdditionalFolders/AdditionalSongFolders.
|
||||
if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then
|
||||
return "ScreenHowToInstallSongs"
|
||||
end
|
||||
if PROFILEMAN:GetNumLocalProfiles() >= 2 then
|
||||
return "ScreenSelectProfile"
|
||||
else
|
||||
if IsNetConnected() then
|
||||
return "ScreenSelectStyle"
|
||||
else
|
||||
if THEME:GetMetric("Common","AutoSetStyle") == false then
|
||||
return "ScreenSelectStyle"
|
||||
else
|
||||
return "ScreenProfileLoad"
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
OptionsEdit = function()
|
||||
-- Similar to above, don't let anyone in here with 0 songs.
|
||||
if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then
|
||||
return "ScreenHowToInstallSongs"
|
||||
end
|
||||
return "ScreenOptionsEdit"
|
||||
end,
|
||||
AfterSelectStyle = function()
|
||||
if IsNetConnected() then
|
||||
ReportStyle()
|
||||
GAMESTATE:ApplyGameCommand("playmode,regular")
|
||||
end
|
||||
if IsNetSMOnline() then
|
||||
return SMOnlineScreen()
|
||||
end
|
||||
if IsNetConnected() then
|
||||
return "ScreenNetRoom"
|
||||
end
|
||||
return "ScreenProfileLoad"
|
||||
|
||||
--return CHARMAN:GetAllCharacters() ~= nil and "ScreenSelectCharacter" or "ScreenGameInformation"
|
||||
end,
|
||||
AfterSelectProfile = function()
|
||||
if ( THEME:GetMetric("Common","AutoSetStyle") == true ) then
|
||||
-- use SelectStyle in online...
|
||||
return IsNetConnected() and "ScreenSelectStyle" or "ScreenSelectPlayMode"
|
||||
else
|
||||
return "ScreenSelectStyle"
|
||||
end
|
||||
end,
|
||||
AfterProfileLoad = function()
|
||||
return "ScreenSelectPlayMode"
|
||||
end,
|
||||
AfterProfileSave = function()
|
||||
-- Might be a little too broken? -- Midiman
|
||||
if GAMESTATE:IsEventMode() then
|
||||
return SelectMusicOrCourse()
|
||||
elseif STATSMAN:GetCurStageStats():AllFailed() then
|
||||
return "ScreenGameOver"
|
||||
elseif GAMESTATE:GetSmallestNumStagesLeftForAnyHumanPlayer() == 0 then
|
||||
return "ScreenEvaluationSummary"
|
||||
else
|
||||
return SelectMusicOrCourse()
|
||||
end
|
||||
end,
|
||||
GetGameInformationScreen = function()
|
||||
bTrue = PREFSMAN:GetPreference("ShowInstructions")
|
||||
return (bTrue and GoToMusic() or "ScreenGameInformation")
|
||||
end,
|
||||
AfterSMOLogin = SMOnlineScreen(),
|
||||
BackOutOfPlayerOptions = function()
|
||||
return SelectMusicOrCourse()
|
||||
end,
|
||||
BackOutOfStageInformation = function()
|
||||
return SelectMusicOrCourse()
|
||||
end,
|
||||
AfterSelectMusic = function()
|
||||
if SCREENMAN:GetTopScreen():GetGoToOptions() then
|
||||
return SelectFirstOptionsScreen()
|
||||
else
|
||||
return "ScreenStageInformation"
|
||||
end
|
||||
end,
|
||||
PlayerOptions = function()
|
||||
local pm = GAMESTATE:GetPlayMode()
|
||||
local restricted = { "PlayMode_Oni", "PlayMode_Rave",
|
||||
--"PlayMode_Battle" -- ??
|
||||
}
|
||||
local optionsScreen = "ScreenPlayerOptions"
|
||||
for i=1,#restricted do
|
||||
if restricted[i] == pm then
|
||||
optionsScreen = "ScreenPlayerOptionsRestricted"
|
||||
end
|
||||
end
|
||||
if SCREENMAN:GetTopScreen():GetGoToOptions() then
|
||||
return optionsScreen
|
||||
else
|
||||
return "ScreenStageInformation"
|
||||
end
|
||||
end,
|
||||
SongOptions = function()
|
||||
if SCREENMAN:GetTopScreen():GetGoToOptions() then
|
||||
return "ScreenSongOptions"
|
||||
else
|
||||
return "ScreenStageInformation"
|
||||
end
|
||||
end,
|
||||
GameplayScreen = function()
|
||||
return IsRoutine() and "ScreenGameplayShared" or "ScreenGameplay"
|
||||
end,
|
||||
AfterGameplay = function()
|
||||
-- pick an evaluation screen based on settings.
|
||||
if IsNetSMOnline() then
|
||||
return "ScreenNetEvaluation"
|
||||
else
|
||||
-- todo: account for courses etc?
|
||||
return "ScreenEvaluationNormal"
|
||||
end
|
||||
end,
|
||||
AfterEvaluation = function()
|
||||
if GAMESTATE:IsCourseMode() then
|
||||
return "ScreenProfileSave"
|
||||
else
|
||||
local maxStages = PREFSMAN:GetPreference("SongsPerPlay")
|
||||
local stagesLeft = GAMESTATE:GetSmallestNumStagesLeftForAnyHumanPlayer()
|
||||
local allFailed = STATSMAN:GetCurStageStats():AllFailed()
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
|
||||
if GAMESTATE:IsEventMode() or stagesLeft >= 1 then
|
||||
return "ScreenProfileSave"
|
||||
elseif song:IsLong() and maxStages <= 2 and stagesLeft < 1 and allFailed then
|
||||
return "ScreenProfileSaveSummary"
|
||||
elseif song:IsMarathon() and maxStages <= 3 and stagesLeft < 1 and allFailed then
|
||||
return "ScreenProfileSaveSummary"
|
||||
elseif maxStages >= 2 and stagesLeft < 1 and allFailed then
|
||||
return "ScreenProfileSaveSummary"
|
||||
elseif allFailed then
|
||||
return "ScreenProfileSaveSummary"
|
||||
else
|
||||
return "ScreenProfileSave"
|
||||
end
|
||||
end
|
||||
end,
|
||||
AfterSummary = function()
|
||||
return "ScreenProfileSaveSummary"
|
||||
end,
|
||||
Network = function()
|
||||
return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu"
|
||||
end,
|
||||
AfterSaveSummary = function()
|
||||
return "ScreenGameOver"
|
||||
-- [[ Enable when Finished ]]
|
||||
-- return GAMESTATE:AnyPlayerHasRankingFeats() and "ScreenNameEntryTraditional" or "ScreenGameOver"
|
||||
end,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user