some things.

This commit is contained in:
Flameshadowxeroshin
2012-05-15 23:04:46 -05:00
parent d35089a75f
commit 495aa1ef14
3 changed files with 61 additions and 2 deletions
+15
View File
@@ -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
+28 -1
View File
@@ -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.