Initial commit.
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
-- Find a key in tab with the given value.
|
||||
function FindValue(tab, value)
|
||||
for key, name in tab do
|
||||
if value == name then
|
||||
return key
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Return the index of a true value in list.
|
||||
function FindSelection( list )
|
||||
for index, on in list do
|
||||
if on then
|
||||
return index
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Look up each value in a table, returning a table with the resulting strings.
|
||||
function TableStringLookup( t, group )
|
||||
local ret = { }
|
||||
for key, val in t do
|
||||
Trace(val)
|
||||
ret[key] = THEME:GetString(group,val)
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
function split( delimiter, text )
|
||||
local list = {}
|
||||
local pos = 1
|
||||
while 1 do
|
||||
local first,last = string.find( text, delimiter, pos )
|
||||
if first then
|
||||
table.insert( list, string.sub(text, pos, first-1) )
|
||||
pos = last+1
|
||||
else
|
||||
table.insert( list, string.sub(text, pos) )
|
||||
break
|
||||
end
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
function join( delimiter, list )
|
||||
local ret = list[1]
|
||||
for i = 2,table.getn(list) do
|
||||
ret = ret .. delimiter .. list[i]
|
||||
end
|
||||
return ret or ""
|
||||
end
|
||||
|
||||
function wrap(val,n)
|
||||
local x = val
|
||||
Trace( "wrap "..x.." "..n )
|
||||
if x<0 then
|
||||
x = x + (math.ceil(-x/n)+1)*n;
|
||||
end
|
||||
Trace( "adjusted "..x )
|
||||
local ret = math.mod(x,n)
|
||||
Trace( "ret "..ret )
|
||||
return ret
|
||||
end
|
||||
|
||||
function fapproach( val, other_val, to_move )
|
||||
if val == other_val then return val end
|
||||
local fDelta = other_val - val
|
||||
local fSign = fDelta / math.abs( fDelta )
|
||||
local fToMove = fSign*to_move
|
||||
if math.abs(fToMove) > math.abs(fDelta) then
|
||||
fToMove = fDelta -- snap
|
||||
end
|
||||
val = val + fToMove
|
||||
return val
|
||||
end
|
||||
|
||||
function tableshuffle( t )
|
||||
local ret = { }
|
||||
for i=1,table.getn(t) do
|
||||
table.insert( ret, math.random(i), t[i] );
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
function tableslice( t, num )
|
||||
local ret = { }
|
||||
for i=1,table.getn(t) do
|
||||
table.insert( ret, i, t[i] );
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
function GetRandomSongBackground()
|
||||
for i=0,50 do
|
||||
local song = SONGMAN:GetRandomSong()
|
||||
if song then
|
||||
local path = song:GetBackgroundPath()
|
||||
if path then return path end
|
||||
end
|
||||
end
|
||||
return THEME:GetPathG("", "_blank")
|
||||
end
|
||||
|
||||
function GetSongBackground()
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
if song then
|
||||
local path = song:GetBackgroundPath()
|
||||
if path then return path end
|
||||
end
|
||||
return THEME:GetPathG("Common","fallback background")
|
||||
end
|
||||
|
||||
function StepsOrTrailToCustomDifficulty( stepsOrTrail )
|
||||
if lua.CheckType("Steps", stepsOrTrail) then
|
||||
return StepsToCustomDifficulty( stepsOrTrail );
|
||||
end
|
||||
if lua.CheckType("Trail", stepsOrTrail) then
|
||||
return TrailToCustomDifficulty( stepsOrTrail );
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- (c) 2005 Glenn Maynard, Chris Danford
|
||||
-- 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