132 lines
3.5 KiB
Lua
132 lines
3.5 KiB
Lua
-- ProductivityHelpers: A set of useful aliases for theming.
|
|
--[[ 3.9 Functions ]]
|
|
Game = {
|
|
GetStage = function()
|
|
|
|
end,
|
|
}
|
|
--[[ Aliases ]]
|
|
|
|
-- Blend Modes
|
|
-- Aliases for blend modes.
|
|
Blend = {
|
|
Normal = 'BlendMode_Normal',
|
|
Add = 'BlendMode_Add',
|
|
Subtract = 'BlendMode_Subtract',
|
|
Modulate = 'BlendMode_Modulate',
|
|
CopySource = 'BlendMode_CopySrc',
|
|
AlphaMask = 'BlendMode_AlphaMask',
|
|
AlphaKnockout = 'BlendMode_AlphaKnockout',
|
|
AlphaMultiply = 'BlendMode_AlphaMultiply',
|
|
Multiply = 'BlendMode_WeightedMultiply',
|
|
Invert = 'BlendMode_InvertDest',
|
|
NoEffect = 'BlendMode_NoEffect',
|
|
}
|
|
function StringToBlend(s) return Blend[s] or nil end
|
|
|
|
-- EffectMode
|
|
-- Aliases for EffectMode (aka shaders)
|
|
EffectMode = {
|
|
Normal = 'EffectMode_Normal',
|
|
Unpremultiply = 'EffectMode_Unpremultiply',
|
|
ColorBurn = 'EffectMode_ColorBurn',
|
|
ColorDodge = 'EffectMode_ColorDodge',
|
|
VividLight = 'EffectMode_VividLight',
|
|
HardMix = 'EffectMode_HardMix',
|
|
Overlay = 'EffectMode_Overlay',
|
|
Screen = 'EffectMode_Screen',
|
|
YUYV422 = 'EffectMode_YUYV422',
|
|
}
|
|
|
|
-- Health Declarations
|
|
-- Used primarily for lifebars.
|
|
Health = {
|
|
Max = 'HealthState_Hot',
|
|
Alive = 'HealthState_Alive',
|
|
Danger = 'HealthState_Danger',
|
|
Dead = 'HealthState_Dead'
|
|
}
|
|
|
|
-- Make graphics their true size at any resolution.
|
|
--[[
|
|
Note: for screens taller than wide (i.e. phones, sideways displays),
|
|
you'll need to get width rather than height (I just don't feel like
|
|
uglyfying my code just to handle rare cases). -shake
|
|
--]]
|
|
|
|
-- useful
|
|
function GetReal()
|
|
local theme = THEME:GetMetric("Common","ScreenHeight")
|
|
local res = PREFSMAN:GetPreference("DisplayHeight")
|
|
return theme/res
|
|
end
|
|
|
|
function GetRealInverse()
|
|
local theme = THEME:GetMetric("Common","ScreenHeight")
|
|
local res = PREFSMAN:GetPreference("DisplayHeight")
|
|
return res/theme
|
|
end
|
|
|
|
--[[ Actor commands ]]
|
|
|
|
function PositionPerPlayer(player, p1X, p2X)
|
|
return player == PLAYER_1 and p1X or p2X
|
|
end
|
|
|
|
--[[ ----------------------------------------------------------------------- ]]
|
|
|
|
--[[ profile stuff ]]
|
|
-- GetPlayerOrMachineProfile(pn)
|
|
-- This returns a profile, preferably a player one.
|
|
-- If there isn't one, we fall back on the machine profile.
|
|
function GetPlayerOrMachineProfile(pn)
|
|
if PROFILEMAN:IsPersistentProfile(pn) then
|
|
-- player profile
|
|
return PROFILEMAN:GetProfile(pn);
|
|
else
|
|
-- machine profile
|
|
return PROFILEMAN:GetMachineProfile();
|
|
end;
|
|
end;
|
|
--[[ end profile stuff]]
|
|
|
|
--[[ ----------------------------------------------------------------------- ]]
|
|
|
|
--[[ helper functions ]]
|
|
function tobool(v)
|
|
if getmetatable(v) and (getmetatable(v))["__tobool"] and type((getmetatable(v))["__tobool"])=="function" then
|
|
return (getmetatable(v))["__tobool"](v)
|
|
elseif type(v) == "string" then
|
|
local cmp = string.lower(v)
|
|
if cmp == "true" or cmp == "t" then
|
|
return true
|
|
elseif cmp == "false" or cmp == "f" then
|
|
return false
|
|
end
|
|
elseif type(v) == "number" then
|
|
if v == 0 then
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
|
|
function pname(pn) return ToEnumShortString(pn) end
|
|
|
|
function ThemeManager:GetAbsolutePath(sPath)
|
|
sFinPath = "/Themes/"..self:GetCurThemeName().."/"..sPath
|
|
assert(RageFileManager.DoesFileExist(sFinPath), "the theme element "..sPath.." is missing")
|
|
return sFinPath
|
|
end
|
|
|
|
function math.round(num, pre)
|
|
if pre and pre < 0 then pre = 0 end
|
|
local mult = 10^(pre or 0)
|
|
if num >= 0 then return math.floor(num*mult+.5)/mult
|
|
else return math.ceil(num*mult-.5)/mult end
|
|
end
|
|
|
|
--[[ end helper functions ]]
|
|
-- this code is in the public domain.
|