Fallback handled. Yes, I tested this.
This commit is contained in:
@@ -1,58 +1,58 @@
|
||||
-- This file is always executed first.
|
||||
|
||||
-- Override Lua's upper and lower functions with our own, which is always UTF-8.
|
||||
if Uppercase then
|
||||
string.upper = Uppercase
|
||||
string.lower = Lowercase
|
||||
Uppercase = nil -- don't use directly
|
||||
Lowercase = nil -- don't use directly
|
||||
end
|
||||
|
||||
Trace = lua.Trace
|
||||
Warn = lua.Warn
|
||||
print = Trace
|
||||
|
||||
-- Use MersenneTwister in place of math.random and math.randomseed.
|
||||
if MersenneTwister then
|
||||
math.random = MersenneTwister.Random
|
||||
math.randomseed = MersenneTwister.Seed
|
||||
end
|
||||
|
||||
PLAYER_1 = "PlayerNumber_P1"
|
||||
PLAYER_2 = "PlayerNumber_P2"
|
||||
NUM_PLAYERS = #PlayerNumber
|
||||
OtherPlayer = { [PLAYER_1] = PLAYER_2, [PLAYER_2] = PLAYER_1 }
|
||||
|
||||
function string:find_last(text)
|
||||
local LastPos = 0
|
||||
while true do
|
||||
local p = string.find(self, text, LastPos+1, true)
|
||||
if not p then
|
||||
return LastPos
|
||||
end
|
||||
LastPos = p
|
||||
end
|
||||
end
|
||||
|
||||
-- (c) 2006 Glenn Maynard
|
||||
-- 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.
|
||||
-- This file is always executed first.
|
||||
|
||||
-- Override Lua's upper and lower functions with our own, which is always UTF-8.
|
||||
if Uppercase then
|
||||
string.upper = Uppercase
|
||||
string.lower = Lowercase
|
||||
Uppercase = nil -- don't use directly
|
||||
Lowercase = nil -- don't use directly
|
||||
end
|
||||
|
||||
Trace = lua.Trace
|
||||
Warn = lua.Warn
|
||||
print = Trace
|
||||
|
||||
-- Use MersenneTwister in place of math.random and math.randomseed.
|
||||
if MersenneTwister then
|
||||
math.random = MersenneTwister.Random
|
||||
math.randomseed = MersenneTwister.Seed
|
||||
end
|
||||
|
||||
PLAYER_1 = "PlayerNumber_P1"
|
||||
PLAYER_2 = "PlayerNumber_P2"
|
||||
NUM_PLAYERS = #PlayerNumber
|
||||
OtherPlayer = { [PLAYER_1] = PLAYER_2, [PLAYER_2] = PLAYER_1 }
|
||||
|
||||
function string:find_last(text)
|
||||
local LastPos = 0
|
||||
while true do
|
||||
local p = string.find(self, text, LastPos+1, true)
|
||||
if not p then
|
||||
return LastPos
|
||||
end
|
||||
LastPos = p
|
||||
end
|
||||
end
|
||||
|
||||
-- (c) 2006 Glenn Maynard
|
||||
-- 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.
|
||||
|
||||
@@ -1,92 +1,98 @@
|
||||
function Sprite:LoadFromSongBanner(song)
|
||||
if song then
|
||||
local Path = song:GetBannerPath()
|
||||
if not Path then
|
||||
Path = THEME:GetPathG("Common","fallback banner")
|
||||
end
|
||||
|
||||
self:LoadBanner( Path )
|
||||
else
|
||||
self:LoadBanner( THEME:GetPathG("Common","fallback banner") )
|
||||
end
|
||||
end
|
||||
|
||||
function Sprite:LoadFromSongBackground(song)
|
||||
local Path = song:GetBackgroundPath()
|
||||
if not Path then
|
||||
Path = THEME:GetPathG("Common","fallback background")
|
||||
end
|
||||
|
||||
self:LoadBackground( Path )
|
||||
end
|
||||
|
||||
function LoadSongBackground()
|
||||
return Def.Sprite {
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y),
|
||||
BeginCommand=cmd(LoadFromSongBackground,GAMESTATE:GetCurrentSong();scale_or_crop_background)
|
||||
}
|
||||
end
|
||||
|
||||
function Sprite:LoadFromCurrentSongBackground()
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
if not song then
|
||||
local trail = GAMESTATE:GetCurrentTrail(GAMESTATE:GetMasterPlayerNumber())
|
||||
local e = trail:GetTrailEntries()
|
||||
if #e > 0 then
|
||||
song = e[1]:GetSong()
|
||||
end
|
||||
end
|
||||
|
||||
if not song then return end
|
||||
|
||||
self:LoadFromSongBackground(song)
|
||||
end
|
||||
|
||||
function Sprite:position( f )
|
||||
self:GetTexture():position( f )
|
||||
end
|
||||
|
||||
function Sprite:loop( f )
|
||||
self:GetTexture():loop( f )
|
||||
end
|
||||
|
||||
function Sprite:rate( f )
|
||||
self:GetTexture():rate( f )
|
||||
end
|
||||
|
||||
function Sprite.LinearFrames(NumFrames, Seconds)
|
||||
local Frames = {}
|
||||
for i = 0,NumFrames-1 do
|
||||
Frames[#Frames+1] = {
|
||||
Frame = i,
|
||||
Delay = (1/NumFrames)*Seconds
|
||||
}
|
||||
end
|
||||
return Frames
|
||||
end
|
||||
|
||||
-- command aliases:
|
||||
function Sprite:cropto(w,h) self:CropTo(w,h) end
|
||||
|
||||
-- (c) 2005 Glenn Maynard
|
||||
-- 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.
|
||||
function Sprite:LoadFromSongBanner(song)
|
||||
if song then
|
||||
local Path = song:GetBannerPath()
|
||||
if not Path then
|
||||
Path = THEME:GetPathG("Common","fallback banner")
|
||||
end
|
||||
|
||||
self:LoadBanner( Path )
|
||||
else
|
||||
self:LoadBanner( THEME:GetPathG("Common","fallback banner") )
|
||||
end
|
||||
end
|
||||
|
||||
function Sprite:LoadFromSongBackground(song)
|
||||
local Path = song:GetBackgroundPath()
|
||||
if not Path then
|
||||
Path = THEME:GetPathG("Common","fallback background")
|
||||
end
|
||||
|
||||
self:LoadBackground( Path )
|
||||
end
|
||||
|
||||
function LoadSongBackground()
|
||||
return Def.Sprite {
|
||||
InitCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X);
|
||||
self:y(SCREEN_CENTER_Y);
|
||||
end;
|
||||
BeginCommand=function(self)
|
||||
self:LoadFromSongBackground(GAMESTATE:GetCurrentSong());
|
||||
self:scale_or_crop_background();
|
||||
end;
|
||||
}
|
||||
end
|
||||
|
||||
function Sprite:LoadFromCurrentSongBackground()
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
if not song then
|
||||
local trail = GAMESTATE:GetCurrentTrail(GAMESTATE:GetMasterPlayerNumber())
|
||||
local e = trail:GetTrailEntries()
|
||||
if #e > 0 then
|
||||
song = e[1]:GetSong()
|
||||
end
|
||||
end
|
||||
|
||||
if not song then return end
|
||||
|
||||
self:LoadFromSongBackground(song)
|
||||
end
|
||||
|
||||
function Sprite:position( f )
|
||||
self:GetTexture():position( f )
|
||||
end
|
||||
|
||||
function Sprite:loop( f )
|
||||
self:GetTexture():loop( f )
|
||||
end
|
||||
|
||||
function Sprite:rate( f )
|
||||
self:GetTexture():rate( f )
|
||||
end
|
||||
|
||||
function Sprite.LinearFrames(NumFrames, Seconds)
|
||||
local Frames = {}
|
||||
for i = 0,NumFrames-1 do
|
||||
Frames[#Frames+1] = {
|
||||
Frame = i,
|
||||
Delay = (1/NumFrames)*Seconds
|
||||
}
|
||||
end
|
||||
return Frames
|
||||
end
|
||||
|
||||
-- command aliases:
|
||||
function Sprite:cropto(w,h) self:CropTo(w,h) end
|
||||
|
||||
-- (c) 2005 Glenn Maynard
|
||||
-- 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.
|
||||
|
||||
@@ -23,8 +23,17 @@ Library = {
|
||||
local t = Def.ActorFrame {
|
||||
Name="Radar";
|
||||
Def.GrooveRadar {
|
||||
OnCommand=cmd(zoom,0;sleep,0.583;decelerate,0.150;zoom,1);
|
||||
OffCommand=cmd(sleep,0.183;decelerate,0.167;zoom,0);
|
||||
OnCommand=function(self)
|
||||
self:zoom(0);
|
||||
self:sleep(0.583);
|
||||
self:decelerate(0.150);
|
||||
self:zoom(1);
|
||||
end;
|
||||
OffCommand=function(self)
|
||||
self:sleep(0.183);
|
||||
self:decelerate(0.167);
|
||||
self:zoom(0);
|
||||
end;
|
||||
CurrentSongChangedMessageCommand=function(self)
|
||||
for pn in ivalues(GAMESTATE:GetHumanPlayers()) do
|
||||
radarSet(self, pn);
|
||||
|
||||
Reference in New Issue
Block a user