Files
itgmania212121/Themes/_fallback/BGAnimations/ScreenSelectProfile overlay.lua
T

341 lines
8.4 KiB
Lua

function GetLocalProfiles()
local t = {};
for p = 0,PROFILEMAN:GetNumLocalProfiles()-1 do
local profile=PROFILEMAN:GetLocalProfileFromIndex(p);
local ProfileCard = Def.ActorFrame {
LoadFont("Common Normal") .. {
Text=profile:GetDisplayName();
InitCommand=function(self)
self:shadowlength(1);
self:y(-10);
self:zoom(1);
self:ztest(true);
end;
};
LoadFont("Common Normal") .. {
InitCommand=function(self)
self:shadowlength(1);
self:y(8);
self:zoom(0.5);
self:vertspacing(-8);
self:ztest(true);
end;
BeginCommand=function(self)
local numSongsPlayed = profile:GetNumTotalSongsPlayed();
local s = numSongsPlayed == 1 and "Song" or "Songs";
-- todo: localize
self:settext( numSongsPlayed.." "..s.." Played" );
end;
};
};
t[#t+1]=ProfileCard;
end;
return t;
end;
function LoadCard(cColor)
local t = Def.ActorFrame {
LoadActor( THEME:GetPathG("ScreenSelectProfile","CardBackground") ) .. {
InitCommand=function(self)
self:diffuse(cColor);
end;
};
LoadActor( THEME:GetPathG("ScreenSelectProfile","CardFrame") );
};
return t
end
function LoadPlayerStuff(Player)
local t = {};
local pn = (Player == PLAYER_1) and 1 or 2;
--[[ local t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 200, 230) .. {
Name = 'BigFrame';
}; --]]
t[#t+1] = Def.ActorFrame {
Name = 'JoinFrame';
LoadCard(Color('Orange'));
LoadFont("Common Normal") .. {
Text="Press &START; to join.";
InitCommand=function(self)
self:shadowlength(1);
end;
OnCommand=function(self)
self:diffuseshift();
self:effectcolor1(Color('White'));
self:effectcolor2(color("0.5,0.5,0.5"));
end;
};
};
t[#t+1] = Def.ActorFrame {
Name = 'BigFrame';
LoadCard(PlayerColor(Player));
};
t[#t+1] = Def.ActorFrame {
Name = 'SmallFrame';
InitCommand=function(self)
self:y(-2);
end;
Def.Quad {
InitCommand=function(self)
self:zoomto(200 - 10, 40 + 2);
end;
OnCommand=function(self)
self:diffuse(Color('Black'));
self:diffusealpha(0.5);
end;
};
Def.Quad {
InitCommand=function(self)
self:zoomto(200 - 10, 40);
end;
OnCommand=function(self)
self:diffuse(PlayerColor(Player));
self:fadeleft(0.25);
self:faderight(0.25);
self:glow(color("1,1,1,0.25"));
end;
};
Def.Quad {
InitCommand=function(self)
self:zoomto(200 - 10, 40);
self:y(-40 / 2 + 20);
end;
OnCommand=function(self)
self:diffuse(Color("Black"));
self:fadebottom(1);
self:diffusealpha(0.35);
end;
};
Def.Quad {
InitCommand=function(self)
self:zoomto(200 - 10, 1);
self:y(-40 / 2 + 1);
end;
OnCommand=function(self)
self:diffuse(PlayerColor(Player));
self:glow(color("1,1,1,0.25"));
end;
};
};
t[#t+1] = Def.ActorScroller{
Name = 'Scroller';
NumItemsToDraw=6;
OnCommand=function(self)
self:y(1);
self:SetFastCatchup(true);
self:SetMask(200, 58);
self:SetSecondsPerItem(0.15);
end;
TransformFunction=function(self, offset, itemIndex, numItems)
local focus = scale(math.abs(offset),0,2,1,0);
self:visible(false);
self:y(math.floor( offset*40 ));
end;
children = GetLocalProfiles();
};
t[#t+1] = Def.ActorFrame {
Name = "EffectFrame";
};
t[#t+1] = LoadFont("Common Normal") .. {
Name = 'SelectedProfileText';
InitCommand=function(self)
self:y(160);
self:shadowlength(1);
end;
};
return t;
end;
function UpdateInternal3(self, Player)
local pn = (Player == PLAYER_1) and 1 or 2;
local frame = self:GetChild(string.format('P%uFrame', pn));
local scroller = frame:GetChild('Scroller');
local seltext = frame:GetChild('SelectedProfileText');
local joinframe = frame:GetChild('JoinFrame');
local smallframe = frame:GetChild('SmallFrame');
local bigframe = frame:GetChild('BigFrame');
if GAMESTATE:IsHumanPlayer(Player) then
frame:visible(true);
if MEMCARDMAN:GetCardState(Player) == 'MemoryCardState_none' then
--using profile if any
joinframe:visible(false);
smallframe:visible(true);
bigframe:visible(true);
seltext:visible(true);
scroller:visible(true);
local ind = SCREENMAN:GetTopScreen():GetProfileIndex(Player);
if ind > 0 then
scroller:SetDestinationItem(ind-1);
seltext:settext(PROFILEMAN:GetLocalProfileFromIndex(ind-1):GetDisplayName());
else
if SCREENMAN:GetTopScreen():SetProfileIndex(Player, 1) then
scroller:SetDestinationItem(0);
self:queuecommand('UpdateInternal2');
else
joinframe:visible(true);
smallframe:visible(false);
bigframe:visible(false);
scroller:visible(false);
seltext:settext('No profile');
end;
end;
else
--using card
smallframe:visible(false);
scroller:visible(false);
seltext:settext('CARD');
SCREENMAN:GetTopScreen():SetProfileIndex(Player, 0);
end;
else
joinframe:visible(true);
scroller:visible(false);
seltext:visible(false);
smallframe:visible(false);
bigframe:visible(false);
end;
end;
local t = Def.ActorFrame {
StorageDevicesChangedMessageCommand=function(self, params)
self:queuecommand('UpdateInternal2');
end;
CodeMessageCommand = function(self, params)
if params.Name == 'Start' or params.Name == 'Center' then
MESSAGEMAN:Broadcast("StartButton");
if not GAMESTATE:IsHumanPlayer(params.PlayerNumber) then
SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, -1);
else
SCREENMAN:GetTopScreen():Finish();
end;
end;
if params.Name == 'Up' or params.Name == 'Up2' or params.Name == 'DownLeft' then
if GAMESTATE:IsHumanPlayer(params.PlayerNumber) then
local ind = SCREENMAN:GetTopScreen():GetProfileIndex(params.PlayerNumber);
if ind > 1 then
if SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, ind - 1 ) then
MESSAGEMAN:Broadcast("DirectionButton");
self:queuecommand('UpdateInternal2');
end;
end;
end;
end;
if params.Name == 'Down' or params.Name == 'Down2' or params.Name == 'DownRight' then
if GAMESTATE:IsHumanPlayer(params.PlayerNumber) then
local ind = SCREENMAN:GetTopScreen():GetProfileIndex(params.PlayerNumber);
if ind > 0 then
if SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, ind + 1 ) then
MESSAGEMAN:Broadcast("DirectionButton");
self:queuecommand('UpdateInternal2');
end;
end;
end;
end;
if params.Name == 'Back' then
if GAMESTATE:GetNumPlayersEnabled()==0 then
SCREENMAN:GetTopScreen():Cancel();
else
MESSAGEMAN:Broadcast("BackButton");
SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, -2);
end;
end;
end;
PlayerJoinedMessageCommand=function(self, params)
self:queuecommand('UpdateInternal2');
end;
PlayerUnjoinedMessageCommand=function(self, params)
self:queuecommand('UpdateInternal2');
end;
OnCommand=function(self, params)
self:queuecommand('UpdateInternal2');
end;
UpdateInternal2Command=function(self)
UpdateInternal3(self, PLAYER_1);
UpdateInternal3(self, PLAYER_2);
end;
children = {
Def.ActorFrame {
Name = 'P1Frame';
InitCommand=function(self)
self:x(SCREEN_CENTER_X - 160);
self:y(SCREEN_CENTER_Y);
end;
OnCommand=function(self)
self:zoom(0);
self:bounceend(0.35);
self:zoom(1);
end;
OffCommand=function(self)
self:bouncebegin(0.35);
self:zoom(0);
end;
PlayerJoinedMessageCommand=function(self,param)
if param.Player == PLAYER_1 then
self:zoom(1.15);
self:bounceend(0.175);
self:zoom(1.0);
end;
end;
children = LoadPlayerStuff(PLAYER_1);
};
Def.ActorFrame {
Name = 'P2Frame';
InitCommand=function(self)
self:x(SCREEN_CENTER_X + 160);
self:y(SCREEN_CENTER_Y);
end;
OnCommand=function(self)
self:zoom(0);
self:bounceend(0.35);
self:zoom(1);
end;
OffCommand=function(self)
self:bouncebegin(0.35);
self:zoom(0);
end;
PlayerJoinedMessageCommand=function(self,param)
if param.Player == PLAYER_2 then
self:zoom(1.15);
self:bounceend(0.175);
self:zoom(1.0);
end;
end;
children = LoadPlayerStuff(PLAYER_2);
};
-- sounds
LoadActor( THEME:GetPathS("Common","start") )..{
StartButtonMessageCommand=function(self)
self:play();
end;
};
LoadActor( THEME:GetPathS("Common","cancel") )..{
BackButtonMessageCommand=function(self)
self:play();
end;
};
LoadActor( THEME:GetPathS("Common","value") )..{
DirectionButtonMessageCommand=function(self)
self:play();
end;
};
};
};
return t;