#20 Optimisations out the wazoo. Should hopefully sort out the lag issue. Also the...
authorCameron Ball <c.ball1729@gmail.com>
Fri, 13 Dec 2013 03:10:02 +0000 (11:10 +0800)
committerCameron Ball <c.ball1729@gmail.com>
Fri, 13 Dec 2013 03:10:02 +0000 (11:10 +0800)
Themes/GrooveNights/Scripts/Other.lua
Themes/GrooveNights/Scripts/SpeedMods.lua
Themes/GrooveNights/Scripts/gnSystem.lua

index 3930fe5..f9afa38 100644 (file)
@@ -470,19 +470,19 @@ function DisplayBPM(pn)
 end
 
 function DisplayScrollSpeed(pn)
+    local rateMod = string.gsub(GetRateMod(),'x','')
+    local speedMod = GetSpeedMod(pn)
     local lowBPM = GetGlobal("LowBPM")
     local highBPM = GetGlobal("HighBPM")
+    local SpeedModType = GetSpeedModType(speedMod)
        
     if lowBPM == highBPM then highBPM = nil end 
-
-    local rateMod = string.gsub(GetRateMod(),'x','')
-    local speedMod = GetSpeedMod(pn)
        
     speedMod = string.gsub(speedMod,'x','')
     speedMod = string.gsub(speedMod,'c','')
     speedMod = string.gsub(speedMod,'m','')
 
-    if GetSpeedModType(pn) == "c-mod" or GetSpeedModType(pn) == "m-mod" then return speedMod end
+    if SpeedModType == "c-mod" or SpeedModType == "m-mod" then return speedMod end
 
     if lowBPM == "Various" or lowBPM == "..." or lowBPM == nil then
         return "???"
@@ -498,8 +498,12 @@ end
 function DisplaySongLength()
        local RateMod = string.gsub(GetRateMod(), "x" ,"")
        local ratio = 1/RateMod
+        local seconds = GetGlobal('TotalTimeSeconds')
+        local minutes = GetGlobal('TotalTimeMinutes')
+
+        if not seconds and not minutes then return "" end
 
-       local seconds = (GetGlobal('TotalTimeSeconds') + (GetGlobal('TotalTimeMinutes')*60))*ratio
+       seconds = (seconds + (minutes*60))*ratio
 
        return string.format("%.2d:%.2d", math.mod(seconds/60,60), math.mod(seconds,60))
 end
\ No newline at end of file
index 5b53d25..d490c25 100644 (file)
@@ -169,32 +169,31 @@ function GetSpeedMod(pn)
        return "m0"\r
 end\r
 \r
-function GetSpeedModBase(pn)\r
-    local SpeedMod = GetSpeedMod(pn)\r
-       \r
+function GetSpeedModBase(SpeedMod)     \r
+    local SpeedModType = GetSpeedModType(SpeedMod)\r
+\r
     SpeedMod = string.gsub(SpeedMod, 'c', '')\r
     SpeedMod = string.gsub(SpeedMod, 'm', '')\r
     SpeedMod = string.gsub(SpeedMod, 'x', '')\r
        \r
-    if GetSpeedModType(pn) == 'c-mod' or GetSpeedModType(pn) == 'm-mod' then SpeedMod = SpeedMod/100 end\r
+    if SpeedModType == 'c-mod' or SpeedModType == 'm-mod' then SpeedMod = SpeedMod/100 end\r
        \r
     return tostring(math.floor(SpeedMod)) -- Consistency: all the others return a string due to concatenation or w/e\r
 end\r
 \r
-function GetSpeedModExtra(pn)\r
-    local SpeedMod = GetSpeedMod(pn)\r
+function GetSpeedModExtra(SpeedMod)\r
+    local SpeedModType = GetSpeedModType(SpeedMod)\r
+\r
     SpeedMod = string.gsub(SpeedMod, 'c', '')\r
     SpeedMod = string.gsub(SpeedMod, 'm', '')\r
     SpeedMod = string.gsub(SpeedMod, 'x', '')\r
        \r
-    if GetSpeedModType(pn) == 'c-mod' or GetSpeedModType(pn) == 'm-mod' then SpeedMod = SpeedMod/100 end\r
+    if SpeedModType == 'c-mod' or SpeedModType == 'm-mod' then SpeedMod = SpeedMod/100 end\r
 \r
     return '+' .. SpeedMod - math.floor(SpeedMod)\r
 end\r
 \r
-function GetSpeedModType(pn)\r
-    local SpeedMod = GetSpeedMod(pn)\r
-\r
+function GetSpeedModType(SpeedMod)\r
     if string.find(SpeedMod, "x") ~= nil then return 'x-mod' end\r
     if string.find(SpeedMod, "c") ~= nil then return 'c-mod' end\r
     if string.find(SpeedMod, "m") ~= nil then return 'm-mod' end\r
@@ -212,28 +211,32 @@ function SpeedMods(name)
     local function Load(self, list, pn)\r
         -- default to the first item in the list\r
         list[1] = true\r
+        local SpeedMod = GetSpeedMod(pn)\r
+        local ModBase = GetSpeedModBase(SpeedMod)\r
+        local ModExtra = GetSpeedModExtra(SpeedMod)\r
+        local ModType = GetSpeedModType(SpeedMod)\r
 \r
         -- now loop through everything else in the list and see if it is set to true\r
         for i=2, table.getn(modList) do\r
             if name == "Base" then\r
-                if modList[i] == GetSpeedModBase(pn) then list[i] = true; list[1] = false else list[i] = false end\r
+                if modList[i] == ModBase then list[i] = true; list[1] = false else list[i] = false end\r
             end\r
 \r
             if name == "Extra" then\r
-                if string.gsub(modList[i], 'x', '') == GetSpeedModExtra(pn) then list[i] = true; list[1] = false else list[i] = false end\r
+                if string.gsub(modList[i], 'x', '') == ModExtra then list[i] = true; list[1] = false else list[i] = false end\r
             end\r
 \r
             if name == "Type" then                             \r
-                if modList[i] == GetSpeedModType(pn) then list[i] = true; list[1] = false else list[i] = false end\r
+                if modList[i] == ModType then list[i] = true; list[1] = false else list[i] = false end\r
             end\r
         end\r
     end\r
 \r
     local function Save(self, list, pn)\r
         local SpeedMod = GetSpeedMod(pn)\r
-        local ModBase = GetSpeedModBase(pn)\r
-        local ModExtra = GetSpeedModExtra(pn)\r
-        local ModType = GetSpeedModType(pn)\r
+        local ModBase = GetSpeedModBase(SpeedMod)\r
+        local ModExtra = GetSpeedModExtra(SpeedMod)\r
+        local ModType = GetSpeedModType(SpeedMod)\r
 \r
         for i = 1, table.getn(modList) do\r
             if list[i] then\r
@@ -247,7 +250,7 @@ function SpeedMods(name)
             GAMESTATE:ApplyGameCommand('mod,' .. ModBase, pn+1)\r
             MESSAGEMAN:Broadcast('SpeedModChangedP' .. pn+1)\r
         else\r
-            SpeedMod = ModBase + ModExtra\r
+            local SpeedMod = ModBase + ModExtra\r
                \r
             if ModType == 'c-mod' then SpeedMod = 'c' .. SpeedMod*100 end\r
             if ModType == 'm-mod' then SpeedMod = 'm' .. SpeedMod*100 end\r
index bf0bfd0..47ac400 100644 (file)
@@ -354,12 +354,12 @@ end
 
 
 --easter eggs
-local function BlazeIt(Params)
-       local ScrollSpeed = DisplayScrollSpeed(Params.pn)
+local function BPMEasterEggs(Params)
+    local ScrollSpeed = DisplayScrollSpeed(Params.pn)
     local spaces = string.rep(" ", string.len(ScrollSpeed))
 
-    if ScrollSpeed == '420' then
-        Params.Actor:settext(spaces .. " Blaze It!")
+    if ScrollSpeed == '420' or ScrollSpeed == '360' then
+        if ScrollSpeed == '420' then Params.Actor:settext(spaces .. " Blaze It!") else Params.Actor:settext(spaces .. " No Scope!") end
         Params.Actor:diffusealpha(1)
         Params.Actor:rainbow()
     else
@@ -367,53 +367,36 @@ local function BlazeIt(Params)
     end
 end
 
-local function NoScope(Params)
-       local ScrollSpeed = DisplayScrollSpeed(Params.pn)
-    local spaces = string.rep(" ", string.len(ScrollSpeed))
-
-    if ScrollSpeed == '360' then
-        Params.Actor:settext(spaces .. " No Scope!")
-        Params.Actor:diffusealpha(1)
-        Params.Actor:rainbow()
-    else 
-        Params.Actor:diffusealpha(0)
-    end
-end
-
-RegisterEasterEgg("BlazeIt", BlazeIt)
-RegisterEasterEgg("NoScope", NoScope)
+RegisterEasterEgg("BlazeIt", BPMEasterEggs)
+RegisterEasterEgg("NoScope", BPMEasterEggs)
 
 --global variable callbacks
 local function LowBPM( BPMDisplay )
        BPMDisplay = BPMDisplay:GetText()
        
        local pos = string.find(BPMDisplay, "-")
-       if pos ~= nil then return string.sub(BPMDisplay,1,pos-1) else return BPMDisplay end
+       if pos then return string.sub(BPMDisplay,1,pos-1) else return BPMDisplay end
 end
 
 local function HighBPM( BPMDisplay )
        BPMDisplay = BPMDisplay:GetText()
 
        local pos = string.find(BPMDisplay, "-")
-       if pos ~= nil then return string.sub(BPMDisplay,pos+1) else return BPMDisplay end
+       if pos then return string.sub(BPMDisplay,pos+1) else return BPMDisplay end
 end
 
 local function TotalTimeMinutes( TimeDisplay ) 
        TimeDisplay = TimeDisplay:GetText()
-       
        local pos = string.find(TimeDisplay, ':')
-       if not pos then return 0 end
-       
-       return string.sub(TimeDisplay, 1, pos-1) 
+               
+       if pos then return string.sub(TimeDisplay, 1, pos-1) end
 end
 
 local function TotalTimeSeconds( TimeDisplay )
        TimeDisplay = TimeDisplay:GetText()
-       
        local pos = string.find(TimeDisplay, ':')
-       if not pos then return 0 end
-       
-       return string.sub(TimeDisplay, pos+1)
+
+       if pos then return string.sub(TimeDisplay, pos+1) end
 end
 
 RegisterGlobalCallback("HighBPM", HighBPM)