512 lines
15 KiB
Lua
512 lines
15 KiB
Lua
local t = Def.ActorFrame{}
|
|
|
|
local newBPS;
|
|
local oldBPS;
|
|
|
|
|
|
-- DECORATIONS ////////////////////////
|
|
|
|
-- Left Hex Corner Decoration
|
|
t[#t+1] = LoadActor("decoration_corner") .. {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1));
|
|
OnCommand=cmd(horizalign,left;x,SCREEN_LEFT;vertalign,top;y,SCREEN_TOP;zoomy,0.4;zoomx,0.6;diffusealpha,0.3;blend,Blend.Add);
|
|
};
|
|
|
|
-- Right Hex Corner Decoration
|
|
t[#t+1] = LoadActor("decoration_corner") .. {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2));
|
|
OnCommand=cmd(horizalign,left;x,SCREEN_RIGHT;vertalign,top;y,SCREEN_TOP;zoomy,0.4;;zoomx,-0.6;diffusealpha,0.3;blend,Blend.Add);
|
|
};
|
|
|
|
|
|
-- WAVY LINE (thanks AJ) ////////////////////////
|
|
|
|
|
|
--P1
|
|
t[#t+1] = LoadActor("hot_lores") .. {
|
|
OnCommand=cmd(diffusealpha,0;visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;texcoordvelocity,0.1,0;queuecommand,"Begin");
|
|
BeginCommand=function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(false);
|
|
else
|
|
local move = GAMESTATE:GetSongBPS()/2
|
|
if GAMESTATE:GetSongFreeze() then
|
|
move = 0;
|
|
end
|
|
self:texcoordvelocity(move,0);
|
|
self:sleep(0.001);
|
|
self:queuecommand("Begin");
|
|
end;
|
|
end;
|
|
LifeChangedMessageCommand=function(self,params)
|
|
if params.Player == PLAYER_1 then
|
|
local lifeP1=params.LifeMeter:GetLife();
|
|
if lifeP1>=THEME:GetMetric("LifeMeterBar", "HotValue") then
|
|
self:diffusealpha(0.5);
|
|
else
|
|
self:diffusealpha(0);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
--P2
|
|
t[#t+1] = LoadActor("hot_lores") .. {
|
|
OnCommand=cmd(diffusealpha,0;visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,left;x,SCREEN_RIGHT-18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,(SCREEN_WIDTH/2-26)*-1;texcoordvelocity,0.1,0;queuecommand,"Begin");
|
|
BeginCommand=function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(false);
|
|
else
|
|
local move = GAMESTATE:GetSongBPS()/2
|
|
if GAMESTATE:GetSongFreeze() then
|
|
move = 0;
|
|
end
|
|
self:texcoordvelocity(move,0);
|
|
self:sleep(0.001);
|
|
self:queuecommand("Begin");
|
|
end;
|
|
end;
|
|
LifeChangedMessageCommand=function(self,params)
|
|
if params.Player == PLAYER_2 then
|
|
local lifeP2=params.LifeMeter:GetLife();
|
|
if lifeP2>=THEME:GetMetric("LifeMeterBar", "HotValue") then
|
|
self:diffusealpha(0.5);
|
|
else
|
|
self:diffusealpha(0);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
--Double
|
|
--customtexturerect,0,0,[PixelsToCoverWidth]/[ImageWidth],[PixelsToCoverHeight]/[ImageHeight]
|
|
--I said that I was gonna write it down. thx midi
|
|
|
|
t[#t+1] = LoadActor("hot_lores") .. {
|
|
OnCommand=cmd(diffusealpha,0;horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH-36;texcoordvelocity,0.1,0;customtexturerect,0,0,600/(SCREEN_WIDTH-36),1;queuecommand,"Begin");
|
|
BeginCommand=function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
local move = GAMESTATE:GetSongBPS()/2
|
|
if GAMESTATE:GetSongFreeze() then
|
|
move = 0;
|
|
end
|
|
self:texcoordvelocity(move,0);
|
|
self:sleep(0.001);
|
|
self:queuecommand("Begin");
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
LifeChangedMessageCommand=function(self,params)
|
|
local life=params.LifeMeter:GetLife();
|
|
if life>=THEME:GetMetric("LifeMeterBar", "HotValue") then
|
|
self:diffusealpha(0.5);
|
|
else
|
|
self:diffusealpha(0);
|
|
end;
|
|
end;
|
|
};
|
|
|
|
|
|
-- DANGER ////////////////////////
|
|
|
|
|
|
--DANGER P1 single
|
|
t[#t+1] = LoadActor("danger") .. {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;zoomy,0.5);
|
|
OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On");
|
|
LifeChangedMessageCommand=function(self,params)
|
|
if params.Player == PLAYER_1 then
|
|
local lifeP1 = params.LifeMeter:GetLife();
|
|
if lifeP1 <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(false);
|
|
else
|
|
self:visible(true);
|
|
end;
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
};
|
|
|
|
--DANGER P2 single
|
|
t[#t+1] = LoadActor("danger") .. {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,right;x,SCREEN_RIGHT-18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;zoomy,0.5);
|
|
OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On");
|
|
LifeChangedMessageCommand=function(self,params)
|
|
if params.Player == PLAYER_2 then
|
|
local lifeP2 = params.LifeMeter:GetLife();
|
|
if lifeP2 <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(false);
|
|
else
|
|
self:visible(true);
|
|
end;
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
--DANGER double
|
|
t[#t+1] = LoadActor("danger") .. {
|
|
InitCommand=cmd(visible,false;horizalign,center;x,SCREEN_CENTER_X;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH-36;zoomy,0.5);
|
|
OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On");
|
|
LifeChangedMessageCommand=function(self,params)
|
|
local life = params.LifeMeter:GetLife();
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
if life <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then
|
|
self:visible(true);
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
|
|
|
|
-- METERS ////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
---basemeter masked P1
|
|
t[#t+1] = LoadActor("basemeter") .. {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;valign,0.5;y,SCREEN_TOP+41;zoomy,0.5;blend,Blend.Add);
|
|
OnCommand=cmd(bounce;effectmagnitude,-40,0,0;effectclock,"bgm";effecttiming,2,0,0,0;);
|
|
LifeChangedMessageCommand=function(self,params)
|
|
if params.Player == PLAYER_1 then
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
local lifeP1 = params.LifeMeter:GetLife();
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_1)==true then
|
|
if lifeP1==0 then
|
|
self:visible(false);
|
|
else
|
|
|
|
if lifeP1==1 then
|
|
self:effectmagnitude(0,0,0);
|
|
else
|
|
self:effectmagnitude(-40,0,0);
|
|
end;
|
|
|
|
self:visible(true);
|
|
end
|
|
end
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:zoomtowidth((SCREEN_WIDTH-40)*lifeP1+5);
|
|
else
|
|
self:zoomtowidth((SCREEN_WIDTH/2-26)*lifeP1);
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---basemeter masked P2
|
|
t[#t+1] = LoadActor("basemeter") .. {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,right;x,SCREEN_RIGHT+18;valign,0.5;y,SCREEN_TOP+41;zoomy,0.5;blend,Blend.Add;queuecommand,"Set");
|
|
OnCommand=cmd(bob;effectmagnitude,40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;);
|
|
SetCommand=function(self,params)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:effectmagnitude(-40,0,0);
|
|
self:horizalign(left);
|
|
self:x(SCREEN_LEFT+18);
|
|
end;
|
|
end;
|
|
|
|
LifeChangedMessageCommand=function(self,params)
|
|
if params.Player == PLAYER_2 then
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
local lifeP2 = params.LifeMeter:GetLife();
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_2)==true then
|
|
if lifeP2==0 then
|
|
self:visible(false);
|
|
else
|
|
|
|
if lifeP2==1 then
|
|
self:effectmagnitude(0,0,0);
|
|
else
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:effectmagnitude(-40,0,0);
|
|
else
|
|
self:effectmagnitude(40,0,0);
|
|
end
|
|
end;
|
|
|
|
self:visible(true);
|
|
end
|
|
end
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:zoomtowidth((SCREEN_WIDTH-40)*lifeP2);
|
|
else
|
|
self:zoomtowidth(((SCREEN_WIDTH/2-26)*lifeP2)+40);
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
-- FRAMES & TIPS ////////////////////////
|
|
|
|
|
|
-- Left Corner
|
|
t[#t+1] = LoadActor("mask") .. {
|
|
OnCommand=cmd(horizalign,right;x,SCREEN_LEFT+130;vertalign,top;y,SCREEN_TOP+12;zoom,0.45;queuecommand,"Set");
|
|
SetCommand = function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(true);
|
|
else
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then
|
|
self:visible(true);
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
-- Right Corner
|
|
t[#t+1] = LoadActor("mask") .. {
|
|
OnCommand=cmd(horizalign,right;x,SCREEN_RIGHT-130;vertalign,top;y,SCREEN_TOP+12;zoomx,-0.45;zoomy,0.45;queuecommand,"Set");
|
|
SetCommand = function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(true);
|
|
else
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
|
|
self:visible(true);
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
|
|
-- Left Corner
|
|
t[#t+1] = LoadActor("corner") .. {
|
|
OnCommand=cmd(horizalign,left;x,SCREEN_LEFT+15;vertalign,top;y,SCREEN_TOP+16;zoom,0.75;queuecommand,"Set");
|
|
SetCommand = function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(true);
|
|
else
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then
|
|
self:visible(true);
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
-- Right Corner
|
|
t[#t+1] = LoadActor("corner") .. {
|
|
OnCommand=cmd(horizalign,left;x,SCREEN_RIGHT-15;vertalign,top;y,SCREEN_TOP+16;zoomx,-0.75;zoomy,0.75;queuecommand,"Set");
|
|
SetCommand = function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(true);
|
|
else
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
|
|
self:visible(true);
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
-- Center Corner Left
|
|
t[#t+1] = LoadActor("center") .. {
|
|
OnCommand=cmd(horizalign,left;x,SCREEN_CENTER_X+5;vertalign,top;y,SCREEN_TOP+16;zoomx,-0.75;zoomy,0.75;queuecommand,"Set");
|
|
SetCommand = function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(false);
|
|
else
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then
|
|
self:visible(true);
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
-- Center Corner Right
|
|
t[#t+1] = LoadActor("center") .. {
|
|
OnCommand=cmd(horizalign,left;x,SCREEN_CENTER_X-5;vertalign,top;y,SCREEN_TOP+16;zoom,0.75;queuecommand,"Set");
|
|
SetCommand = function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(false);
|
|
else
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
|
|
self:visible(true);
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
-- Center part 1
|
|
t[#t+1] = LoadActor("frame") .. {
|
|
OnCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+52.5;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-85;zoomy,0.75;queuecommand,"Set";);
|
|
SetCommand = function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:zoomtowidth(SCREEN_WIDTH-105);
|
|
self:visible(true)
|
|
else
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_1) == false then
|
|
self:visible(false)
|
|
else
|
|
self:visible(true)
|
|
end
|
|
end;
|
|
end;
|
|
};
|
|
|
|
-- Center part 2
|
|
t[#t+1] = LoadActor("frame") .. {
|
|
OnCommand=cmd(horizalign,right;x,SCREEN_RIGHT-52.5;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-85;zoomy,0.75;queuecommand,"Set";);
|
|
SetCommand = function(self)
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:visible(false)
|
|
else
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
|
|
self:visible(true)
|
|
else
|
|
self:visible(false)
|
|
end;
|
|
end;
|
|
end;
|
|
};
|
|
|
|
|
|
|
|
---tip P1
|
|
t[#t+1] = LoadActor("tip") .. {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);valign,0.5;y,SCREEN_TOP+41;zoom,0.5;blend,Blend.Add;queuecommand,"Set");
|
|
--OnCommand=cmd(bob;effectmagnitude,-40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;);
|
|
LifeChangedMessageCommand=function(self,params)
|
|
if params.Player == PLAYER_1 then
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
local lifeP1 = params.LifeMeter:GetLife();
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_1)==true then
|
|
if lifeP1==0 then
|
|
self:visible(false);
|
|
else
|
|
self:visible(true);
|
|
end
|
|
end
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:x((SCREEN_WIDTH-40)*lifeP1+20);
|
|
else
|
|
self:x((SCREEN_WIDTH/2-26)*lifeP1+20);
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
};
|
|
|
|
|
|
|
|
---tip P2
|
|
t[#t+1] = LoadActor("tip") .. {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);valign,0.5;y,SCREEN_TOP+41;zoom,0.5;blend,Blend.Add;);
|
|
--OnCommand=cmd(bob;effectmagnitude,40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;);
|
|
LifeChangedMessageCommand=function(self,params)
|
|
if params.Player == PLAYER_2 then
|
|
local style = GAMESTATE:GetCurrentStyle();
|
|
local lifeP2 = params.LifeMeter:GetLife();
|
|
local fullstate;
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_2)==true then
|
|
if lifeP2==0 then
|
|
self:visible(false);
|
|
else
|
|
self:visible(true);
|
|
end
|
|
end
|
|
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
|
|
self:x((SCREEN_WIDTH-40)*lifeP2+20);
|
|
else
|
|
self:x(SCREEN_RIGHT-((SCREEN_WIDTH/2-26)*lifeP2)-20);
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
};
|
|
|
|
-- NAMES ////////////////////////
|
|
|
|
--P1 NAME
|
|
t[#t+1] = LoadFont("Common Normal") .. {
|
|
InitCommand=cmd(horizalign,left;x,SCREEN_LEFT+30;y,SCREEN_TOP+15;zoom,0.4;shadowlength,1;uppercase,true);
|
|
BeginCommand=function(self)
|
|
local profile = PROFILEMAN:GetProfile(PLAYER_1);
|
|
local name = profile:GetDisplayName();
|
|
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then
|
|
if name=="" then
|
|
self:settext("Player 1");
|
|
else
|
|
self:settext( name );
|
|
end
|
|
end
|
|
|
|
end;
|
|
|
|
};
|
|
|
|
--P2 NAME
|
|
t[#t+1] = LoadFont("Common Normal") .. {
|
|
InitCommand=cmd(horizalign,right;x,SCREEN_RIGHT-30;y,SCREEN_TOP+15;zoom,0.4;shadowlength,1;uppercase,true);
|
|
BeginCommand=function(self)
|
|
local profile = PROFILEMAN:GetProfile(PLAYER_2);
|
|
local name = profile:GetDisplayName();
|
|
|
|
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
|
|
if name=="" then
|
|
self:settext("Player 2");
|
|
else
|
|
self:settext( name );
|
|
end
|
|
end
|
|
end;
|
|
|
|
};
|
|
|
|
|
|
|
|
return t |