some things.
This commit is contained in:
@@ -141,6 +141,15 @@ function table.find(t, sFind)
|
||||
return nil
|
||||
end
|
||||
|
||||
--Get the count of all items in a table
|
||||
function table.itemcount(t)
|
||||
local i = 0
|
||||
while next(t)~=nil do
|
||||
i=i+1
|
||||
end
|
||||
return i
|
||||
end
|
||||
|
||||
function math.round(num, pre)
|
||||
if pre and pre < 0 then pre = 0 end
|
||||
local mult = 10^(pre or 0)
|
||||
@@ -201,6 +210,12 @@ function IsFreePlay()
|
||||
return IsArcade() and (GAMESTATE:GetCoinMode() == 'CoinMode_Free') or false
|
||||
end
|
||||
|
||||
function ArgsIfPlayerJoinedOrNil(arg1,arg2)
|
||||
if arg1==nil then arg1=arg2
|
||||
elseif arg2==nil then arg2=arg1 end
|
||||
return (GAMESTATE:IsSideJoined(PLAYER_1) and arg1 or nil),(GAMESTATE:IsSideJoined(PLAYER_2) and arg2 or nil)
|
||||
end
|
||||
|
||||
function Center1Player()
|
||||
local styleType = GAMESTATE:GetCurrentStyle():GetStyleType()
|
||||
-- always center in OnePlayerTwoSides.
|
||||
|
||||
@@ -6,11 +6,12 @@ It's unnecessary and problematic.]]
|
||||
ScoringModes={}
|
||||
|
||||
local function CreateOldScoringShim(name)
|
||||
local func = Scoring[name]
|
||||
return function(judg,pss,player,mode)
|
||||
judg,pss,player,mode=coroutine.yield()
|
||||
while true do
|
||||
if mode=="update" then
|
||||
Scoring[name](judg,pss)
|
||||
func(judg,pss)
|
||||
judg,pss,player,mode=coroutine.yield(pss:GetScore(),pss:GetCurMaxScore())
|
||||
elseif mode=="finalize" then
|
||||
return pss:GetScore(),pss:GetCurMaxScore()
|
||||
@@ -134,6 +135,22 @@ for k,v in pairs(Scoring) do
|
||||
end
|
||||
end
|
||||
|
||||
--if you are using the old Scoring system in the standard way, your theme will not need to be updated
|
||||
local OldCallShimMt={
|
||||
__index=function(t,k,v)
|
||||
return function(judg, _)
|
||||
if GetNumReadiedScoreKeepers()==0 then
|
||||
--lazy programming
|
||||
InitScoreKeepers(ArgsIfPlayerJoinedOrNil(v))
|
||||
end
|
||||
UpdateScoreKeepers(judg)
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
Scoring={}
|
||||
setmetatable(Scoring,OldCallShimMt)
|
||||
|
||||
function UserPrefScoringMode()
|
||||
local baseChoices = {}
|
||||
for k,v in pairs(ScoringModes) do table.insert(baseChoices,k) end
|
||||
|
||||
@@ -23,6 +23,10 @@ local function CoroutineIsGood(cr)
|
||||
return coroutine.status(cr)=="suspended"
|
||||
end
|
||||
|
||||
function GetNumReadiedScoreKeepers()
|
||||
return table.itemcount(ReadiedScoreKeepers)
|
||||
end
|
||||
|
||||
function InitScoreKeepers(p1Mode, p2Mode)
|
||||
local newStgK = {pcall(GameState.GetStageSeed,GAMESTATE)}
|
||||
assert(newStgK[1], "it's too early to initialize the ScoreKeepers, the GameState isn't ready yet")
|
||||
@@ -115,4 +119,27 @@ function FinalizeScoreKeepers()
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
-- (c) 2012 Jack Walstrom and the spinal shark collective
|
||||
-- All rights reserved.
|
||||
--
|
||||
-- Permission is hereby granted, free of charge, to any person obtaining a
|
||||
-- copy of this software and associated documentation files (the
|
||||
-- "Software"), to deal in the Software without restriction, including
|
||||
-- without limitation the rights to use, copy, modify, merge, publish,
|
||||
-- distribute, and/or sell copies of the Software, and to permit persons to
|
||||
-- whom the Software is furnished to do so, provided that the above
|
||||
-- copyright notice(s) and this permission notice appear in all copies of
|
||||
-- the Software and that both the above copyright notice(s) and this
|
||||
-- permission notice appear in supporting documentation.
|
||||
--
|
||||
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
-- THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
-- INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
-- OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
-- OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
-- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
-- PERFORMANCE OF THIS SOFTWARE.
|
||||
Reference in New Issue
Block a user