diff --git a/Themes/dimension-tripper/Graphics/Common corner (doubleres).png b/Themes/dimension-tripper/Graphics/Common corner (doubleres).png new file mode 100644 index 0000000000..32e0be6609 Binary files /dev/null and b/Themes/dimension-tripper/Graphics/Common corner (doubleres).png differ diff --git a/Themes/dimension-tripper/Graphics/MusicWheelItem Song NormalPart.lua b/Themes/dimension-tripper/Graphics/MusicWheelItem Song NormalPart.lua index 81e31e6678..e5d65aed79 100644 --- a/Themes/dimension-tripper/Graphics/MusicWheelItem Song NormalPart.lua +++ b/Themes/dimension-tripper/Graphics/MusicWheelItem Song NormalPart.lua @@ -150,4 +150,10 @@ t[#t].SetMessageCommand = function(self, params) end end +t[#t+1] = Def.Quad {} +t[#t].InitCommand = cmd(MaskSource,true;setsize,width+1,height+1) + +t[#t+1] = Theme.RoundboxInverse(width+6,height,color("0.85,0.85,0.85,1")) +t[#t].InitCommand = cmd(runcommandsonleaves,cmd(ztestmode,'ZTestMode_WriteOnFail';blend,Blend.InvertDest)) + return t diff --git a/Themes/dimension-tripper/Scripts/theme.lua b/Themes/dimension-tripper/Scripts/theme.lua index 122f04c0d1..a47af478b0 100644 --- a/Themes/dimension-tripper/Scripts/theme.lua +++ b/Themes/dimension-tripper/Scripts/theme.lua @@ -92,3 +92,87 @@ Theme.MusicWheelAfterSet=function(self, params) Artist:y(10) end end + + +-- super useful for making code less redundant! +Theme.Roundbox = function(Width, Height, Color) + -- code adapted from shakesoda's optical + assert(Width) + assert(Height) + local corner = THEME:GetPathG("Common","corner") -- graphic file + local DefaultColor = color("0,0,0,0.75") -- black box omg magic + + -- Color is optional. + if not Color then Color = DefaultColor end + + --[[ + How it's drawn: + c----c + OOOOOO + c----c + + ---- is 8px tall and Width-8 wide. y = (Height/2), flip the bit. + OOOO is Height-8px tall and Width wide. + c's x position is Width - 4, flip the bit if needed. + --]] + local EdgeWidth = Width-8 + local EdgePosY = (Height/2) + local CornerPosX = ((Width/2)-4) + + return Def.ActorFrame { + BeginCommand=cmd(runcommandsonleaves,cmd(diffuse,Color)), + -- top + Def.Quad { InitCommand=cmd(zoomto,EdgeWidth-8,8;y,-EdgePosY) }, + -- middle + Def.Quad { InitCommand=cmd(zoomto,Width,Height-8) }, + -- bottom + Def.Quad { InitCommand=cmd(zoomto,EdgeWidth-8,8;y,EdgePosY) }, + -- top left + LoadActor(corner)..{ InitCommand=cmd(x,-CornerPosX;y,-EdgePosY) }, + -- top right + LoadActor(corner)..{ InitCommand=cmd(x,CornerPosX;y,-EdgePosY;rotationz,90) }, + -- bottom left + LoadActor(corner)..{ InitCommand=cmd(x,-CornerPosX;y,EdgePosY;rotationz,-90) }, + -- bottom right + LoadActor(corner)..{ InitCommand=cmd(x,CornerPosX;y,EdgePosY;rotationz,180) } + } +end + + +-- super useful for making code less redundant! +Theme.RoundboxInverse = function(Width, Height, Color) + -- code adapted from shakesoda's optical + assert(Width) + assert(Height) + local corner = THEME:GetPathG("Common","corner") -- graphic file + local DefaultColor = color("0,0,0,0.75") -- black box omg magic + + -- Color is optional. + if not Color then Color = DefaultColor end + + --[[ + How it's drawn: + c----c + OOOOOO + c----c + + ---- is 8px tall and Width-8 wide. y = (Height/2), flip the bit. + OOOO is Height-8px tall and Width wide. + c's x position is Width - 4, flip the bit if needed. + --]] + local EdgeWidth = Width-8 + local EdgePosY = (Height/2) + local CornerPosX = ((Width/2)-4) + + return Def.ActorFrame { + BeginCommand=cmd(runcommandsonleaves,cmd(diffuse,Color)), + -- top left + LoadActor(corner)..{ InitCommand=cmd(x,-CornerPosX;y,-EdgePosY;rotationz,180) }, + -- top right + LoadActor(corner)..{ InitCommand=cmd(x,CornerPosX;y,-EdgePosY;rotationz,270) }, + -- bottom left + LoadActor(corner)..{ InitCommand=cmd(x,-CornerPosX;y,EdgePosY;rotationz,-270) }, + -- bottom right + LoadActor(corner)..{ InitCommand=cmd(x,CornerPosX;y,EdgePosY;rotationz,0) } + } +end