From a7c80acf37e7ae888000c8436da207e1e432758d Mon Sep 17 00:00:00 2001 From: Barinade Date: Fri, 20 Dec 2019 23:29:34 -0600 Subject: [PATCH] Fix Noteskin Preview failing on non-dance Games --- .../ScreenPlayerOptions overlay.lua | 67 +++++++----------- .../ScreenPlayerOptions overlay.lua | 68 +++++++------------ .../_fallback/Scripts/09 SimNSkinPreview.lua | 24 +++++++ 3 files changed, 75 insertions(+), 84 deletions(-) diff --git a/Themes/Til Death/BGAnimations/ScreenPlayerOptions overlay.lua b/Themes/Til Death/BGAnimations/ScreenPlayerOptions overlay.lua index 0ba840b824..b05d5d9121 100644 --- a/Themes/Til Death/BGAnimations/ScreenPlayerOptions overlay.lua +++ b/Themes/Til Death/BGAnimations/ScreenPlayerOptions overlay.lua @@ -170,8 +170,9 @@ local NSPreviewXSpan = 35 local NSPreviewReceptorY = -30 local OptionRowHeight = 35 local NoteskinRow = 0 +local NSDirTable = GameToNSkinElements() -function NSkinPreviewWrapper(dir, ele) +local function NSkinPreviewWrapper(dir, ele) return Def.ActorFrame { InitCommand = function(self) self:zoom(NSPreviewSize) @@ -179,6 +180,26 @@ function NSkinPreviewWrapper(dir, ele) LoadNSkinPreview("Get", dir, ele, PLAYER_1) } end +local function NSkinPreviewExtraTaps() + local out = Def.ActorFrame {} + for i = 2, #NSDirTable do + out[#out+1] = Def.ActorFrame { + Def.ActorFrame { + InitCommand = function(self) + self:x(NSPreviewXSpan * (i-1)) + end, + NSkinPreviewWrapper(NSDirTable[i], "Tap Note") + }, + Def.ActorFrame { + InitCommand = function(self) + self:x(NSPreviewXSpan * (i-1)):y(NSPreviewReceptorY) + end, + NSkinPreviewWrapper(NSDirTable[i], "Receptor") + } + } + end + return out +end t[#t + 1] = Def.ActorFrame { OnCommand = function(self) @@ -205,54 +226,16 @@ t[#t + 1] = ) end, Def.ActorFrame { - NSkinPreviewWrapper("Left", "Tap Note") + NSkinPreviewWrapper(NSDirTable[1], "Tap Note") }, Def.ActorFrame { InitCommand = function(self) self:y(NSPreviewReceptorY) end, - NSkinPreviewWrapper("Left", "Receptor") + NSkinPreviewWrapper(NSDirTable[1], "Receptor") } } if GetScreenAspectRatio() > 1.7 then - t[#t][#(t[#t]) + 1] = - Def.ActorFrame { - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 1) - end, - NSkinPreviewWrapper("Down", "Tap Note") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 1):y(NSPreviewReceptorY) - end, - NSkinPreviewWrapper("Down", "Receptor") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 2) - end, - NSkinPreviewWrapper("Up", "Tap Note") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 2):y(NSPreviewReceptorY) - end, - NSkinPreviewWrapper("Up", "Receptor") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 3) - end, - NSkinPreviewWrapper("Right", "Tap Note") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 3):y(NSPreviewReceptorY) - end, - NSkinPreviewWrapper("Right", "Receptor") - } - } + t[#t][#(t[#t]) + 1] = NSkinPreviewExtraTaps() end return t diff --git a/Themes/_fallback/BGAnimations/ScreenPlayerOptions overlay.lua b/Themes/_fallback/BGAnimations/ScreenPlayerOptions overlay.lua index 3a3069240f..c45dfb8bdf 100644 --- a/Themes/_fallback/BGAnimations/ScreenPlayerOptions overlay.lua +++ b/Themes/_fallback/BGAnimations/ScreenPlayerOptions overlay.lua @@ -7,8 +7,9 @@ local NSPreviewXSpan = 35 local NSPreviewReceptorY = -30 local OptionRowHeight = 35 local NoteskinRow = 0 +local NSDirTable = GameToNSkinElements() -function NSkinPreviewWrapper(dir, ele) +local function NSkinPreviewWrapper(dir, ele) return Def.ActorFrame { InitCommand = function(self) self:zoom(NSPreviewSize) @@ -16,6 +17,27 @@ function NSkinPreviewWrapper(dir, ele) LoadNSkinPreview("Get", dir, ele, PLAYER_1) } end +local function NSkinPreviewExtraTaps() + local out = Def.ActorFrame {} + for i = 2, #NSDirTable do + out[#out+1] = Def.ActorFrame { + Def.ActorFrame { + InitCommand = function(self) + self:x(NSPreviewXSpan * (i-1)) + end, + NSkinPreviewWrapper(NSDirTable[i], "Tap Note") + }, + Def.ActorFrame { + InitCommand = function(self) + self:x(NSPreviewXSpan * (i-1)):y(NSPreviewReceptorY) + end, + NSkinPreviewWrapper(NSDirTable[i], "Receptor") + } + } + end + return out +end + t[#t + 1] = Def.ActorFrame { OnCommand = function(self) @@ -42,54 +64,16 @@ t[#t + 1] = ) end, Def.ActorFrame { - NSkinPreviewWrapper("Down", "Tap Note") + NSkinPreviewWrapper(NSDirTable[1], "Tap Note") }, Def.ActorFrame { InitCommand = function(self) self:y(NSPreviewReceptorY) end, - NSkinPreviewWrapper("Down", "Receptor") + NSkinPreviewWrapper(NSDirTable[1], "Receptor") } } if GetScreenAspectRatio() > 1.7 then - t[#t][#(t[#t]) + 1] = - Def.ActorFrame { - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 1) - end, - NSkinPreviewWrapper("Left", "Tap Note") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 1):y(NSPreviewReceptorY) - end, - NSkinPreviewWrapper("Left", "Receptor") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 2) - end, - NSkinPreviewWrapper("Up", "Tap Note") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 2):y(NSPreviewReceptorY) - end, - NSkinPreviewWrapper("Up", "Receptor") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 3) - end, - NSkinPreviewWrapper("Right", "Tap Note") - }, - Def.ActorFrame { - InitCommand = function(self) - self:x(NSPreviewXSpan * 3):y(NSPreviewReceptorY) - end, - NSkinPreviewWrapper("Right", "Receptor") - } - } + t[#t][#(t[#t]) + 1] = NSkinPreviewExtraTaps() end return t diff --git a/Themes/_fallback/Scripts/09 SimNSkinPreview.lua b/Themes/_fallback/Scripts/09 SimNSkinPreview.lua index 5d13d17fdf..b940dbcb9f 100644 --- a/Themes/_fallback/Scripts/09 SimNSkinPreview.lua +++ b/Themes/_fallback/Scripts/09 SimNSkinPreview.lua @@ -41,6 +41,30 @@ local function SimChild(Container, Type) return rType end +function GameToNSkinElements() + local out = Def.ActorFrame {} + -- for this, restrict to only 4 keys to show them off + -- and to save on visible space + local theTable = { + dance = { + "Left", "Down", "Up", "Right" + }, + pump = { + "DownLeft", "UpLeft", "Center", "UpRight", --"DownRight" + }, + kb7 = { + "Key1", "Key2", "Key3", "Key4", --"Key5", "Key6", "Key7" + }, + beat = { + "scratch", "Key1", "Key2", "Key3" + --"Key1", "Key2", "Key3", "Key4", "Key5", "Key6", "Key7", "scratch" + } + } + + local game = PREFSMAN:GetPreference("CurrentGame") + return theTable[game] +end + --- Load a NoteSkin preview actor -- @tparam string Noteskin Noteskin name. If "Get" then it does the currently selected noteskin, and updates itself when it changes. Defaults to "Get" -- @tparam string Button Ex: "Up". Defaults to "Down"