diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 00a676885f..648a166050 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -4,6 +4,26 @@ The StepMania 5 Changelog covers all post-sm-ssc changes. For a list of changes from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt. ________________________________________________________________________________ +================================================================================ +StepMania 5.0 $next | 2011xxxx +-------------------------------------------------------------------------------- + +2011/10/08 +---------- +* [GameSoundManager] Add the PlayMusicPart lua binding. [Wolfman2000] +* [ScreenEdit] Add the FadeInPreview and FadeOutPreview metrics. This controls + how long the fade in and fade outs are for playing the preview music. + The default values are 0 and 1.5 respectively. [Wolfman2000] + +2011/10/07 +---------- +* [RageDisplay] Add the GetFPS, GetVPF, and GetCumFPS bindings. [Wolfman2000] + +2011/10/06 +---------- +* Various scoring fixes sourced from http://www47.atwiki.jp/waiei/pages/21.html + [A.C/@waiei, 桜為小鳩/@sakuraponila] + ================================================================================ StepMania 5.0 Preview 4 | 20111005 -------------------------------------------------------------------------------- diff --git a/Docs/Luadoc/Lua.xml b/Docs/Luadoc/Lua.xml index 79b0ddb7f9..1f9ee43352 100644 --- a/Docs/Luadoc/Lua.xml +++ b/Docs/Luadoc/Lua.xml @@ -119,6 +119,7 @@ + @@ -202,6 +203,7 @@ + @@ -216,7 +218,6 @@ - @@ -663,10 +664,15 @@ + + + + + @@ -695,12 +701,17 @@ + + + + + @@ -720,6 +731,7 @@ + @@ -855,9 +867,12 @@ + + + @@ -871,6 +886,7 @@ + @@ -1119,6 +1135,9 @@ + + + @@ -1572,10 +1591,10 @@ + - @@ -1585,6 +1604,10 @@ + + + + @@ -2177,16 +2200,16 @@ - + - + - + - + @@ -2198,6 +2221,6 @@ - StepMania v5.0 Preview 3 - 2011-08-27 + StepMania v5.0 Preview 4 + 2011-10-06 diff --git a/Docs/Luadoc/LuaDocumentation.xml b/Docs/Luadoc/LuaDocumentation.xml index ba09931dfd..436c602a5d 100644 --- a/Docs/Luadoc/LuaDocumentation.xml +++ b/Docs/Luadoc/LuaDocumentation.xml @@ -63,13 +63,13 @@ Returns a color from a string. color can be in hex ("#FFFFFFFF") or 0..1 values ("1.0,1.0,1.0,1.0"), in RGBA order. - + [02 Colors.lua] Returns a darker tone of the color. (Specifically c[1]/2, c[2]/2, c[3]/2, c[4]) - + [02 Colors.lua] Returns a lighter tone of the color. (Specifically c[1]+(c[1]/2), c[2]+(c[2]/2), c[3]+(c[3]/2), c[4]) - + [02 Colors.lua] Returns a midtone of the color. (Specifically c[1]/1.5, c[2]/1.5, c[3]/1.5, c[4]) @@ -183,7 +183,7 @@ Returns the theme's aspect ratio. - + [03 ThemePrefs.lua] (Alias for .) @@ -302,7 +302,7 @@ [03 Gameplay.lua] Returns the value to start showing the miss combo at. - + Creates a module. See the Lua manual for more details. @@ -314,7 +314,7 @@ Returns Month m as a string. - + "Allows a program to traverse all fields of a table. Its first argument is a table and its second argument is an index in this table. next returns the next index of the table and its associated value." @@ -323,7 +323,7 @@ [03 ThemePrefs.lua] Returns a Lua option row for ProTiming. - + "Returns three values: the function, the table t, and nil, so that the construction for k,v in pairs(t) do body end will iterate over all key–value pairs of table t." @@ -368,7 +368,7 @@ Sends the current style to the server. - + Loads the specified module. See the Lua manual for more information. @@ -476,7 +476,7 @@ Returns the type of the object as a string. See the Lua manual for valid return values. - + "Returns the elements from the given table. This function is equivalent to return list[i], list[i+1], ···, list[j]" (i and j are optional; "by default, i is 1 and j is the length of the list.") @@ -508,7 +508,7 @@ [04 FileUtils.lua] Writes buf to the file at path. - + [03 GamePreferences.lua] @@ -1580,7 +1580,7 @@ Gets the CourseEntry at iIndex from the Course. - Returns the Course's . (Returns CourseType in sm-ssc; integer in SM4) + Returns the Course's . (Returns CourseType in SM5; integer in SM4) Returns the description for this Course. @@ -1598,7 +1598,7 @@ Returns the Course's group name. - Returns the Course's . (Returns PlayMode in sm-ssc; integer in SM4) + Returns the Course's . (Returns PlayMode in SM5; integer in SM4) Returns the name of the person who scripted the Course. @@ -1715,6 +1715,15 @@ Returns the index of the last banner loaded. + + Loads the fallback course banner. + + + Loads the fallback banner. + + + Loads the card image from the specified Character. + Loads a Banner from a specified Course. @@ -1724,6 +1733,24 @@ Loads a Banner from a specified Song Group. + + Loads a Banner from a specified SortOrder. + + + Loads an icon from the specified Character. + + + Loads the Random banner. + + + Loads the Roulette banner. + + + See . + + + See . + @@ -1802,11 +1829,25 @@ Plays a sound from the current announcer. + + Play the sound at musicPath starting from musicStart for + musicLength seconds one time. Both fadeIn and + fadeOut can be customized as required. + Play the sound at sPath one time. + + Adds another stage to the specifed player. + + + Applies the specified modifiers for the specified player's preferred modifier set. + + + Applies the specified modifiers for the specified player for the current stage. + Returns true if any player has performed a feat worthy of ranking. @@ -1817,6 +1858,9 @@ Removes any stage modifiers that are illegal for course play. + + Returns true if pn's options will disqualify them for ranking. + Returns true if enough credits have been inserted to join. @@ -1884,6 +1928,9 @@ Return a string representation of the default song options. + + Returns the value. + Return the easiest of the currently selected steps by all players. For example, if player 1 has @@ -1976,22 +2023,22 @@ Returns the smallest number of stages left for any human player. - [01 compat.lua] Returns the current beat of the song. + [01 alias.lua] Returns the current beat of the song. - [01 compat.lua] Returns the current beat of the song without an offset. + [01 alias.lua] Returns the current beat of the song without an offset. Returns the current visible beat of the song. - [01 compat.lua] Returns the song's current beats per second. + [01 alias.lua] Returns the song's current beats per second. - [01 compat.lua] Returns true if a delay is active in the song. + [01 alias.lua] Returns true if a delay is active in the song. - [01 compat.lua] Returns true if the song is currently in a freeze. + [01 alias.lua] Returns true if the song is currently in a freeze. Returns the song options for the specified ModsLevel as a string. @@ -2268,6 +2315,9 @@ + + Stops the MenuTimer by setting it to 99.99 and pausing. + Returns the current MenuTimer's value. @@ -2275,11 +2325,17 @@ Pauses the MenuTimer, stopping it from counting down. + Compatibility alias for SetSeconds. + + Sets the MenuTimer's value to fSeconds. Sets the MenuTimer's silent setting to bSilent. + + Starts up the timer. + Sets the MenuTimer's stealth setting to bStealth. If true, the timer will be invisible and silent. @@ -2301,6 +2357,9 @@ + + Returns the model's default animation. + Controls if the model should loop or not. @@ -2740,20 +2799,6 @@ Returns the number of judgments for a specified TapNoteScore. - Returns the max combo for this performance. @@ -2995,6 +3040,15 @@ Return the width of the display. + + Return the FPS. + + + Return the VPF. + + + Return the cumulative FPS. + @@ -3316,9 +3370,15 @@ Returns the path to the song's banner. + + Returns the path to the song's CD image. + Gets the path to the CDTitle. + + Returns the path to the song's disc image (different from CD, think Pump). + Returns the displayed artist of the song. @@ -3346,6 +3406,9 @@ Returns the group name that the song is in. + + Returns the path to the song's jacket image. + Returns the last beat of the song. @@ -3412,12 +3475,21 @@ Returns true if the song has BGChanges. + + Returns true if the song has a CD image. + Returns true if the song has a CDTitle. + + Returns true if the song has a Disc graphic. + Returns true if the song has edits. + + Returns true if the song has a jacket graphic. + Returns true if the song has lyrics. @@ -3425,10 +3497,10 @@ Returns true if the song has music. - Returns true if the song has significant elephants or bison. + Returns true if the song has significant BPM changes or stops. - - Returns true if the song has . + + Returns true if the song has the specified StepsType. Returns true if the song's DisplayBPM is constant. @@ -3531,7 +3603,7 @@ Returns a table of popular songs. - + Returns a table of courses as they'd appear in preferred sort. @@ -3814,13 +3886,13 @@ Returns true if the steps were automatically generated. - + Returns true if the DisplayBPM is constant. - + Returns true if the DisplayBPM is random. - + Returns true if the DisplayBPM is secret. @@ -4197,6 +4269,14 @@ Attempts to set the open section to sSection. + + + Returns the color of this wheel item. + + + Returns the text of this wheel item. + + Sets the WorkoutGraph from the current Workout. diff --git a/Docs/credits.txt b/Docs/credits.txt index f6d363f374..42b7e7829b 100644 --- a/Docs/credits.txt +++ b/Docs/credits.txt @@ -10,7 +10,7 @@ AJ Kelly as freem * UserPreferences and some other Lua scripts * Some small theme edits here and there * Noteskins (retro, retrobar*) - * Windows project file maintainer + * Windows project file maintainer (mostly) Midiman * Did most of the work on _fallback and default themes @@ -39,7 +39,7 @@ Daisuke Master * Taking advantage of sm-ssc's new features :) FSX - * Various fixes. (see Changelog_sm-ssc.txt for more details) + * Various fixes. (see Changelogs for more details) Nicole Reid (okeeblow) * Tested building sm-ssc on FreeBSD, provided fixes. @@ -59,6 +59,9 @@ StepMania Team * Keeping StepMania 5 alive with changes, and providing a nice codebase for us to work with. +1a2a3a2a1a + * Various beat mode fixes + Kaox * Pump/default noteskin @@ -66,7 +69,7 @@ cesarmades * Pump/cmd-* noteskins David Santamara Rogado (howl) - * Various patches (see Changelog_sm-ssc.txt for more details and links) + * Various patches (see Changelogs for more details and links) Kita K./D. Trucks * default theme music @@ -113,10 +116,13 @@ Tatsh * A patch to fix building with system ffmpeg (http://ssc.ajworld.net/sm-ssc/bugtracker/view.php?id=218) -A.C(waiei) - * Hybrid scoring mode +A.C (@waiei) + * Hybrid scoring mode + scoring fixes * Various patches/fixes/bug reporting +桜為小鳩 (@sakuraponila) + * Scoring fixes + ==the beta testers== [SSC Beta Testing Team] KeithD diff --git a/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua b/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua index 9018cef21f..3623c9cabd 100644 --- a/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua +++ b/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua @@ -44,21 +44,23 @@ local oitg = { } local contrib = { - "Aldo Fregoso (Aldo_MX)", -- delays - "cerbo", + "Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator + "A.C/@waiei", -- custom scoring fixes + Hybrid scoring + "cerbo", -- lua bindings and other fun stuff "cesarmades", -- pump/cmd* noteskins - "Chris Eldridge (kurisu)", -- dance-threepanel + "Chris Eldridge (kurisu)", -- dance-threepanel stepstype support "Christophe Goulet-LeBlanc (Kommisar)", -- songs "corec", -- various fixes "galopin", -- piu PlayStation2 usb mat support "gholms", -- automake 1.11 support "juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods "Kaox", -- pump/default noteskin - "Petriform", -- Music "NitroX72", -- pump/frame noteskin + "Petriform", -- default theme music + "桜為小鳩/@sakuraponila", -- custom scoring fixes + "Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes "sy567", -- beginner helper fix "v1toko", -- x-mode from StepNXA - "waiei", -- custom scoring fixes + Hybrid scoring } local translators = { @@ -72,6 +74,7 @@ local thanks = { "Dreamwoods", "Jason Bolt (LightningXCE)", "Jousway", -- Noteskins + "Luizsan", -- creator of Delta theme "Matt1360", -- Automake magic + oitg bro "Renard", "Ryan McKanna (Plaguefox)", @@ -80,13 +83,13 @@ local thanks = { local shoutout = { "The Lua team", -- lua project lead or some shit. super nerdy but oh hell. "Mojang AB", -- minecraft forever -freem + "Wolfire Games", -- piles of inspiration "NAKET Coder", "Ciera Boyd", -- you bet your ass I'm putting my girlfriend in the credits --Image(), -- we should have some logos probably to look super pro "#KBO", "Celestia Radio", -- LOVE AND TOLERANCE "You showed us... your ultimate dance", - -- "Can't stop crying... buckets of tears!" } local copyright = { @@ -146,7 +149,6 @@ creditScroller.BeginCommand=function(self) SCREENMAN:GetTopScreen():PostScreenMessage( "SM_BeginFadingOut", (t.SecondsPerItem * (#t + item_padding_start) + 5) ); end; - return Def.ActorFrame{ creditScroller..{ InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64), diff --git a/Themes/_fallback/Scripts/03 ThemePrefs.lua b/Themes/_fallback/Scripts/03 ThemePrefs.lua index 90d7d73a19..58236a2361 100644 --- a/Themes/_fallback/Scripts/03 ThemePrefs.lua +++ b/Themes/_fallback/Scripts/03 ThemePrefs.lua @@ -148,31 +148,3 @@ function InitUserPrefs() SetUserPref("UserPrefScoringMode", 'DDR Extreme'); end; end; - -function UserPrefScoringMode() - local baseChoices = { 'DDR 1stMIX', 'DDR 4thMIX', 'DDR Extreme', 'DDR SuperNOVA', 'DDR SuperNOVA 2', 'MIGS', 'HYBRID' }; --'[SSC] Radar Master' - local t = { - Name = "UserPrefScoringMode"; - LayoutType = "ShowAllInRow"; - SelectType = "SelectOne"; - OneChoiceForAllPlayers = true; - ExportOnChange = false; - Choices = baseChoices; - LoadSelections = function(self, list, pn) - if ReadPrefFromFile("UserPrefScoringMode") ~= nil then - local theValue = ReadPrefFromFile("UserPrefScoringMode"); - local success = false; - for k,v in ipairs(baseChoices) do if v == theValue then list[k] = true success = true break end end; - if success == false then list[1] = true end; - else - WritePrefToFile("UserPrefScoringMode", 'DDR Extreme'); - list[1] = true; - end; - end; - SaveSelections = function(self, list, pn) - for k,v in ipairs(list) do if v then WritePrefToFile("UserPrefScoringMode", baseChoices[k]) break end end; - end; - }; - setmetatable( t, t ); - return t; -end \ No newline at end of file diff --git a/Themes/_fallback/Scripts/04 Scoring.lua b/Themes/_fallback/Scripts/04 Scoring.lua index 0f96c6a001..382bc3c2fd 100644 --- a/Themes/_fallback/Scripts/04 Scoring.lua +++ b/Themes/_fallback/Scripts/04 Scoring.lua @@ -11,7 +11,14 @@ function GetTotalItems(radars) local total = radars:GetValue('RadarCategory_TapsAndHolds') total = total + radars:GetValue('RadarCategory_Holds') total = total + radars:GetValue('RadarCategory_Rolls') - total = total + radars:GetValue('RadarCategory_Lifts') + -- [ja] Liftを加えると一部二重加算になるため除外する。 + -- total = total + radars:GetValue('RadarCategory_Lifts') + + -- [en] prevent divide by 0 + -- [ja] 0除算対策(しなくても動作するけど満点になっちゃうんで) + if total <= 0 then + total = 1 + end; return total end; @@ -29,61 +36,44 @@ function GetDirectRadar(player) end; ----------------------------------------------------------- ---DDR 1st Mix and 2nd Mix Scoring +--Oldschool scoring, best described as a modified 4th mix scheme +--with a little 1st mix influence ----------------------------------------------------------- -r['DDR 1stMIX'] = function(params, pss) - local dCombo = math.floor((pss:GetCurrentCombo()+1)/4); - local bScore = (dCombo^2+1) * 100; - local multLookup = - { - ['TapNoteScore_W1']=3, - ['TapNoteScore_W2']=3, - ['TapNoteScore_W3']=1 - }; - setmetatable(multLookup, ZeroIfNotFound); - --if score increases above the boundaries of a 32-bit signed - --(about 2.15 billion), it stops increasing. Conveniently, - --1st Mix clamped score as well. - local capScore = 999999999; - local bestScore = bScore * multLookup['TapNoteScore_W1']; - local localScore = bScore * multLookup[params.TapNoteScore]; - pss:SetCurMaxScore(clamp(pss:GetCurMaxScore()+(bestScore),0,capScore)); - pss:SetScore(clamp(pss:GetScore()+(localScore),0,capScore)); - -end; ------------------------------------------------------------ ---DDR 4th Mix/Extra Mix/Konamix/GB3/DDRPC Scoring ------------------------------------------------------------ -r['DDR 4thMIX'] = function(params, pss) +r['Oldschool'] = function(params, pss) + local bestPoints = 999 local scoreLookupTable = { - ['TapNoteScore_W1']=777, - ['TapNoteScore_W2']=777, - ['TapNoteScore_W3']=555 + ['TapNoteScore_W1']=999, + ['TapNoteScore_W2']=IsW1Allowed('TapNoteScore_W2') and 888 or 999, + ['TapNoteScore_W3']=777, + ['TapNoteScore_W4']=555, + ['TapNoteScore_W5']=111, }; setmetatable(scoreLookupTable, ZeroIfNotFound); - -- TODO: Modify this so that current max assumes full combo? - local comboBonusForThisStep = (pss:GetCurrentCombo()+1)*333; - local capScore = 999999999; - local bestPoints = scoreLookupTable['TapNoteScore_W1']; - local bestCombo = bestPoints and comboBonusForThisStep or 0; - pss:SetCurMaxScore(clamp(pss:GetCurMaxScore()+bestPoints+bestCombo,0,capScore)); - local localPoints = scoreLookupTable[params.TapNoteScore]; - local localCombo = localPoints and comboBonusForThisStep or 0; - pss:SetScore(clamp(pss:GetScore()+localPoints+localCombo,0,capScore)); + local comboBonusForThisStep = (pss:GetCurrentCombo()*111)^1.1; + local capScore = 1000000000; + pss:SetCurMaxScore(capScore); --i don't really care about weird scoring modes -fsx + local pointsGot = comboBonusForThisStep + scoreLookupTable[params.TapNoteScore] + (params.HoldNoteScore == 'HoldNoteScore_Held' and 777 or 0); + pss:SetScore(clamp(pss:GetScore()+pointsGot,0,capScore)); end; + ----------------------------------------------------------- ---DDR MAX2/Extreme Scoring +--DDR MAX2/Extreme(-esque) Scoring by @sakuraponila ----------------------------------------------------------- +local ext_Steps = {0,0}; r['DDR Extreme'] = function(params, pss) - local judgmentBase = { + local multLookup = + { ['TapNoteScore_W1'] = 10, ['TapNoteScore_W2'] = 9, ['TapNoteScore_W3'] = 5 }; - setmetatable(judgmentBase, ZeroIfNotFound); + setmetatable(multLookup, ZeroIfNotFound); local steps = GAMESTATE:GetCurrentSteps(params.Player); - local radarValues = steps:GetRadarValues(params.Player); + local radarValues = GetDirectRadar(params.Player); + local totalItems = GetTotalItems(radarValues); + -- 1 + 2 + 3 + ... + totalItems value/の値 + local sTotal = (totalItems + 1) * totalItems / 2; local meter = steps:GetMeter(); if (steps:IsAnEdit()) then meter = 5; @@ -92,39 +82,62 @@ r['DDR Extreme'] = function(params, pss) elseif (meter > 10) then meter = 10; end; - local baseScore = meter * 1000000; + -- [en] score for one step + -- [ja] 1ステップあたりのスコア + local baseScore = meter * 1000000 if (GAMESTATE:GetCurrentSong():IsMarathon()) then baseScore = baseScore * 3; elseif (GAMESTATE:GetCurrentSong():IsLong()) then baseScore = baseScore * 2; end; - local totalItems = GetTotalItems(radarValues); - local singleStep = (1 + totalItems) * totalItems / 2; - if (not Shared.CurrentStep) then - Shared.CurrentStep = {}; - Shared.CurrentStep["P1"] = 0; - Shared.CurrentStep["P2"] = 0; - end; - local pn = PlayerNumberToString(params.Player); - Shared.CurrentStep[pn] = Shared.CurrentStep[pn] + 1; - local stepValue = math.floor(baseScore /singleStep); - local stepLast = stepValue * Shared.CurrentStep[pn]; - pss:SetCurMaxScore(pss:GetCurMaxScore() + - (stepLast * judgmentBase['TapNoteScore_W1'])); - local judgeScore = 0; - if (params.HoldNoteScore == 'HoldNoteScore_Held') then - judgeScore = judgmentBase['TapNoteScore_W1']; + local sOne = math.floor(baseScore / sTotal); + -- [en] measures for 5 points of units + -- [ja] 5点単位のための処置 + sOne = sOne - sOne % 5; + -- [en] because fractions are added by the last step, get value + -- [ja] 端数は最後の1ステップで加算するのでその値を取得 + local sLast = baseScore - (sOne * sTotal); + + local p; + if params.Player == 'PlayerNumber_P1' then + p = 1; else - judgeScore = judgmentBase[params.TapNoteScore]; - if (IsW1Allowed(params.TapNoteScore)) then - judgeScore = judgmentBase['TapNoteScore_W1']; + p = 2; + end; + -- [en] initialized when score is 0 + -- [ja] スコアが0の時に初期化 + if pss:GetScore() == 0 then + ext_Steps[p] = 0; + end; + -- [en] now step count + -- [ja] 現在のステップ数 + ext_Steps[p] = ext_Steps[p] + 1; + -- [en] current score + -- [ja] 今回加算するスコア(W1の時) + local vScore = sOne * ext_Steps[p]; + pss:SetCurMaxScore(pss:GetCurMaxScore() + vScore); + -- [ja] 判定によって加算量を変更 + if (params.HoldNoteScore == 'HoldNoteScore_Held') then + -- [ja] O.K.判定時は問答無用で満点 + vScore = vScore; + else + -- [ja] N.G.判定時は問答無用で0点 + if (params.HoldNoteScore == 'HoldNoteScore_LetGo') then + vScore = 0; + -- [en] non-long note scoring + -- [ja] それ以外ということは、ロングノート以外の判定である + else + vScore = vScore * multLookup[params.TapNoteScore] / 10 end; end; - local stepScore = judgeScore * stepLast; - pss:SetScore(pss:GetScore() + stepScore); - if (Shared.CurrentStep[pn] >= totalItems) then -- Just in case. - -- TODO: Implement the bonus for the last step? - Shared.CurrentStep[pn] = 0; -- Reset for the next song. + -- [en] measures for 5 points of units + -- [ja] ここでも5点単位のための処置 + vScore = vScore - vScore % 5 + pss:SetScore(pss:GetScore() + vScore); + -- if one of the last step, add the fractions + -- [ja] 最後の1ステップの場合、端数を加算する + if ((vScore > 0) and (ext_Steps[p] == totalItems)) then + pss:SetScore(pss:GetScore() + sLast); end; end; @@ -132,7 +145,7 @@ end; --HYBRID Scoring, contributed by @waiei ----------------------------------------------------------- local hyb_Steps={0,0}; -r['HYBRID'] = function(params, pss) +r['Hybrid'] = function(params, pss) local multLookup = { ['TapNoteScore_W1'] = 10, @@ -141,8 +154,7 @@ r['HYBRID'] = function(params, pss) }; setmetatable(multLookup, ZeroIfNotFound); local radarValues = GetDirectRadar(params.Player); - -- [ja] GetTotalItems(radarValues) に Liftも含まれているので 引いておく - local totalItems = GetTotalItems(radarValues) - radarValues:GetValue('RadarCategory_Lifts'); + local totalItems = GetTotalItems(radarValues); -- 1+2+3+...+totalItems value/の値 local sTotal = (totalItems+1)*totalItems/2; -- [en] Score for one song @@ -151,9 +163,13 @@ r['HYBRID'] = function(params, pss) -- [ja] 端数は最後の1ステップで加算するのでその値を取得 local sLast = 100000000-(sOne*sTotal); - local p = (params.Player == 'PlayerNumber_P1') and 1 or 2 + local p; + if params.Player=='PlayerNumber_P1' then + p=1; + else + p=2; + end; - -- [en] Initialize score if 0. -- [ja] スコアが0の時に初期化 if pss:GetScore()==0 then hyb_Steps[p]=0; @@ -184,26 +200,81 @@ r['HYBRID'] = function(params, pss) end; ----------------------------------------------------------- ---DDR SuperNOVA(-esque) scoring +--DDR SuperNOVA scoring (Use MARVELOUS) by @sakuraponila +----------------------------------------------------------- +local sntmp_Score = {0,0}; +local sntmp_Steps = {0,0}; +r['DDR SuperNOVA'] = function(params, pss) + local multLookup = + { + ['TapNoteScore_W1'] = 3, + ['TapNoteScore_W2'] = 2, + ['TapNoteScore_W3'] = 1 + }; + setmetatable(multLookup, ZeroIfNotFound); + local radarValues = GetDirectRadar(params.Player); + local totalItems = GetTotalItems(radarValues) + local p; + if params.Player == 'PlayerNumber_P1' then + p = 1; + else + p = 2; + end; + + -- initialized when score is 0 + -- [ja] スコアが0の時に初期化 + if pss:GetScore() == 0 then + sntmp_Score[p] = 0; + sntmp_Steps[p] = 0; + end; + + -- [ja] 判定によって加算量を変更 + local maxAdd = 0; + -- [ja] O.K.判定時は問答無用で満点 + if params.HoldNoteScore == 'HoldNoteScore_Held' then + maxAdd = 3; + else + -- [ja] N.G.判定時は問答無用で0点 + if params.HoldNoteScore == 'HoldNoteScore_LetGo' then + maxAdd = 0; + -- [ja] それ以外ということは、ロングノート以外の判定である + else + maxAdd = multLookup[params.TapNoteScore]; + end + end; + sntmp_Score[p] = sntmp_Score[p] + maxAdd; + + -- [ja] 踏み踏みしたステップ数 + sntmp_Steps[p] = sntmp_Steps[p] + 1; + -- [ja] 現時点での、All W1判定の時のスコア + pss:SetCurMaxScore(math.floor(10000000 * sntmp_Steps[p] / totalItems / 3)); + -- [ja] 計算して代入 + pss:SetScore(math.floor(10000000 * sntmp_Score[p] / totalItems / 3)); +end; + +----------------------------------------------------------- +--DDR SuperNOVA 2 scoring by @waiei ----------------------------------------------------------- local sn2tmp_Sub={0,0}; local sn2tmp_Score={0,0}; local sn2tmp_Steps={0,0}; -r['DDR SuperNOVA'] = function(params, pss) +r['DDR SuperNOVA 2'] = function(params, pss) local multLookup = { - ['TapNoteScore_W1'] = 1, - ['TapNoteScore_W2'] = 1, - ['TapNoteScore_W3'] = 0.5 + ['TapNoteScore_W1'] = 10, + ['TapNoteScore_W2'] = 10, + ['TapNoteScore_W3'] = 5 }; setmetatable(multLookup, ZeroIfNotFound); local radarValues = GetDirectRadar(params.Player); local totalItems = GetTotalItems(radarValues); + local p; + if params.Player=='PlayerNumber_P1' then + p=1; + else + p=2; + end; - if totalItems < 0 then totalItems = 1; end - local p = (params.Player == 'PlayerNumber_P1') and 1 or 2 - - -- [en] Initialize score if 0. -- [ja] スコアが0の時に初期化 if pss:GetScore()==0 then sn2tmp_Sub[p]=0; @@ -213,7 +284,6 @@ r['DDR SuperNOVA'] = function(params, pss) -- [ja] maxAdd は 加算する最高点を 10 とした時の値(つまり、10=100% / 5=50%) local maxAdd = 0; - -- [ja] O.K.判定時は問答無用で満点 if params.HoldNoteScore == 'HoldNoteScore_Held' then maxAdd = 10; @@ -229,7 +299,7 @@ r['DDR SuperNOVA'] = function(params, pss) sn2tmp_Sub[p]=sn2tmp_Sub[p]+1; end; end - end + end; sn2tmp_Score[p]=sn2tmp_Score[p]+maxAdd; -- [ja] 踏み踏みしたステップ数 sn2tmp_Steps[p]=sn2tmp_Steps[p]+1; @@ -239,62 +309,7 @@ r['DDR SuperNOVA'] = function(params, pss) -- [ja] 計算して代入 pss:SetScore((math.floor(10000*sn2tmp_Score[p]/totalItems) * 10) - (sn2tmp_Sub[p]*10) ); end; ------------------------------------------------------------ ---DDR SuperNOVA 2(-esque) scoring ------------------------------------------------------------ -local sn2tmp_Sub=0; -local sn2tmp_Score=0; -local sn2tmp_Steps=0; -r['DDR SuperNOVA 2'] = function(params, pss) - local multLookup = - { - ['TapNoteScore_W1'] = 10, - ['TapNoteScore_W2'] = 10, - ['TapNoteScore_W3'] = 5 - }; - setmetatable(multLookup, ZeroIfNotFound); - local radarValues = GetDirectRadar(params.Player); - -- [ja] GetTotalItems(radarValues) に Liftも含まれているので 引いておく - local totalItems = GetTotalItems(radarValues) - radarValues:GetValue('RadarCategory_Lifts'); - -- [ja] 0除算対策(しなくても動作するけど満点になっちゃうんで) - if totalItems <= 0 then - totalItems=1 - end; - -- [ja] スコアが0の時に初期化 - if pss:GetScore() == 0 then - sn2tmp_Sub=0; - sn2tmp_Score=0; - sn2tmp_Steps=0; - end; - - -- [ja] maxAdd は 加算する最高点を 10 とした時の値(つまり、10=100% / 5=50%) - local maxAdd = 0; - -- [ja] O.K.判定時は問答無用で満点 - if params.HoldNoteScore == 'HoldNoteScore_Held' then - maxAdd = 10; - else - -- [ja] N.G.判定時は問答無用で0点 - if params.HoldNoteScore == 'HoldNoteScore_LetGo' then - maxAdd = 0; - -- [ja] それ以外ということは、ロングノート以外の判定である - else - maxAdd = multLookup[params.TapNoteScore]; - if (params.TapNoteScore == 'TapNoteScore_W2') or (params.TapNoteScore=='TapNoteScore_W3') then - -- [ja] W2とW3の数を記録 - sn2tmp_Sub=sn2tmp_Sub+1; - end; - end - end; - sn2tmp_Score=sn2tmp_Score+maxAdd; - -- [ja] 踏み踏みしたステップ数 - sn2tmp_Steps=sn2tmp_Steps+1; - -- [ja] 現時点での、All W1判定の時のスコア - pss:SetCurMaxScore(math.floor(10000*sn2tmp_Steps/totalItems) * 10); - - -- [ja] 計算して代入 - pss:SetScore((math.floor(10000*sn2tmp_Score/totalItems) * 10) - (sn2tmp_Sub*10) ); -end; ----------------------------------------------------------- --Radar Master (disabled; todo: get this working with StepMania 5) ----------------------------------------------------------- @@ -343,12 +358,13 @@ r['MIGS'] = function(params,pss) curScore = curScore + ( pss:GetTapNoteScores(k) * v ); end; curScore = math.max(0,curScore + ( pss:GetHoldNoteScores('HoldNoteScore_Held') * 6 )); + pss:SetScore(curScore); end; -------------------------------------------------------------- --1bilDP scoring because I can. -------------------------------------------------------------- -r['1bilDP']= function(params,pss) +r['Billions DP']= function(params,pss) local poss = pss:GetPossibleDancePoints() pss:SetScore(math.floor((pss:GetActualDancePoints()/poss)*1000000000)) pss:SetCurMaxScore(math.floor((pss:GetCurrentPossibleDancePoints()/poss)*1000000000)) @@ -356,14 +372,34 @@ end ------------------------------------------------------------------------------- -- Formulas end here. for v in ivalues(DisabledScoringModes) do r[v] = nil end -Scoring = {} -setmetatable(Scoring, { - __metatable = { "Letting you change the metatable sort of defeats the purpose." }, - __index = function(tbl, key) - for v in ivalues(DisabledScoringModes) do - if key == v then return r['DDR Extreme'] end - end - return r[key] - end, - } -); \ No newline at end of file +Scoring = r; + +function UserPrefScoringMode() + local baseChoices = {} + for k,v in pairs(Scoring) do table.insert(baseChoices,k) end + if next(baseChoices) == nil then UndocumentedFeature "No scoring modes available" end + local t = { + Name = "UserPrefScoringMode"; + LayoutType = "ShowAllInRow"; + SelectType = "SelectOne"; + OneChoiceForAllPlayers = true; + ExportOnChange = false; + Choices = baseChoices; + LoadSelections = function(self, list, pn) + if ReadPrefFromFile("UserPrefScoringMode") ~= nil then + local theValue = ReadPrefFromFile("UserPrefScoringMode"); + local success = false; + for k,v in ipairs(baseChoices) do if v == theValue then list[k] = true success = true break end end; + if success == false then list[1] = true end; + else + WritePrefToFile("UserPrefScoringMode", baseChoices[1]); + list[1] = true; + end; + end; + SaveSelections = function(self, list, pn) + for k,v in ipairs(list) do if v then WritePrefToFile("UserPrefScoringMode", baseChoices[k]) break end end; + end; + }; + setmetatable( t, t ); + return t; +end diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index bfb1aaa55b..f084578c6b 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -3654,6 +3654,9 @@ Beat0OffsetFormat="%s:\n %.3f secs\n" PreviewStartFormat="%s:\n %.3f secs\n" PreviewLengthFormat="%s:\n %.3f secs\n" +FadeInPreview=0 +FadeOutPreview=1.5 + [ScreenPracticeMenu] Fallback="ScreenEditMenu" Class="ScreenEditMenu" diff --git a/Themes/default/BGAnimations/ScreenCredits overlay.lua b/Themes/default/BGAnimations/ScreenCredits overlay.lua index 86028fc183..c8d17441f7 100644 --- a/Themes/default/BGAnimations/ScreenCredits overlay.lua +++ b/Themes/default/BGAnimations/ScreenCredits overlay.lua @@ -44,10 +44,11 @@ local oitg = { } local contrib = { - "Aldo Fregoso (Aldo_MX)", -- delays - "cerbo", + "Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator + "A.C (@waiei)", -- custom scoring fixes + Hybrid scoring + "cerbo", -- lua bindings and other fun stuff "cesarmades", -- pump/cmd* noteskins - "Chris Eldridge (kurisu)", -- dance-threepanel + "Chris Eldridge (kurisu)", -- dance-threepanel stepstype support "Christophe Goulet-LeBlanc (Kommisar)", -- songs "corec", -- various fixes "galopin", -- piu PlayStation2 usb mat support @@ -55,10 +56,11 @@ local contrib = { "juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods "Kaox", -- pump/default noteskin "NitroX72", -- pump/frame noteskin - "Petriform", -- Music + "Petriform", -- default theme music + "桜為小鳩 (@sakuraponila)", -- custom scoring fixes + "Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes "sy567", -- beginner helper fix "v1toko", -- x-mode from StepNXA - "waiei", -- custom scoring fixes + Hybrid scoring } local translators = { @@ -72,6 +74,7 @@ local thanks = { "Dreamwoods", "Jason Bolt (LightningXCE)", "Jousway", -- Noteskins + "Luizsan", -- creator of Delta theme "Matt1360", -- Automake magic + oitg bro "Renard", "Ryan McKanna (Plaguefox)", @@ -87,7 +90,6 @@ local shoutout = { "#KBO", "Celestia Radio", -- LOVE AND TOLERANCE "You showed us... your ultimate dance", - -- "Can't stop crying... buckets of tears!" } local copyright = { @@ -147,7 +149,6 @@ creditScroller.BeginCommand=function(self) SCREENMAN:GetTopScreen():PostScreenMessage( "SM_BeginFadingOut", (t.SecondsPerItem * (#t + item_padding_start) + 5) ); end; - return Def.ActorFrame{ creditScroller..{ InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64), diff --git a/Utils/build.sh b/Utils/build.sh index c5a3ff58f4..12c37f0e2f 100755 --- a/Utils/build.sh +++ b/Utils/build.sh @@ -3,11 +3,60 @@ verbose=0 msg= notify=0 +s_configure= +s_stepmania= +s_data= +s_rebuild= +s_ffmpeg= +num_jobs=1 + + +usage () { + echo "Usage: $0 [OPTION] [-- [CONFIGURE_OPTIONS]]" + echo 'Build StepMania.' + echo "CONFIGURE_OPTIONS are passed to StepMania's configure." + echo '' + echo ' -c, --configure stop after configuring StepMania.' + echo ' -s, --stepmania stop after building StepMania' + echo ' (do not copy binaries).' + echo ' -d, --data generate GameData.smzip.' + echo ' -r, --rebuild rebuild StepMania (soft).' + echo ' -f, --ffmpeg build with ffmpeg 0.6.1.' + echo ' -j#, --jobs=# pass -j# to make.' + echo ' -h, --help print this help and exit.' + echo ' -v, --verbose increase verbosity (up to 2).' + echo ' --version print version and exit.' + exit $1 +} + if which notify-send >/dev/null 2>&1; then #Comment the following line out to disable notify. notify=1 fi +if which getopt >/dev/null 2>&1; then + set -- `getopt -l configure,stepmania,data,rebuild,ffmpeg,help \ + -l jobs::,verbose,version -- drfcshj::v $*` +fi + +while [ $# -gt 0 ]; do + arg=$1 + shift + case $arg in + -c|--configure) s_configure=yes ;; + -s|--stepmania) s_stepmania=yes ;; + -d|--data) s_data=yes ;; + -r|--rebuild) s_rebuild=yes ;; + -f|--ffmpeg) s_ffmpeg=yes ;; + -h|--help) usage 0 ;; + -j|--jobs) num_jobs=$1; shift ;; + -v|--verbose) verbose=$[verbose+1] ;; + --version) version ;; + --) break ;; + *) usage 1 ;; + esac +done + message () { msg=$1 if [ $verbose -gt 0 ]; then @@ -15,7 +64,7 @@ message () { else echo -n "$msg..." fi - if [ $notify -gt 0 ]; then + if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then notify-send "StepMania build script" "$msg..." fi } @@ -26,7 +75,7 @@ success () { else echo okay. fi - if [ $notify -gt 0 ]; then + if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then notify-send "StepMania build script" "$msg...okay." fi } @@ -41,11 +90,11 @@ failure () { echo "$msg...failed$error" else echo failed$error + echo "Consider passing --verbose to $0. Pass --help for details." fi - if [ $notify -gt 0 ]; then + if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then notify-send "StepMania build script failed" "$msg...failed$error" fi; - echo "Consider passing --verbose to $0. Pass --help for details." exit 1 } @@ -61,115 +110,55 @@ call () { success } -usage () { - echo "Usage: $0 [OPTION] [-- [CONFIGURE_OPTIONS]]" - echo 'Build StepMania with a statically linked ffmpeg.' - echo "CONFIGURE_OPTIONS are passed to StepMania's configure." - echo '' - echo ' -d, --download stop after ffmpeg download.' - echo ' -f, --ffmpeg stop after building ffmpeg.' - echo ' -c, --configure stop after configuring StepMania.' - echo ' -s, --stepmania stop after building StepMania' - echo ' (do not copy binaries).' - echo ' -j#, --jobs=# pass -j# to make.' - echo ' -h, --help print this help and exit.' - echo ' -v, --verbose increase verbosity (up to 2).' - echo ' --version print version and exit.' - exit $1 -} - version () { - echo 'build.sh (StepMania) 2.62' + echo 'build.sh (StepMania) 2.63' echo 'Copyright (C) 2006-2009 Steve Checkoway' echo 'StepMania is Copyright (C) 2001-2011 Chris Danford et al.' echo 'sm-ssc is Copyright (C) 2009-2011 the spinal shark collective' exit 0 } -if ! test -x configure; then - msg='Checking for configure' - verbose=1 - failure 'file not found.' -fi - -if which getopt >/dev/null 2>&1; then - set -- `getopt -l download,ffmpeg,configure,stepmania,help \ - -l jobs::,verbose,version -- dfcshj::v $*` -fi - -s_download= -s_ffmpeg= -s_configure= -s_stepmania= -num_jobs=1 -while [ $# -gt 0 ]; do - arg=$1 - shift - case $arg in - -d|--download) s_download=yes ;; - -f|--ffmpeg) s_ffmpeg=yes ;; - -c|--configure) s_configure=yes ;; - -s|--stepmania) s_stepmania=yes ;; - -h|--help) usage 0 ;; - -j|--jobs) num_jobs=$1; shift ;; - -v|--verbose) verbose=$[verbose+1] ;; - --version) version ;; - --) break ;; - *) usage 1 ;; - esac -done -version=0.6.1 -ffmpeg=ffmpeg-$version -directory=http://ffmpeg.org/releases -if [ ! -d $ffmpeg ]; then - message 'Downloading ffmpeg' - if which bzip2 &>/dev/null; then - zipcommand=jxf - ffmarc=ffmpeg-$version.tar.bz2 - elif which gzip &>/dev/null; then - zipcommand=zxf - ffmarc=ffmpeg-$version.tar.gz +if [ -n "$s_data" ]; then + message 'Generating GameData.smzip' + if [ -f _build/Makefile ]; then + cd _build + call make dist-hook + mv ./GameData.smzip ../ + cd .. else - failure 'Install either bzip2 or gzip.' + failure "You need to configure StepMania first." fi - if which curl &>/dev/null; then - get='curl -O' - elif which wget &>/dev/null; then - get=wget - else - failure 'Install either curl or wget.' - fi - call $get $directory/$ffmarc - message 'Extracting ffmpeg' - call tar -$zipcommand $ffmarc - message 'Cleaning up temporary files' - call rm $ffmarc + exit 0 fi -if [ -n "$s_download" ]; then exit 0; fi -args='--enable-static --disable-debug ---enable-memalign-hack --disable-network --enable-small ---disable-encoders --disable-ffserver ---enable-demuxer=avi ---enable-demuxer=h261 --enable-demuxer=h263 --enable-demuxer=h264 ---enable-demuxer=m4v --enable-demuxer=mjpeg --enable-demuxer=mov ---enable-demuxer=mpegps --enable-demuxer=mpegts ---enable-demuxer=mpegvideo --enable-demuxer=ogg ---enable-demuxer=rawvideo --enable-demuxer=yuv4mpegpipe ---enable-decoder=h261 --enable-decoder=h263 ---enable-decoder=h263i --enable-decoder=h264 --enable-decoder=huffyuv ---enable-decoder=mjpeg --enable-decoder=mjpegb ---enable-decoder=mpeg_xvmc --enable-decoder=mpeg1video ---enable-decoder=mpeg2video --enable-decoder=mpeg4 ---enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 ---enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 ---enable-decoder=rawvideo --enable-decoder=theora ---enable-parser=h261 --enable-parser=h263 --enable-parser=h264 ---enable-parser=mjpeg --enable-parser=mpeg4video ---enable-parser=mpegaudio --enable-parser=mpegvideo ---enable-parser=ac3 ---extra-cflags=-Dattribute_deprecated=' -if [ ! -f $ffmpeg/_inst/lib/libavcodec.a ]; then +if [ -n "$s_ffmpeg" ]; then + ffversion=0.6.1 + ffmpeg=ffmpeg-$ffversion + if [ ! -d $ffmpeg ]; then + message 'Downloading ffmpeg' + if which bzip2 &>/dev/null; then + zipcommand=jxf + ffmarc=$ffmpeg.tar.bz2 + elif which gzip &>/dev/null; then + zipcommand=zxf + ffmarc=$ffmpeg.tar.gz + else + failure 'Install either bzip2 or gzip.' + fi + if which wget &>/dev/null; then + get=wget + elif which curl &>/dev/null; then + get='curl -O' + else + failure 'Install either curl or wget.' + fi + call $get "http://ffmpeg.org/releases/$ffmarc" + message 'Extracting ffmpeg' + call tar -$zipcommand $ffmarc + message 'Cleaning up temporary files' +# call rm $ffmarc + fi + args="--enable-static --enable-gpl --enable-version3 --enable-nonfree --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --disable-debug --enable-memalign-hack --disable-network --enable-small --disable-encoders --disable-ffserver --extra-cflags=-Dattribute_deprecated=" cd $ffmpeg message 'Configuring ffmpeg' call ./configure --prefix="`pwd`/_inst" $args @@ -177,27 +166,33 @@ if [ ! -f $ffmpeg/_inst/lib/libavcodec.a ]; then call make --jobs="$num_jobs" install-libs install-headers cd .. fi -if [ -n "$s_ffmpeg" ]; then exit 0; fi -if [ ! -f _build/src/config.h ]; then + +if [ ! -f _build/src/config.h ] || [ -n "$s_rebuild" ]; then message 'Configuring StepMania' mkdir -p _build cd _build - call ../configure --with-ffmpeg=../$ffmpeg/_inst "$@" + if [ -n "$s_ffmpeg" ]; then + call ../configure --with-ffmpeg=../$ffmpeg/_inst "$@" + else + call ../configure "$@" + fi cd .. fi if [ -n "$s_configure" ]; then exit 0; fi -if [ ! -f _build/src/stepmania ]; then +if [ ! -f _build/src/stepmania ] || [ -n "$s_rebuild" ]; then message 'Building StepMania' - cd _build || failure + cd _build call make --jobs="$num_jobs" cd .. fi if [ -n "$s_stepmania" ]; then exit 0; fi -if [ ! -f stepmania -o ! -f GtkModule.so ]; then +if [ ! -f stepmania -o ! -f GtkModule.so ] || [ -n "$s_rebuild" ]; then message 'Copying StepMania binaries' - call cp _build/src/stepmania . - # todo: check for existence of GtkModule.so -freem - #_build/src/GtkModule.so . # we tend to not have this file! + cp _build/src/stepmania . + if [ -e _build/src/GtkModule.so ]; then + cp _build/src/GtkModule.so . # we tend to not have this file! + fi + success fi diff --git a/Utils/make-src-archive.sh b/Utils/make-src-archive.sh old mode 100644 new mode 100755 index 22829896c2..2b460a0ca8 --- a/Utils/make-src-archive.sh +++ b/Utils/make-src-archive.sh @@ -21,18 +21,16 @@ cp -dpR autoconf $PRODUCTVER/ #cp -dpR Utils $PRODUCTVER/ cp -dpR src $PRODUCTVER/ -cp Docs/Copying.MAD Docs/Licenses.txt Makefile.am aclocal.m4 \ - configure Makefile.in configure.ac $PRODUCTVER +cp Docs/Copying.MAD Docs/Licenses.txt Docs/Changelog_sm5.txt \ + Docs/Changelog_sm-ssc.txt Docs/Changelog_SSCformat.txt \ + Docs/credits.txt Docs/KnownIssues.txt \ + Makefile.am aclocal.m4 configure Makefile.in configure.ac \ + $PRODUCTVER echo Pruning... cd $PRODUCTVER/src -# Obsolete and going away: -rm -rf SDL-1.2.5 -rm -rf SDL-1.2.6 # Incomplete: rm -rf Texture Font Generator -# Xbox: -rm -rf SDLx-0.02 # Unused: rm -rf smlobby @@ -46,12 +44,11 @@ rm -rf vorbis rm -rf BaseClasses rm -rf ddk rm -rf smpackage -rm -rf sdl_xbox_includes -rm -rf SDLx-0.02.rar cd .. find . -type d -name 'CVS' | xargs rm -rf +find . -type d -name '.svn' | xargs rm -rf find . -type f -name '*.lib' | xargs rm -rf find . -type f -name '*.exe' | xargs rm -rf find . -type f -name '*.a' | xargs rm -rf diff --git a/sm-ssc.nsi b/sm-ssc.nsi index 22b2e9c652..60033fc275 100644 --- a/sm-ssc.nsi +++ b/sm-ssc.nsi @@ -670,12 +670,6 @@ FunctionEnd Function .onInit - nsisos::osversion - ${If} $R0 >= 6 - ;vista & win7 - StrCpy $INSTDIR "%HOMEPATH%\${PRODUCT_ID}" - ${EndIf} - ; Force show language selection for debugging ;!define MUI_LANGDLL_ALWAYSSHOW !insertmacro MUI_LANGDLL_DISPLAY diff --git a/src/GameSoundManager.cpp b/src/GameSoundManager.cpp index 78fca8efa6..5c7679303b 100644 --- a/src/GameSoundManager.cpp +++ b/src/GameSoundManager.cpp @@ -807,9 +807,43 @@ public: p->DimMusic( fVolume, fDurationSeconds ); return 0; } - static int PlayOnce( T* p, lua_State *L ) { RString sPath = SArg(1); p->PlayOnce( sPath ); return 0; } - static int PlayAnnouncer( T* p, lua_State *L ) { RString sPath = SArg(1); p->PlayOnceFromAnnouncer( sPath ); return 0; } - static int GetPlayerBalance( T* p, lua_State *L ) { PlayerNumber pn = Enum::Check(L, 1); lua_pushnumber( L, p->GetPlayerBalance(pn) ); return 1; } + static int PlayOnce( T* p, lua_State *L ) + { + RString sPath = SArg(1); + p->PlayOnce( sPath ); + return 0; + } + static int PlayAnnouncer( T* p, lua_State *L ) + { + RString sPath = SArg(1); + p->PlayOnceFromAnnouncer( sPath ); + return 0; + } + static int GetPlayerBalance( T* p, lua_State *L ) + { + PlayerNumber pn = Enum::Check(L, 1); + lua_pushnumber( L, p->GetPlayerBalance(pn) ); + return 1; + } + static int PlayMusicPart( T* p, lua_State *L ) + { + RString musicPath = SArg(1); + float musicStart = FArg(2); + float musicLength = FArg(3); + float fadeIn = 0; + float fadeOut = 0; + if (lua_gettop(L) >= 4 && !lua_isnil(L,4)) + { + fadeIn = FArg(4); + if (lua_gettop(L) >= 5 && !lua_isnil(L,5)) + { + fadeOut = FArg(5); + } + } + p->PlayMusic(musicPath, NULL, false, musicStart, musicLength, + fadeIn, fadeOut); + return 0; + } LunaGameSoundManager() { @@ -817,6 +851,7 @@ public: ADD_METHOD( PlayOnce ); ADD_METHOD( PlayAnnouncer ); ADD_METHOD( GetPlayerBalance ); + ADD_METHOD( PlayMusicPart ); } }; diff --git a/src/NoteDataUtil.cpp b/src/NoteDataUtil.cpp index d5cbc1d8b8..2aeb12bc91 100644 --- a/src/NoteDataUtil.cpp +++ b/src/NoteDataUtil.cpp @@ -253,7 +253,7 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS if( tn.type == TapNote::hold_head && tn.iDuration == MAX_NOTE_ROW ) { int iRow = begin->first; - LOG->UserLog( "", "", "While loading SM note data, there was an unmatched 2 at beat %f", NoteRowToBeat(iRow) ); + LOG->UserLog( "", "", "While loading .sm/.ssc note data, there was an unmatched 2 at beat %f", NoteRowToBeat(iRow) ); out.RemoveTapNote( t, begin ); } diff --git a/src/NotesLoaderDWI.cpp b/src/NotesLoaderDWI.cpp index ea6aa58e28..c97c39464f 100644 --- a/src/NotesLoaderDWI.cpp +++ b/src/NotesLoaderDWI.cpp @@ -426,10 +426,14 @@ static bool LoadFromDWITokens( out.m_StepsType = GetTypeFromMode(sMode); + // if the meter is empty, force it to 1. + if( sNumFeet.empty() ) + sNumFeet = "1"; + out.SetMeter(StringToInt(sNumFeet)); out.SetDifficulty( DwiCompatibleStringToDifficulty(sDescription) ); - + out.SetNoteData( ParseNoteData(sStepData1, sStepData2, out, sPath) ); out.TidyUpData(); diff --git a/src/NotesLoaderKSF.cpp b/src/NotesLoaderKSF.cpp index 06a21e0000..24c6856398 100644 --- a/src/NotesLoaderKSF.cpp +++ b/src/NotesLoaderKSF.cpp @@ -141,7 +141,7 @@ static bool LoadFromKSFFile( const RString &sPath, Steps &out, Song &song, bool else if( sValueName=="DIFFICULTY" ) { - out.SetMeter( max(StringToInt(sParams[1]), 0) ); + out.SetMeter( max(StringToInt(sParams[1]), 1) ); } // new cases from Aldo_MX's fork: else if( sValueName=="PLAYER" ) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index e32485ddca..73c9cf36cf 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -103,6 +103,12 @@ void SMLoader::LoadFromTokens( out.SetDifficulty( Difficulty_Challenge ); } + if( sMeter.empty() ) + { + // some simfiles (e.g. X-SPECIALs from Zenius-I-Vanisher) don't + // have a meter on certain steps. Make the meter 1 in these instances. + sMeter = "1"; + } out.SetMeter( StringToInt(sMeter) ); out.SetSMNoteData( sNoteData ); diff --git a/src/RageDisplay.cpp b/src/RageDisplay.cpp index b1c8c1b46f..02deceb34a 100644 --- a/src/RageDisplay.cpp +++ b/src/RageDisplay.cpp @@ -1012,11 +1012,32 @@ public: LuaHelpers::Push( L, params.height ); return 1; } + + static int GetFPS( T* p, lua_State *L ) + { + lua_pushnumber(L, p->GetFPS()); + return 1; + } + + static int GetVPF( T* p, lua_State *L ) + { + lua_pushnumber(L, p->GetVPF()); + return 1; + } + + static int GetCumFPS( T* p, lua_State *L ) + { + lua_pushnumber(L, p->GetCumFPS()); + return 1; + } LunaRageDisplay() { ADD_METHOD( GetDisplayWidth ); ADD_METHOD( GetDisplayHeight ); + ADD_METHOD( GetFPS ); + ADD_METHOD( GetVPF ); + ADD_METHOD( GetCumFPS ); } }; diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 3efd3010cc..9dbd2c59c7 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -1004,6 +1004,9 @@ void ScreenEdit::PlayTicks() m_GameplayAssist.PlayTicks( m_Player->GetNoteData(), m_Player->GetPlayerState() ); } +static ThemeMetric FADE_IN_PREVIEW("ScreenEdit", "FadeInPreview"); +static ThemeMetric FADE_OUT_PREVIEW("ScreenEdit", "FadeOutPreview"); + void ScreenEdit::PlayPreviewMusic() { SOUND->StopMusic(); @@ -1013,8 +1016,8 @@ void ScreenEdit::PlayPreviewMusic() false, m_pSong->m_fMusicSampleStartSeconds, m_pSong->m_fMusicSampleLengthSeconds, - 0.0f, - 1.5f ); + FADE_IN_PREVIEW, + FADE_OUT_PREVIEW ); } void ScreenEdit::MakeFilteredMenuDef( const MenuDef* pDef, MenuDef &menu ) diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index a2d9e4e6f2..7e29ce2ad0 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -1429,7 +1429,7 @@ void ScreenGameplay::PlayTicks() } /* Play announcer "type" if it's been at least fSeconds since the last announcer. */ -void ScreenGameplay::PlayAnnouncer( RString type, float fSeconds ) +void ScreenGameplay::PlayAnnouncer( const RString &type, float fSeconds, float *fDeltaSeconds ) { if( GAMESTATE->m_fOpponentHealthPercent == 0 ) return; // Shut the announcer up @@ -1445,9 +1445,9 @@ void ScreenGameplay::PlayAnnouncer( RString type, float fSeconds ) GAMESTATE->m_Position.m_fSongBeat < GAMESTATE->m_pCurSong->GetFirstBeat()) return; - if( m_fTimeSinceLastDancingComment < fSeconds ) + if( *fDeltaSeconds < fSeconds ) return; - m_fTimeSinceLastDancingComment = 0; + *fDeltaSeconds = 0; SOUND->PlayOnceFromAnnouncer( type ); } diff --git a/src/ScreenGameplay.h b/src/ScreenGameplay.h index 4b8258c156..182d12ed31 100644 --- a/src/ScreenGameplay.h +++ b/src/ScreenGameplay.h @@ -206,7 +206,8 @@ protected: void GetMusicEndTiming( float &fSecondsToStartFadingOutMusic, float &fSecondsToStartTransitioningOut ); void LoadLights(); void PauseGame( bool bPause, GameController gc = GameController_Invalid ); - void PlayAnnouncer( RString type, float fSeconds ); + void PlayAnnouncer( const RString &type, float fSeconds, float *fDeltaSeconds ); + void PlayAnnouncer( const RString &type, float fSeconds ) { PlayAnnouncer(type, fSeconds, &m_fTimeSinceLastDancingComment); } void UpdateLights(); void SendCrossedMessages(); void BeginBackingOutFromGameplay(); diff --git a/src/ScreenSelectMusic.cpp b/src/ScreenSelectMusic.cpp index 2e3e3b03b4..128527331f 100644 --- a/src/ScreenSelectMusic.cpp +++ b/src/ScreenSelectMusic.cpp @@ -729,8 +729,7 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) } // two part confirms only means we can actually change songs here, - // so we need some hackery. oops looks like this is never going into - // mainline sm4 then -aj + // so we need some hackery. -aj if( TWO_PART_CONFIRMS_ONLY ) { if( m_SelectionState == SelectionState_SelectingSteps ) @@ -1080,6 +1079,8 @@ void ScreenSelectMusic::HandleMessage( const Message &msg ) } else { + // todo: handle changing rave difficulty on join -aj + Steps* pSteps = m_vpSteps.empty()? NULL: m_vpSteps[m_iSelection[pn]]; GAMESTATE->m_pCurSteps[pn].Set( pSteps ); } diff --git a/src/Song.cpp b/src/Song.cpp index fa3f0b475e..84f45bf124 100644 --- a/src/Song.cpp +++ b/src/Song.cpp @@ -613,8 +613,9 @@ void Song::TidyUpData( bool fromCache, bool duringCache ) // find an image with "bg" or "background" in the file name vector arrayPossibleBGs; - GetImageDirListing( m_sSongDir + "*bg*", arrayPossibleBGs ); GetImageDirListing( m_sSongDir + "*background*", arrayPossibleBGs ); + // don't match e.g. "subgroup", "hobgoblin", etc. + GetImageDirListing( m_sSongDir + "*bg", arrayPossibleBGs ); if( !arrayPossibleBGs.empty() ) m_sBackgroundFile = arrayPossibleBGs[0]; } @@ -644,8 +645,8 @@ void Song::TidyUpData( bool fromCache, bool duringCache ) { // a rectangular graphic, not to be confused with CDImage above. vector arrayPossibleDiscImages; - GetImageDirListing( m_sSongDir + "* Disc", arrayPossibleDiscImages ); - GetImageDirListing( m_sSongDir + "* Title", arrayPossibleDiscImages ); + GetImageDirListing( m_sSongDir + "* disc", arrayPossibleDiscImages ); + GetImageDirListing( m_sSongDir + "* title", arrayPossibleDiscImages ); if( !arrayPossibleDiscImages.empty() ) m_sDiscFile = arrayPossibleDiscImages[0]; } diff --git a/src/StepMania.xpm b/src/StepMania.xpm index 608708ab7b..92d7c3271e 100644 --- a/src/StepMania.xpm +++ b/src/StepMania.xpm @@ -1,60 +1,345 @@ /* XPM */ -static char *icon[] = { -"32 32 21 1", -/* colors */ -" c #000000", -". c #737300", -"X c #FF00FF", -"o c #004A73", -"O c #969600", -"+ c #006296", -"@ c #001950", -"# c #B9B900", -"$ c #007AB9", -"% c #FFB848", -"& c #734A00", -"* c #DCDC00", -"= c #505000", -"- c #323232", -"; c #003250", -": c #503200", -"> c #262626", -", c #1A1A1A", -"< c #0E0E0E", -"1 c #808000", -"2 c None", -/* pixels */ -"XXXXXXXXXXXXXXXXXX XXXXXXXXXX", -"XXXXXXXXXXXXXX <,:::>< XXXXXXX", -"XXXXXXXXXXXX <=1OOOOO11.:;<, XXX", -"XXXXXXXX =#***###OOOOO:;$$;>> XX", -"XXXXXXX =****##1.OOOO:;$+>,,= O***####.@,=,;$$>=OO1.=&#*#####=>;o$$;:OO1..., ", -"XX $$$;:OO111.1: ", -"XXX ;o$$o,&O#*#,o$$o:OOOOO111= ", -"XXX :.,;$$+;,:1>o$$$o=#OOOOO11= ", -"XXX =#O=>+$$$o;o$$$$+,1#OOOOOO= ", -"XXX .##%1,+$$$$$$$$$$o:##OOOOO= ", -"XXX##O. X", -"XXX=11OO####O,+$$$$$$$$$$,O##= X", -"XXX=.1OO#OOO#.@$$$$$$$$+@&##OXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXX ;;XXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXX XXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -}; - +static char * sm5icon_xpm[] = { +"32 32 310 2", +" c None", +". c #000000", +"+ c #1A0502", +"@ c #4B0D04", +"# c #671104", +"$ c #691104", +"% c #6B1105", +"& c #6D1105", +"* c #6E1205", +"= c #701205", +"- c #510E04", +"; c #1C0602", +"> c #260702", +", c #BD4212", +"' c #F49329", +") c #F9AA31", +"! c #FAAF3A", +"~ c #FAB140", +"{ c #FAB142", +"] c #FAB246", +"^ c #FAB44D", +"/ c #FAB550", +"( c #FAB552", +"_ c #FAB656", +": c #FAB95D", +"< c #FAB75C", +"[ c #F6A852", +"} c #D54E15", +"| c #2B0702", +"1 c #240602", +"2 c #E0661B", +"3 c #FDA32B", +"4 c #FE9B29", +"5 c #FC9D2A", +"6 c #FD9E2A", +"7 c #FD9F2A", +"8 c #FDA32C", +"9 c #FDA52C", +"0 c #FDA72C", +"a c #FEA82E", +"b c #FEAA31", +"c c #FEAD38", +"d c #FEAE3B", +"e c #FEAF3F", +"f c #FEB040", +"g c #FEB044", +"h c #FEB248", +"i c #FEB34B", +"j c #FEB54F", +"k c #FEB651", +"l c #FEB95B", +"m c #F18233", +"n c #010000", +"o c #B03B10", +"p c #F88022", +"q c #F67921", +"r c #F67A21", +"s c #F67D22", +"t c #F77E22", +"u c #F87F22", +"v c #F98323", +"w c #F98423", +"x c #FA8623", +"y c #FA8725", +"z c #FA8927", +"A c #FA8C2E", +"B c #FA8D30", +"C c #FA8F32", +"D c #FA9033", +"E c #FA9037", +"F c #FA933A", +"G c #FA943C", +"H c #FA973F", +"I c #FB9841", +"J c #FB9C4A", +"K c #D14914", +"L c #010100", +"M c #280602", +"N c #E65F19", +"O c #F05F1A", +"P c #EE5E1A", +"Q c #EF601A", +"R c #F0601A", +"S c #F1631B", +"T c #F2641B", +"U c #F3651B", +"V c #F4671C", +"W c #F5681C", +"X c #F66A1C", +"Y c #F76A1C", +"Z c #F76B1D", +"` c #F76D1F", +" . c #F77223", +".. c #F77325", +"+. c #F77428", +"@. c #F77529", +"#. c #F7772B", +"$. c #F87A2E", +"%. c #F87B30", +"&. c #F87E32", +"*. c #F97F33", +"=. c #F27D37", +"-. c #310802", +";. c #460D03", +">. c #E65417", +",. c #E64D14", +"'. c #E64F15", +"). c #E74F15", +"!. c #E85015", +"~. c #EA5115", +"{. c #EA5316", +"]. c #EC5416", +"^. c #ED5416", +"/. c #EE5516", +"(. c #F05717", +"_. c #F15717", +":. c #F25917", +"<. c #F35917", +"[. c #F35A18", +"}. c #F35D1A", +"|. c #F4611E", +"1. c #F4621F", +"2. c #F46421", +"3. c #F46522", +"4. c #F46624", +"5. c #F46926", +"6. c #F46A28", +"7. c #F56D2A", +"8. c #F27331", +"9. c #561004", +"0. c #3A0A03", +"a. c #DD4F15", +"b. c #DD4613", +"c. c #DC4813", +"d. c #DF4A14", +"e. c #E04A14", +"f. c #E14B14", +"g. c #E34C14", +"h. c #E44D15", +"i. c #E74E15", +"j. c #E94F15", +"k. c #EB5115", +"l. c #EC5115", +"m. c #EE5215", +"n. c #F05215", +"o. c #F05316", +"p. c #F05618", +"q. c #F15B1C", +"r. c #F05B1C", +"s. c #F05C1D", +"t. c #F05E1F", +"u. c #F05F20", +"v. c #F06022", +"w. c #F16323", +"x. c #F26425", +"y. c #F06D2E", +"z. c #591105", +"A. c #0B0201", +"B. c #C94913", +"C. c #D84D15", +"D. c #D44B14", +"E. c #D54C14", +"F. c #D94D15", +"G. c #DB4E15", +"H. c #DF5116", +"I. c #E25216", +"J. c #E35416", +"K. c #E55617", +"L. c #E65817", +"M. c #E45918", +"N. c #E65C18", +"O. c #E75C18", +"P. c #E85E19", +"Q. c #E7611C", +"R. c #E86420", +"S. c #E86522", +"T. c #E86624", +"U. c #E86725", +"V. c #E86826", +"W. c #E96A28", +"X. c #EA7133", +"Y. c #581104", +"Z. c #581506", +"`. c #D65416", +" + c #CD4E15", +".+ c #CE4F15", +"++ c #D15116", +"@+ c #D35116", +"#+ c #D55216", +"$+ c #D55416", +"%+ c #D55718", +"&+ c #D85A18", +"*+ c #DA5B18", +"=+ c #DE5D19", +"-+ c #E05E19", +";+ c #E35F19", +">+ c #E55F19", +",+ c #E6601A", +"'+ c #E6621C", +")+ c #E76520", +"!+ c #E76622", +"~+ c #E76724", +"{+ c #E76825", +"]+ c #E76927", +"^+ c #E97234", +"/+ c #7E2009", +"(+ c #D25617", +"_+ c #D35617", +":+ c #D05517", +"<+ c #D15717", +"[+ c #D55918", +"}+ c #D75A18", +"|+ c #D35918", +"1+ c #320902", +"2+ c #742009", +"3+ c #A2340E", +"4+ c #B0380F", +"5+ c #B1380F", +"6+ c #B53A0F", +"7+ c #B83A0F", +"8+ c #BA390F", +"9+ c #D85717", +"0+ c #8B2109", +"a+ c #E05D19", +"b+ c #8A2309", +"c+ c #DC5C19", +"d+ c #CE5617", +"e+ c #872209", +"f+ c #CA5517", +"g+ c #CC5517", +"h+ c #832109", +"i+ c #C55216", +"j+ c #C65316", +"k+ c #802109", +"l+ c #CF5617", +"m+ c #C15116", +"n+ c #C35216", +"o+ c #E86F30", +"p+ c #7E2109", +"q+ c #BC4F15", +"r+ c #BF5015", +"s+ c #E86E2E", +"t+ c #7A2008", +"u+ c #B84D15", +"v+ c #BA4E15", +"w+ c #E05B18", +"x+ c #E86E2D", +"y+ c #771F08", +"z+ c #B44B14", +"A+ c #B64C14", +"B+ c #8F2409", +"C+ c #A8330E", +"D+ c #E86C2B", +"E+ c #751E08", +"F+ c #B14A14", +"G+ c #B34B14", +"H+ c #8D260A", +"I+ c #A6320D", +"J+ c #541004", +"K+ c #621706", +"L+ c #AD4813", +"M+ c #AF4914", +"N+ c #8A260A", +"O+ c #A4320D", +"P+ c #130301", +"Q+ c #B04713", +"R+ c #AB4713", +"S+ c #A94713", +"T+ c #86240A", +"U+ c #A2320D", +"V+ c #4B1105", +"W+ c #A84613", +"X+ c #82230A", +"Y+ c #521004", +"Z+ c #5B1706", +"`+ c #A64613", +" @ c #81230A", +".@ c #9F320E", +"+@ c #491004", +"@@ c #A44412", +"#@ c #7E230A", +"$@ c #9D300D", +"%@ c #4E0F04", +"&@ c #120301", +"*@ c #A64212", +"=@ c #7A2109", +"-@ c #812209", +";@ c #2C0702", +">@ c #4D1305", +",@ c #762109", +"'@ c #2F0802", +")@ c #B03C10", +"!@ c #4F1405", +"~@ c #A74212", +"{@ c #AE4613", +"]@ c #541606", +"^@ c #701D08", +"/@ c #D45417", +"(@ c #270702", +"_@ c #3D0F04", +":@ c #511506", +"<@ c #401004", +"[@ c #130401", +"}@ c #591506", +"|@ c #C34A14", +"1@ c #AE3B10", +"2@ c #050201", +"3@ c #2D0903", +"4@ c #3D0D03", +"5@ c #190602", +" . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . + @ # $ $ % % & & * = = = = = = = = = = - ; . . ", +" . > , ' ) ! ! ~ { ] ^ / ( _ : : : : : : : : : < [ } | . ", +" . 1 2 3 4 5 6 6 7 8 9 9 0 0 a b c c d e f g h i j k l m | . ", +". n o p q r r s t t u v w w x x y z A A B C D E F G H I J K L . ", +". M N O P Q R R S T T U V W W X Y Z ` . ...+.@.#.$.%.&.*.=.-.. ", +". ;.>.,.'.).!.~.~.{.].^./.(._._.:.<.[.}.|.|.1.2.3.4.5.6.7.8.9.. ", +". 0.a.b.c.d.e.f.g.g.h.i.i.j.k.l.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.. ", +". A.B.C.D.E.C.F.G.a.a.H.I.I.J.K.L.M.N.O.P.Q.R.R.S.T.U.V.W.X.Y.. ", +" . Z.`. + +.+++@+#+`.$+%+&+&+*+=+-+-+;+>+,+'+)+)+!+~+{+]+^+Y.. ", +" . . /+(+_+:+:+(+<+[+}+&+|+}+&+*+=+-+-+;+>+,+'+)+)+!+~+{+^+Y.. ", +" . . 1+2+3+4+5+6+6+7+8+9+|+}+&+*+=+-+-+;+>+,+'+)+)+!+~+^+Y.. ", +" . . . . . . . . . 0+a+<+|+}+&+*+=+-+-+;+>+,+'+)+)+!+^+Y.. ", +" . . . . b+c+d+<+<+|+}+&+*+=+-+-+;+>+,+'+)+)+^+Y.. ", +" . . e+&+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+'+)+^+Y.. ", +" . . h+<+i+j+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+'+^+Y.. ", +" . . k+l+m+n+i+j+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+o+Y.. ", +" . . p+f+q+r+m+n+i+j+f+g+d+<+<+[+}+&+*+=+-+-+;+>+s+Y.. ", +" . . t+i+u+v+q+r+m+n+i+j+f+g+d+=+w+[+}+&+*+=+-+-+;+x+9.. ", +" . . y+m+z+A+u+v+q+r+m+n+i+j+f+c+B+C+c+|+}+&+*+=+-+-+D+9.. ", +" . . E+q+F+G+z+A+u+v+q+r+m+n+i+&+H+. I+*+<+|+}+&+*+=+-+]+J+. ", +" . K+u+L+M+F+G+z+A+u+v+q+r+m+<+N+. . O+&+<+<+|+}+&+*+=+{+J+. ", +" . P+Q+R+S+L+M+F+G+z+A+u+v+q+l+T+. . . U+[+d+<+<+|+}+&+*+~+J+. ", +" . V+G+W+S+S+L+M+F+G+z+A+u+f+X+. . . U+|+g+d+<+<+|+}+&+)+Y+. ", +" . Z+F+`+W+S+S+L+M+F+G+z+i+ @. . . .@<+f+g+d+<+<+|+}+)+Y+. ", +" . +@M+@@`+W+S+S+L+M+F+m+#@. . . $@l+j+f+g+d+<+<+|+'+%@. ", +" . &@*@W+@@`+W+S+S+L+q+=@. . . -@<+i+j+f+g+d+<+<+,+;@. ", +" . >@L+W+@@`+W+M+u+,@. . . '@l+i+i+j+f+g+d+-+)@L . ", +" . . !@~@M+F+G+{@]@. . . . ^@<+f+i+j+f+c+/@(@. ", +" . . &@_@:@<@[@. . . . }@|@<+[+&+1@> . ", +" . . . . . . . 2@3@4@5@n . ", +" . . . . . "}; diff --git a/src/TimingData.cpp b/src/TimingData.cpp index a14043772f..41994f3a39 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -36,8 +36,11 @@ void TimingData::Clear() vector &vSegs = m_avpTimingSegments[tst]; for( unsigned i = 0; i < vSegs.size(); ++i ) { - //LOG->Trace( "deleting %p", vSegs[i] ); - SAFE_DELETE( vSegs[i] ); } +#if defined(DEBUG) + LOG->Trace( "TimingData::Clear(): deleting %p", vSegs[i] ); +#endif + SAFE_DELETE( vSegs[i] ); + } vSegs.clear(); } @@ -312,8 +315,8 @@ TimingSegment* GetSegmentAtRow( int iNoteRow, TimingSegmentType tst ) static void EraseSegment( vector &vSegs, int index, TimingSegment *cur ) { - LOG->Trace( "EraseSegment(%d, %p)", index, cur ); #ifdef DEBUG + LOG->Trace( "EraseSegment(%d, %p)", index, cur ); cur->DebugPrint(); #endif @@ -325,8 +328,8 @@ static void EraseSegment( vector &vSegs, int index, TimingSegmen // so we must deep-copy it (with ::Copy) for new allocations. void TimingData::AddSegment( const TimingSegment *seg ) { - LOG->Trace( "AddSegment( %s )", TimingSegmentTypeToString(seg->GetType()).c_str() ); #ifdef DEBUG + LOG->Trace( "AddSegment( %s )", TimingSegmentTypeToString(seg->GetType()).c_str() ); seg->DebugPrint(); #endif @@ -390,7 +393,9 @@ void TimingData::AddSegment( const TimingSegment *seg ) // the segment at or before this row is equal to the new one; ignore it if( bOnSameRow && (*cur) == (*seg) ) { +#if defined(DEBUG) LOG->Trace( "equals previous segment, ignoring" ); +#endif return; } diff --git a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp index 21e5e70637..f28dbfe0cb 100644 --- a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp +++ b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp @@ -22,7 +22,7 @@ extern "C" const char *Init( int *argc, char ***argv ) return "Couldn't initialize gtk (cannot open display)"; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER ); + gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS ); gtk_window_set_default_size( GTK_WINDOW(window), 512,96 ); //gtk_window_set_icon( GTK_WINDOW(window), ); gtk_widget_realize(window);