[default -> sm130futures] Bring up to date.

This commit is contained in:
Jason Felds
2011-05-01 21:35:20 -04:00
115 changed files with 1228 additions and 305 deletions
+4 -1
View File
@@ -9,9 +9,12 @@ change to JSON, but it is unsure if this will be done.
Implement .ssc at your own risk. Implement .ssc at your own risk.
________________________________________________________________________________ ________________________________________________________________________________
[v0.57] - Wolfman2000 [v0.58] - Wolfman2000
* Implement #LABELS tag for easier Editor work/Rock Band section mimicry. * Implement #LABELS tag for easier Editor work/Rock Band section mimicry.
[v0.57] - AJ
* Add #ORIGIN tag to metadata.
[v0.56] - Wolfman2000 [v0.56] - Wolfman2000
* Implement #WARPS tag to replace negative bpm/stop gimmicks. * Implement #WARPS tag to replace negative bpm/stop gimmicks.
+51 -5
View File
@@ -30,20 +30,66 @@ sm-ssc $SM5VERSION | 2011????
jump to different labels made. [Wolfman2000] jump to different labels made. [Wolfman2000]
================================================================================ ================================================================================
sm-ssc v1.2.5 | 201104?? sm-ssc v1.2.5 | 20110501
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
20110430
--------
* [ScreenOptions] Renamed "ScreenOptions LineHighlight" to "ScreenOptions
LineHighlight P#", making it load per-player. [AJ]
* [OptionRow] Added Text param to RefreshMessageCommand. [AJ]
* [ScreenOptions] Added SelectMultipleMessageCommand, ChangeValueMessageCommand. [AJ]
* [UnlockEntry] Added GetCourse, GetCode Lua bindings. [AJ]
* [UnlockManager] Added UnlockRequirement_NumUnlocked enum. [AJ]
* [Song] Added Origin (#ORIGIN tag in .ssc) [AJ]
* [UnlockManager] Added GetPoints(UnlockRequirement),
GetPointsForProfile(Profile,UnlockRequirement) Lua bindings. [AJ]
* [Course] Added #SCRIPTER tag and GetScripter Lua binding. [AJ]
20110428
--------
* [BeginnerHelper] Various changes: [AJ]
* Changed Player_#X/Y metrics to Player#X/Y metrics for consistency.
* Converted the background to an AutoActor.
* [BPMDisplay] Added SetFromSong Lua binding. [AJ]
20110423
--------
* [CourseLoaderCRS] Fixed loading of Player's Best/Most Played courses,
probably others too. [AJ]
* [ScreenGameplaySyncMachine] Fixed a crash when entering
ScreenGameplaySyncMachine as Player 2. (Fixes issue 127) [AJ]
* [ScreenOptionsEditCourse] Fixed a crash when going to the first row.
(Fixes issue 235) [AJ]
* [SongManager] Added GetCourseGroupNames Lua binding. [AJ]
20110422
--------
* [Banner] Added ScrollSpeedDivisor metric; controls the scroll speed of
Random/Roulette banners. [AJ]
* [FadingBanner] Added BannerRoulette, BannerRandom, and Banner(Custom Item Name) commands. [AJ]
20110421
--------
* [ScreenSelectMusic] Changed "Percent Frame p1" to "PercentFrame P1" for consistency. [AJ]
* [LifeMeterBattery] Convert Frame to an AutoActor. [AJ]
* [ScreenEvaluation] Added RollingNumbersClass metric, allowing for the ability
to change which RollingNumbers class is loaded. [AJ]
* [ScreenGameplay] Added SongNumberFormat metric. [AJ]
20110420
--------
* [CourseContentsList] Fix a crash. [AJ]
20110416 20110416
-------- --------
* [PlayerOptions] Added UsingReverse() Lua binding (automatically tests * [PlayerOptions] Added UsingReverse() Lua binding (automatically tests GetReverse() == 1) [AJ]
GetReverse() == 1) [AJ]
* [PlayerState] Added GetCurrentPlayerOptions() Lua binding [AJ] * [PlayerState] Added GetCurrentPlayerOptions() Lua binding [AJ]
20110413 20110413
-------- --------
* [ScreenSelectMusic] Made score frame into an AutoActor, changed the filename * [ScreenSelectMusic] Made score frame into an AutoActor, changed the filename
from "score frame p1" to "ScoreFrame P1" for consistency with other elements. from "score frame p1" to "ScoreFrame P1" for consistency with other elements. [AJ]
[AJ]
20110405 20110405
-------- --------
@@ -0,0 +1,141 @@
local function Fooled()
local phrases = {
"hornswaggled",
"bamboozled",
"hoodwinked",
"swindled",
"duped",
"hoaxed",
"fleeced",
"shafted",
"caboodled",
"beguiled",
"finagled",
"two-timed",
"suckered",
"flimflammed"
}
return phrases[math.random(#phrases)]
end
local ssc = {
"AJ Kelly as freem",
"Jonathan Payne (Midiman)",
"Colby Klein (shakesoda)",
}
local sm_ssc = {
"Jason Felds (wolfman2000)",
"Alberto Ramos (Daisuke Master)",
"Jack Walstrom (FSX)",
}
local stepmania = {
"Chris Danford",
"Glenn Maynard",
"Steve Checkoway",
-- and various other contributors
}
local contrib = {
"Aldo Fregoso (Aldo_MX)", -- delays
"Chris Eldridge (kurisu)", -- dance-threepanel
"cerbo",
"cesarmades", -- pump/cmd* noteskins
"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
"NitroX72", -- pump/frame noteskin
"sy567", -- beginner helper fix
"Thai Pangsakulyanont (theDtTvB)",
"v1toko", -- x-mode from StepNXA
}
local thanks = {
"A Pseudonymous Coder", -- support
"Bill Shillito (DM Ashura)", -- Music (not yet though)
"cpubasic13", -- testing (a lot)
"Dreamwoods",
"Infamouspat", -- oitg bro
"Jason Bolt (LightningXCE)",
"Jousway", -- Noteskins
"Matt1360", -- Automake magic + oitg bro
"Mark Cannon (vyhd)", -- oitg bro + twirl/roll
"Petriform", -- Music
"Renard",
"Ryan McKanna (Plaguefox)",
}
local shoutout = {
"The Lua team", -- lua project lead or some shit. super nerdy but oh hell.
"Mojang", -- minecraft forever -freem
"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
"You showed us... your ultimate dance",
-- "Can't stop crying... buckets of tears!"
}
local copyright = {
"StepMania is released under the terms of the MIT license.",
"If you paid for the program you've been " .. Fooled() .. ".",
"All content is the sole property of their respectful owners."
}
local sections = {
{ "the spinal shark collective (project lead)", ssc },
{ "sm-ssc Team", sm_ssc },
{ "StepMania Team", stepmania },
{ "Other Contributors", contrib },
{ "Special Thanks", thanks },
{ "Shoutouts", shoutout },
{ "Copyright", copyright },
}
-- To add people or sections modify the above.
local lineOn = cmd(zoom,0.875;strokecolor,color("#444444");shadowcolor,color("#444444");shadowlength,3)
local sectionOn = cmd(diffuse,color("#88DDFF");strokecolor,color("#446688");shadowcolor,color("#446688");shadowlength,3)
local item_padding_start = 4;
local creditScroller = Def.ActorScroller {
SecondsPerItem = 0.5;
NumItemsToDraw = 40;
TransformFunction = function( self, offset, itemIndex, numItems)
self:y(30*offset)
end;
OnCommand = cmd(scrollwithpadding,item_padding_start,15);
}
local function AddLine( text, command )
local text = Def.ActorFrame{
LoadFont("Common normal")..{
Text = text or "";
OnCommand = command or lineOn;
}
}
table.insert( creditScroller, text )
end
-- Add sections with padding.
for section in ivalues(sections) do
AddLine( section[1], sectionOn )
for name in ivalues(section[2]) do
AddLine( name )
end
AddLine()
AddLine()
end
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),
}
};
@@ -1,9 +1,9 @@
function GetLocalProfiles() function GetLocalProfiles()
local ret = {}; local t = {};
for p = 0,PROFILEMAN:GetNumLocalProfiles()-1 do for p = 0,PROFILEMAN:GetNumLocalProfiles()-1 do
local profile=PROFILEMAN:GetLocalProfileFromIndex(p); local profile=PROFILEMAN:GetLocalProfileFromIndex(p);
local item = Def.ActorFrame { local ProfileCard = Def.ActorFrame {
--[[ Def.Quad { --[[ Def.Quad {
InitCommand=cmd(zoomto,200,1;y,40/2); InitCommand=cmd(zoomto,200,1;y,40/2);
OnCommand=cmd(diffuse,Color('Outline');); OnCommand=cmd(diffuse,Color('Outline'););
@@ -22,10 +22,10 @@ function GetLocalProfiles()
end; end;
}; };
}; };
table.insert( ret, item ); t[#t+1]=ProfileCard;
end; end;
return ret; return t;
end; end;
function LoadCard(cColor) function LoadCard(cColor)
@@ -38,14 +38,14 @@ function LoadCard(cColor)
return t return t
end end
function LoadPlayerStuff(Player) function LoadPlayerStuff(Player)
local ret = {}; local t = {};
local pn = (Player == PLAYER_1) and 1 or 2; local pn = (Player == PLAYER_1) and 1 or 2;
--[[ local t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 200, 230) .. { --[[ local t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 200, 230) .. {
Name = 'BigFrame'; Name = 'BigFrame';
}; --]] }; --]]
local t = Def.ActorFrame { t[#t+1] = Def.ActorFrame {
Name = 'JoinFrame'; Name = 'JoinFrame';
LoadCard(Color('Orange')); LoadCard(Color('Orange'));
--[[ Def.Quad { --[[ Def.Quad {
@@ -62,23 +62,13 @@ function LoadPlayerStuff(Player)
OnCommand=cmd(diffuseshift;effectcolor1,Color('White');effectcolor2,color("0.5,0.5,0.5")); OnCommand=cmd(diffuseshift;effectcolor1,Color('White');effectcolor2,color("0.5,0.5,0.5"));
}; };
}; };
table.insert( ret, t );
t = Def.ActorFrame { t[#t+1] = Def.ActorFrame {
Name = 'BigFrame'; Name = 'BigFrame';
LoadCard(PlayerColor(Player)); LoadCard(PlayerColor(Player));
}; };
table.insert( ret, t ); t[#t+1] = Def.ActorFrame {
--[[ t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 170, 20) .. {
Name = 'SmallFrame'; Name = 'SmallFrame';
}; --]]
t = Def.ActorFrame {
Name = 'SmallFrame';
--[[ Def.Quad {
InitCommand=cmd(zoomto,170+4,32+4);
OnCommand=cmd(shadowlength,1);
}; --]]
InitCommand=cmd(y,-2); InitCommand=cmd(y,-2);
Def.Quad { Def.Quad {
InitCommand=cmd(zoomto,200-10,40+2); InitCommand=cmd(zoomto,200-10,40+2);
@@ -97,9 +87,8 @@ function LoadPlayerStuff(Player)
OnCommand=cmd(diffuse,PlayerColor(Player);glow,color("1,1,1,0.25")); OnCommand=cmd(diffuse,PlayerColor(Player);glow,color("1,1,1,0.25"));
}; };
}; };
table.insert( ret, t );
t = Def.ActorScroller{ t[#t+1] = Def.ActorScroller{
Name = 'Scroller'; Name = 'Scroller';
NumItemsToDraw=6; NumItemsToDraw=6;
-- InitCommand=cmd(y,-230/2+20;); -- InitCommand=cmd(y,-230/2+20;);
@@ -114,34 +103,17 @@ function LoadPlayerStuff(Player)
end; end;
children = GetLocalProfiles(); children = GetLocalProfiles();
}; };
table.insert( ret, t );
t = Def.ActorFrame { t[#t+1] = Def.ActorFrame {
Name = "EffectFrame"; Name = "EffectFrame";
--[[ Def.Quad {
InitCommand=cmd(y,-230/2;vertalign,top;zoomto,200,8;fadebottom,1);
OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25);
}; };
Def.Quad { t[#t+1] = LoadFont("Common Normal") .. {
InitCommand=cmd(y,230/2;vertalign,bottom;zoomto,200,8;fadetop,1);
OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25);
}; --]]
};
table.insert( ret, t );
--[[ t = Def.BitmapText {
OnCommand = cmd(y,160);
Name = 'SelectedProfileText';
Font = "Common Normal";
Text = 'No profile';
}; --]]
t = LoadFont("Common Normal") .. {
Name = 'SelectedProfileText'; Name = 'SelectedProfileText';
--InitCommand=cmd(y,160;shadowlength,1;diffuse,PlayerColor(Player)); --InitCommand=cmd(y,160;shadowlength,1;diffuse,PlayerColor(Player));
InitCommand=cmd(y,160;shadowlength,1;); InitCommand=cmd(y,160;shadowlength,1;);
}; };
table.insert( ret, t );
return ret; return t;
end; end;
function UpdateInternal3(self, Player) function UpdateInternal3(self, Player)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

+3 -2
View File
@@ -1,4 +1,4 @@
[common] [common]
Top=5 Top=5
Baseline=26 Baseline=26
LineSpacing=28 LineSpacing=28
@@ -42,4 +42,5 @@ line 2=큰탑터투트티펌페
line 3=폼핑할함해행헤혀 line 3=폼핑할함해행헤혀
line 4=환회휘태난터까시 line 4=환회휘태난터까시
line 5=간너샐러버문쳐달 line 5=간너샐러버문쳐달
line 6=깡천림홍석 line 6=깡천림홍석악전반
line 7=
@@ -0,0 +1 @@
_blank
+2 -2
View File
@@ -435,7 +435,7 @@ SoundResampleQuality=Advanced: Select the resampling quality to use.
SoundVolume=Adjust the volume level during gameplay. SoundVolume=Adjust the volume level during gameplay.
SoundVolumeAttract=Adjust the volume level during attract mode. SoundVolumeAttract=Adjust the volume level during attract mode.
Speed=Speed Speed=Speed
Stepmania Credits=The Stepmania Development Team StepMania Credits=The StepMania Development Team.
Steps=Steps Steps=Steps
Style= Style=
Test Input=Test the responsiveness of connected joysticks. Test Input=Test the responsiveness of connected joysticks.
@@ -995,7 +995,7 @@ ShowSongOptions=Show Song Options
ShowStats=Show Stats ShowStats=Show Stats
SmoothLines=SmoothLines SmoothLines=SmoothLines
SoundEffect=Sound Effect SoundEffect=Sound Effect
Stepmania Credits=Stepmania Credits StepMania Credits=StepMania Credits
Center1Player=Center 1 Player Center1Player=Center 1 Player
Song=Song Song=Song
Song Group=Song Group Song Group=Song Group
@@ -40,7 +40,7 @@ v1.1
* Cleaned up code some, I think. * Cleaned up code some, I think.
________________________________________________________________________________ ________________________________________________________________________________
anticipated future changes: anticipated future changes:
* M-Mod support (when sm-ssc imntegrates it) * M-Mod support (when sm-ssc integrates it)
]] ]]
-- ProfileDir(slot): gets the profile dir for slot, -- ProfileDir(slot): gets the profile dir for slot,
@@ -68,7 +68,7 @@ local function ParseSpeedModFile(path)
return mods return mods
else else
-- error; write a fallback mod file and return it -- error; write a fallback mod file and return it
local fallbackString = "0.5x,0.75x,1x,1.75x,2x,2.25x,2.5x,C150,C300" local fallbackString = "0.5x,1x,1.5x,2x,3x,4x,8x,C200,C400"
Trace("[CustomSpeedMods]: Could not read SpeedMods; writing fallback to "..path) Trace("[CustomSpeedMods]: Could not read SpeedMods; writing fallback to "..path)
file:Open(path, 2) file:Open(path, 2)
file:Write(fallbackString) file:Write(fallbackString)
@@ -141,6 +141,10 @@ function Actor:xy(actorX,actorY)
self:y(actorY) self:y(actorY)
end end
function PositionPerPlayer(player, p1X, p2X)
return player == PLAYER_1 and p1X or p2X
end
-- MaskSource([clearzbuffer]) -- MaskSource([clearzbuffer])
-- Sets an actor up as the source for a mask. Clears zBuffer by default. -- Sets an actor up as the source for a mask. Clears zBuffer by default.
function Actor:MaskSource(noclear) function Actor:MaskSource(noclear)
Binary file not shown.
+91 -33
View File
@@ -123,11 +123,37 @@ UnlockColor=color("1,0.5,0,1")
ExtraColor=color("#ff0000") -- red ExtraColor=color("#ff0000") -- red
[UnlockManager] [UnlockManager]
# Unlock specific things. we'll go in-depth with this one day, but it really # Unlock specific things.
# isnt what sm-ssc was designed for.
AutoLockChallengeSteps=false AutoLockChallengeSteps=false
UnlockNames="" UnlockNames=""
# useful commands:
# require,(UnlockRequirement),(value);
# where (UnlockRequirement) is one of the UnlockRequirement enums.
# song,(Song Name);
# sets a Song to be unlocked
# course,(Course Name);
# sets a Course to be unlocked
# roulette;
# Song shows up in roulette (useful with Song only)
# mod,(modifier);
# sets a modifier to be unlocked.
# code,(code);
# assigns a code to the unlock
# examples:
# 1) The song "Pledge" requires 500 AP.
# Unlock1Command=song,"Pledge";require,"UnlockRequirement_ArcadePoints",500
# 2) The song "ABC" can be unlocked via roulette; pick an arbitrary code
# to use to store the unlock.
# Unlock2Command=song,"ABC";code,"59183751";roulette
# 03 # # 03 #
[ArrowEffects] [ArrowEffects]
@@ -195,6 +221,8 @@ BottomEdge=SCREEN_BOTTOM
# Scroll stuff when you roll over it, DDR Extreme style. # Scroll stuff when you roll over it, DDR Extreme style.
ScrollRandom=false ScrollRandom=false
ScrollRoulette=false ScrollRoulette=false
# Control how fast the banner scrolls. Higher numbers mean slower.
ScrollSpeedDivisor=2
[BitmapText] [BitmapText]
# The colors in the 'roulette' text. you can have alot! # The colors in the 'roulette' text. you can have alot!
@@ -467,6 +495,9 @@ BannerFadeOffCommand=diffusealpha,1;stoptweening;linear,0.25;diffusealpha,0
# ? # ?
BannerResetFadeCommand=diffusealpha,1 BannerResetFadeCommand=diffusealpha,1
BannerRouletteCommand=
BannerRandomCommand=
[Gameplay] [Gameplay]
# System Direction # System Direction
ComboIsPerRow=ComboPerRow() ComboIsPerRow=ComboPerRow()
@@ -1731,7 +1762,7 @@ LoadEdits=true
Fallback="ScreenWithMenuElements" Fallback="ScreenWithMenuElements"
Class="ScreenSelectProfile" Class="ScreenSelectProfile"
# #
ScreenOnCommand=lockinput,1 ScreenOnCommand=%function(self) self:lockinput(3); end;
# #
NextScreen=Branch.AfterSelectProfile() NextScreen=Branch.AfterSelectProfile()
PrevScreen=Branch.TitleMenu() PrevScreen=Branch.TitleMenu()
@@ -1744,7 +1775,8 @@ CodeUp="+MenuUp"
CodeUp2="+Up" CodeUp2="+Up"
CodeDown="+MenuDown" CodeDown="+MenuDown"
CodeDown2="+Down" CodeDown2="+Down"
CodeStart="Start" # Holding Start let us skip ( annoying )
CodeStart="~Start,+Start"
CodeBack="Back" CodeBack="Back"
CodeCenter="Center" CodeCenter="Center"
CodeDownLeft="DownLeft" CodeDownLeft="DownLeft"
@@ -1764,16 +1796,16 @@ DefaultChoice="Single"
ChoiceNames=GameCompatibleModes() ChoiceNames=GameCompatibleModes()
# #
OptionOrderAuto="1:2,2:1" OptionOrderAuto="1:2,2:1"
ChoiceSingle="name,Single;style,single;screen,"..Branch.AfterSelectPlayMode() ChoiceSingle="name,Single;style,single;text,Single;screen,"..Branch.AfterSelectPlayMode()
ChoiceDouble="name,Double;style,double;screen,"..Branch.AfterSelectPlayMode() ChoiceDouble="name,Double;style,double;text,Double;screen,"..Branch.AfterSelectPlayMode()
ChoiceSolo="name,Solo;style,solo;screen,"..Branch.AfterSelectPlayMode() ChoiceSolo="name,Solo;style,solo;text,Solo;screen,"..Branch.AfterSelectPlayMode()
ChoiceVersus="name,Versus;style,versus;screen,"..Branch.AfterSelectPlayMode() ChoiceVersus="name,Versus;style,versus;text,Versus;screen,"..Branch.AfterSelectPlayMode()
ChoiceCouple="name,Couple;style,couple;screen,"..Branch.AfterSelectPlayMode() ChoiceCouple="name,Couple;style,couple;text,Couple;screen,"..Branch.AfterSelectPlayMode()
ChoiceHalfDouble="name,HalfDouble;style,halfdouble;screen,"..Branch.AfterSelectPlayMode() ChoiceHalfDouble="name,HalfDouble;style,halfdouble;text,HalfDouble;screen,"..Branch.AfterSelectPlayMode()
Choice5Keys="name,5Keys;style,single5;;screen,"..Branch.AfterSelectPlayMode() Choice5Keys="name,5Keys;style,single5;text,5Keys;screen,"..Branch.AfterSelectPlayMode()
Choice7Keys="name,7Keys;style,single7;screen,"..Branch.AfterSelectPlayMode() Choice7Keys="name,7Keys;style,single7;text,7Keys;screen,"..Branch.AfterSelectPlayMode()
Choice10Keys="name,10Keys;style,double10;screen,"..Branch.AfterSelectPlayMode() Choice10Keys="name,10Keys;style,double10;text,10Keys;screen,"..Branch.AfterSelectPlayMode()
Choice14Keys="name,14Keys;style,double14;screen,"..Branch.AfterSelectPlayMode() Choice14Keys="name,14Keys;style,double14;text,14Keys;screen,"..Branch.AfterSelectPlayMode()
ChoiceKB7="name,kb7;style,single;screen,"..Branch.AfterSelectPlayMode() ChoiceKB7="name,kb7;style,single;screen,"..Branch.AfterSelectPlayMode()
# #
PerChoiceScrollElement=false PerChoiceScrollElement=false
@@ -1794,7 +1826,7 @@ PrevScreen=Branch.TitleMenu()
# #
TimerSeconds=40 TimerSeconds=40
# #
DefaultChoice="Easy" DefaultChoice="Normal"
ChoiceNames="Normal,Rave,Extended,Oni,Endless" ChoiceNames="Normal,Rave,Extended,Oni,Endless"
# #
PerChoiceScrollElement=false PerChoiceScrollElement=false
@@ -1804,13 +1836,13 @@ ShowScroller=true
WrapScroller=true WrapScroller=true
ShowIcon=false ShowIcon=false
# #
ChoiceEasy="applydefaultoptions;name,Easy;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal" ChoiceEasy="applydefaultoptions;name,Easy;text,Easy;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceNormal="applydefaultoptions;name,Normal;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal" ChoiceNormal="applydefaultoptions;name,Normal;text,Normal;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceHard="applydefaultoptions;name,Hard;playmode,regular;difficulty,hard;screen,ScreenSelectMusic;setenv,sMode,Normal" ChoiceHard="applydefaultoptions;name,Hard;text,Hard;playmode,regular;difficulty,hard;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceRave="applydefaultoptions;name,Rave;playmode,rave;screen,ScreenSelectMusic;setenv,sMode,Rave" ChoiceRave="applydefaultoptions;name,Rave;text,Rave;playmode,rave;screen,ScreenSelectMusic;setenv,sMode,Rave"
ChoiceExtended="applydefaultoptions;name,Extended;playmode,nonstop;screen,ScreenSelectCourse;setenv,sMode,Extended" ChoiceExtended="applydefaultoptions;name,Extended;text,Extended;playmode,nonstop;screen,ScreenSelectCourse;setenv,sMode,Extended"
ChoiceOni="applydefaultoptions;name,Oni;playmode,oni;screen,ScreenSelectCourse;setenv,sMode,Oni" ChoiceOni="applydefaultoptions;name,Oni;text,Oni;playmode,oni;screen,ScreenSelectCourse;setenv,sMode,Oni"
ChoiceEndless="applydefaultoptions;name,Endless;playmode,endless;screen,ScreenSelectCourse;setenv,sMode,Endless" ChoiceEndless="applydefaultoptions;name,Endless;text,Endless;playmode,endless;screen,ScreenSelectCourse;setenv,sMode,Endless"
[ScreenSelectCharacter] [ScreenSelectCharacter]
Class="ScreenSelectMaster" Class="ScreenSelectMaster"
@@ -2052,9 +2084,12 @@ PageOnCommand=
ContainerOnCommand= ContainerOnCommand=
ContainerOffCommand= ContainerOffCommand=
CursorOnCommand= CursorOnCommand=
LineHighlightOnCommand= LineHighlightP1OnCommand=
LineHighlightChangeCommand= LineHighlightP1ChangeCommand=
LineHighlightChangeToExitCommand= LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
ShowScrollBar=false ShowScrollBar=false
ScrollBarHeight=0 ScrollBarHeight=0
ScrollBarTime=0 ScrollBarTime=0
@@ -2442,9 +2477,13 @@ Fallback="ScreenOptionsSimple"
OptionRowNormalMetricsGroup="OptionRowService" OptionRowNormalMetricsGroup="OptionRowService"
LineHighlightOnCommand=visible,false LineHighlightP1OnCommand=visible,false
LineHighlightChangeCommand= LineHighlightP1ChangeCommand=
LineHighlightChangeToExitCommand= LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=visible,false
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
CursorOnCommand=visible,false CursorOnCommand=visible,false
@@ -2455,7 +2494,7 @@ Fallback="ScreenOptionsSimpleService"
NextScreen=Branch.Init() NextScreen=Branch.Init()
PrevScreen=Branch.Init() PrevScreen=Branch.Init()
LineNames="SystemDirection,KeyConfig,GameType,6,8,Reload,MoreOptions" LineNames="SystemDirection,KeyConfig,GameType,6,8,Reload,Credits,MoreOptions"
# LineNames="SystemDirection,1,2,Sync,13,3,10,11,4,12,6,5,Theme,8,9" # LineNames="SystemDirection,1,2,Sync,13,3,10,11,4,12,6,5,Theme,8,9"
Line1="gamecommand;screen,ScreenMapControllers;name,Key Joy Mappings" Line1="gamecommand;screen,ScreenMapControllers;name,Key Joy Mappings"
Line2="gamecommand;screen,ScreenTestInput;name,Test Input" Line2="gamecommand;screen,ScreenTestInput;name,Test Input"
@@ -2476,6 +2515,7 @@ LineKeyConfig="gamecommand;screen,ScreenMapControllers;name,Key Joy Mappings"
LineGameType="gamecommand;screen,ScreenSelectGame;name,Select Game" LineGameType="gamecommand;screen,ScreenSelectGame;name,Select Game"
LineSync="gamecommand;screen,ScreenGameplaySyncMachine;name,Calibrate Machine Sync" LineSync="gamecommand;screen,ScreenGameplaySyncMachine;name,Calibrate Machine Sync"
LineReload="gamecommand;screen,ScreenReloadSongs;name,Reload Songs" LineReload="gamecommand;screen,ScreenReloadSongs;name,Reload Songs"
LineCredits="gamecommand;screen,ScreenCredits;name,StepMania Credits"
LineMoreOptions="gamecommand;screen,ScreenOptionsExtended;name,More Options" LineMoreOptions="gamecommand;screen,ScreenOptionsExtended;name,More Options"
[ScreenOptionsExtended] [ScreenOptionsExtended]
@@ -2500,9 +2540,13 @@ PrevScreen="ScreenOptionsService"
NextScreen="ScreenOptionsService" NextScreen="ScreenOptionsService"
HelpText=Screen.String("HelpTextOptionsAndBack") HelpText=Screen.String("HelpTextOptionsAndBack")
LineHighlightOnCommand=visible,false LineHighlightP1OnCommand=visible,false
LineHighlightChangeCommand= LineHighlightP1ChangeCommand=
LineHighlightChangeToExitCommand= LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=visible,false
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
# #
ExplanationTogetherX=SCREEN_CENTER_X ExplanationTogetherX=SCREEN_CENTER_X
ExplanationTogetherY=SCREEN_CENTER_Y+174 ExplanationTogetherY=SCREEN_CENTER_Y+174
@@ -3168,6 +3212,7 @@ DebugX=SCREEN_CENTER_X
DebugY=SCREEN_BOTTOM-72 DebugY=SCREEN_BOTTOM-72
DebugOnCommand=zoom,0.75 DebugOnCommand=zoom,0.75
# #
SongNumberFormat="%d"
SongNumberP1X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") - 60 SongNumberP1X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") - 60
SongNumberP1Y=SCREEN_TOP+24+7 SongNumberP1Y=SCREEN_TOP+24+7
SongNumberP1OnCommand=visible,false SongNumberP1OnCommand=visible,false
@@ -3219,6 +3264,7 @@ PlayerOptionsHideFailType=false
MaxComboNumDigits=4 MaxComboNumDigits=4
# #
ShowBannerArea=true ShowBannerArea=true
RollingNumbersClass="RollingNumbersJudgment"
ShowSharedJudgmentLineLabels=false ShowSharedJudgmentLineLabels=false
ShowJudgmentLineW1=false ShowJudgmentLineW1=false
ShowJudgmentLineW2=false ShowJudgmentLineW2=false
@@ -3782,7 +3828,7 @@ NextScreen="ScreenOptionsExtended"
PlayerType="PlayerSyncMachine" PlayerType="PlayerSyncMachine"
AllowCenter1Player=false AllowCenter1Player=false
SyncInfoOnCommand=x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y;zoom,0;decelerate,0.5;zoom,0.6 SyncInfoOnCommand=x,PositionPerPlayer(GAMESTATE:GetMasterPlayerNumber(),SCREEN_CENTER_X+160,SCREEN_CENTER_X-160);y,SCREEN_CENTER_Y;zoom,0;decelerate,0.5;zoom,0.6
# hidden by default: # hidden by default:
LifeP1OnCommand=visible,false LifeP1OnCommand=visible,false
@@ -4167,3 +4213,15 @@ StartScreen="ScreenTitleMenu"
LightsMode="LightsMode_Demonstration" LightsMode="LightsMode_Demonstration"
ShowCourseModifiersProbability=0 ShowCourseModifiersProbability=0
AllowAdvancedModifiers=true AllowAdvancedModifiers=true
[ScreenCredits]
Class="ScreenSplash"
Fallback="ScreenSplash"
AllowStartToSkip=true
NextScreen=Branch.TitleMenu()
PrevScreen=Branch.TitleMenu()
TimerSeconds=40
TimerStealth=true
ForceTimer=true
TimerMetricsGroup="MenuTimerNoSound"
TimerOnCommand=visible,false
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

@@ -0,0 +1,20 @@
local scrolltime = 95;
local t = Def.ActorFrame {
InitCommand=cmd(Center);
LoadActor("_space")..{
InitCommand=cmd(y,-SCREEN_HEIGHT*1.5;fadebottom,0.125;fadetop,0.25);
OnCommand=cmd(linear,scrolltime;addy,SCREEN_HEIGHT*1.5825);
};
Def.Quad {
InitCommand=cmd(scaletoclipped,SCREEN_WIDTH+1,SCREEN_HEIGHT);
OnCommand=cmd(diffusecolor,color("#FFCB05");diffusebottomedge,color("#F0BA00");diffusealpha,0.45);
};
LoadActor("_grid")..{
InitCommand=cmd(customtexturerect,0,0,(SCREEN_WIDTH+1)/4,SCREEN_HEIGHT/4;SetTextureFiltering,true);
OnCommand=cmd(zoomto,SCREEN_WIDTH+1,SCREEN_HEIGHT;diffuse,Color("Black");diffuseshift;effecttiming,(1/8)*4,0,(7/8)*4,0;effectclock,'beatnooffset';
effectcolor2,Color("Black");effectcolor1,Colors.Alpha(Color("Black"),0.45);fadebottom,0.25;fadetop,0.25;croptop,48/480;cropbottom,48/480;diffusealpha,0.345);
};
};
return t
@@ -0,0 +1,144 @@
local function Fooled()
local phrases = {
"hornswaggled",
"bamboozled",
"hoodwinked",
"swindled",
"duped",
"hoaxed",
"fleeced",
"shafted",
"caboodled",
"beguiled",
"finagled",
"two-timed",
"suckered",
"flimflammed"
}
return phrases[math.random(#phrases)]
end
local ssc = {
"AJ Kelly as freem",
"Jonathan Payne (Midiman)",
"Colby Klein (shakesoda)",
}
local sm_ssc = {
"Jason Felds (wolfman2000)",
"Alberto Ramos (Daisuke Master)",
"Jack Walstrom (FSX)",
}
local stepmania = {
"Chris Danford",
"Glenn Maynard",
"Steve Checkoway",
-- and various other contributors
}
local contrib = {
"Aldo Fregoso (Aldo_MX)", -- delays
"Chris Eldridge (kurisu)", -- dance-threepanel
"cerbo",
"cesarmades", -- pump/cmd* noteskins
"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
"NitroX72", -- pump/frame noteskin
"sy567", -- beginner helper fix
"Thai Pangsakulyanont (theDtTvB)",
"v1toko", -- x-mode from StepNXA
}
local thanks = {
"A Pseudonymous Coder", -- support
"Bill Shillito (DM Ashura)", -- Music (not yet though)
"cpubasic13", -- testing (a lot)
"Dreamwoods",
"Infamouspat", -- oitg bro
"Jason Bolt (LightningXCE)",
"Jousway", -- Noteskins
"Matt1360", -- Automake magic + oitg bro
"Mark Cannon (vyhd)", -- oitg bro + twirl/roll
"Petriform", -- Music
"Renard",
"Ryan McKanna (Plaguefox)",
}
local shoutout = {
"The Lua team", -- lua project lead or some shit. super nerdy but oh hell.
"Mojang", -- minecraft forever -freem
"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
"You showed us... your ultimate dance",
-- "Can't stop crying... buckets of tears!"
}
local copyright = {
"StepMania is released under the terms of the MIT license.",
"If you paid for the program you've been " .. Fooled() .. ".",
"All content is the sole property of their respectful owners."
}
local sections = {
{ "the spinal shark collective (project lead)", ssc },
{ "sm-ssc Team", sm_ssc },
{ "StepMania Team", stepmania },
{ "Other Contributors", contrib },
{ "Special Thanks", thanks },
{ "Shoutouts", shoutout },
{ "Copyright", copyright },
}
-- To add people or sections modify the above.
local lineOn = cmd(zoom,0.875;strokecolor,color("#444444");shadowcolor,color("#444444");shadowlength,3)
local sectionOn = cmd(diffuse,color("#88DDFF");strokecolor,color("#446688");shadowcolor,color("#446688");shadowlength,3)
local item_padding_start = 4;
local creditScroller = Def.ActorScroller {
SecondsPerItem = 1.25;
NumItemsToDraw = 40;
TransformFunction = function( self, offset, itemIndex, numItems)
self:y(30*offset)
end;
OnCommand = cmd(scrollwithpadding,item_padding_start,15);
}
local function AddLine( text, command )
local text = Def.ActorFrame{
LoadFont("Common normal")..{
Text = text or "";
OnCommand = command or lineOn;
}
}
table.insert( creditScroller, text )
end
-- Add sections with padding.
for section in ivalues(sections) do
AddLine( section[1], sectionOn )
for name in ivalues(section[2]) do
AddLine( name )
end
AddLine()
AddLine()
end
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),
},
LoadActor(THEME:GetPathB("ScreenWithMenuElements","background/_bg top"))..{
InitCommand=cmd(Center),
},
};
+3
View File
@@ -2109,3 +2109,6 @@ ShowBPMDisplay=false
[ScreenJukeboxMenu] [ScreenJukeboxMenu]
[ScreenJukebox] [ScreenJukebox]
[ScreenCredits]
TimerSeconds=96
@@ -0,0 +1,47 @@
-- Loads up a slew of objects to load into the screen, like how 3.9 does.
-- I prefer to keep these optional, incase another screen wants to hide
-- these elements.
local t = LoadFallbackB();
-- Legacy StepMania 4 Function
local function CreateStepDisplay(pn)
local function set(self, player)
self:SetFromGameState( player );
end
local t = Def.StepsDisplay {
InitCommand=cmd(Load,"StepsDisplay",GAMESTATE:GetPlayerState(pn););
};
if pn == PLAYER_1 then
t.CurrentStepsP1ChangedMessageCommand=function(self) set(self, pn); end;
t.CurrentTrailP1ChangedMessageCommand=function(self) set(self, pn); end;
else
t.CurrentStepsP2ChangedMessageCommand=function(self) set(self, pn); end;
t.CurrentTrailP2ChangedMessageCommand=function(self) set(self, pn); end;
end
return t;
end
for pn in ivalues(PlayerNumber) do
local MetricsName = "StepsDisplay" .. PlayerNumberToString(pn);
t[#t+1] = CreateStepDisplay(pn) .. {
InitCommand=function(self) self:player(pn); self:name(MetricsName); ActorUtil.LoadAllCommandsAndSetXY(self,Var "LoadingScreen"); end;
PlayerJoinedMessageCommand=function(self, params)
if params.Player == pn then
self:visible(true);
(cmd(zoom,0;bounceend,0.3;zoom,1))(self);
end;
end;
PlayerUnjoinedMessageCommand=function(self, params)
if params.Player == pn then
self:visible(true);
(cmd(bouncebegin,0.3;zoom,0))(self);
end;
end;
};
end
return t
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

@@ -0,0 +1,12 @@
local gc = Var("GameCommand");
local t = Def.ActorFrame {
LoadActor("PlayMode " .. gc:GetText() );
};
t[1].OnCommand=Screen.Metric("ScrollerItemOnCommand");
t[1].GainFocusCommand=Screen.Metric("ScrollerItemGainFocusCommand");
t[1].LoseFocusCommand=Screen.Metric("ScrollerItemLoseFocusCommand");
t[1].OffFocusedCommand=Screen.Metric("ScrollerItemOffFocusedCommand");
t[1].OffUnfocusedCommand=Screen.Metric("ScrollerItemOffUnfocusedCommand");
return t;
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

@@ -0,0 +1,12 @@
local gc = Var("GameCommand");
local t = Def.ActorFrame {
LoadActor("Style " .. gc:GetText() );
};
-- This works.
t[1].OnCommand=Screen.Metric("ScrollerItemOnCommand");
t[1].GainFocusCommand=Screen.Metric("ScrollerItemGainFocusCommand");
t[1].LoseFocusCommand=Screen.Metric("ScrollerItemLoseFocusCommand");
t[1].OffFocusedCommand=Screen.Metric("ScrollerItemOffFocusedCommand");
t[1].OffUnfocusedCommand=Screen.Metric("ScrollerItemOffUnfocusedCommand");
return t;
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

+19
View File
@@ -0,0 +1,19 @@
local mainMaxWidth = 228; -- zoom w/subtitle is 0.75 (multiply by 1.25)
local subMaxWidth = 420; -- zoom is 0.6 (multiply zoom,1 value by 1.4)
local artistMaxWidth = 300/0.8;
function TextBannerAfterSet(self,param)
local Title=self:GetChild("Title");
local Subtitle=self:GetChild("Subtitle");
local Artist=self:GetChild("Artist");
if Subtitle:GetText() == "" then
(cmd(maxwidth,mainMaxWidth;y,-8;zoom,1;))(Title);
(cmd(visible,false))(Subtitle);
(cmd(zoom,0.66;maxwidth,artistMaxWidth;y,8))(Artist);
else
-- subtitle below
(cmd(maxwidth,mainMaxWidth*1.25;y,-11;zoom,0.75;))(Title);
(cmd(visible,true;zoom,0.6;y,0;maxwidth,subMaxWidth))(Subtitle);
(cmd(zoom,0.6;maxwidth,artistMaxWidth;y,10))(Artist);
end
end
Binary file not shown.
@@ -1,5 +1,5 @@
#TITLE:Break The Sabbath; #TITLE:Technotris;
#OFFSET:0.000; #OFFSET:0.000;
#BPMS:0.000=140.000; #BPMS:0.000=148.000;
#STOPS:; #STOPS:;
Binary file not shown.
Binary file not shown.
+276 -8
View File
@@ -3,43 +3,46 @@ FallbackTheme=_fallback
[ScreenSystemLayer] [ScreenSystemLayer]
CreditsP1X=SCREEN_CENTER_X-256-32 CreditsP1X=SCREEN_CENTER_X-256-32
CreditsP1Y=SCREEN_BOTTOM-4 CreditsP1Y=SCREEN_BOTTOM-4
CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_1); # ColorLightTone & ColorDarkTone make colors 50% brighter or darker, where ColorMidTone makes them 25% darker
# ColorLightTone( color here ); example: ColorLightTone( PlayerColor(PLAYER_1) );
CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,ColorLightTone( PlayerColor(PLAYER_1) );strokecolor,Color("Black");
# #
CreditsP2X=SCREEN_CENTER_X+256+32 CreditsP2X=SCREEN_CENTER_X+256+32
CreditsP2Y=SCREEN_BOTTOM-4 CreditsP2Y=SCREEN_BOTTOM-4
CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_2); CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,ColorLightTone( PlayerColor(PLAYER_2) );strokecolor,Color("Black");
[ScreenWithMenuElements] [ScreenWithMenuElements]
# Header ( Top of Screen ) # Header ( Top of Screen )
ShowHeader=true ShowHeader=true
HeaderX=SCREEN_CENTER_X HeaderX=SCREEN_CENTER_X
HeaderY=SCREEN_TOP HeaderY=SCREEN_TOP
HeaderOnCommand=vertalign,top HeaderOnCommand=vertalign,top;addy,-64;decelerate,0.35;addy,64;
HeaderOffCommand= HeaderOffCommand=
# Text Header ( Text displayed at top of screen on top of header ) # Text Header ( Text displayed at top of screen on top of header )
ShowTextHeader=true ShowTextHeader=true
TextHeaderX=SCREEN_CENTER_X-256-32 TextHeaderX=SCREEN_CENTER_X-256-32
TextHeaderY=SCREEN_TOP+32+8-1.5 TextHeaderY=SCREEN_TOP+32+8-1.5
TextHeaderOnCommand=horizalign,left;vertalign,bottom; TextHeaderOnCommand=horizalign,left;vertalign,bottom;skewx,-0.125;shadowlength,1;diffusealpha,0;addx,-16;sleep,0.35;decelerate,0.125;diffusealpha,1;addx,16;
TextHeaderOffCommand= TextHeaderOffCommand=
# Footer ( Bottom Of Screen ) # Footer ( Bottom Of Screen )
ShowFooter=true ShowFooter=true
FooterX=SCREEN_CENTER_X FooterX=SCREEN_CENTER_X
FooterY=SCREEN_BOTTOM FooterY=SCREEN_BOTTOM
FooterOnCommand=vertalign,bottom FooterOnCommand=vertalign,bottom;addy,48;decelerate,0.35;addy,-48
FooterOffCommand= FooterOffCommand=
# Menu Timer # Menu Timer
TimerX=SCREEN_CENTER_X+256+32 TimerX=SCREEN_CENTER_X+256+32
TimerY=SCREEN_TOP+32+8-1.5 TimerY=SCREEN_TOP+32+8-1.5
# We animate the timer in [MenuTimer], since diffusion doesn't work here.
TimerOnCommand= TimerOnCommand=
TimerOffCommand= TimerOffCommand=
[MenuTimer] [MenuTimer]
# Text # Text associated with the menutimer
Text1OnCommand=stopeffect;stoptweening;horizalign,right;vertalign,bottom; Text1OnCommand=stopeffect;stoptweening;horizalign,right;vertalign,bottom;shadowlength,1;diffusealpha,0;x,16;sleep,0.35;decelerate,0.125;diffusealpha,1;x,0;
Text1FormatFunction=function(fSeconds) \ Text1FormatFunction=function(fSeconds) \
return string.format("%0.1f", fSeconds); \ return string.format("%0.1f", fSeconds); \
end end
FrameOnCommand= FrameOnCommand=
# Warning #
Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1"); Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1");
[ScreenTitleMenu] [ScreenTitleMenu]
# Don't show these # Don't show these
@@ -66,9 +69,274 @@ ScrollerItemLoseFocusCommand=stoptweening;linear,0.125;zoom,0.75;
ScrollerItemOffFocusedCommand=sleep,0.35;linear,0.15;zoom,0; ScrollerItemOffFocusedCommand=sleep,0.35;linear,0.15;zoom,0;
# OffUnfocused is for items that were not selected and the screen is exiting. # OffUnfocused is for items that were not selected and the screen is exiting.
ScrollerItemOffUnfocusedCommand=linear,0.15;zoom,0; ScrollerItemOffUnfocusedCommand=linear,0.15;zoom,0;
[ScreenSelectStyle]
# Let items do OffCommand
WaitForChildrenBeforeTweening=true
# Explanatory
ShowIcon=true
ShowScroller=true
# Force theme to load image for each style type, instead of a lua file
PerChoiceIconElement=true
PerChoiceScrollElement=false
#
ScrollerX=SCREEN_CENTER_X
ScrollerY=SCREEN_CENTER_Y-16
# Menu Items [ThemeKit Only]
ScrollerItemOnCommand=
ScrollerItemOnFocusedCommand=visible,true
# GainFocus is when an item is selected.
ScrollerItemGainFocusCommand=visible,true;finishtweening;zoom,1.25;linear,0.125;zoom,1;
# LoseFocus is when an item is deselected.
ScrollerItemLoseFocusCommand=finishtweening;visible,false;
# OffFocused is for items you have selected and the screen is exiting.
ScrollerItemOffFocusedCommand=sleep,0.35;linear,0.15;zoom,0;
# OffUnfocused is for items that were not selected and the screen is exiting.
ScrollerItemOffUnfocusedCommand=linear,0.15;zoom,0;
# Need this so that icons animate from metrics
UseIconMetrics=true
# Positions of all da 'cons
IconChoiceSingleX=SCREEN_CENTER_X-256
IconChoiceSingleY=SCREEN_BOTTOM-64
IconChoiceSingleOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceSingleGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceSingleLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceSingleEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceSingleDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceSingleOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceSingleOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoiceSoloX=SCREEN_CENTER_X-128
IconChoiceSoloY=SCREEN_BOTTOM-64
IconChoiceSoloOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceSoloGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceSoloLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceSoloEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceSoloDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceSoloOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceSoloOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
IconChoiceHalfDoubleX=SCREEN_CENTER_X-128
IconChoiceHalfDoubleY=SCREEN_BOTTOM-64
IconChoiceHalfDoubleOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceHalfDoubleGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceHalfDoubleLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceHalfDoubleEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceHalfDoubleDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceHalfDoubleOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceHalfDoubleOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoiceDoubleX=SCREEN_CENTER_X
IconChoiceDoubleY=SCREEN_BOTTOM-64
IconChoiceDoubleOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceDoubleGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceDoubleLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceDoubleEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceDoubleDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceDoubleOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceDoubleOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoiceVersusX=SCREEN_CENTER_X+128
IconChoiceVersusY=SCREEN_BOTTOM-64
IconChoiceVersusOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceVersusGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceVersusLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceVersusEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceVersusDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceVersusOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceVersusOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoiceCoupleX=SCREEN_CENTER_X+256
IconChoiceCoupleY=SCREEN_BOTTOM-64
IconChoiceCoupleOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceCoupleGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceCoupleLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceCoupleEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceCoupleDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceCoupleOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceCoupleOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoiceKB7X=SCREEN_CENTER_X
IconChoiceKB7Y=SCREEN_BOTTOM-64
IconChoiceKB7OnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceKB7GainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceKB7LoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceKB7EnabledCommand=diffuse,color("1,1,1,1");
IconChoiceKB7DisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceKB7OffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceKB7OffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoice5KeysX=SCREEN_CENTER_X-128
IconChoice5KeysY=SCREEN_BOTTOM-64
IconChoice5KeysOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoice5KeysGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoice5KeysLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoice5KeysEnabledCommand=diffuse,color("1,1,1,1");
IconChoice5KeysDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoice5KeysOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoice5KeysOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoice7KeysX=SCREEN_CENTER_X-64
IconChoice7KeysY=SCREEN_BOTTOM-64
IconChoice7KeysOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoice7KeysGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoice7KeysLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoice7KeysEnabledCommand=diffuse,color("1,1,1,1");
IconChoice7KeysDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoice7KeysOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoice7KeysOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoice10KeysX=SCREEN_CENTER_X+64
IconChoice10KeysY=SCREEN_BOTTOM-64
IconChoice10KeysOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoice10KeysGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoice10KeysLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoice10KeysEnabledCommand=diffuse,color("1,1,1,1");
IconChoice10KeysDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoice10KeysOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoice10KeysOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
#
IconChoice14KeysX=SCREEN_CENTER_X+128
IconChoice14KeysY=SCREEN_BOTTOM-64
IconChoice14KeysOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoice14KeysGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoice14KeysLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoice14KeysEnabledCommand=diffuse,color("1,1,1,1");
IconChoice14KeysDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoice14KeysOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoice14KeysOffFocusedCommand=stopeffect;sleep,0.1175;linear,0.25;zoom,1.1;sleep,0.25;decelerate,0.3;zoom,0;
[ScreenSelectPlayMode]
# Let items do OffCommand
WaitForChildrenBeforeTweening=true
# Explanatory
ShowIcon=true
ShowScroller=true
# Force theme to load image for each style type, instead of a lua file
PerChoiceIconElement=true
PerChoiceScrollElement=false
#
ScrollerX=SCREEN_CENTER_X
ScrollerY=SCREEN_CENTER_Y-16
# Menu Items [ThemeKit Only]
ScrollerItemOnCommand=
ScrollerItemOnFocusedCommand=visible,true
# GainFocus is when an item is selected.
ScrollerItemGainFocusCommand=visible,true;finishtweening;zoom,1.25;linear,0.125;zoom,1;
# LoseFocus is when an item is deselected.
ScrollerItemLoseFocusCommand=finishtweening;visible,false;
# OffFocused is for items you have selected and the screen is exiting.
ScrollerItemOffFocusedCommand=sleep,0.35;linear,0.15;zoom,0;
# OffUnfocused is for items that were not selected and the screen is exiting.
ScrollerItemOffUnfocusedCommand=linear,0.15;zoom,0;
# Need this so that icons animate from metrics
UseIconMetrics=true
# Positions of all da 'cons
IconChoiceNormalX=SCREEN_CENTER_X-256
IconChoiceNormalY=SCREEN_BOTTOM-64
IconChoiceNormalOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceNormalGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceNormalLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceNormalEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceNormalDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceNormalOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceNormalOffFocusedCommand=stopeffect;sleep,0
#
IconChoiceRaveX=SCREEN_CENTER_X-128
IconChoiceRaveY=SCREEN_BOTTOM-64
IconChoiceRaveOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceRaveGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceRaveLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceRaveEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceRaveDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceRaveOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceRaveOffFocusedCommand=stopeffect;sleep,0
#
IconChoiceExtendedX=SCREEN_CENTER_X
IconChoiceExtendedY=SCREEN_BOTTOM-64
IconChoiceExtendedOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceExtendedGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceExtendedLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceExtendedEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceExtendedDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceExtendedOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceExtendedOffFocusedCommand=stopeffect;sleep,0
#
IconChoiceOniX=SCREEN_CENTER_X+128
IconChoiceOniY=SCREEN_BOTTOM-64
IconChoiceOniOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceOniGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceOniLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceOniEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceOniDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceOniOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceOniOffFocusedCommand=stopeffect;sleep,0
#
IconChoiceEndlessX=SCREEN_CENTER_X+256
IconChoiceEndlessY=SCREEN_BOTTOM-64
IconChoiceEndlessOnCommand=zoom,0;bounceend,0.35;zoom,1
IconChoiceEndlessGainFocusCommand=stoptweening;zoom,1;pulse;effectmagnitude,1,1.125,1;
IconChoiceEndlessLoseFocusCommand=stoptweening;stopeffect;zoom,0.75;
IconChoiceEndlessEnabledCommand=diffuse,color("1,1,1,1");
IconChoiceEndlessDisabledCommand=diffuse,color("1,0,0,0.5");
IconChoiceEndlessOffUnfocusedCommand=linear,0.1175;zoomx,0
IconChoiceEndlessOffFocusedCommand=stopeffect;sleep,0
[ScreenSelectMusic] [ScreenSelectMusic]
ShowStepsDisplayP1=true
StepsDisplayP1X=SCREEN_CENTER_X-192
StepsDisplayP1Y=SCREEN_BOTTOM-64
StepsDisplayP1OnCommand=
StepsDisplayP1OffCommand=
#
ShowStepsDisplayP2=true
StepsDisplayP2X=SCREEN_CENTER_X-192
StepsDisplayP2Y=SCREEN_BOTTOM-64
StepsDisplayP2OnCommand=
StepsDisplayP2OffCommand=
#
MusicWheelX=SCREEN_RIGHT-128-18 MusicWheelX=SCREEN_RIGHT-128-18
MusicWheelOnCommand=draworder,-1 MusicWheelOnCommand=draworder,-1
[MusicWheel] [MusicWheel]
HighlightOnCommand=blend,Blend.Add;diffuseramp;effectclock,'beatnooffset'
#
ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:x( (1-math.cos(offsetFromCenter/math.pi))*0 ); self:y( offsetFromCenter*48 ); end ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:x( (1-math.cos(offsetFromCenter/math.pi))*0 ); self:y( offsetFromCenter*48 ); end
NumWheelItems=13 NumWheelItems=13
[MusicWheelItem]
# Move Song all the way to the left, since it is left aligned
# see [TextBanner]
SongNameX=-124
#
SectionExpandedX=-126
SectionExpandedY=0
SectionExpandedOnCommand=horizalign,left;maxwidth,252;shadowlength,1
#
SectionCollapsedX=-126
SectionCollapsedY=0
SectionCollapsedOnCommand=horizalign,left;maxwidth,252;shadowlength,1
#
SectionCountX=108
SectionCountY=16
SectionCountOnCommand=zoom,0.5;shadowlength,1;
[TextBanner]
TitleOnCommand=horizalign,left;shadowlength,1;
SubtitleOnCommand=horizalign,left;shadowlength,1;
ArtistOnCommand=horizalign,left;shadowlength,1;skewx,-0.2
ArtistPrependString=""
[StepsDisplay]
ShowMeter=true
ZeroMeterString="?"
MeterX=92
MeterY=0
MeterOnCommand=horizalign,right;zoom,0.75;shadowlength,1
MeterSetCommand=%function(self,param) \
if param.CustomDifficulty then \
self:diffuse(CustomDifficultyToLightColor(param.CustomDifficulty)); \
end \
end;
#
ShowDescription=true
DescriptionX=-92
DescriptionY=0
DescriptionOnCommand=horizalign,left;zoom,0.75;shadowlength,1;uppercase,true;
DescriptionSetCommand=%function(self,param) \
if param.CustomDifficulty then \
self:diffuse(CustomDifficultyToLightColor(param.CustomDifficulty)); \
end \
end;
+11
View File
@@ -294,11 +294,22 @@ class LunaBPMDisplay: public Luna<BPMDisplay>
{ {
public: public:
static int SetFromGameState( T* p, lua_State *L ) { p->SetFromGameState(); return 0; } static int SetFromGameState( T* p, lua_State *L ) { p->SetFromGameState(); return 0; }
static int SetFromSong( T* p, lua_State *L )
{
if( lua_isnil(L,1) ) { p->NoBPM(); }
else
{
const Song* pSong = Luna<Song>::check( L, 1, true );
p->SetBpmFromSong(pSong);
}
return 0;
}
static int GetText( T* p, lua_State *L ) { lua_pushstring( L, p->GetText() ); return 1; } static int GetText( T* p, lua_State *L ) { lua_pushstring( L, p->GetText() ); return 1; }
LunaBPMDisplay() LunaBPMDisplay()
{ {
ADD_METHOD( SetFromGameState ); ADD_METHOD( SetFromGameState );
ADD_METHOD( SetFromSong );
ADD_METHOD( GetText ); ADD_METHOD( GetText );
} }
}; };
+4 -1
View File
@@ -17,6 +17,9 @@ REGISTER_ACTOR_CLASS( Banner );
ThemeMetric<bool> SCROLL_RANDOM ("Banner","ScrollRandom"); ThemeMetric<bool> SCROLL_RANDOM ("Banner","ScrollRandom");
ThemeMetric<bool> SCROLL_ROULETTE ("Banner","ScrollRoulette"); ThemeMetric<bool> SCROLL_ROULETTE ("Banner","ScrollRoulette");
//ThemeMetric<bool> SCROLL_MODE ("Banner","ScrollMode");
//ThemeMetric<bool> SCROLL_SORT_ORDER ("Banner","ScrollSortOrder");
ThemeMetric<float> SCROLL_SPEED_DIVISOR ("Banner","ScrollSpeedDivisor");
Banner::Banner() Banner::Banner()
{ {
@@ -79,7 +82,7 @@ void Banner::Update( float fDeltaTime )
if( m_bScrolling ) if( m_bScrolling )
{ {
m_fPercentScrolling += fDeltaTime/2; m_fPercentScrolling += fDeltaTime/(float)SCROLL_SPEED_DIVISOR;
m_fPercentScrolling -= (int)m_fPercentScrolling; m_fPercentScrolling -= (int)m_fPercentScrolling;
const RectF *pTextureRect = GetCurrentTextureCoordRect(); const RectF *pTextureRect = GetCurrentTextureCoordRect();
+112 -101
View File
@@ -12,12 +12,12 @@
#include "ScreenDimensions.h" #include "ScreenDimensions.h"
#include "ThemeManager.h" #include "ThemeManager.h"
// "PLAYER_X" offsets are relative to the pad.. ex: Setting this to 10, and the HELPER to 300, will put the dancer at 310 // "PLAYER_X" offsets are relative to the pad. ex: Setting this to 10, and the HELPER to 300, will put the dancer at 310
#define PLAYER_X( px ) THEME->GetMetricF("BeginnerHelper",ssprintf("Player%d_X",px+1)) #define PLAYER_X( px ) THEME->GetMetricF("BeginnerHelper",ssprintf("Player%dX",px+1))
#define PLAYER_ANGLE THEME->GetMetricF("BeginnerHelper","PlayerAngle") #define PLAYER_ANGLE THEME->GetMetricF("BeginnerHelper","PlayerAngle")
#define DANCEPAD_ANGLE THEME->GetMetricF("BeginnerHelper","DancePadAngle") #define DANCEPAD_ANGLE THEME->GetMetricF("BeginnerHelper","DancePadAngle")
// "HELPER" offsets effect the pad/dancer as a whole.. Their relative Y cooridinates are hard-coded for eachother. // "HELPER" offsets effect the pad/dancer as a whole. Their relative Y cooridinates are hard-coded for each other.
#define HELPER_X THEME->GetMetricF("BeginnerHelper","HelperX") #define HELPER_X THEME->GetMetricF("BeginnerHelper","HelperX")
#define HELPER_Y THEME->GetMetricF("BeginnerHelper","HelperY") #define HELPER_Y THEME->GetMetricF("BeginnerHelper","HelperY")
@@ -75,6 +75,108 @@ BeginnerHelper::~BeginnerHelper()
delete m_pDancePad; delete m_pDancePad;
} }
bool BeginnerHelper::Init( int iDancePadType )
{
ASSERT( !m_bInitialized );
if( !CanUse() )
return false;
// If no players were successfully added, bail.
{
bool bAnyLoaded = false;
for( int pn=0; pn<NUM_PLAYERS; pn++ )
if( m_bPlayerEnabled[pn] )
bAnyLoaded = true;
if( !bAnyLoaded )
return false;
}
// Load the Background and flash. Flash only shows if the BG does.
if( m_bShowBackground )
{
m_sBackground.Load( THEME->GetPathG("BeginnerHelper","background") );
this->AddChild( m_sBackground );
//m_sBackground.SetXY( 1, 1 );
m_sFlash.Load( THEME->GetPathG("BeginnerHelper","flash") );
m_sFlash.SetXY( 0, 0 );
m_sFlash.SetDiffuseAlpha( 0 );
}
// Load StepCircle graphics
for( int lsc=0; lsc<NUM_PLAYERS; lsc++ )
{
for( int lsce=0; lsce<4; lsce++ )
{
m_sStepCircle[lsc][lsce].Load( THEME->GetPathG("BeginnerHelper","stepcircle") );
m_sStepCircle[lsc][lsce].SetZoom( 0 ); // Hide until needed.
this->AddChild(&m_sStepCircle[lsc][lsce]);
// Set StepCircle coordinates
switch( lsce )
{
case 0: m_sStepCircle[lsc][lsce].SetXY((HELPER_X+PLAYER_X(lsc)-80),HELPER_Y); break; // Left
case 1: m_sStepCircle[lsc][lsce].SetXY((HELPER_X+PLAYER_X(lsc)+80),HELPER_Y); break; // Right
case 2: m_sStepCircle[lsc][lsce].SetXY((HELPER_X+PLAYER_X(lsc)),(HELPER_Y-60)); break; // Up
case 3: m_sStepCircle[lsc][lsce].SetXY((HELPER_X+PLAYER_X(lsc)),(HELPER_Y+60)); break; // Down
}
}
}
SHOW_DANCE_PAD.Load( "BeginnerHelper","ShowDancePad" );
// Load the DancePad
if( SHOW_DANCE_PAD )
{
switch( iDancePadType )
{
case 0: break; // No pad
case 1: m_pDancePad->LoadMilkshapeAscii(GetAnimPath(ANIM_DANCE_PAD)); break;
case 2: m_pDancePad->LoadMilkshapeAscii(GetAnimPath(ANIM_DANCE_PADS)); break;
}
m_pDancePad->SetHorizAlign( align_left ); // xxx: hardcoded -aj
m_pDancePad->SetRotationX( DANCEPAD_ANGLE );
m_pDancePad->SetX( HELPER_X );
m_pDancePad->SetY( HELPER_Y );
// xxx: hardcoded -aj
m_pDancePad->SetZoom( 23 ); // Pad should always be 3 units bigger in zoom than the dancer.
}
for( int pl=0; pl<NUM_PLAYERS; pl++ ) // Load players
{
// Skip if not enabled
if( !m_bPlayerEnabled[pl] )
continue;
// Load character data
const Character *Character = GAMESTATE->m_pCurCharacters[pl];
ASSERT( Character != NULL );
// Load textures
m_pDancer[pl]->SetHorizAlign( align_left );
m_pDancer[pl]->LoadMilkshapeAscii( Character->GetModelPath() );
// Load needed animations
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-LEFT", GetAnimPath(ANIM_LEFT) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-DOWN", GetAnimPath(ANIM_DOWN) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-UP", GetAnimPath(ANIM_UP) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-RIGHT", GetAnimPath(ANIM_RIGHT) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-JUMPLR", GetAnimPath(ANIM_JUMPLR) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "rest", Character->GetRestAnimationPath() );
m_pDancer[pl]->SetDefaultAnimation( "rest" ); // Stay bouncing after a step has finished animating
m_pDancer[pl]->PlayAnimation( "rest" );
m_pDancer[pl]->SetRotationX( PLAYER_ANGLE );
m_pDancer[pl]->SetX( HELPER_X+PLAYER_X(pl) );
m_pDancer[pl]->SetY( HELPER_Y+10 );
m_pDancer[pl]->SetZoom( 20 );
m_pDancer[pl]->SetCullMode( CULL_NONE ); // many of the models floating around have the vertex order flipped
}
m_bInitialized = true;
return true;
}
void BeginnerHelper::ShowStepCircle( PlayerNumber pn, int CSTEP ) void BeginnerHelper::ShowStepCircle( PlayerNumber pn, int CSTEP )
{ {
int isc=0; // Save OR issues within array boundries.. it's worth the extra few bytes of memory. int isc=0; // Save OR issues within array boundries.. it's worth the extra few bytes of memory.
@@ -120,102 +222,6 @@ bool BeginnerHelper::CanUse()
return GAMESTATE->GetCurrentStyle()->m_bCanUseBeginnerHelper; return GAMESTATE->GetCurrentStyle()->m_bCanUseBeginnerHelper;
} }
bool BeginnerHelper::Initialize( int iDancePadType )
{
ASSERT( !m_bInitialized );
if( !CanUse() )
return false;
// If no players were successfully added, bail.
{
bool bAnyLoaded = false;
for( int pn=0; pn<NUM_PLAYERS; pn++ )
if( m_bPlayerEnabled[pn] )
bAnyLoaded = true;
if( !bAnyLoaded )
return false;
}
// Load the Background and flash.. Flash only shows if the BG does.
if( m_bShowBackground )
{
m_sBackground.Load( THEME->GetPathG("BeginnerHelper","background") );
this->AddChild( &m_sBackground );
m_sBackground.SetXY( 1, 1 );
m_sFlash.Load( THEME->GetPathG("BeginnerHelper","flash") );
m_sFlash.SetXY( 0, 0 );
m_sFlash.SetDiffuseAlpha( 0 );
}
// Load StepCircle graphics
for( int lsc=0; lsc<NUM_PLAYERS; lsc++ )
{
for( int lsce=0; lsce<4; lsce++ )
{
m_sStepCircle[lsc][lsce].Load( THEME->GetPathG("BeginnerHelper","stepcircle") );
m_sStepCircle[lsc][lsce].SetZoom( 0 ); // Hide until needed.
this->AddChild(&m_sStepCircle[lsc][lsce]);
// Set coordinates of StepCircle
switch( lsce )
{
case 0: m_sStepCircle[lsc][lsce].SetXY((HELPER_X+PLAYER_X(lsc)-80),HELPER_Y); break; // Left
case 1: m_sStepCircle[lsc][lsce].SetXY((HELPER_X+PLAYER_X(lsc)+80),HELPER_Y); break; // Right
case 2: m_sStepCircle[lsc][lsce].SetXY((HELPER_X+PLAYER_X(lsc)),(HELPER_Y-60)); break; // Up
case 3: m_sStepCircle[lsc][lsce].SetXY((HELPER_X+PLAYER_X(lsc)),(HELPER_Y+60)); break; // Down
}
}
}
// Load the DancePad
switch( iDancePadType )
{
case 0: break; // No pad
case 1: m_pDancePad->LoadMilkshapeAscii(GetAnimPath(ANIM_DANCE_PAD)); break;
case 2: m_pDancePad->LoadMilkshapeAscii(GetAnimPath(ANIM_DANCE_PADS)); break;
}
m_pDancePad->SetHorizAlign( align_left );
m_pDancePad->SetRotationX( DANCEPAD_ANGLE );
m_pDancePad->SetX( HELPER_X );
m_pDancePad->SetY( HELPER_Y );
m_pDancePad->SetZoom( 23 ); // Pad should always be 3 units bigger in zoom than the dancer.
for( int pl=0; pl<NUM_PLAYERS; pl++ ) // Load players
{
// Skip if not enabled
if( !m_bPlayerEnabled[pl] )
continue;
// Load character data
const Character *Character = GAMESTATE->m_pCurCharacters[pl];
ASSERT( Character != NULL );
// Load textures
m_pDancer[pl]->SetHorizAlign( align_left );
m_pDancer[pl]->LoadMilkshapeAscii( Character->GetModelPath() );
// Load needed animations
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-LEFT", GetAnimPath(ANIM_LEFT) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-DOWN", GetAnimPath(ANIM_DOWN) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-UP", GetAnimPath(ANIM_UP) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-RIGHT", GetAnimPath(ANIM_RIGHT) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "Step-JUMPLR", GetAnimPath(ANIM_JUMPLR) );
m_pDancer[pl]->LoadMilkshapeAsciiBones( "rest", Character->GetRestAnimationPath() );
m_pDancer[pl]->SetDefaultAnimation( "rest" ); // Stay bouncing after a step has finished animating
m_pDancer[pl]->PlayAnimation( "rest" );
m_pDancer[pl]->SetRotationX( PLAYER_ANGLE );
m_pDancer[pl]->SetX( HELPER_X+PLAYER_X(pl) );
m_pDancer[pl]->SetY( HELPER_Y+10 );
m_pDancer[pl]->SetZoom( 20 );
m_pDancer[pl]->SetCullMode( CULL_NONE ); // many of the models floating around have the vertex order flipped
}
m_bInitialized = true;
return true;
}
void BeginnerHelper::DrawPrimitives() void BeginnerHelper::DrawPrimitives()
{ {
// If not initialized, don't bother with this // If not initialized, don't bother with this
@@ -226,6 +232,9 @@ void BeginnerHelper::DrawPrimitives()
m_sFlash.Draw(); m_sFlash.Draw();
bool DrawCelShaded = PREFSMAN->m_bCelShadeModels; bool DrawCelShaded = PREFSMAN->m_bCelShadeModels;
// Draw Pad
if( SHOW_DANCE_PAD )
{
if( DrawCelShaded ) if( DrawCelShaded )
m_pDancePad->DrawCelShaded(); m_pDancePad->DrawCelShaded();
else else
@@ -243,15 +252,17 @@ void BeginnerHelper::DrawPrimitives()
DISPLAY->SetLightOff( 0 ); DISPLAY->SetLightOff( 0 );
DISPLAY->SetLighting( false ); DISPLAY->SetLighting( false );
} }
}
// Draw StepCircles // Draw StepCircles
for(int scd=0; scd<NUM_PLAYERS; scd++) for(int scd=0; scd<NUM_PLAYERS; scd++)
for(int scde=0; scde<4; scde++) for(int scde=0; scde<4; scde++)
m_sStepCircle[scd][scde].Draw(); m_sStepCircle[scd][scde].Draw();
// Draw Dancers
if( DrawCelShaded ) if( DrawCelShaded )
{ {
FOREACH_PlayerNumber( pn ) // Draw each dancer FOREACH_PlayerNumber( pn )
if( GAMESTATE->IsHumanPlayer(pn) ) if( GAMESTATE->IsHumanPlayer(pn) )
m_pDancer[pn]->DrawCelShaded(); m_pDancer[pn]->DrawCelShaded();
} }
@@ -265,7 +276,7 @@ void BeginnerHelper::DrawPrimitives()
RageColor(0,0,0,1), RageColor(0,0,0,1),
RageVector3(0, 0, 1) ); RageVector3(0, 0, 1) );
FOREACH_PlayerNumber( pn ) // Draw each dancer FOREACH_PlayerNumber( pn )
if( GAMESTATE->IsHumanPlayer(pn) ) if( GAMESTATE->IsHumanPlayer(pn) )
m_pDancer[pn]->Draw(); m_pDancer[pn]->Draw();
+6 -2
View File
@@ -4,8 +4,10 @@
#include "ActorFrame.h" #include "ActorFrame.h"
#include "Character.h" #include "Character.h"
#include "Sprite.h" #include "Sprite.h"
#include "AutoActor.h"
#include "PlayerNumber.h" #include "PlayerNumber.h"
#include "NoteData.h" #include "NoteData.h"
#include "ThemeMetric.h"
class Model; class Model;
/** @brief A dancing character that follows the steps of the Song. */ /** @brief A dancing character that follows the steps of the Song. */
class BeginnerHelper : public ActorFrame class BeginnerHelper : public ActorFrame
@@ -14,7 +16,7 @@ public:
BeginnerHelper(); BeginnerHelper();
~BeginnerHelper(); ~BeginnerHelper();
bool Initialize( int iDancePadType ); bool Init( int iDancePadType );
bool IsInitialized() { return m_bInitialized; } bool IsInitialized() { return m_bInitialized; }
static bool CanUse(); static bool CanUse();
void AddPlayer( PlayerNumber pn, const NoteData &nd ); void AddPlayer( PlayerNumber pn, const NoteData &nd );
@@ -32,12 +34,14 @@ protected:
Model *m_pDancer[NUM_PLAYERS]; Model *m_pDancer[NUM_PLAYERS];
Model *m_pDancePad; Model *m_pDancePad;
Sprite m_sFlash; Sprite m_sFlash;
Sprite m_sBackground; AutoActor m_sBackground;
Sprite m_sStepCircle[NUM_PLAYERS][4]; // More memory, but much easier to manage Sprite m_sStepCircle[NUM_PLAYERS][4]; // More memory, but much easier to manage
int m_iLastRowChecked; int m_iLastRowChecked;
int m_iLastRowFlashed; int m_iLastRowFlashed;
bool m_bInitialized; bool m_bInitialized;
ThemeMetric<bool> SHOW_DANCE_PAD;
}; };
#endif #endif
+12 -9
View File
@@ -91,7 +91,7 @@ int CourseEntry::GetNumModChanges() const
Course::Course(): m_bIsAutogen(false), m_sPath(""), m_sMainTitle(""), Course::Course(): m_bIsAutogen(false), m_sPath(""), m_sMainTitle(""),
m_sMainTitleTranslit(""), m_sSubTitle(""), m_sSubTitleTranslit(""), m_sMainTitleTranslit(""), m_sSubTitle(""), m_sSubTitleTranslit(""),
m_sBannerPath(""), m_sBackgroundPath(""), m_sCDTitlePath(""), m_sBannerPath(""), m_sBackgroundPath(""), m_sCDTitlePath(""),
m_sGroupName(""), m_bRepeat(false), m_fGoalSeconds(0), m_sGroupName(""), m_sScripter(""), m_bRepeat(false), m_fGoalSeconds(0),
m_bShuffle(false), m_iLives(-1), m_bSortByMeter(false), m_bShuffle(false), m_iLives(-1), m_bSortByMeter(false),
m_bIncomplete(false), m_vEntries(), m_SortOrder_TotalDifficulty(0), m_bIncomplete(false), m_vEntries(), m_SortOrder_TotalDifficulty(0),
m_SortOrder_Ranking(0), m_LoadedFromProfile(ProfileSlot_Invalid), m_SortOrder_Ranking(0), m_LoadedFromProfile(ProfileSlot_Invalid),
@@ -175,6 +175,7 @@ void Course::Init()
m_sMainTitleTranslit = ""; m_sMainTitleTranslit = "";
m_sSubTitle = ""; m_sSubTitle = "";
m_sSubTitleTranslit = ""; m_sSubTitleTranslit = "";
m_sScripter = "";
m_sBannerPath = ""; m_sBannerPath = "";
m_sBackgroundPath = ""; m_sBackgroundPath = "";
@@ -1091,6 +1092,7 @@ public:
static int GetGroupName( T* p, lua_State *L ) { lua_pushstring(L, p->m_sGroupName ); return 1; } static int GetGroupName( T* p, lua_State *L ) { lua_pushstring(L, p->m_sGroupName ); return 1; }
static int IsAutogen( T* p, lua_State *L ) { lua_pushboolean(L, p->m_bIsAutogen ); return 1; } static int IsAutogen( T* p, lua_State *L ) { lua_pushboolean(L, p->m_bIsAutogen ); return 1; }
static int GetEstimatedNumStages( T* p, lua_State *L ) { lua_pushnumber(L, p->GetEstimatedNumStages() ); return 1; } static int GetEstimatedNumStages( T* p, lua_State *L ) { lua_pushnumber(L, p->GetEstimatedNumStages() ); return 1; }
static int GetScripter( T* p, lua_State *L ) { lua_pushstring(L, p->m_sScripter ); return 1; }
static int GetTotalSeconds( T* p, lua_State *L ) static int GetTotalSeconds( T* p, lua_State *L )
{ {
StepsType st = Enum::Check<StepsType>(L, 1); StepsType st = Enum::Check<StepsType>(L, 1);
@@ -1111,28 +1113,29 @@ public:
LunaCourse() LunaCourse()
{ {
ADD_METHOD( GetPlayMode ); // [sm-ssc] returns PlayMode enum now ADD_METHOD( GetPlayMode );
ADD_METHOD( GetDisplayFullTitle ); ADD_METHOD( GetDisplayFullTitle );
ADD_METHOD( GetTranslitFullTitle ); ADD_METHOD( GetTranslitFullTitle );
ADD_METHOD( HasMods ); ADD_METHOD( HasMods );
ADD_METHOD( HasTimedMods ); ADD_METHOD( HasTimedMods );
ADD_METHOD( GetCourseType ); // [sm-ssc] returns CourseType enum now ADD_METHOD( GetCourseType );
ADD_METHOD( GetCourseEntry ); ADD_METHOD( GetCourseEntry );
ADD_METHOD( GetCourseEntries ); ADD_METHOD( GetCourseEntries );
ADD_METHOD( GetAllTrails ); ADD_METHOD( GetAllTrails );
ADD_METHOD( GetBannerPath ); ADD_METHOD( GetBannerPath );
ADD_METHOD( GetBackgroundPath ); // sm-ssc addition ADD_METHOD( GetBackgroundPath );
ADD_METHOD( GetCourseDir ); // sm-ssc addition ADD_METHOD( GetCourseDir );
ADD_METHOD( GetGroupName ); ADD_METHOD( GetGroupName );
ADD_METHOD( IsAutogen ); ADD_METHOD( IsAutogen );
ADD_METHOD( GetEstimatedNumStages ); ADD_METHOD( GetEstimatedNumStages );
ADD_METHOD( GetScripter );
ADD_METHOD( GetTotalSeconds ); ADD_METHOD( GetTotalSeconds );
ADD_METHOD( IsEndless ); ADD_METHOD( IsEndless );
ADD_METHOD( IsNonstop ); // sm-ssc addition ADD_METHOD( IsNonstop );
ADD_METHOD( IsOni ); // sm-ssc addition ADD_METHOD( IsOni );
ADD_METHOD( GetGoalSeconds ); ADD_METHOD( GetGoalSeconds );
ADD_METHOD( HasBanner ); // sm-ssc addition ADD_METHOD( HasBanner );
ADD_METHOD( HasBackground ); // sm-ssc addition ADD_METHOD( HasBackground );
ADD_METHOD( IsAnEdit ); ADD_METHOD( IsAnEdit );
} }
}; };
+2 -1
View File
@@ -161,9 +161,10 @@ public:
RString m_sMainTitle, m_sMainTitleTranslit; RString m_sMainTitle, m_sMainTitleTranslit;
RString m_sSubTitle, m_sSubTitleTranslit; RString m_sSubTitle, m_sSubTitleTranslit;
RString m_sScripter;
RString m_sBannerPath; RString m_sBannerPath;
RString m_sBackgroundPath; // after 9 years yes finally -aj RString m_sBackgroundPath;
RString m_sCDTitlePath; RString m_sCDTitlePath;
RString m_sGroupName; RString m_sGroupName;
+3 -1
View File
@@ -78,7 +78,9 @@ void CourseContentsList::SetItemFromGameState( Actor *pActor, int iCourseEntryIn
FOREACH_HumanPlayer(pn) FOREACH_HumanPlayer(pn)
{ {
const Trail *pTrail = GAMESTATE->m_pCurTrail[pn]; const Trail *pTrail = GAMESTATE->m_pCurTrail[pn];
if( pTrail == NULL || iCourseEntryIndex >= (int) pTrail->m_vEntries.size() ) if( pTrail == NULL
|| iCourseEntryIndex >= (int) pTrail->m_vEntries.size()
|| iCourseEntryIndex >= (int) pCourse->m_vEntries.size() )
continue; continue;
const TrailEntry *te = &pTrail->m_vEntries[iCourseEntryIndex]; const TrailEntry *te = &pTrail->m_vEntries[iCourseEntryIndex];
+4 -1
View File
@@ -65,6 +65,8 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou
out.m_sMainTitle = sParams[1]; out.m_sMainTitle = sParams[1];
else if( 0 == stricmp(sValueName, "COURSETRANSLIT") ) else if( 0 == stricmp(sValueName, "COURSETRANSLIT") )
out.m_sMainTitleTranslit = sParams[1]; out.m_sMainTitleTranslit = sParams[1];
else if( 0 == stricmp(sValueName, "SCRIPTER") )
out.m_sScripter = sParams[1];
else if( 0 == stricmp(sValueName, "REPEAT") ) else if( 0 == stricmp(sValueName, "REPEAT") )
{ {
RString str = sParams[1]; RString str = sParams[1];
@@ -161,6 +163,7 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou
// infer entry::Type from the first param // infer entry::Type from the first param
// todo: make sure these aren't generating bogus entries due // todo: make sure these aren't generating bogus entries due
// to a lack of songs. -aj // to a lack of songs. -aj
LOG->Trace("[CourseLoaderCRS] sParams[1] = %s",sParams[1].c_str());
// most played // most played
if( sParams[1].Left(strlen("BEST")) == "BEST" ) if( sParams[1].Left(strlen("BEST")) == "BEST" )
{ {
@@ -176,7 +179,7 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou
new_entry.songSort = SongSort_FewestPlays; new_entry.songSort = SongSort_FewestPlays;
} }
// best grades // best grades
if( sParams[1].Left(strlen("GRADEBEST")) == "GRADEBEST" ) else if( sParams[1].Left(strlen("GRADEBEST")) == "GRADEBEST" )
{ {
new_entry.iChooseIndex = atoi( sParams[1].Right(sParams[1].size()-strlen("GRADEBEST")) ) - 1; new_entry.iChooseIndex = atoi( sParams[1].Right(sParams[1].size()-strlen("GRADEBEST")) ) - 1;
CLAMP( new_entry.iChooseIndex, 0, 500 ); CLAMP( new_entry.iChooseIndex, 0, 500 );
+2
View File
@@ -46,6 +46,8 @@ bool CourseWriterCRS::Write( const Course &course, RageFileBasic &f, bool bSavin
f.PutLine( ssprintf("#COURSE:%s;", course.m_sMainTitle.c_str()) ); f.PutLine( ssprintf("#COURSE:%s;", course.m_sMainTitle.c_str()) );
if( course.m_sMainTitleTranslit != "" ) if( course.m_sMainTitleTranslit != "" )
f.PutLine( ssprintf("#COURSETRANSLIT:%s;", course.m_sMainTitleTranslit.c_str()) ); f.PutLine( ssprintf("#COURSETRANSLIT:%s;", course.m_sMainTitleTranslit.c_str()) );
if( course.m_sScripter != "" )
f.PutLine( ssprintf("#SCRIPTER:%s;", course.m_sScripter.c_str()) );
if( course.m_bRepeat ) if( course.m_bRepeat )
f.PutLine( "#REPEAT:YES;" ); f.PutLine( "#REPEAT:YES;" );
if( course.m_iLives != -1 ) if( course.m_iLives != -1 )
+9
View File
@@ -226,12 +226,14 @@ void FadingBanner::LoadRoulette()
{ {
BeforeChange(); BeforeChange();
m_Banner[m_iIndexLatest].LoadRoulette(); m_Banner[m_iIndexLatest].LoadRoulette();
m_Banner[m_iIndexLatest].PlayCommand( "Roulette" );
} }
void FadingBanner::LoadRandom() void FadingBanner::LoadRandom()
{ {
BeforeChange(); BeforeChange();
m_Banner[m_iIndexLatest].LoadRandom(); m_Banner[m_iIndexLatest].LoadRandom();
m_Banner[m_iIndexLatest].PlayCommand( "Random" );
} }
void FadingBanner::LoadFromSortOrder( SortOrder so ) void FadingBanner::LoadFromSortOrder( SortOrder so )
@@ -252,6 +254,13 @@ void FadingBanner::LoadCourseFallback()
m_Banner[m_iIndexLatest].LoadCourseFallback(); m_Banner[m_iIndexLatest].LoadCourseFallback();
} }
void FadingBanner::LoadCustom( RString sBanner )
{
BeforeChange();
m_Banner[m_iIndexLatest].Load( THEME->GetPathG( "Banner", sBanner ) );
m_Banner[m_iIndexLatest].PlayCommand( sBanner );
}
// lua start // lua start
#include "LuaBinding.h" #include "LuaBinding.h"
+1
View File
@@ -29,6 +29,7 @@ public:
void LoadFromSortOrder( SortOrder so ); void LoadFromSortOrder( SortOrder so );
void LoadFallback(); void LoadFallback();
void LoadCourseFallback(); void LoadCourseFallback();
void LoadCustom( RString sBanner );
bool LoadFromCachedBanner( const RString &path ); bool LoadFromCachedBanner( const RString &path );
bool LoadFromCachedBackground( const RString &path ); bool LoadFromCachedBackground( const RString &path );
-5
View File
@@ -157,11 +157,6 @@ void FontPage::SetTextureCoords( const vector<int> &widths, int iAdvanceExtraPix
void FontPage::SetExtraPixels( int iDrawExtraPixelsLeft, int iDrawExtraPixelsRight ) void FontPage::SetExtraPixels( int iDrawExtraPixelsLeft, int iDrawExtraPixelsRight )
{ {
/* Hack: do one more than we were asked to; I think a lot of fonts are one
* too low. - glenn */
iDrawExtraPixelsRight++;
iDrawExtraPixelsLeft++;
if( (iDrawExtraPixelsLeft % 2) == 1 ) if( (iDrawExtraPixelsLeft % 2) == 1 )
++iDrawExtraPixelsLeft; ++iDrawExtraPixelsLeft;
+2 -4
View File
@@ -31,7 +31,7 @@ void LifeMeterBattery::Load( const PlayerState *pPlayerState, PlayerStageStats *
bool bPlayerEnabled = GAMESTATE->IsPlayerEnabled( pPlayerState ); bool bPlayerEnabled = GAMESTATE->IsPlayerEnabled( pPlayerState );
m_sprFrame.Load( THEME->GetPathG(sType,"frame") ); m_sprFrame.Load( THEME->GetPathG(sType,"frame") );
this->AddChild( &m_sprFrame ); this->AddChild( m_sprFrame );
m_sprBattery.Load( THEME->GetPathG(sType,"lives 1x4") ); m_sprBattery.Load( THEME->GetPathG(sType,"lives 1x4") );
m_sprBattery.SetName( ssprintf("BatteryP%i",int(pn+1)) ); m_sprBattery.SetName( ssprintf("BatteryP%i",int(pn+1)) );
@@ -101,14 +101,12 @@ void LifeMeterBattery::OnSongEnded()
Refresh(); Refresh();
} }
void LifeMeterBattery::ChangeLife( TapNoteScore score ) void LifeMeterBattery::ChangeLife( TapNoteScore score )
{ {
if( m_iLivesLeft == 0 ) if( m_iLivesLeft == 0 )
return; return;
// xxx: this is hardcoded; we should use metrics for this. -aj // xxx: This is hardcoded; we should use metrics for this. -aj
// How to: have a TapNote reference similar to LifeMeterBattery
switch( score ) switch( score )
{ {
case TNS_W1: case TNS_W1:
+2 -1
View File
@@ -7,6 +7,7 @@
#include "RageSound.h" #include "RageSound.h"
#include "PercentageDisplay.h" #include "PercentageDisplay.h"
#include "ThemeMetric.h" #include "ThemeMetric.h"
#include "AutoActor.h"
/** @brief Battery life meter used in Oni mode. */ /** @brief Battery life meter used in Oni mode. */
class LifeMeterBattery : public LifeMeter class LifeMeterBattery : public LifeMeter
@@ -45,7 +46,7 @@ private:
//ThemeMetric<> METRIC_NAME; //ThemeMetric<> METRIC_NAME;
ThemeMetric<float> BATTERY_BLINK_TIME; ThemeMetric<float> BATTERY_BLINK_TIME;
Sprite m_sprFrame; AutoActor m_sprFrame;
Sprite m_sprBattery; Sprite m_sprBattery;
BitmapText m_textNumLives; BitmapText m_textNumLives;
+5 -1
View File
@@ -24,9 +24,13 @@ ModIcon::ModIcon( const ModIcon &cpy ):
void ModIcon::Load( RString sMetricsGroup ) void ModIcon::Load( RString sMetricsGroup )
{ {
m_sprFilled.Load( THEME->GetPathG(sMetricsGroup,"Filled") ); m_sprFilled.Load( THEME->GetPathG(sMetricsGroup,"Filled") );
m_sprFilled->SetName("Filled");
ActorUtil::LoadAllCommands( m_sprFilled, sMetricsGroup );
this->AddChild( m_sprFilled ); this->AddChild( m_sprFilled );
m_sprEmpty.Load( THEME->GetPathG(sMetricsGroup,"Empty") ); m_sprEmpty.Load( THEME->GetPathG(sMetricsGroup,"Empty") );
m_sprEmpty->SetName("Empty");
ActorUtil::LoadAllCommands( m_sprEmpty, sMetricsGroup );
this->AddChild( m_sprEmpty ); this->AddChild( m_sprEmpty );
m_text.LoadFromFont( THEME->GetPathF(sMetricsGroup,"Text") ); m_text.LoadFromFont( THEME->GetPathF(sMetricsGroup,"Text") );
@@ -70,7 +74,7 @@ void ModIcon::Set( const RString &_sText )
m_text.SetText( sText ); m_text.SetText( sText );
// This line makes Lua option rows crash: -aj // This line makes Lua option rows crash: -aj
m_text.CropToWidth( CROP_TEXT_TO_WIDTH ); //m_text.CropToWidth( CROP_TEXT_TO_WIDTH );
} }
/* /*
+2
View File
@@ -360,6 +360,8 @@ bool MusicWheel::SelectModeMenuItem()
return true; return true;
} }
// bool MusicWheel::SelectCustomItem()
void MusicWheel::GetSongList( vector<Song*> &arraySongs, SortOrder so ) void MusicWheel::GetSongList( vector<Song*> &arraySongs, SortOrder so )
{ {
vector<Song*> apAllSongs; vector<Song*> apAllSongs;
+1
View File
@@ -57,6 +57,7 @@ protected:
bool SelectSongOrCourse(); bool SelectSongOrCourse();
bool SelectCourse( const Course *p ); bool SelectCourse( const Course *p );
bool SelectModeMenuItem(); bool SelectModeMenuItem();
//bool SelectCustomItem();
virtual void UpdateSwitch(); virtual void UpdateSwitch();
+5
View File
@@ -178,6 +178,11 @@ bool SSCLoader::LoadFromSSCFile( const RString &sPath, Song &out, bool bFromCach
out.m_sGenre = sParams[1]; out.m_sGenre = sParams[1];
} }
else if( sValueName=="ORIGIN" )
{
out.m_sOrigin = sParams[1];
}
else if( sValueName=="CREDIT" ) else if( sValueName=="CREDIT" )
{ {
out.m_sCredit = sParams[1]; out.m_sCredit = sParams[1];
+1 -1
View File
@@ -261,7 +261,7 @@ static RString GetSMNotesTag( const Song &song, const Steps &in )
RString desc = (USE_CREDIT ? in.GetCredit() : in.GetDescription()); RString desc = (USE_CREDIT ? in.GetCredit() : in.GetDescription());
lines.push_back( ssprintf( " %s:", SmEscape(desc).c_str() ) ); lines.push_back( ssprintf( " %s:", SmEscape(desc).c_str() ) );
lines.push_back( ssprintf( " %s:", DifficultyToString(in.GetDifficulty()).c_str() ) ); lines.push_back( ssprintf( " %s:", DifficultyToString(in.GetDifficulty()).c_str() ) );
lines.push_back( ssprintf( " %d:", in.GetMeter() ) ); lines.push_back( ssprintf( " %d:", clamp( in.GetMeter(), MIN_METER, MAX_METER ) ) );
vector<RString> asRadarValues; vector<RString> asRadarValues;
// SM files don't use fakes for radar data. Keep it that way. // SM files don't use fakes for radar data. Keep it that way.
+2 -1
View File
@@ -55,6 +55,7 @@ static void WriteGlobalTags( RageFile &f, const Song &out )
f.PutLine( ssprintf( "#SUBTITLETRANSLIT:%s;", SmEscape(out.m_sSubTitleTranslit).c_str() ) ); f.PutLine( ssprintf( "#SUBTITLETRANSLIT:%s;", SmEscape(out.m_sSubTitleTranslit).c_str() ) );
f.PutLine( ssprintf( "#ARTISTTRANSLIT:%s;", SmEscape(out.m_sArtistTranslit).c_str() ) ); f.PutLine( ssprintf( "#ARTISTTRANSLIT:%s;", SmEscape(out.m_sArtistTranslit).c_str() ) );
f.PutLine( ssprintf( "#GENRE:%s;", SmEscape(out.m_sGenre).c_str() ) ); f.PutLine( ssprintf( "#GENRE:%s;", SmEscape(out.m_sGenre).c_str() ) );
f.PutLine( ssprintf( "#ORIGIN:%s;", SmEscape(out.m_sOrigin).c_str() ) );
f.PutLine( ssprintf( "#CREDIT:%s;", SmEscape(out.m_sCredit).c_str() ) ); f.PutLine( ssprintf( "#CREDIT:%s;", SmEscape(out.m_sCredit).c_str() ) );
f.PutLine( ssprintf( "#BANNER:%s;", SmEscape(out.m_sBannerFile).c_str() ) ); f.PutLine( ssprintf( "#BANNER:%s;", SmEscape(out.m_sBannerFile).c_str() ) );
f.PutLine( ssprintf( "#BACKGROUND:%s;", SmEscape(out.m_sBackgroundFile).c_str() ) ); f.PutLine( ssprintf( "#BACKGROUND:%s;", SmEscape(out.m_sBackgroundFile).c_str() ) );
@@ -293,7 +294,7 @@ static RString GetSSCNoteData( const Song &song, const Steps &in, bool bSavingCa
lines.push_back( ssprintf( "#DESCRIPTION:%s;", SmEscape(in.GetDescription()).c_str() ) ); lines.push_back( ssprintf( "#DESCRIPTION:%s;", SmEscape(in.GetDescription()).c_str() ) );
lines.push_back( ssprintf( "#CHARTSTYLE:%s;", SmEscape(in.GetChartStyle()).c_str() ) ); lines.push_back( ssprintf( "#CHARTSTYLE:%s;", SmEscape(in.GetChartStyle()).c_str() ) );
lines.push_back( ssprintf( "#DIFFICULTY:%s;", DifficultyToString(in.GetDifficulty()).c_str() ) ); lines.push_back( ssprintf( "#DIFFICULTY:%s;", DifficultyToString(in.GetDifficulty()).c_str() ) );
lines.push_back( ssprintf( "#METER:%d;", in.GetMeter() ) ); lines.push_back( ssprintf( "#METER:%d;", clamp( in.GetMeter(), MIN_METER, MAX_METER ) ) );
vector<RString> asRadarValues; vector<RString> asRadarValues;
FOREACH_PlayerNumber( pn ) FOREACH_PlayerNumber( pn )
+3 -2
View File
@@ -178,7 +178,7 @@ void OptionRow::ChoicesChanged( RowType type )
InitText( type ); InitText( type );
/* When choices change, the old focus position is meaningless; reset it. */ // When choices change, the old focus position is meaningless; reset it.
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
SetChoiceInRowWithFocus( p, 0 ); SetChoiceInRowWithFocus( p, 0 );
@@ -398,7 +398,7 @@ void OptionRow::InitText( RowType type )
this->SortByDrawOrder(); this->SortByDrawOrder();
} }
/* After importing options, choose which item is focused. */ // After importing options, choose which item is focused.
void OptionRow::AfterImportOptions( PlayerNumber pn ) void OptionRow::AfterImportOptions( PlayerNumber pn )
{ {
/* We load items for both players on start, since we don't know which players /* We load items for both players on start, since we don't know which players
@@ -645,6 +645,7 @@ void OptionRow::SetModIcon( PlayerNumber pn, const RString &sText, GameCommand &
// update row frame // update row frame
Message msg( "Refresh" ); Message msg( "Refresh" );
msg.SetParam( "GameCommand", &gc ); msg.SetParam( "GameCommand", &gc );
msg.SetParam( "Text", sText );
m_sprFrame->HandleMessage( msg ); m_sprFrame->HandleMessage( msg );
if( m_ModIcons[pn] != NULL ) if( m_ModIcons[pn] != NULL )
m_ModIcons[pn]->Set( sText ); m_ModIcons[pn]->Set( sText );
+1 -1
View File
@@ -35,7 +35,7 @@
* </li></ul> * </li></ul>
*/ */
#ifndef PRODUCT_VER_BARE #ifndef PRODUCT_VER_BARE
#define PRODUCT_VER_BARE v1.2.4 #define PRODUCT_VER_BARE v1.2.5
#endif #endif
/** /**
+1 -1
View File
@@ -5,7 +5,7 @@
; see ProductInfo.h for use descriptions ; see ProductInfo.h for use descriptions
!define PRODUCT_ID "sm-ssc" !define PRODUCT_ID "sm-ssc"
!define PRODUCT_VER "v1.2.4" !define PRODUCT_VER "v1.2.5"
!define PRODUCT_DISPLAY "${PRODUCT_ID} ${PRODUCT_VER}" !define PRODUCT_DISPLAY "${PRODUCT_ID} ${PRODUCT_VER}"
!define PRODUCT_BITMAP "ssc" !define PRODUCT_BITMAP "ssc"
+1 -2
View File
@@ -519,8 +519,7 @@ static MenuDef g_AreaMenu(
static MenuDef g_StepsInformation( static MenuDef g_StepsInformation(
"ScreenMiniMenuStepsInformation", "ScreenMiniMenuStepsInformation",
MenuRowDef( ScreenEdit::difficulty, "Difficulty", true, EditMode_Practice, true, true, 0, NULL ), MenuRowDef( ScreenEdit::difficulty, "Difficulty", true, EditMode_Practice, true, true, 0, NULL ),
// xxx: this giant list of numbers SUUUUUUUUUUCKS -aj MenuRowDef( ScreenEdit::meter, "Meter", true, EditMode_Practice, true, false, 0, MIN_METER, MAX_METER ),
MenuRowDef( ScreenEdit::meter, "Meter", true, EditMode_Practice, true, false, 0, "1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25" ),
MenuRowDef( ScreenEdit::description, "Description", true, EditMode_Practice, true, true, 0, NULL ), MenuRowDef( ScreenEdit::description, "Description", true, EditMode_Practice, true, true, 0, NULL ),
MenuRowDef( ScreenEdit::chartstyle, "Chart Style", true, EditMode_Practice, true, true, 0, NULL ), MenuRowDef( ScreenEdit::chartstyle, "Chart Style", true, EditMode_Practice, true, true, 0, NULL ),
MenuRowDef( ScreenEdit::step_credit, "Step Author", true, EditMode_Practice, true, true, 0, NULL ), MenuRowDef( ScreenEdit::step_credit, "Step Author", true, EditMode_Practice, true, true, 0, NULL ),
+3 -2
View File
@@ -351,7 +351,7 @@ void ScreenEvaluation::Init()
{ {
FOREACH_EnabledPlayer( p ) FOREACH_EnabledPlayer( p )
{ {
m_sprPercentFrame[p].Load( THEME->GetPathG(m_sName,ssprintf("percent frame p%d",p+1)) ); m_sprPercentFrame[p].Load( THEME->GetPathG(m_sName,ssprintf("PercentFrame p%d",p+1)) );
m_sprPercentFrame[p]->SetName( ssprintf("PercentFrameP%d",p+1) ); m_sprPercentFrame[p]->SetName( ssprintf("PercentFrameP%d",p+1) );
ActorUtil::LoadAllCommands( *m_sprPercentFrame[p], m_sName ); ActorUtil::LoadAllCommands( *m_sprPercentFrame[p], m_sName );
SET_XY( m_sprPercentFrame[p] ); SET_XY( m_sprPercentFrame[p] );
@@ -452,6 +452,7 @@ void ScreenEvaluation::Init()
} }
// init judgment area // init judgment area
ROLLING_NUMBERS_CLASS.Load( m_sName, "RollingNumbersClass" );
FOREACH_ENUM( JudgmentLine, l ) FOREACH_ENUM( JudgmentLine, l )
{ {
if( l == JudgmentLine_W1 && !GAMESTATE->ShowW1() ) if( l == JudgmentLine_W1 && !GAMESTATE->ShowW1() )
@@ -473,7 +474,7 @@ void ScreenEvaluation::Init()
{ {
m_textJudgmentLineNumber[l][p].LoadFromFont( THEME->GetPathF(m_sName, "JudgmentLineNumber") ); m_textJudgmentLineNumber[l][p].LoadFromFont( THEME->GetPathF(m_sName, "JudgmentLineNumber") );
m_textJudgmentLineNumber[l][p].SetName( JudgmentLineToString(l)+ssprintf("NumberP%d",p+1) ); m_textJudgmentLineNumber[l][p].SetName( JudgmentLineToString(l)+ssprintf("NumberP%d",p+1) );
m_textJudgmentLineNumber[l][p].Load( "RollingNumbersJudgment" ); m_textJudgmentLineNumber[l][p].Load( ROLLING_NUMBERS_CLASS );
ActorUtil::LoadAllCommands( m_textJudgmentLineNumber[l][p], m_sName ); ActorUtil::LoadAllCommands( m_textJudgmentLineNumber[l][p], m_sName );
SET_XY( m_textJudgmentLineNumber[l][p] ); SET_XY( m_textJudgmentLineNumber[l][p] );
this->AddChild( &m_textJudgmentLineNumber[l][p] ); this->AddChild( &m_textJudgmentLineNumber[l][p] );
+1 -1
View File
@@ -79,7 +79,6 @@ protected:
GradeDisplay m_Grades[NUM_PLAYERS]; GradeDisplay m_Grades[NUM_PLAYERS];
// points area // points area
bool m_bNewSongsUnlocked;
PercentageDisplay m_Percent[NUM_PLAYERS]; PercentageDisplay m_Percent[NUM_PLAYERS];
AutoActor m_sprPercentFrame[NUM_PLAYERS]; AutoActor m_sprPercentFrame[NUM_PLAYERS];
@@ -115,6 +114,7 @@ protected:
RageSound m_soundStart; // sound played if the player passes or fails RageSound m_soundStart; // sound played if the player passes or fails
ThemeMetric<bool> SUMMARY; ThemeMetric<bool> SUMMARY;
ThemeMetric<RString> ROLLING_NUMBERS_CLASS;
/** @brief Did a player save a screenshot of their score? */ /** @brief Did a player save a screenshot of their score? */
bool m_bSavedScreenshot[NUM_PLAYERS]; bool m_bSavedScreenshot[NUM_PLAYERS];
}; };
+12 -11
View File
@@ -588,6 +588,7 @@ void ScreenGameplay::Init()
if( GAMESTATE->IsCourseMode() ) if( GAMESTATE->IsCourseMode() )
{ {
ASSERT( pi->m_ptextCourseSongNumber == NULL ); ASSERT( pi->m_ptextCourseSongNumber == NULL );
SONG_NUMBER_FORMAT.Load( m_sName, "SongNumberFormat" );
pi->m_ptextCourseSongNumber = new BitmapText; pi->m_ptextCourseSongNumber = new BitmapText;
pi->m_ptextCourseSongNumber->LoadFromFont( THEME->GetPathF(m_sName,"SongNum") ); pi->m_ptextCourseSongNumber->LoadFromFont( THEME->GetPathF(m_sName,"SongNum") );
pi->m_ptextCourseSongNumber->SetName( ssprintf("SongNumber%s",pi->GetName().c_str()) ); pi->m_ptextCourseSongNumber->SetName( ssprintf("SongNumber%s",pi->GetName().c_str()) );
@@ -1011,7 +1012,7 @@ void ScreenGameplay::LoadNextSong()
{ {
pi->GetPlayerStageStats()->m_iSongsPlayed++; pi->GetPlayerStageStats()->m_iSongsPlayed++;
if( pi->m_ptextCourseSongNumber ) if( pi->m_ptextCourseSongNumber )
pi->m_ptextCourseSongNumber->SetText( ssprintf("%d", pi->GetPlayerStageStats()->m_iSongsPassed+1) ); pi->m_ptextCourseSongNumber->SetText( ssprintf(SONG_NUMBER_FORMAT.GetValue(), pi->GetPlayerStageStats()->m_iSongsPassed+1) );
} }
if( GAMESTATE->m_bMultiplayer ) if( GAMESTATE->m_bMultiplayer )
@@ -1130,13 +1131,12 @@ void ScreenGameplay::LoadNextSong()
m_LyricDisplay.PlayCommand( bAllReverse? "SetReverse": bAtLeastOneReverse? "SetOneReverse": "SetNoReverse" ); m_LyricDisplay.PlayCommand( bAllReverse? "SetReverse": bAtLeastOneReverse? "SetOneReverse": "SetNoReverse" );
// Load lyrics // Load lyrics
// XXX: don't load this here // XXX: don't load this here (who and why? -aj)
LyricsLoader LL; LyricsLoader LL;
if( GAMESTATE->m_pCurSong->HasLyrics() ) if( GAMESTATE->m_pCurSong->HasLyrics() )
LL.LoadFromLRCFile(GAMESTATE->m_pCurSong->GetLyricsPath(), *GAMESTATE->m_pCurSong); LL.LoadFromLRCFile(GAMESTATE->m_pCurSong->GetLyricsPath(), *GAMESTATE->m_pCurSong);
// Set up song-specific graphics.
/* Set up song-specific graphics. */
// Check to see if any players are in beginner mode. // Check to see if any players are in beginner mode.
// Note: steps can be different if turn modifiers are used. // Note: steps can be different if turn modifiers are used.
@@ -1156,21 +1156,22 @@ void ScreenGameplay::LoadNextSong()
if( m_pSongForeground ) if( m_pSongForeground )
m_pSongForeground->Unload(); m_pSongForeground->Unload();
if( !PREFSMAN->m_bShowBeginnerHelper || !m_BeginnerHelper.Initialize(2) ) if( !PREFSMAN->m_bShowBeginnerHelper || !m_BeginnerHelper.Init(2) )
{ {
m_BeginnerHelper.SetVisible( false ); m_BeginnerHelper.SetVisible( false );
/* BeginnerHelper disabled, or failed to load. */ // BeginnerHelper disabled, or failed to load.
if( m_pSongBackground ) if( m_pSongBackground )
m_pSongBackground->LoadFromSong( GAMESTATE->m_pCurSong ); m_pSongBackground->LoadFromSong( GAMESTATE->m_pCurSong );
if( !GAMESTATE->m_bDemonstrationOrJukebox ) if( !GAMESTATE->m_bDemonstrationOrJukebox )
{ {
/* This will fade from a preset brightness to the actual brightness (based /* This will fade from a preset brightness to the actual brightness
* on prefs and "cover"). The preset brightness may be 0 (to fade from * (based on prefs and "cover"). The preset brightness may be 0 (to
* black), or it might be 1, if the stage screen has the song BG and we're * fade from black), or it might be 1, if the stage screen has the
* coming from it (like Pump). This used to be done in SM_PlayReady, but * song BG and we're coming from it (like Pump). This used to be done
* that means it's impossible to snap to the new brightness immediately. */ * in SM_PlayReady, but that means it's impossible to snap to the
* new brightness immediately. */
if( m_pSongBackground ) if( m_pSongBackground )
{ {
m_pSongBackground->SetBrightness( INITIAL_BACKGROUND_BRIGHTNESS ); m_pSongBackground->SetBrightness( INITIAL_BACKGROUND_BRIGHTNESS );

Some files were not shown because too many files have changed in this diff Show More