diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 0ec3f787f4..cede3f83a6 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -8,6 +8,12 @@ ________________________________________________________________________________ StepMania 5.0 $next | 2011???? -------------------------------------------------------------------------------- +2011/09/02 +---------- +* [MenuTimer] Added start(), disable() Lua bindings. Also renamed setseconds to + SetSeconds to match GetSeconds. [AJ] +* [GameManager] beat "versus" -> "versus5"; fix beat versus7 being "single7". [1a2a3a2a1a] + 2011/08/27 ---------- * Updated libjpeg to 8c. diff --git a/Docs/KnownIssues.txt b/Docs/KnownIssues.txt index e79a4ed479..5f09766da5 100644 --- a/Docs/KnownIssues.txt +++ b/Docs/KnownIssues.txt @@ -19,3 +19,5 @@ The following is a list of known issues with StepMania 5. * Hold/Roll heads seem to be draw under preceding taps when they shouldn't be all the time. * C-Mods have not been fully tested with all of the new segments yet. +* Split Timing needs adjustments with only one chart in place. +** Either that, or all tags must be allowable in song timing. diff --git a/NoteSkins/dance/Delta/metrics.ini b/NoteSkins/dance/Delta/metrics.ini index efc38bb438..dd9bf2d92c 100644 --- a/NoteSkins/dance/Delta/metrics.ini +++ b/NoteSkins/dance/Delta/metrics.ini @@ -1,69 +1,69 @@ -[Global] -FallbackNoteSkin=default - -[NoteDisplay] -TapNoteAnimationIsVivid=0 -DrawHoldHeadForTapsOnSameRow=1 -TapNoteAnimationLength=3 -TapAdditionAnimationLength=3 -TapMineAnimationLength=1 -TapLiftAnimationLength=1 +[Global] +FallbackNoteSkin=default + +[NoteDisplay] +TapNoteAnimationIsVivid=0 +DrawHoldHeadForTapsOnSameRow=1 +TapNoteAnimationLength=3 +TapAdditionAnimationLength=3 +TapMineAnimationLength=1 +TapLiftAnimationLength=1 HoldHeadAnimationLength=1 HoldTopCapAnimationLength=0.5 -HoldBottomCapAnimationLength=0.5 -HoldBodyAnimationLength=0.5 -HoldTailAnimationLength=0.5 -StartDrawingHoldBodyOffsetFromHead=0 -StopDrawingHoldBodyOffsetFromTail=-32 -HoldLetGoGrayPercent=0.25 -ReverseDrawOrder=1101 -HoldHeadIsAboveWavyParts=1 -HoldTailIsAboveWavyParts=1 -FlipHeadAndTailWhenReverse=1 -FlipHoldBodyWhenReverse=1 -TapNoteAdditionTextureCoordOffsetX=0 +HoldBottomCapAnimationLength=0.5 +HoldBodyAnimationLength=0.5 +HoldTailAnimationLength=0.5 +StartDrawingHoldBodyOffsetFromHead=0 +StopDrawingHoldBodyOffsetFromTail=-32 +HoldLetGoGrayPercent=0.25 +ReverseDrawOrder=1101 +HoldHeadIsAboveWavyParts=1 +HoldTailIsAboveWavyParts=1 +FlipHeadAndTailWhenReverse=1 +FlipHoldBodyWhenReverse=1 +TapNoteAdditionTextureCoordOffsetX=0 TapNoteAdditionTextureCoordOffsetY=0 -TapNoteNoteColorTextureCoordSpacingX=0 -TapNoteNoteColorTextureCoordSpacingY=0.125 -HoldHeadNoteColorTextureCoordSpacingX=0 +TapNoteNoteColorTextureCoordSpacingX=0 +TapNoteNoteColorTextureCoordSpacingY=0.125 +HoldHeadNoteColorTextureCoordSpacingX=0 HoldHeadNoteColorTextureCoordSpacingY=0.125 - -[GhostArrowDim] -InitCommand= -NoneCommand= -HitMineCommand=blend,'BlendMode_Add';diffuse,1,1,1,1;zoom,1;rotationz,0;decelerate,0.3;rotationz,90;linear,0.3;rotationz,180;diffusealpha,0 -MissCommand= -W5Command=diffuse,1.0,0.6,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -W4Command=diffuse,0.6,1.0,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -W3Command=diffuse,0.6,1.0,0.8,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -W2Command=diffuse,1.0,1.0,0.9,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -W1Command=diffuse,1.0,1.0,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -LetGoCommand= -HeldCommand=diffuse,1.0,1.0,0.7,1;zoom,1;linear,0.2;zoom,0.9;linear,0.1;diffusealpha,0 - -[GhostArrowBright] -InitCommand= -NoneCommand= -HitMineCommand=blend,'BlendMode_Add';diffuse,1,1,1,1;zoom,1;rotationz,0;decelerate,0.3;rotationz,90;linear,0.3;rotationz,180;diffusealpha,0 -MissCommand= -W5Command=diffuse,1.0,0.6,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -W4Command=diffuse,0.6,1.0,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -W3Command=diffuse,0.6,1.0,0.8,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -W2Command=diffuse,1.0,1.0,0.9,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -W1Command=diffuse,1.0,1.0,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 -LetGoCommand= -HeldCommand=diffuse,1.0,1.0,0.7,1;zoom,1;linear,0.2;zoom,0.9;linear,0.1;diffusealpha,0 - -[HoldGhostArrow] -HoldingOnCommand=diffusealpha,1;glowshift;effectcolor1,color("1,1,1,0");effectcolor2,color("1,1,1,0.7");effectperiod,0.1 -HoldingOffCommand=diffusealpha,0 -InitCommand=PlayCommand,"HoldingOff";finishtweening - -[ReceptorArrow] -InitCommand=effectclock,"beat";diffuseramp;effectcolor1,color("0.8,0.8,0.8,1");effectcolor2,color("1,1,1,1");effecttiming,0.2,0,0.8,0;effectoffset,0.05 -NoneCommand=zoom,0.75;linear,0.11;zoom,1 - -[ReceptorOverlay] -InitCommand=diffusealpha,0 -PressCommand=blend,"BlendMode_Add";diffusealpha,0.6 + +[GhostArrowDim] +InitCommand= +NoneCommand= +HitMineCommand=blend,'BlendMode_Add';diffuse,1,1,1,1;zoom,1;rotationz,0;decelerate,0.3;rotationz,90;linear,0.3;rotationz,180;diffusealpha,0 +MissCommand= +W5Command=diffuse,1.0,0.6,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +W4Command=diffuse,0.6,1.0,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +W3Command=diffuse,0.6,1.0,0.8,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +W2Command=diffuse,1.0,1.0,0.9,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +W1Command=diffuse,1.0,1.0,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +LetGoCommand= +HeldCommand=diffuse,1.0,1.0,0.7,1;zoom,1;linear,0.2;zoom,0.9;linear,0.1;diffusealpha,0 + +[GhostArrowBright] +InitCommand= +NoneCommand= +HitMineCommand=blend,'BlendMode_Add';diffuse,1,1,1,1;zoom,1;rotationz,0;decelerate,0.3;rotationz,90;linear,0.3;rotationz,180;diffusealpha,0 +MissCommand= +W5Command=diffuse,1.0,0.6,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +W4Command=diffuse,0.6,1.0,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +W3Command=diffuse,0.6,1.0,0.8,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +W2Command=diffuse,1.0,1.0,0.9,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +W1Command=diffuse,1.0,1.0,1.0,1;sleep,0.1;decelerate,0.4;diffusealpha,0 +LetGoCommand= +HeldCommand=diffuse,1.0,1.0,0.7,1;zoom,1;linear,0.2;zoom,0.9;linear,0.1;diffusealpha,0 + +[HoldGhostArrow] +HoldingOnCommand=diffusealpha,1;glowshift;effectcolor1,color("1,1,1,0");effectcolor2,color("1,1,1,0.7");effectperiod,0.1 +HoldingOffCommand=diffusealpha,0 +InitCommand=playcommand,"HoldingOff";finishtweening + +[ReceptorArrow] +InitCommand=effectclock,"beat";diffuseramp;effectcolor1,color("0.8,0.8,0.8,1");effectcolor2,color("1,1,1,1");effecttiming,0.2,0,0.8,0;effectoffset,0.05 +NoneCommand=zoom,0.75;linear,0.11;zoom,1 + +[ReceptorOverlay] +InitCommand=diffusealpha,0 +PressCommand=blend,"BlendMode_Add";diffusealpha,0.6 LiftCommand=diffusealpha,0 \ No newline at end of file diff --git a/NoteSkins/pump/default/UpLeft Receptor.lua b/NoteSkins/pump/default/UpLeft Receptor.lua index 86a2238fa1..77678a0a24 100644 --- a/NoteSkins/pump/default/UpLeft Receptor.lua +++ b/NoteSkins/pump/default/UpLeft Receptor.lua @@ -1,7 +1,7 @@ local function Beat(self) -- too many locals local this = self:GetChildren() - local player = GAMESTATE:GetMasterPlayerNumber() + local player = Var "Player" or GAMESTATE:GetMasterPlayerNumber() local playerstate = GAMESTATE:GetPlayerState( player ) local songposition = playerstate:GetSongPosition() -- GAMESTATE:GetSongPosition() diff --git a/Songs/StepMania 5/MechaTribe Assault/Mecha-Tribe Assault.ssc b/Songs/StepMania 5/MechaTribe Assault/Mecha-Tribe Assault.ssc index 9152d90172..88a282f351 100644 --- a/Songs/StepMania 5/MechaTribe Assault/Mecha-Tribe Assault.ssc +++ b/Songs/StepMania 5/MechaTribe Assault/Mecha-Tribe Assault.ssc @@ -7,7 +7,7 @@ #ARTISTTRANSLIT:; #GENRE:; #ORIGIN:; -#CREDIT:Graphics - Noon; +#CREDIT:; #BANNER:mechatribeassaultbn.png; #BACKGROUND:mechatribeassaultbg.png; #LYRICSPATH:; diff --git a/Songs/StepMania 5/MechaTribe Assault/mechatribeassaultbg.png b/Songs/StepMania 5/MechaTribe Assault/mechatribeassaultbg.png index df4e8c9673..2097a9b72f 100644 Binary files a/Songs/StepMania 5/MechaTribe Assault/mechatribeassaultbg.png and b/Songs/StepMania 5/MechaTribe Assault/mechatribeassaultbg.png differ diff --git a/Songs/StepMania 5/MechaTribe Assault/mechatribeassaultbn.png b/Songs/StepMania 5/MechaTribe Assault/mechatribeassaultbn.png index 10d3c05490..6ca482e256 100644 Binary files a/Songs/StepMania 5/MechaTribe Assault/mechatribeassaultbn.png and b/Songs/StepMania 5/MechaTribe Assault/mechatribeassaultbn.png differ diff --git a/Songs/instructions.txt b/Songs/instructions.txt index e9236b0028..87da88d3ab 100644 --- a/Songs/instructions.txt +++ b/Songs/instructions.txt @@ -1,8 +1,22 @@ [How to Install Songs] - Songs are laid out based on the group that they are in. Songs\ : root folder StepMania 5\ : group folder MechaTribe Assault\ : song/simfile folder - *.png, *.mp3/*.ogg, *.sm/*.ssc/etc files \ No newline at end of file + *.png, *.mp3/*.ogg, *.sm/*.ssc/etc files + +[How NOT to install songs] +This won't work because StepMania expects groups: + +Songs\ + Some Song\ + *.png, *.mp3/*.ogg, *.sm/*.ssc/etc files + +And this won't work because StepMania doesn't handle sub-groups: + +Songs\ + Song Group\ + SubGroup1\ + Some Song\ + *.png, *.mp3/*.ogg, *.sm/*.ssc/etc files \ No newline at end of file diff --git a/Themes/HelloWorld/Graphics/ScreenGuideMain header.lua b/Themes/HelloWorld/Graphics/ScreenGuideMain header.lua index ef507f8fc4..1504a5dcb4 100644 --- a/Themes/HelloWorld/Graphics/ScreenGuideMain header.lua +++ b/Themes/HelloWorld/Graphics/ScreenGuideMain header.lua @@ -15,7 +15,7 @@ local t = Def.ActorFrame{ LoadFont("_frutiger roman 24px")..{ Name="Header"; Text=THEME:GetString("ScreenGuideMain","Explanation"); - InitCommand=cmd(x,-312;y,-24;align,0,0;diffuse,color("#111111FF");zoom,0.65;wrapwidthpixels,(SCREEN_WIDTH)*1.45); + InitCommand=cmd(x,-312;y,-24;align,0,0;diffuse,color("#111111FF");zoom,0.65;wrapwidthpixels,(SCREEN_WIDTH)); }; }; }; diff --git a/Themes/HelloWorld/Graphics/ScreenGuideMain scroll.lua b/Themes/HelloWorld/Graphics/ScreenGuideMain scroll.lua index 8004ca637a..71946e43aa 100644 --- a/Themes/HelloWorld/Graphics/ScreenGuideMain scroll.lua +++ b/Themes/HelloWorld/Graphics/ScreenGuideMain scroll.lua @@ -14,7 +14,7 @@ local t = Def.ActorFrame{ }; LoadActor( THEME:GetPathG("_section", "Guide") )..{ - InitCommand=cmd(x,-250;y,-24;Real;halign,0); + InitCommand=cmd(x,-244;y,-23;Real;halign,0); GainFocusCommand=cmd(decelerate,0.5;diffusealpha,0.9); LoseFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,0.45); }; diff --git a/Themes/HelloWorld/Graphics/ScreenReferenceMain scroll.lua b/Themes/HelloWorld/Graphics/ScreenReferenceMain scroll.lua index dad4bbb0e0..d0e5e6ed14 100644 --- a/Themes/HelloWorld/Graphics/ScreenReferenceMain scroll.lua +++ b/Themes/HelloWorld/Graphics/ScreenReferenceMain scroll.lua @@ -14,7 +14,7 @@ local t = Def.ActorFrame{ }; LoadActor( THEME:GetPathG("_section", "Reference") )..{ - InitCommand=cmd(x,-250;y,-24;Real;halign,0); + InitCommand=cmd(x,-244;y,-23;Real;halign,0); GainFocusCommand=cmd(decelerate,0.5;diffusealpha,0.9); LoseFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,0.45); }; diff --git a/Themes/HelloWorld/Graphics/ScreenTitleMenu scroll.lua b/Themes/HelloWorld/Graphics/ScreenTitleMenu scroll.lua index 5ce9182dfa..da98cd68ac 100644 --- a/Themes/HelloWorld/Graphics/ScreenTitleMenu scroll.lua +++ b/Themes/HelloWorld/Graphics/ScreenTitleMenu scroll.lua @@ -27,8 +27,8 @@ local t = Def.ActorFrame{ DisabledCommand=cmd( diffuse,color("0.45,0,0,1") ); GainFocusCommand=cmd(stoptweening;accelerate,0.15;diffuse,color("#000000");strokecolor,color("0.85,0.9,1,0.75");); LoseFocusCommand=cmd(stoptweening;accelerate,0.2;diffuse,color("#888888");strokecolor,color("0,0,0,0");); - OffFocusedCommand=cmd(sleep,1;decelerate,1;addx,-32;diffuse,color("#FF0000");); - OffUnfocusedCommand=cmd(sleep,0.2*gc:GetIndex();linear,0.5;addx,SCREEN_CENTER_X;); + OffFocusedCommand=cmd(sleep,0.45;decelerate,1;addx,-32;diffuse,color("#FF000000");); + OffUnfocusedCommand=cmd(sleep,0.125*gc:GetIndex();linear,0.5;addx,SCREEN_CENTER_X;); }; }; diff --git a/Themes/HelloWorld/Graphics/SectionMenu ItemFocused.png b/Themes/HelloWorld/Graphics/SectionMenu ItemFocused.png index c2340e1f3d..5f4d043bcf 100644 Binary files a/Themes/HelloWorld/Graphics/SectionMenu ItemFocused.png and b/Themes/HelloWorld/Graphics/SectionMenu ItemFocused.png differ diff --git a/Themes/HelloWorld/Graphics/_section Guide.png b/Themes/HelloWorld/Graphics/_section Guide.png index 5a1ed471ab..18cd4a69a8 100644 Binary files a/Themes/HelloWorld/Graphics/_section Guide.png and b/Themes/HelloWorld/Graphics/_section Guide.png differ diff --git a/Themes/HelloWorld/Graphics/_section Reference.png b/Themes/HelloWorld/Graphics/_section Reference.png index e322d8b4b1..a5d7c0b2b2 100644 Binary files a/Themes/HelloWorld/Graphics/_section Reference.png and b/Themes/HelloWorld/Graphics/_section Reference.png differ diff --git a/Themes/HelloWorld/Graphics/_section Tutorial.png b/Themes/HelloWorld/Graphics/_section Tutorial.png index c724cb427c..a0fc39758c 100644 Binary files a/Themes/HelloWorld/Graphics/_section Tutorial.png and b/Themes/HelloWorld/Graphics/_section Tutorial.png differ diff --git a/Themes/HelloWorld/readme.txt b/Themes/HelloWorld/readme.txt index f2cd7eca99..f834df5f0f 100644 --- a/Themes/HelloWorld/readme.txt +++ b/Themes/HelloWorld/readme.txt @@ -1,9 +1,8 @@ Hello World and other sm-ssc theming examples --------------------------------------- -A theme by various contributors. --------------------------------------- - +------------------------------------------------------- + A theme by various contributors. (see "Contributors") +------------------------------------------------------- This theme and its accompanying documentation are licensed under the Creative Commons Attribution-Share Alike 3.0 license. @@ -30,6 +29,7 @@ Table of Contents Managers [r_man] Classes [r_cls] Tutorials [tutor] + Contributors [creds] [others tba] ================================================================================ @@ -46,4 +46,9 @@ The theme itself is split into three sections, encompassing various elements of sm-ssc theming. The Guide is a general run-through of how Themes are constructed (along with -NoteSkins, Announcers, and Characters) \ No newline at end of file +NoteSkins, Announcers, and Characters) +================================================================================ +Contributors [creds] + +These are the people who have worked on Hello World: +* AJ Kelly \ No newline at end of file diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index f150244a19..c643cbd192 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -1430,6 +1430,9 @@ HeaderText=Map Controllers InvalidButton=That key can not be mapped. %s slots=%s slots +[ScreenMapControllers2] +Add Mapping=Add Mapping + [ScreenNetRoom] Enter a description for the room:=Enter a description for the room: Enter a password for the room (blank, no password):=Enter a password for the room (blank, no password): diff --git a/Themes/_fallback/Scripts/01 compat.lua b/Themes/_fallback/Scripts/01 compat.lua index dc7ad45c3f..1c4aee360c 100644 --- a/Themes/_fallback/Scripts/01 compat.lua +++ b/Themes/_fallback/Scripts/01 compat.lua @@ -18,6 +18,9 @@ ActorScroller.scrollthroughallitems = ActorScroller.ScrollThroughAllItems ActorScroller.scrollwithpadding = ActorScroller.ScrollWithPadding ActorScroller.setfastcatchup = ActorScroller.SetFastCatchup +--[[ MenuTimer: just some case changes. ]] +MenuTimer.setseconds = MenuTimer.SetSeconds + --[[ GameState ]] --Aliases for old GAMESTATE timing functions. --These have been converted to SongPosition, but most themes still use these old functions. diff --git a/Themes/_fallback/Scripts/03 Gameplay.lua b/Themes/_fallback/Scripts/03 Gameplay.lua index 742c84a4c8..12254b9632 100644 --- a/Themes/_fallback/Scripts/03 Gameplay.lua +++ b/Themes/_fallback/Scripts/03 Gameplay.lua @@ -28,7 +28,7 @@ function GameCompatibleModes() local Modes = { dance = "Single,Double,Solo,Versus,Couple", pump = "Single,Double,HalfDouble,Versus,Couple,Routine", - beat = "5Keys,7Keys,10Keys,14Keys", + beat = "5Keys,7Keys,10Keys,14Keys,Versus5,Versus7", kb7 = "KB7", para = "Single", techno = "Single4,Single5,Single8,Double4,Double8", diff --git a/Themes/_fallback/Scripts/03 ThemeAndGamePrefs.lua b/Themes/_fallback/Scripts/03 ThemeAndGamePrefs.lua index f07f31774c..cc4ade9f22 100644 --- a/Themes/_fallback/Scripts/03 ThemeAndGamePrefs.lua +++ b/Themes/_fallback/Scripts/03 ThemeAndGamePrefs.lua @@ -4,11 +4,10 @@ function InitGamePrefs() { { "DefaultFail", "Immediate" }, }; - + local BPrefs = { { "ComboOnRolls", false }, - }; for idx,pref in ipairs(Prefs) do @@ -39,13 +38,14 @@ function InitUserPrefs() local BPrefs = { + { "UserPrefAutoSetStyle", false }, { "UserPrefComboUnderField", true }, - { "UserPrefAutoSetStyle", false }, - { "UserPrefNotePosition", true }, - { "UserPrefShowLotsaOptions", true}, { "UserPrefLongFail", false}, + { "UserPrefNotePosition", true }, { "UserPrefProtimingP1", false}, { "UserPrefProtimingP2", false}, + { "UserPrefShowLotsaOptions", true}, + { "ComboOnRolls", false}, { "FlashyCombos", false}, { "GameplayFooter", false}, }; @@ -235,8 +235,8 @@ end function GetDefaultOptionLines() local LineSets = { - "1,8,14,2,3,4,5,6,R,7,9,10,11,12,13,15,16,17,18", -- All - "1,8,14,2,7,13,16,17,18", -- DDR Essentials ( no turns, fx ) + "1,8,14,2,3,4,5,6,R,7,9,10,11,12,13,15,16,SF,17,18", -- All + "1,8,14,2,7,13,16,SF,17,18", -- DDR Essentials ( no turns, fx ) }; local function IsExtra() if GAMESTATE:IsExtraStage() or GAMESTATE:IsExtraStage2() then @@ -252,7 +252,7 @@ function GetDefaultOptionLines() return LineSets[2]; -- Just make sure! end else - return "1,8,14,2,7,13,16,17,18" -- "failsafe" list + return "1,8,14,2,7,13,16,SF,17,18" -- "failsafe" list end end; function UserPrefLongFail() diff --git a/Themes/_fallback/Scripts/04 Scoring.lua b/Themes/_fallback/Scripts/04 Scoring.lua index 38e928da60..0f96c6a001 100644 --- a/Themes/_fallback/Scripts/04 Scoring.lua +++ b/Themes/_fallback/Scripts/04 Scoring.lua @@ -131,7 +131,7 @@ end; ----------------------------------------------------------- --HYBRID Scoring, contributed by @waiei ----------------------------------------------------------- -local hyb_Steps=0; +local hyb_Steps={0,0}; r['HYBRID'] = function(params, pss) local multLookup = { @@ -151,17 +151,19 @@ r['HYBRID'] = function(params, pss) -- [ja] 端数は最後の1ステップで加算するのでその値を取得 local sLast = 100000000-(sOne*sTotal); + local p = (params.Player == 'PlayerNumber_P1') and 1 or 2 + + -- [en] Initialize score if 0. -- [ja] スコアが0の時に初期化 if pss:GetScore()==0 then - hyb_Steps=0; + hyb_Steps[p]=0; end; -- [ja] 現在のステップ数 - hyb_Steps=hyb_Steps+1; - pss:SetCurMaxScore(pss:GetCurMaxScore()+1); + hyb_Steps[p]=hyb_Steps[p]+1; -- [en] current score -- [ja] 今回加算するスコア(W1の時) - local vScore = sOne*hyb_Steps; + local vScore = sOne*hyb_Steps[p]; pss:SetCurMaxScore(pss:GetCurMaxScore()+vScore); -- [ja] 判定によって加算量を変更 if (params.HoldNoteScore == 'HoldNoteScore_Held') then @@ -176,7 +178,7 @@ r['HYBRID'] = function(params, pss) pss:SetScore(pss:GetScore()+vScore); -- [ja] 最後の1ステップの場合、端数を加算する - if ((vScore > 0) and (hyb_Steps == totalItems)) then + if ((vScore > 0) and (hyb_Steps[p] == totalItems)) then pss:SetScore(pss:GetScore()+sLast); end; end; @@ -184,6 +186,9 @@ end; ----------------------------------------------------------- --DDR SuperNOVA(-esque) scoring ----------------------------------------------------------- +local sn2tmp_Sub={0,0}; +local sn2tmp_Score={0,0}; +local sn2tmp_Steps={0,0}; r['DDR SuperNOVA'] = function(params, pss) local multLookup = { @@ -193,13 +198,46 @@ r['DDR SuperNOVA'] = function(params, pss) }; setmetatable(multLookup, ZeroIfNotFound); local radarValues = GetDirectRadar(params.Player); - local totalItems = GetTotalItems(radarValues); - local base = 10000000 / totalItems; - local hold = base * (params.HoldNoteScore == 'HoldNoteScore_Held' and 1 or 0); - local maxScore = (base * multLookup['TapNoteScore_W1']) + hold; - pss:SetCurMaxScore(pss:GetCurMaxScore() + math.round(maxScore)); - local buildScore = (base * multLookup[params.TapNoteScore]) + hold; - pss:SetScore(pss:GetScore() + math.round(buildScore)); + local totalItems = GetTotalItems(radarValues); + + 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; + sn2tmp_Score[p]=0; + sn2tmp_Steps[p]=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[p]=sn2tmp_Sub[p]+1; + end; + end + end + sn2tmp_Score[p]=sn2tmp_Score[p]+maxAdd; + -- [ja] 踏み踏みしたステップ数 + sn2tmp_Steps[p]=sn2tmp_Steps[p]+1; + -- [ja] 現時点での、All W1判定の時のスコア + pss:SetCurMaxScore(math.floor(10000*sn2tmp_Steps[p]/totalItems) * 10); + + -- [ja] 計算して代入 + pss:SetScore((math.floor(10000*sn2tmp_Score[p]/totalItems) * 10) - (sn2tmp_Sub[p]*10) ); end; ----------------------------------------------------------- --DDR SuperNOVA 2(-esque) scoring @@ -319,8 +357,13 @@ end -- Formulas end here. for v in ivalues(DisabledScoringModes) do r[v] = nil end Scoring = {} -setmetatable(Scoring, { __index = function(...) return function(params,pss) ---put any code here that should run before every scoring function - if not GAMESTATE:IsHumanPlayer(params.Player) and type(r[key]) == "function" then - return r[key](...) end -end } +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 diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 48c4841691..04c2dfd0a9 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1757,8 +1757,10 @@ ChoiceRoutine="name,Routine;style,routine;text,Routine;screen,"..Branch.AfterSel ChoiceHalfDouble="name,HalfDouble;style,halfdouble;text,HalfDouble;screen,"..Branch.AfterSelectStyle() Choice5Keys="name,5Keys;style,single5;text,5Keys;screen,"..Branch.AfterSelectStyle() Choice7Keys="name,7Keys;style,single7;text,7Keys;screen,"..Branch.AfterSelectStyle() -Choice10Keys="name,10Keys;style,double10;text,10Keys;screen,"..Branch.AfterSelectStyle() -Choice14Keys="name,14Keys;style,double14;text,14Keys;screen,"..Branch.AfterSelectStyle() +ChoiceVersus5="name,Versus5;style,versus5;text,Versus5;screen,"..Branch.AfterSelectStyle() +ChoiceVersus7="name,Versus7;style,versus7;text,Versus7;screen,"..Branch.AfterSelectStyle() +Choice10Keys="name,10Keys;style,double5;text,10Keys;screen,"..Branch.AfterSelectStyle() +Choice14Keys="name,14Keys;style,double7;text,14Keys;screen,"..Branch.AfterSelectStyle() ChoiceKB7="name,kb7;style,single;screen,"..Branch.AfterSelectStyle() # PerChoiceScrollElement=false diff --git a/Themes/default/BGAnimations/ScreenGameplay decorations/_whatsup.jpg b/Themes/default/BGAnimations/ScreenGameplay decorations/_whatsup.jpg new file mode 100644 index 0000000000..61046c58be Binary files /dev/null and b/Themes/default/BGAnimations/ScreenGameplay decorations/_whatsup.jpg differ diff --git a/Themes/default/BGAnimations/ScreenGameplay decorations/default.lua b/Themes/default/BGAnimations/ScreenGameplay decorations/default.lua index 815b30b141..a717ffbc2d 100644 --- a/Themes/default/BGAnimations/ScreenGameplay decorations/default.lua +++ b/Themes/default/BGAnimations/ScreenGameplay decorations/default.lua @@ -192,7 +192,13 @@ end; t[#t+1] = StandardDecorationFromFileOptional("BPMDisplay","BPMDisplay"); t[#t+1] = StandardDecorationFromFileOptional("StageDisplay","StageDisplay"); t[#t+1] = StandardDecorationFromFileOptional("SongTitle","SongTitle"); - +t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,SCREEN_RIGHT;y,SCREEN_BOTTOM;draworder,5); + LoadActor("_whatsup") .. { + InitCommand=cmd(horizalign,left;vertalign,top); + ToastyMessageCommand=cmd(smooth,3;x,-256;y,-200;sleep,2;smooth,3;x,256;y,200) + }; +}; if( not GAMESTATE:IsCourseMode() ) then t[#t+1] = Def.Actor{ JudgmentMessageCommand = function(self, params) diff --git a/Themes/default/BGAnimations/ScreenGameplay toasty/default.lua b/Themes/default/BGAnimations/ScreenGameplay toasty/default.lua new file mode 100644 index 0000000000..59e402fabc --- /dev/null +++ b/Themes/default/BGAnimations/ScreenGameplay toasty/default.lua @@ -0,0 +1,6 @@ +return Def.ActorFrame { +-- InitCommand=cmd(x,SCREEN_RIGHT;y,SCREEN_BOTTOM;draworder,101); + StartTransitioningCommand=function(self) + MESSAGEMAN:Broadcast("Toasty",{ Time = math.random(1,3) }); + end +}; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenGameplay underlay/ScreenFilter.lua b/Themes/default/BGAnimations/ScreenGameplay underlay/ScreenFilter.lua new file mode 100644 index 0000000000..bba442f8e6 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenGameplay underlay/ScreenFilter.lua @@ -0,0 +1,65 @@ +--[[ Screen Filter ]] +local numPlayers = GAMESTATE:GetNumPlayersEnabled() +local center1P = PREFSMAN:GetPreference("Center1Player") + +local padding = 8 -- 4px on each side +local arrowWidth = 64 -- until noteskin metrics are implemented... + +local filterColor = color("0.135,0.135,0.135,1") +local filterAlphas = { + PlayerNumber_P1 = 1, + PlayerNumber_P2 = 1, + Default = 0, +} + +local t = Def.ActorFrame{}; + +local style = GAMESTATE:GetCurrentStyle() +local cols = style:ColumnsPerPlayer() +local styleType = ToEnumShortString(style:GetStyleType()) +local filterWidth = (arrowWidth * cols) + padding + +if numPlayers == 1 then + local player = GAMESTATE:GetMasterPlayerNumber() + local pNum = (player == PLAYER_1) and 1 or 2 + filterAlphas[player] = tonumber(getenv("ScreenFilterP"..pNum)); + + local pos; + -- [ScreenGameplay] PlayerP#Player*Side(s)X + if center1P then + pos = SCREEN_CENTER_X + else + local metricName = string.format("PlayerP%i%sX",pNum,styleType) + pos = THEME:GetMetric("ScreenGameplay",metricName) + end + t[#t+1] = Def.Quad{ + Name="SinglePlayerFilter"; + InitCommand=cmd(x,pos;CenterY;zoomto,filterWidth,SCREEN_HEIGHT;diffusecolor,filterColor;diffusealpha,filterAlphas[player]); + }; +else + -- two players... a bit more complex. + if styleType == "TwoPlayersSharedSides" then + -- routine, just use one in the center. + local player = GAMESTATE:GetMasterPlayerNumber() + local pNum = player == PLAYER_1 and 1 or 2 + local metricName = "PlayerP".. pNum .."TwoPlayersSharedSidesX" + t[#t+1] = Def.Quad{ + Name="RoutineFilter"; + InitCommand=cmd(x,THEME:GetMetric("ScreenGameplay",metricName);CenterY;zoomto,filterWidth,SCREEN_HEIGHT;diffusecolor,filterColor;diffusealpha,filterAlphas[player]); + }; + else + -- otherwise we need two separate ones. to the pairsmobile! + for i, player in ipairs(PlayerNumber) do + local pNum = (player == PLAYER_1) and 1 or 2 + filterAlphas[player] = tonumber(getenv("ScreenFilterP"..pNum)); + local metricName = string.format("PlayerP%i%sX",pNum,styleType) + local pos = THEME:GetMetric("ScreenGameplay",metricName) + t[#t+1] = Def.Quad{ + Name="Player"..pNum.."Filter"; + InitCommand=cmd(x,pos;CenterY;zoomto,filterWidth,SCREEN_HEIGHT;diffusecolor,filterColor;diffusealpha,filterAlphas[player]); + }; + end + end +end + +return t; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenGameplay underlay/default.lua b/Themes/default/BGAnimations/ScreenGameplay underlay/default.lua new file mode 100644 index 0000000000..db91ea8df7 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenGameplay underlay/default.lua @@ -0,0 +1,5 @@ +local t = Def.ActorFrame{ + LoadActor("ScreenFilter"); +}; + +return t; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenJukebox in.lua b/Themes/default/BGAnimations/ScreenJukebox in.lua new file mode 100644 index 0000000000..933729de3f --- /dev/null +++ b/Themes/default/BGAnimations/ScreenJukebox in.lua @@ -0,0 +1,6 @@ +return Def.ActorFrame{ + Def.Quad{ + InitCommand=cmd(FullScreen;diffuse,color("0,0,0,1")); + OnCommand=cmd(decelerate,0.5;diffusealpha,0); + }; +}; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenJukebox out.lua b/Themes/default/BGAnimations/ScreenJukebox out.lua new file mode 100644 index 0000000000..daa7205234 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenJukebox out.lua @@ -0,0 +1,6 @@ +return Def.ActorFrame{ + Def.Quad{ + InitCommand=cmd(FullScreen;diffuse,color("0,0,0,0")); + OnCommand=cmd(accelerate,0.5;diffusealpha,1); + }; +}; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenNetSelectMusic decorations.lua b/Themes/default/BGAnimations/ScreenNetSelectMusic decorations.lua index 02168d5e29..efebf763a7 100644 --- a/Themes/default/BGAnimations/ScreenNetSelectMusic decorations.lua +++ b/Themes/default/BGAnimations/ScreenNetSelectMusic decorations.lua @@ -1,5 +1,6 @@ local t = LoadFallbackB(); t[#t+1] = StandardDecorationFromFileOptional("BPMLabel","BPMLabel"); +t[#t+1] = StandardDecorationFromFileOptional("BPMDisplay","BPMDisplay"); t[#t+1] = StandardDecorationFromFileOptional("DifficultyDisplay","DifficultyDisplay"); return t; \ No newline at end of file diff --git a/Themes/default/Graphics/ScreenNetSelectMusic BPMDisplay.redir b/Themes/default/Graphics/ScreenNetSelectMusic BPMDisplay.redir new file mode 100644 index 0000000000..c7e1f102b3 --- /dev/null +++ b/Themes/default/Graphics/ScreenNetSelectMusic BPMDisplay.redir @@ -0,0 +1 @@ +ScreenSelectMusic BPMDisplay \ No newline at end of file diff --git a/Themes/default/Scripts/03 ThemePrefs.lua b/Themes/default/Scripts/03 ThemePrefs.lua index fd7237b0e1..3da2752cc3 100644 --- a/Themes/default/Scripts/03 ThemePrefs.lua +++ b/Themes/default/Scripts/03 ThemePrefs.lua @@ -51,7 +51,45 @@ end --[[ option rows ]] --- screen cover +-- screen filter +function OptionRowScreenFilter() + local t = { + Name="ScreenFilter", + LayoutType = "ShowAllInRow", + SelectType = "SelectOne", + OneChoiceForAllPlayers = false, + ExportOnChange = false, + Choices = { 'Off', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1.0', }, + LoadSelections = function(self, list, pn) + local pName = ToEnumShortString(pn) + local filterValue = getenv("ScreenFilter"..pName) + if filterValue ~= nil then + local val = scale(tonumber(filterValue),0,1,1,#list ) + list[val] = true + else + setenv("ScreenFilter"..pName,0) + list[1] = true + end + end, + SaveSelections = function(self, list, pn) + local pName = ToEnumShortString(pn) + local found = false + for i=1,#list do + if not found then + if list[i] == true then + local val = scale(i,1,#list,0,1) + setenv("ScreenFilter"..pName,val) + found = true + end + end + end + end, + }; + setmetatable(t, t) + return t +end + +-- protiming function OptionRowProTiming() local t = { Name = "ProTiming", @@ -176,8 +214,8 @@ end function GetDefaultOptionLines() local LineSets = { -- none of these include characters yet. - "1,8,14,2,3A,3B,4,5,6,R,7,9,10,11,12,13,16,17", -- All - "1,8,14,2,7,13,16,17", -- DDR Essentials ( no turns, fx ) + "1,8,14,2,3A,3B,4,5,6,R,7,9,10,11,12,13,16,SF,17", -- All + "1,8,14,2,7,13,16,SF,17", -- DDR Essentials ( no turns, fx ) }; local function IsExtra() if GAMESTATE:IsExtraStage() or GAMESTATE:IsExtraStage2() then diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 7afc1ec10f..76b1e6f468 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -652,7 +652,7 @@ NetworkStatusOffCommand=linear,0.5;cropright,1 # HelpY=SCREEN_BOTTOM-24 # -ChoiceNames="GameStart,Options,Edit,Exit" +ChoiceNames="GameStart,Options,Edit,Jukebox,Exit" DefaultChoice="GameStart" [ScreenQuickSetupOverview] @@ -1275,6 +1275,7 @@ LineFancyUIBG="lua,UserPrefFancyUIBG()" [ScreenPlayerOptions] LineNames=GetDefaultOptionLines() +LineSF="lua,OptionRowScreenFilter()" Line17="lua,OptionRowProTiming()" Line18="list,Characters" @@ -2012,11 +2013,16 @@ StepsDisplayP2OnCommand=horizalign,right;zoomx,0.0;zoomy,0.0;linear,0.5;zoomy,1. StepsDisplayP2OffCommand=linear,0.5;zoomx,0.0;zoomy,0.0 #====# +ShowBPMDisplay=true +BPMDisplayX=SCREEN_CENTER_X-160-90+2 +BPMDisplayY=SCREEN_TOP+160+(36/2)+8 +BPMDisplayOnCommand=finishtweening;maxwidth,128;horizalign,left;strokecolor,Color("Outline");addx,320;zoomx,0;decelerate,0.35;addx,-320;zoomx,1 +BPMDisplayOffCommand=bouncebegin,0.15;zoomx,0; #--# ShowBPMLabel=true BPMLabelX=SCREEN_CENTER_X-160-90 -BPMLabelY=SCREEN_CENTER_Y+156 -BPMLabelOnCommand=horizalign,right;zoom,0.75;strokecolor,Color("Outline");addx,-SCREEN_CENTER_X;decelerate,0.35;addx,SCREEN_CENTER_X +BPMLabelY=SCREEN_TOP+160+(36/2)+6 +BPMLabelOnCommand=addx,-SCREEN_CENTER_X;decelerate,0.35;addx,SCREEN_CENTER_X BPMLabelOffCommand=bouncebegin,0.15;zoomx,0; UsersX=SCREEN_CENTER_X-272 diff --git a/autoconf/m4/bzip.m4 b/autoconf/m4/bzip.m4 index 2f0dfc6490..882f3987b2 100644 --- a/autoconf/m4/bzip.m4 +++ b/autoconf/m4/bzip.m4 @@ -16,7 +16,7 @@ AC_DEFUN([SM_BZIP], if test "$have_bzip" = "no"; then echo "*** bzip is required to build StepMania; please make sure" - echo "*** that bzip is installed to continue the installation process." + echo "*** that libbz2 is installed to continue the installation process." exit 0; fi diff --git a/src/GameManager.cpp b/src/GameManager.cpp index 21b910eede..bc0e138de1 100644 --- a/src/GameManager.cpp +++ b/src/GameManager.cpp @@ -1589,7 +1589,7 @@ static const Style g_Style_Beat_Versus5 = false, // m_bUsedForEdit true, // m_bUsedForDemonstration false, // m_bUsedForHowToPlay - "versus", // m_szName + "versus5", // m_szName StepsType_beat_versus5, // m_StepsType StyleType_TwoPlayersTwoSides, // m_StyleType 6, // m_iColsPerPlayer @@ -1725,7 +1725,7 @@ static const Style g_Style_Beat_Versus7 = true, // m_bUsedForEdit false, // m_bUsedForDemonstration false, // m_bUsedForHowToPlay - "single7", // m_szName + "versus7", // m_szName StepsType_beat_versus7, // m_StepsType StyleType_TwoPlayersTwoSides, // m_StyleType 8, // m_iColsPerPlayer diff --git a/src/MenuTimer.cpp b/src/MenuTimer.cpp index f376dbcc27..59e420a799 100644 --- a/src/MenuTimer.cpp +++ b/src/MenuTimer.cpp @@ -198,19 +198,23 @@ void MenuTimer::SetText( float fSeconds ) class LunaMenuTimer: public Luna { public: - static int setseconds( T* p, lua_State *L ) { p->SetSeconds(FArg(1)); return 0; } + static int SetSeconds( T* p, lua_State *L ) { p->SetSeconds(FArg(1)); return 0; } static int GetSeconds( T* p, lua_State *L ) { lua_pushnumber( L, p->GetSeconds() ); return 1; } + static int start( T* p, lua_State *L ) { p->Start(); return 0; } static int pause( T* p, lua_State *L ) { p->Pause(); return 0; } static int stop( T* p, lua_State *L ) { p->Stop(); return 0; } + static int disable( T* p, lua_State *L ) { p->Disable(); return 0; } static int silent( T* p, lua_State *L ) { p->EnableSilent(BArg(1)); return 0; } static int stealth( T* p, lua_State *L ) { p->EnableStealth(BArg(1)); return 0; } LunaMenuTimer() { - ADD_METHOD( setseconds ); + ADD_METHOD( SetSeconds ); ADD_METHOD( GetSeconds ); + ADD_METHOD( start ); ADD_METHOD( pause ); ADD_METHOD( stop ); + ADD_METHOD( disable ); ADD_METHOD( silent ); ADD_METHOD( stealth ); } diff --git a/src/NotesLoader.cpp b/src/NotesLoader.cpp index e8fd0ba6b1..bad7b0f86d 100644 --- a/src/NotesLoader.cpp +++ b/src/NotesLoader.cpp @@ -54,9 +54,11 @@ bool NotesLoader::LoadFromDir( const RString &sPath, Song &out, set &Bl BMSLoader::GetApplicableFiles( sPath, list ); if( !list.empty() ) return BMSLoader::LoadFromDir( sPath, out ); + /* PMSLoader::GetApplicableFiles( sPath, list ); if( !list.empty() ) return PMSLoader::LoadFromDir( sPath, out ); + */ KSFLoader::GetApplicableFiles( sPath, list ); if( !list.empty() ) return KSFLoader::LoadFromDir( sPath, out ); diff --git a/src/RageDisplay_Legacy.cpp b/src/RageDisplay_Legacy.cpp index b9ae42c014..e0e6a899bd 100644 --- a/src/RageDisplay_Legacy.cpp +++ b/src/RageDisplay_Legacy.cpp @@ -272,7 +272,8 @@ RString GetInfoLog( GLhandleARB h ) { GLint iLength; glGetObjectParameterivARB( h, GL_OBJECT_INFO_LOG_LENGTH_ARB, &iLength ); - if (!iLength) + + if( iLength <= 0 ) return RString(); GLcharARB *pInfoLog = new GLcharARB[iLength]; diff --git a/src/RageSurface_Load_JPEG.cpp b/src/RageSurface_Load_JPEG.cpp index 4f686fe354..15d8a623a1 100644 --- a/src/RageSurface_Load_JPEG.cpp +++ b/src/RageSurface_Load_JPEG.cpp @@ -21,8 +21,13 @@ #pragma warning(disable: 4611) /* interaction between '_setjmp' and C++ object destruction is non-portable */ #else extern "C" { +#if defined(MACOSX) +#include <../extern/libjpeg/jpeglib.h> +#include <../extern/libjpeg/jerror.h> +#else #include "jpeglib.h" #include "jerror.h" +#endif } #endif diff --git a/src/RageSurface_Save_JPEG.cpp b/src/RageSurface_Save_JPEG.cpp index d9a665b2b9..f0a07e6c86 100644 --- a/src/RageSurface_Save_JPEG.cpp +++ b/src/RageSurface_Save_JPEG.cpp @@ -12,7 +12,11 @@ namespace jpeg { extern "C" { +#if defined(MACOSX) +#include <../extern/libjpeg/jpeglib.h> +#else #include "jpeglib.h" +#endif } } diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index e5e1b7dfd4..a2d9e4e6f2 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -2173,7 +2173,6 @@ void ScreenGameplay::Input( const InputEventPlus &input ) { //LOG->Trace( "ScreenGameplay::Input()" ); - // codes motherfucker, do you speak it Message msg(""); if( m_Codes.InputMessage(input, msg) ) this->HandleMessage( msg ); diff --git a/src/ScreenOptions.cpp b/src/ScreenOptions.cpp index 0c203ca22c..7a28f05b3e 100644 --- a/src/ScreenOptions.cpp +++ b/src/ScreenOptions.cpp @@ -1327,8 +1327,19 @@ public: return 1; } - //FSX's WIP code, don't touch - //static int SetOptio + /*FSX's WIP code, touch if it's wrong (which it probably is) + static int SetOptionRowFromName( T* p, lua_State *L ) + { + FOREACH_PlayerNumber( pn ) + { + for( unsigned i=0; iGetRowTitle() == SArg(1) && m_pRows[i]->GetRowDef().IsEnabledForPlayer(p) ) + p->MoveRowAbsolute(pn,i) + } + } + } + */ LunaScreenOptions() { diff --git a/src/arch/Lights/LightsDriver.h b/src/arch/Lights/LightsDriver.h index 56e5f41236..5420f25cf5 100644 --- a/src/arch/Lights/LightsDriver.h +++ b/src/arch/Lights/LightsDriver.h @@ -14,7 +14,7 @@ public: LightsDriver() {}; virtual ~LightsDriver() {}; - + virtual void Set( const LightsState *ls ) = 0; }; diff --git a/src/arch/Lights/LightsDriver_Export.h b/src/arch/Lights/LightsDriver_Export.h index 49f0ed7668..555a4e132a 100644 --- a/src/arch/Lights/LightsDriver_Export.h +++ b/src/arch/Lights/LightsDriver_Export.h @@ -12,7 +12,7 @@ public: LightsDriver_Export(); virtual void Set( const LightsState *ls ); - /* Get the current lights state. This can be called from a thread. */ + // Get the current lights state. This can be called from a thread. static LightsState GetState(); private: diff --git a/src/arch/Lights/LightsDriver_LinuxParallel.cpp b/src/arch/Lights/LightsDriver_LinuxParallel.cpp index 270585480c..6a54e61cc4 100644 --- a/src/arch/Lights/LightsDriver_LinuxParallel.cpp +++ b/src/arch/Lights/LightsDriver_LinuxParallel.cpp @@ -1,9 +1,6 @@ -// -// LightsDriver_LinuxParallel - Parallel Port Based Lights Driver for Linux -// -// This requires root permissions to work! (run as root or suid) -// This code was written using SystemMessage Driver as template. -// +/* LightsDriver_LinuxParallel - Parallel Port Based Lights Driver for Linux + * This requires root permissions to work! (run as root or suid) + * This code was written using SystemMessage Driver as template. */ #include "global.h" #include @@ -12,6 +9,7 @@ #include "InputMapper.h" #include "Game.h" +// xxx: don't hardcode the port address. -aj static const int PORT_ADDRESS = 0x378; static const bool SCREEN_DEBUG = false; @@ -19,7 +17,7 @@ REGISTER_SOUND_DRIVER_CLASS(LinuxParallel); LightsDriver_LinuxParallel::LightsDriver_LinuxParallel() { - // Give port's permissions and reset all bits to zero + // Give ports permissions and reset all bits to zero ioperm( PORT_ADDRESS, 1, 1 ); outb( 0, PORT_ADDRESS ); } @@ -36,7 +34,7 @@ void LightsDriver_LinuxParallel::Set( const LightsState *ls ) // Set LightState to port RString s; - // Prepare Screen Output too for debugging + // Prepare screen output too for debugging s += "LinuxParallel Lights Driver Debug\n"; s += "Lights Mode: " + LightsModeToString(LIGHTSMAN->GetLightsMode()) + "\n"; @@ -75,7 +73,6 @@ void LightsDriver_LinuxParallel::Set( const LightsState *ls ) /* * (c) 2004 Hugo Hromic M. - * * All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a diff --git a/src/arch/Lights/LightsDriver_LinuxWeedTech.cpp b/src/arch/Lights/LightsDriver_LinuxWeedTech.cpp index 16a0e96463..7376118651 100644 --- a/src/arch/Lights/LightsDriver_LinuxWeedTech.cpp +++ b/src/arch/Lights/LightsDriver_LinuxWeedTech.cpp @@ -11,7 +11,7 @@ REGISTER_SOUND_DRIVER_CLASS(LinuxWeedTech); -// Begin serial driver // +// Begin serial driver static int fd = -1; static LightsState CurLights; @@ -45,7 +45,7 @@ static inline void SerialOpen() { // Make sure we've not already opened the port SerialClose(); - + // Open a fresh instance.. fd = open( "/dev/ttyS0", O_WRONLY | O_NOCTTY | O_NDELAY ); if( fd < 0 ) @@ -58,16 +58,14 @@ static inline void SerialOpen() tcgetattr( fd, &my_termios ); tcflush( fd, TCIFLUSH ); my_termios.c_cflag = B9600 | CS8 | CLOCAL | HUPCL; - + cfsetospeed( &my_termios, B9600 ); tcsetattr( fd, TCSANOW, &my_termios ); } } // End serial driver // - - -/* Module maps +/* Module maps (Dance mode) MODULE #A Channel A: Marquee (Up-Left) Channel B: Marquee (Up-Right) @@ -101,7 +99,6 @@ static inline void SerialOpen() Channel N: */ - LightsDriver_LinuxWeedTech::LightsDriver_LinuxWeedTech() { // Open port @@ -131,7 +128,7 @@ void LightsDriver_LinuxWeedTech::Set( const LightsState *ls ) // Re-used var's char str[6] = { 0x00, 0x00, 0x00, '1', 0x0d, 0x00 }; bool bOn = false; - + { LightsMode lm = LIGHTSMAN->GetLightsMode(); if( lm == LIGHTSMODE_GAMEPLAY ) @@ -144,10 +141,10 @@ void LightsDriver_LinuxWeedTech::Set( const LightsState *ls ) bOn |= ls->m_bCabinetLights[cl]; CurLights.m_bCabinetLights[cl] = ls->m_bCabinetLights[cl]; } - + str[0]='A'; str[1]='W'; - + if( bOn ) { str[2]='C'; @@ -158,13 +155,13 @@ void LightsDriver_LinuxWeedTech::Set( const LightsState *ls ) str[2]='0'; str[3]='0'; } - + // Send command puts( str ); SerialOut( str, 6 ); return; } - + FOREACH_CabinetLight( cl ) { // Only send the command if the light has changed states (on/off) @@ -177,13 +174,12 @@ void LightsDriver_LinuxWeedTech::Set( const LightsState *ls ) else if(cl == LIGHT_MARQUEE_LR_RIGHT) {str[0] = 'A'; str[2] = 'D';} else if(cl == LIGHT_BASS_LEFT) {str[0] = 'A'; str[2] = 'G';} else if(cl == LIGHT_BASS_RIGHT) {str[0] = 'A'; str[2] = 'H';} - - + if( bOn ) str[1]='L'; else str[1]='H'; - + if( str[0] != 0x00 ) { SerialOut( str, 6 ); @@ -193,7 +189,7 @@ void LightsDriver_LinuxWeedTech::Set( const LightsState *ls ) } } } - + FOREACH_ENUM( GameController, gc ) { FOREACH_ENUM( GameButton, gb ) @@ -204,23 +200,20 @@ void LightsDriver_LinuxWeedTech::Set( const LightsState *ls ) if(gc == GameController_1) { if(gb == DANCE_BUTTON_LEFT) {str[0] = 'A'; str[2] = 'I';} if(gb == DANCE_BUTTON_RIGHT) {str[0] = 'A'; str[2] = 'J';} - if(gb == DANCE_BUTTON_UP) {str[0] = 'A'; str[2] = 'K';} + if(gb == DANCE_BUTTON_UP) {str[0] = 'A'; str[2] = 'K';} if(gb == DANCE_BUTTON_DOWN) {str[0] = 'A'; str[2] = 'L';} if(gb == GAME_BUTTON_START) {str[0] = 'A'; str[2] = 'E';} } else if(gc == GameController_2) { if(gb == DANCE_BUTTON_LEFT) {str[0] = 'A'; str[2] = 'M';} if(gb == DANCE_BUTTON_RIGHT) {str[0] = 'A'; str[2] = 'N';} - if(gb == DANCE_BUTTON_UP) {str[0] = 'B'; str[2] = 'A';} + if(gb == DANCE_BUTTON_UP) {str[0] = 'B'; str[2] = 'A';} if(gb == DANCE_BUTTON_DOWN) {str[0] = 'B'; str[2] = 'B';} if(gb == GAME_BUTTON_START) {str[0] = 'A'; str[2] = 'F';} } - - if( bOn ) - str[1]='L'; - else - str[1]='H'; - + + str[1] = bOn ? 'L' : 'H'; + if( str[0] != 0x00 ) { //SerialOut(str, 6); @@ -230,5 +223,29 @@ void LightsDriver_LinuxWeedTech::Set( const LightsState *ls ) } } } - } + +/* + * (c) 2003-2004 Kevin Slaughter + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/src/arch/Lights/LightsDriver_LinuxWeedTech.h b/src/arch/Lights/LightsDriver_LinuxWeedTech.h index 27f4b891a2..236e3bc4a0 100644 --- a/src/arch/Lights/LightsDriver_LinuxWeedTech.h +++ b/src/arch/Lights/LightsDriver_LinuxWeedTech.h @@ -1,7 +1,5 @@ -/* - * LightsDriver_LinuxWeedTech: Control lights with WTDIO-M from Weeder Technologies - * http://www.weedtech.com - */ +/* LightsDriver_LinuxWeedTech: Control lights with WTDIO-M from Weeder Technologies + * http://www.weedtech.com / http://www.weedtech.com/wtdio-m.html */ #ifndef LightsDriver_LinuxWeedTech_H #define LightsDriver_LinuxWeedTech_H @@ -13,7 +11,7 @@ class LightsDriver_LinuxWeedTech : public LightsDriver public: LightsDriver_LinuxWeedTech(); virtual ~LightsDriver_LinuxWeedTech(); - + virtual void Set( const LightsState *ls ); }; diff --git a/src/arch/Lights/LightsDriver_SystemMessage.cpp b/src/arch/Lights/LightsDriver_SystemMessage.cpp index e9335b7617..b405a6e10f 100644 --- a/src/arch/Lights/LightsDriver_SystemMessage.cpp +++ b/src/arch/Lights/LightsDriver_SystemMessage.cpp @@ -20,7 +20,7 @@ void LightsDriver_SystemMessage::Set( const LightsState *ls ) return; RString s; - + s += LightsModeToString(LIGHTSMAN->GetLightsMode()) + "\n"; s += "Cabinet: "; diff --git a/src/arch/Lights/LightsDriver_SystemMessage.h b/src/arch/Lights/LightsDriver_SystemMessage.h index bc2a807346..aea0cb7a23 100644 --- a/src/arch/Lights/LightsDriver_SystemMessage.h +++ b/src/arch/Lights/LightsDriver_SystemMessage.h @@ -1,3 +1,4 @@ +/* LightsDriver_SystemMessage: Outputs light state as a system message. */ #ifndef LightsDriver_SystemMessage_H #define LightsDriver_SystemMessage_H @@ -8,7 +9,7 @@ class LightsDriver_SystemMessage : public LightsDriver public: LightsDriver_SystemMessage(); virtual ~LightsDriver_SystemMessage(); - + virtual void Set( const LightsState *ls ); }; diff --git a/src/arch/Lights/LightsDriver_Win32Parallel.cpp b/src/arch/Lights/LightsDriver_Win32Parallel.cpp index 69f2bf09f7..85913a89c1 100644 --- a/src/arch/Lights/LightsDriver_Win32Parallel.cpp +++ b/src/arch/Lights/LightsDriver_Win32Parallel.cpp @@ -13,6 +13,7 @@ typedef short int (WINAPI ISDRIVERINSTALLED)(); ISDRIVERINSTALLED* IsDriverInstalled = NULL; const int LIGHTS_PER_PARALLEL_PORT = 8; +// xxx: don't hardcode the port addresses. -aj const int MAX_PARALLEL_PORTS = 3; short LPT_ADDRESS[MAX_PARALLEL_PORTS] = { @@ -48,7 +49,7 @@ LightsDriver_Win32Parallel::LightsDriver_Win32Parallel() MessageBox(NULL, "Could not LoadLibrary( parallel_lights_io.dll ).", "ERROR", MB_OK ); return; } - + //Get the function pointers PortOut = (PORTOUT*) GetProcAddress(hDLL, "PortOut"); IsDriverInstalled = (ISDRIVERINSTALLED*) GetProcAddress(hDLL, "IsDriverInstalled"); @@ -83,7 +84,7 @@ void LightsDriver_Win32Parallel::Set( const LightsState *ls ) data[lpt] &= ~mask; } } - + FOREACH_ENUM( GameController, gc ) { FOREACH_ENUM( GameButton, gb ) diff --git a/src/arch/Lights/LightsDriver_Win32Parallel.h b/src/arch/Lights/LightsDriver_Win32Parallel.h index 474ac5d8c0..7a9c7caa66 100644 --- a/src/arch/Lights/LightsDriver_Win32Parallel.h +++ b/src/arch/Lights/LightsDriver_Win32Parallel.h @@ -1,7 +1,5 @@ -/* - * LightsDriver_Win32Parallel - Control lights with Kit 74: - * http://www.google.com/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=kit+74+relay - */ +/* LightsDriver_Win32Parallel - Control lights with Kit 74: + * http://www.google.com/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=kit+74+relay */ #ifndef LightsDriver_Win32Parallel_H #define LightsDriver_Win32Parallel_H @@ -13,7 +11,7 @@ class LightsDriver_Win32Parallel : public LightsDriver public: LightsDriver_Win32Parallel(); virtual ~LightsDriver_Win32Parallel(); - + virtual void Set( const LightsState *ls ); };