add a SegmentDisplay that displays if certain things appear in the song timing (stops, delays, warps, fake segments, scroll segments, speed segments) and chart attacks
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
-- segment display: tells the player about various gimmicks used in the song timing.
|
||||
local iconPath = "_timingicons"
|
||||
local leftColX = -144
|
||||
local rightColX = -leftColX
|
||||
|
||||
local showCmd = cmd(stoptweening;accelerate,0.125;diffusealpha,1)
|
||||
local hideCmd = cmd(stoptweening;accelerate,0.125;diffusealpha,0)
|
||||
|
||||
local SegmentTypes = {
|
||||
Stops = { Frame = 0, xPos = leftColX, yPos = 0 },
|
||||
Warps = { Frame = 2, xPos = leftColX, yPos = -16 },
|
||||
Delays = { Frame = 1, xPos = leftColX, yPos = -32 },
|
||||
Attacks = { Frame = 6, xPos = leftColX, yPos = 16 },
|
||||
Scrolls = { Frame = 3, xPos = rightColX, yPos = -32 },
|
||||
Speeds = { Frame = 4, xPos = rightColX, yPos = -17 },
|
||||
Fakes = { Frame = 5, xPos = rightColX, yPos = -2 },
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame{
|
||||
BeginCommand=cmd(playcommand,"SetIcons";playcommand,"SetAttacksIconMessage");
|
||||
OffCommand=cmd( RunCommandsOnChildren,cmd(playcommand,"Hide") );
|
||||
|
||||
SetIconsCommand=function(self)
|
||||
local stops = self:GetChild("StopsIcon")
|
||||
local delays = self:GetChild("DelaysIcon")
|
||||
local warps = self:GetChild("WarpsIcon")
|
||||
local scrolls = self:GetChild("ScrollsIcon")
|
||||
local speeds = self:GetChild("SpeedsIcon")
|
||||
local fakes = self:GetChild("FakesIcon")
|
||||
|
||||
-- hax
|
||||
MESSAGEMAN:Broadcast("SetAttacksIcon",{Player = GAMESTATE:GetMasterPlayerNumber()})
|
||||
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
if song then
|
||||
local timing = song:GetTimingData()
|
||||
|
||||
if timing:HasWarps() then warps:playcommand("Show")
|
||||
else warps:playcommand("Hide")
|
||||
end
|
||||
|
||||
if timing:HasStops() then stops:playcommand("Show")
|
||||
else stops:playcommand("Hide")
|
||||
end
|
||||
|
||||
if timing:HasDelays() then delays:playcommand("Show")
|
||||
else delays:playcommand("Hide")
|
||||
end
|
||||
|
||||
if timing:HasScrollChanges() then scrolls:playcommand("Show")
|
||||
else scrolls:playcommand("Hide")
|
||||
end
|
||||
|
||||
if timing:HasSpeedChanges() then speeds:playcommand("Show")
|
||||
else speeds:playcommand("Hide")
|
||||
end
|
||||
|
||||
if timing:HasFakes() then fakes:playcommand("Show")
|
||||
else fakes:playcommand("Hide")
|
||||
end
|
||||
else
|
||||
warps:playcommand("Hide")
|
||||
stops:playcommand("Hide")
|
||||
delays:playcommand("Hide")
|
||||
scrolls:playcommand("Hide")
|
||||
speeds:playcommand("Hide")
|
||||
fakes:playcommand("Hide")
|
||||
end
|
||||
end;
|
||||
SetAttacksIconMessageCommand=function(self,param)
|
||||
local attacks = self:GetChild("AttacksIcon")
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
if song then
|
||||
local steps = GAMESTATE:GetCurrentSteps(param.Player)
|
||||
if steps then
|
||||
local hasAttacks = steps:HasAttacks()
|
||||
attacks:playcommand(hasAttacks and "Show" or "Hide")
|
||||
else
|
||||
attacks:playcommand("Hide")
|
||||
end
|
||||
else
|
||||
attacks:playcommand("Hide")
|
||||
end
|
||||
end;
|
||||
|
||||
LoadActor(iconPath)..{
|
||||
Name="WarpsIcon";
|
||||
InitCommand=cmd(animate,false;x,SegmentTypes.Warps.xPos;y,SegmentTypes.Warps.yPos;setstate,SegmentTypes.Warps.Frame;diffusealpha,0);
|
||||
ShowCommand=showCmd;
|
||||
HideCommand=hideCmd;
|
||||
};
|
||||
LoadActor(iconPath)..{
|
||||
Name="StopsIcon";
|
||||
InitCommand=cmd(animate,false;x,SegmentTypes.Stops.xPos;y,SegmentTypes.Stops.yPos;setstate,SegmentTypes.Stops.Frame;diffusealpha,0);
|
||||
ShowCommand=showCmd;
|
||||
HideCommand=hideCmd;
|
||||
};
|
||||
LoadActor(iconPath)..{
|
||||
Name="DelaysIcon";
|
||||
InitCommand=cmd(animate,false;x,SegmentTypes.Delays.xPos;y,SegmentTypes.Delays.yPos;setstate,SegmentTypes.Delays.Frame;diffusealpha,0);
|
||||
ShowCommand=showCmd;
|
||||
HideCommand=hideCmd;
|
||||
};
|
||||
LoadActor(iconPath)..{
|
||||
Name="AttacksIcon";
|
||||
InitCommand=cmd(animate,false;x,SegmentTypes.Attacks.xPos;y,SegmentTypes.Attacks.yPos;setstate,SegmentTypes.Attacks.Frame;diffusealpha,0);
|
||||
ShowCommand=showCmd;
|
||||
HideCommand=hideCmd;
|
||||
};
|
||||
LoadActor(iconPath)..{
|
||||
Name="ScrollsIcon";
|
||||
InitCommand=cmd(animate,false;x,SegmentTypes.Scrolls.xPos;y,SegmentTypes.Scrolls.yPos;setstate,SegmentTypes.Scrolls.Frame;diffusealpha,0);
|
||||
ShowCommand=showCmd;
|
||||
HideCommand=hideCmd;
|
||||
};
|
||||
LoadActor(iconPath)..{
|
||||
Name="SpeedsIcon";
|
||||
InitCommand=cmd(animate,false;x,SegmentTypes.Speeds.xPos;y,SegmentTypes.Speeds.yPos;setstate,SegmentTypes.Speeds.Frame;diffusealpha,0);
|
||||
ShowCommand=showCmd;
|
||||
HideCommand=hideCmd;
|
||||
};
|
||||
LoadActor(iconPath)..{
|
||||
Name="FakesIcon";
|
||||
InitCommand=cmd(animate,false;x,SegmentTypes.Fakes.xPos;y,SegmentTypes.Fakes.yPos;setstate,SegmentTypes.Fakes.Frame;diffusealpha,0);
|
||||
ShowCommand=showCmd;
|
||||
HideCommand=hideCmd;
|
||||
};
|
||||
CurrentSongChangedMessageCommand=cmd(playcommand,"SetIcons";);
|
||||
CurrentStepsP1ChangedMessageCommand=function(self) MESSAGEMAN:Broadcast("SetAttacksIcon",{Player = PLAYER_1}) end;
|
||||
CurrentStepsP2ChangedMessageCommand=function(self) MESSAGEMAN:Broadcast("SetAttacksIcon",{Player = PLAYER_2}) end;
|
||||
};
|
||||
|
||||
return t;
|
||||
Reference in New Issue
Block a user