-- from scratch, with various references. local Noteskin = ... or {}; -- element redirs Noteskin.ElementRedirs = { -- ["element"] = "redir_element"; }; -- button redirs (since this is a bar noteskin, it's all the same) Noteskin.ButtonRedirs = { -- dance Left = "Bar"; UpLeft = "Bar"; Up = "Bar"; Down = "Bar"; UpRight = "Bar"; Right = "Bar"; -- kb7 Key1 = "Bar"; Key2 = "Bar"; Key3 = "Bar"; Key4 = "Bar"; Key5 = "Bar"; Key6 = "Bar"; Key7 = "Bar"; -- pump DownLeft = "Bar"; DownRight = "Bar"; Center = "Bar"; }; -- things to blank out Noteskin.Hide = { -- ["element"] = true/false; }; -- rotations Noteskin.BaseRotX = { Left = 0; UpLeft = 0; Up = 0; Down = 0; UpRight = 0; Right = 0; }; Noteskin.BaseRotY = { Left = 0; UpLeft = 0; Up = 0; Down = 0; UpRight = 0; Right = 0; }; local function NoteskinLoader() local Button = Var "Button" local Element = Var "Element" if Noteskin.Hide[Element] then -- Return a blank element. If SpriteOnly is set, we need to return a -- sprite; otherwise just return a dummy actor. local t; if Var "SpriteOnly" then t = LoadActor( "_blank" ); else t = Def.Actor {}; end return t .. { cmd(visible,false); }; end; -- load element and button, using redirs local LoadElement = Noteskin.ElementRedirs[Element] if not LoadElement then LoadElement = Element; end; local LoadButton = Noteskin.ButtonRedirs[Button] if not LoadButton then LoadButton = Button; end; -- get path to thing local sPath = NOTESKIN:GetPath( LoadButton, LoadElement ); -- make actor local t = LoadActor( sPath ); -- apply rotation t.BaseRotationX=Noteskin.BaseRotX[sButton] t.BaseRotationY=Noteskin.BaseRotY[sButton] return t; end Noteskin.Load = NoteskinLoader; Noteskin.CommonLoad = NoteskinLoader; return Noteskin;