2dcf66223d
Mainly unneeded semicolons
119 lines
3.9 KiB
Lua
119 lines
3.9 KiB
Lua
local pn = ...
|
|
|
|
local life_meter_width = 400
|
|
local life_meter_num_segments = 80
|
|
local life_meter_height = 20
|
|
local life_meter_tip_width = 2
|
|
local life_meter_tip_gap = 64
|
|
local life_meter_outline = 0
|
|
|
|
local color_normal = Color.Green
|
|
local color_hot = Color.Blue
|
|
local color_danger = Color.Red
|
|
local color_dead = Color.Outline
|
|
|
|
local pn_offset = (pn == PLAYER_1) and 0.5 or -0.5
|
|
local name_offset_x = -life_meter_width/2
|
|
|
|
local function getPlayersName(pn)
|
|
local s = PROFILEMAN:GetPlayerName(pn)
|
|
if s == "" then
|
|
return PlayerNumberToString(pn)
|
|
end
|
|
return s
|
|
end
|
|
|
|
local function MakeSeperators()
|
|
local function x_pos(i)
|
|
return (-life_meter_width/2) + (i/life_meter_num_segments)* life_meter_width
|
|
end
|
|
local a = Def.Quad {
|
|
InitCommand=cmd(zoomto,2,life_meter_height),
|
|
OnCommand=cmd(diffuse,Color.Black;diffusealpha,0.15)
|
|
}
|
|
local t = Def.ActorFrame {}
|
|
for i=1, life_meter_num_segments do
|
|
t[#t+1] = Def.ActorFrame { InitCommand=cmd(x,x_pos(i)); a }
|
|
end
|
|
return t
|
|
end
|
|
|
|
local t = Def.ActorFrame {}
|
|
|
|
local function updateFunc(self)
|
|
local c = self:GetChildren();
|
|
local beat = self:GetSecsIntoEffect() % 1
|
|
local _beat = self.life == 1.00 and 0 or beat
|
|
local _fillWidth = (life_meter_width * self.life - _beat * life_meter_tip_gap) / life_meter_width
|
|
local _clampedWidth = math.round(_fillWidth * life_meter_num_segments)
|
|
local _tipPosition = self.life
|
|
local _tipClamped = math.round( _tipPosition * life_meter_num_segments ) / life_meter_num_segments
|
|
c.Fill:zoomtowidth( math.max(0,(_clampedWidth/life_meter_num_segments) * life_meter_width) )
|
|
--c.Fill:zoomtowidth( (life_meter_width * self.life) - beat * life_meter_tip_gap)
|
|
c.Tip:x( (_tipClamped*life_meter_width) - life_meter_width/2)
|
|
end
|
|
|
|
t[#t+1] = Def.ActorFrame {
|
|
InitCommand=function(self)
|
|
self:SetUpdateFunction(updateFunc)
|
|
self.life = 0
|
|
end,
|
|
OnCommand=cmd(spin;effectclock,'beat';effectperiod,1;effectmagnitude,0,0,0),
|
|
HealthStateChangedMessageCommand=function(self,param)
|
|
local c = self:GetChildren()
|
|
|
|
if param.PlayerNumber == pn then
|
|
if param.HealthState ~= param.OldHealthState then
|
|
local state_name = ToEnumShortString(param.HealthState)
|
|
self:playcommand(state_name)
|
|
end
|
|
end
|
|
end,
|
|
LifeChangedMessageCommand=function(self,param)
|
|
local c = self:GetChildren()
|
|
if param.Player == pn then
|
|
self.life = param.LifeMeter:GetLife()
|
|
c.Fill:zoomtowidth( (life_meter_width) * self.life )
|
|
end
|
|
end,
|
|
-- Outline
|
|
Def.Quad {
|
|
Name="Outline",
|
|
InitCommand=cmd(zoomto,life_meter_width+life_meter_outline,life_meter_height+life_meter_outline),
|
|
OnCommand=cmd()
|
|
},
|
|
-- Background
|
|
Def.Quad {
|
|
Name="Background",
|
|
InitCommand=cmd(zoomto,life_meter_width,life_meter_height),
|
|
OnCommand=cmd(diffuse,color("#32373E")),
|
|
AliveCommand=cmd(stopeffect;diffuse,color("#32373E")),
|
|
DangerCommand=cmd(diffuseshift;effectcolor2,ColorMidTone(Color.Red);effectcolor1,ColorDarkTone(Color.Red)),
|
|
DeadCommand=cmd(stopeffect;diffuse,color("#000000")),
|
|
},
|
|
Def.Quad {
|
|
Name="Fill",
|
|
InitCommand=cmd(x,-life_meter_width/2;zoomto,life_meter_width,life_meter_height;horizalign,left),
|
|
OnCommand=cmd(diffuse,PlayerColor(pn)),
|
|
--
|
|
HotCommand=cmd(diffuse,color("#ff9232");diffuseshift;effectclock,'beat';effectcolor1,color("#ff9232");effectcolor2,color("#ffe263")),
|
|
AliveCommand=cmd(diffuse,PlayerColor(pn);stopeffect),
|
|
DangerCommand=cmd(diffuse,Color.Red;diffuseshift;effectclock,'beat';effectcolor1,Color.Red;effectcolor2,color("#FF797C")),
|
|
DeadCommand=cmd(diffuse,Color.Red;stopeffect)
|
|
},
|
|
MakeSeperators(),
|
|
Def.Quad {
|
|
Name="Tip",
|
|
InitCommand=cmd(basezoomx,life_meter_tip_width;basezoomy,life_meter_height),
|
|
--
|
|
OnCommand=cmd(diffuse,ColorLightTone(PlayerColor(pn))),
|
|
--
|
|
HotCommand=cmd(diffuse,color("#FFED31");glowshift;effectclock,'beat'),
|
|
AliveCommand=cmd(diffuse,ColorLightTone(PlayerColor(pn));stopeffect),
|
|
DangerCommand=cmd(diffuse,Color.Red;diffuseshift;effectclock,'beat';effectcolor1,color("#000000");effectcolor2,Color.Red),
|
|
DeadCommand=cmd(diffuse,Color.Red;stopeffect)
|
|
}
|
|
}
|
|
|
|
return t
|