[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.
________________________________________________________________________________
[v0.57] - Wolfman2000
[v0.58] - Wolfman2000
* Implement #LABELS tag for easier Editor work/Rock Band section mimicry.
[v0.57] - AJ
* Add #ORIGIN tag to metadata.
[v0.56] - Wolfman2000
* 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]
================================================================================
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
--------
* [PlayerOptions] Added UsingReverse() Lua binding (automatically tests
GetReverse() == 1) [AJ]
* [PlayerOptions] Added UsingReverse() Lua binding (automatically tests GetReverse() == 1) [AJ]
* [PlayerState] Added GetCurrentPlayerOptions() Lua binding [AJ]
20110413
--------
* [ScreenSelectMusic] Made score frame into an AutoActor, changed the filename
from "score frame p1" to "ScoreFrame P1" for consistency with other elements.
[AJ]
from "score frame p1" to "ScoreFrame P1" for consistency with other elements. [AJ]
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()
local ret = {};
local t = {};
for p = 0,PROFILEMAN:GetNumLocalProfiles()-1 do
local profile=PROFILEMAN:GetLocalProfileFromIndex(p);
local item = Def.ActorFrame {
local ProfileCard = Def.ActorFrame {
--[[ Def.Quad {
InitCommand=cmd(zoomto,200,1;y,40/2);
OnCommand=cmd(diffuse,Color('Outline'););
@@ -22,10 +22,10 @@ function GetLocalProfiles()
end;
};
};
table.insert( ret, item );
t[#t+1]=ProfileCard;
end;
return ret;
return t;
end;
function LoadCard(cColor)
@@ -38,14 +38,14 @@ function LoadCard(cColor)
return t
end
function LoadPlayerStuff(Player)
local ret = {};
local t = {};
local pn = (Player == PLAYER_1) and 1 or 2;
--[[ local t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 200, 230) .. {
Name = 'BigFrame';
}; --]]
local t = Def.ActorFrame {
t[#t+1] = Def.ActorFrame {
Name = 'JoinFrame';
LoadCard(Color('Orange'));
--[[ Def.Quad {
@@ -62,23 +62,13 @@ function LoadPlayerStuff(Player)
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';
LoadCard(PlayerColor(Player));
};
table.insert( ret, t );
--[[ t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 170, 20) .. {
t[#t+1] = Def.ActorFrame {
Name = 'SmallFrame';
}; --]]
t = Def.ActorFrame {
Name = 'SmallFrame';
--[[ Def.Quad {
InitCommand=cmd(zoomto,170+4,32+4);
OnCommand=cmd(shadowlength,1);
}; --]]
InitCommand=cmd(y,-2);
Def.Quad {
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"));
};
};
table.insert( ret, t );
t = Def.ActorScroller{
t[#t+1] = Def.ActorScroller{
Name = 'Scroller';
NumItemsToDraw=6;
-- InitCommand=cmd(y,-230/2+20;);
@@ -114,34 +103,17 @@ function LoadPlayerStuff(Player)
end;
children = GetLocalProfiles();
};
table.insert( ret, t );
t = Def.ActorFrame {
t[#t+1] = Def.ActorFrame {
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 {
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") .. {
t[#t+1] = LoadFont("Common Normal") .. {
Name = 'SelectedProfileText';
--InitCommand=cmd(y,160;shadowlength,1;diffuse,PlayerColor(Player));
InitCommand=cmd(y,160;shadowlength,1;);
};
table.insert( ret, t );
return ret;
return t;
end;
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
Baseline=26
LineSpacing=28
@@ -42,4 +42,5 @@ line 2=큰탑터투트티펌페
line 3=폼핑할함해행헤혀
line 4=환회휘태난터까시
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.
SoundVolumeAttract=Adjust the volume level during attract mode.
Speed=Speed
Stepmania Credits=The Stepmania Development Team
StepMania Credits=The StepMania Development Team.
Steps=Steps
Style=
Test Input=Test the responsiveness of connected joysticks.
@@ -995,7 +995,7 @@ ShowSongOptions=Show Song Options
ShowStats=Show Stats
SmoothLines=SmoothLines
SoundEffect=Sound Effect
Stepmania Credits=Stepmania Credits
StepMania Credits=StepMania Credits
Center1Player=Center 1 Player
Song=Song
Song Group=Song Group
@@ -40,7 +40,7 @@ v1.1
* Cleaned up code some, I think.
________________________________________________________________________________
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,
@@ -68,7 +68,7 @@ local function ParseSpeedModFile(path)
return mods
else
-- 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)
file:Open(path, 2)
file:Write(fallbackString)
@@ -141,6 +141,10 @@ function Actor:xy(actorX,actorY)
self:y(actorY)
end
function PositionPerPlayer(player, p1X, p2X)
return player == PLAYER_1 and p1X or p2X
end
-- MaskSource([clearzbuffer])
-- Sets an actor up as the source for a mask. Clears zBuffer by default.
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
[UnlockManager]
# Unlock specific things. we'll go in-depth with this one day, but it really
# isnt what sm-ssc was designed for.
# Unlock specific things.
AutoLockChallengeSteps=false
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 #
[ArrowEffects]
@@ -195,6 +221,8 @@ BottomEdge=SCREEN_BOTTOM
# Scroll stuff when you roll over it, DDR Extreme style.
ScrollRandom=false
ScrollRoulette=false
# Control how fast the banner scrolls. Higher numbers mean slower.
ScrollSpeedDivisor=2
[BitmapText]
# 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
BannerRouletteCommand=
BannerRandomCommand=
[Gameplay]
# System Direction
ComboIsPerRow=ComboPerRow()
@@ -1731,7 +1762,7 @@ LoadEdits=true
Fallback="ScreenWithMenuElements"
Class="ScreenSelectProfile"
#
ScreenOnCommand=lockinput,1
ScreenOnCommand=%function(self) self:lockinput(3); end;
#
NextScreen=Branch.AfterSelectProfile()
PrevScreen=Branch.TitleMenu()
@@ -1744,7 +1775,8 @@ CodeUp="+MenuUp"
CodeUp2="+Up"
CodeDown="+MenuDown"
CodeDown2="+Down"
CodeStart="Start"
# Holding Start let us skip ( annoying )
CodeStart="~Start,+Start"
CodeBack="Back"
CodeCenter="Center"
CodeDownLeft="DownLeft"
@@ -1764,16 +1796,16 @@ DefaultChoice="Single"
ChoiceNames=GameCompatibleModes()
#
OptionOrderAuto="1:2,2:1"
ChoiceSingle="name,Single;style,single;screen,"..Branch.AfterSelectPlayMode()
ChoiceDouble="name,Double;style,double;screen,"..Branch.AfterSelectPlayMode()
ChoiceSolo="name,Solo;style,solo;screen,"..Branch.AfterSelectPlayMode()
ChoiceVersus="name,Versus;style,versus;screen,"..Branch.AfterSelectPlayMode()
ChoiceCouple="name,Couple;style,couple;screen,"..Branch.AfterSelectPlayMode()
ChoiceHalfDouble="name,HalfDouble;style,halfdouble;screen,"..Branch.AfterSelectPlayMode()
Choice5Keys="name,5Keys;style,single5;;screen,"..Branch.AfterSelectPlayMode()
Choice7Keys="name,7Keys;style,single7;screen,"..Branch.AfterSelectPlayMode()
Choice10Keys="name,10Keys;style,double10;screen,"..Branch.AfterSelectPlayMode()
Choice14Keys="name,14Keys;style,double14;screen,"..Branch.AfterSelectPlayMode()
ChoiceSingle="name,Single;style,single;text,Single;screen,"..Branch.AfterSelectPlayMode()
ChoiceDouble="name,Double;style,double;text,Double;screen,"..Branch.AfterSelectPlayMode()
ChoiceSolo="name,Solo;style,solo;text,Solo;screen,"..Branch.AfterSelectPlayMode()
ChoiceVersus="name,Versus;style,versus;text,Versus;screen,"..Branch.AfterSelectPlayMode()
ChoiceCouple="name,Couple;style,couple;text,Couple;screen,"..Branch.AfterSelectPlayMode()
ChoiceHalfDouble="name,HalfDouble;style,halfdouble;text,HalfDouble;screen,"..Branch.AfterSelectPlayMode()
Choice5Keys="name,5Keys;style,single5;text,5Keys;screen,"..Branch.AfterSelectPlayMode()
Choice7Keys="name,7Keys;style,single7;text,7Keys;screen,"..Branch.AfterSelectPlayMode()
Choice10Keys="name,10Keys;style,double10;text,10Keys;screen,"..Branch.AfterSelectPlayMode()
Choice14Keys="name,14Keys;style,double14;text,14Keys;screen,"..Branch.AfterSelectPlayMode()
ChoiceKB7="name,kb7;style,single;screen,"..Branch.AfterSelectPlayMode()
#
PerChoiceScrollElement=false
@@ -1794,7 +1826,7 @@ PrevScreen=Branch.TitleMenu()
#
TimerSeconds=40
#
DefaultChoice="Easy"
DefaultChoice="Normal"
ChoiceNames="Normal,Rave,Extended,Oni,Endless"
#
PerChoiceScrollElement=false
@@ -1804,13 +1836,13 @@ ShowScroller=true
WrapScroller=true
ShowIcon=false
#
ChoiceEasy="applydefaultoptions;name,Easy;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceNormal="applydefaultoptions;name,Normal;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceHard="applydefaultoptions;name,Hard;playmode,regular;difficulty,hard;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceRave="applydefaultoptions;name,Rave;playmode,rave;screen,ScreenSelectMusic;setenv,sMode,Rave"
ChoiceExtended="applydefaultoptions;name,Extended;playmode,nonstop;screen,ScreenSelectCourse;setenv,sMode,Extended"
ChoiceOni="applydefaultoptions;name,Oni;playmode,oni;screen,ScreenSelectCourse;setenv,sMode,Oni"
ChoiceEndless="applydefaultoptions;name,Endless;playmode,endless;screen,ScreenSelectCourse;setenv,sMode,Endless"
ChoiceEasy="applydefaultoptions;name,Easy;text,Easy;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;text,Hard;playmode,regular;difficulty,hard;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceRave="applydefaultoptions;name,Rave;text,Rave;playmode,rave;screen,ScreenSelectMusic;setenv,sMode,Rave"
ChoiceExtended="applydefaultoptions;name,Extended;text,Extended;playmode,nonstop;screen,ScreenSelectCourse;setenv,sMode,Extended"
ChoiceOni="applydefaultoptions;name,Oni;text,Oni;playmode,oni;screen,ScreenSelectCourse;setenv,sMode,Oni"
ChoiceEndless="applydefaultoptions;name,Endless;text,Endless;playmode,endless;screen,ScreenSelectCourse;setenv,sMode,Endless"
[ScreenSelectCharacter]
Class="ScreenSelectMaster"
@@ -2052,9 +2084,12 @@ PageOnCommand=
ContainerOnCommand=
ContainerOffCommand=
CursorOnCommand=
LineHighlightOnCommand=
LineHighlightChangeCommand=
LineHighlightChangeToExitCommand=
LineHighlightP1OnCommand=
LineHighlightP1ChangeCommand=
LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
ShowScrollBar=false
ScrollBarHeight=0
ScrollBarTime=0
@@ -2442,9 +2477,13 @@ Fallback="ScreenOptionsSimple"
OptionRowNormalMetricsGroup="OptionRowService"
LineHighlightOnCommand=visible,false
LineHighlightChangeCommand=
LineHighlightChangeToExitCommand=
LineHighlightP1OnCommand=visible,false
LineHighlightP1ChangeCommand=
LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=visible,false
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
CursorOnCommand=visible,false
@@ -2455,7 +2494,7 @@ Fallback="ScreenOptionsSimpleService"
NextScreen=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"
Line1="gamecommand;screen,ScreenMapControllers;name,Key Joy Mappings"
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"
LineSync="gamecommand;screen,ScreenGameplaySyncMachine;name,Calibrate Machine Sync"
LineReload="gamecommand;screen,ScreenReloadSongs;name,Reload Songs"
LineCredits="gamecommand;screen,ScreenCredits;name,StepMania Credits"
LineMoreOptions="gamecommand;screen,ScreenOptionsExtended;name,More Options"
[ScreenOptionsExtended]
@@ -2500,9 +2540,13 @@ PrevScreen="ScreenOptionsService"
NextScreen="ScreenOptionsService"
HelpText=Screen.String("HelpTextOptionsAndBack")
LineHighlightOnCommand=visible,false
LineHighlightChangeCommand=
LineHighlightChangeToExitCommand=
LineHighlightP1OnCommand=visible,false
LineHighlightP1ChangeCommand=
LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=visible,false
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
#
ExplanationTogetherX=SCREEN_CENTER_X
ExplanationTogetherY=SCREEN_CENTER_Y+174
@@ -3168,6 +3212,7 @@ DebugX=SCREEN_CENTER_X
DebugY=SCREEN_BOTTOM-72
DebugOnCommand=zoom,0.75
#
SongNumberFormat="%d"
SongNumberP1X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") - 60
SongNumberP1Y=SCREEN_TOP+24+7
SongNumberP1OnCommand=visible,false
@@ -3219,6 +3264,7 @@ PlayerOptionsHideFailType=false
MaxComboNumDigits=4
#
ShowBannerArea=true
RollingNumbersClass="RollingNumbersJudgment"
ShowSharedJudgmentLineLabels=false
ShowJudgmentLineW1=false
ShowJudgmentLineW2=false
@@ -3782,7 +3828,7 @@ NextScreen="ScreenOptionsExtended"
PlayerType="PlayerSyncMachine"
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:
LifeP1OnCommand=visible,false
@@ -4167,3 +4213,15 @@ StartScreen="ScreenTitleMenu"
LightsMode="LightsMode_Demonstration"
ShowCourseModifiersProbability=0
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]
[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;
#BPMS:0.000=140.000;
#BPMS:0.000=148.000;
#STOPS:;
Binary file not shown.
Binary file not shown.
+277 -9
View File
@@ -3,43 +3,46 @@ FallbackTheme=_fallback
[ScreenSystemLayer]
CreditsP1X=SCREEN_CENTER_X-256-32
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
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]
# Header ( Top of Screen )
ShowHeader=true
HeaderX=SCREEN_CENTER_X
HeaderY=SCREEN_TOP
HeaderOnCommand=vertalign,top
HeaderOnCommand=vertalign,top;addy,-64;decelerate,0.35;addy,64;
HeaderOffCommand=
# Text Header ( Text displayed at top of screen on top of header )
ShowTextHeader=true
TextHeaderX=SCREEN_CENTER_X-256-32
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=
# Footer ( Bottom Of Screen )
ShowFooter=true
FooterX=SCREEN_CENTER_X
FooterY=SCREEN_BOTTOM
FooterOnCommand=vertalign,bottom
FooterOnCommand=vertalign,bottom;addy,48;decelerate,0.35;addy,-48
FooterOffCommand=
# Menu Timer
TimerX=SCREEN_CENTER_X+256+32
TimerY=SCREEN_TOP+32+8-1.5
# We animate the timer in [MenuTimer], since diffusion doesn't work here.
TimerOnCommand=
TimerOffCommand=
[MenuTimer]
# Text
Text1OnCommand=stopeffect;stoptweening;horizalign,right;vertalign,bottom;
# Text associated with the menutimer
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) \
return string.format("%0.1f", fSeconds); \
end
FrameOnCommand=
# Warning
#
Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1");
[ScreenTitleMenu]
# 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;
# OffUnfocused is for items that were not selected and the screen is exiting.
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]
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
MusicWheelOnCommand=draworder,-1
[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
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:
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; }
LunaBPMDisplay()
{
ADD_METHOD( SetFromGameState );
ADD_METHOD( SetFromSong );
ADD_METHOD( GetText );
}
};
+4 -1
View File
@@ -17,6 +17,9 @@ REGISTER_ACTOR_CLASS( Banner );
ThemeMetric<bool> SCROLL_RANDOM ("Banner","ScrollRandom");
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()
{
@@ -79,7 +82,7 @@ void Banner::Update( float fDeltaTime )
if( m_bScrolling )
{
m_fPercentScrolling += fDeltaTime/2;
m_fPercentScrolling += fDeltaTime/(float)SCROLL_SPEED_DIVISOR;
m_fPercentScrolling -= (int)m_fPercentScrolling;
const RectF *pTextureRect = GetCurrentTextureCoordRect();
+133 -122
View File
@@ -12,12 +12,12 @@
#include "ScreenDimensions.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
#define PLAYER_X( px ) THEME->GetMetricF("BeginnerHelper",ssprintf("Player%d_X",px+1))
// "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%dX",px+1))
#define PLAYER_ANGLE THEME->GetMetricF("BeginnerHelper","PlayerAngle")
#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_Y THEME->GetMetricF("BeginnerHelper","HelperY")
@@ -75,6 +75,108 @@ BeginnerHelper::~BeginnerHelper()
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 )
{
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;
}
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()
{
// If not initialized, don't bother with this
@@ -226,32 +232,37 @@ void BeginnerHelper::DrawPrimitives()
m_sFlash.Draw();
bool DrawCelShaded = PREFSMAN->m_bCelShadeModels;
if( DrawCelShaded )
m_pDancePad->DrawCelShaded();
else
// Draw Pad
if( SHOW_DANCE_PAD )
{
DISPLAY->SetLighting( true );
DISPLAY->SetLightDirectional(
0,
RageColor(0.5,0.5,0.5,1),
RageColor(1,1,1,1),
RageColor(0,0,0,1),
RageVector3(0, 0, 1) );
if( DrawCelShaded )
m_pDancePad->DrawCelShaded();
else
{
DISPLAY->SetLighting( true );
DISPLAY->SetLightDirectional(
0,
RageColor(0.5,0.5,0.5,1),
RageColor(1,1,1,1),
RageColor(0,0,0,1),
RageVector3(0, 0, 1) );
m_pDancePad->Draw();
DISPLAY->ClearZBuffer(); // So character doesn't step "into" the dance pad.
DISPLAY->SetLightOff( 0 );
DISPLAY->SetLighting( false );
m_pDancePad->Draw();
DISPLAY->ClearZBuffer(); // So character doesn't step "into" the dance pad.
DISPLAY->SetLightOff( 0 );
DISPLAY->SetLighting( false );
}
}
// Draw StepCircles
for(int scd=0; scd<NUM_PLAYERS; scd++)
for(int scde=0; scde<4; scde++)
m_sStepCircle[scd][scde].Draw();
// Draw Dancers
if( DrawCelShaded )
{
FOREACH_PlayerNumber( pn ) // Draw each dancer
FOREACH_PlayerNumber( pn )
if( GAMESTATE->IsHumanPlayer(pn) )
m_pDancer[pn]->DrawCelShaded();
}
@@ -265,7 +276,7 @@ void BeginnerHelper::DrawPrimitives()
RageColor(0,0,0,1),
RageVector3(0, 0, 1) );
FOREACH_PlayerNumber( pn ) // Draw each dancer
FOREACH_PlayerNumber( pn )
if( GAMESTATE->IsHumanPlayer(pn) )
m_pDancer[pn]->Draw();
@@ -314,7 +325,7 @@ void BeginnerHelper::Step( PlayerNumber pn, int CSTEP )
m_pDancer[pn]->SetRotationY( 0 );
break;
}
m_sFlash.StopEffect();
m_sFlash.StopTweening();
m_sFlash.Sleep( GAMESTATE->m_fCurBPS/16 );
@@ -337,22 +348,22 @@ void BeginnerHelper::Update( float fDeltaTime )
// Check if there are any notes at all on this row.. If not, save scanning.
if( !m_NoteData[pn].IsThereATapAtRow(iRow) )
continue;
// Find all steps on this row, in order to show the correct animations
int iStep = 0;
const int iNumTracks = m_NoteData[pn].GetNumTracks();
for( int t=0; t<iNumTracks; t++ )
if( m_NoteData[pn].GetTapNote(t,iRow).type == TapNote::tap )
iStep |= 1 << t;
// Assign new data
this->Step( pn, iStep );
}
}
// Make sure we don't accidentally scan a row 2x
m_iLastRowChecked = iCurRow;
// Update animations
ActorFrame::Update( fDeltaTime );
m_pDancePad->Update( fDeltaTime );
+6 -2
View File
@@ -4,8 +4,10 @@
#include "ActorFrame.h"
#include "Character.h"
#include "Sprite.h"
#include "AutoActor.h"
#include "PlayerNumber.h"
#include "NoteData.h"
#include "ThemeMetric.h"
class Model;
/** @brief A dancing character that follows the steps of the Song. */
class BeginnerHelper : public ActorFrame
@@ -14,7 +16,7 @@ public:
BeginnerHelper();
~BeginnerHelper();
bool Initialize( int iDancePadType );
bool Init( int iDancePadType );
bool IsInitialized() { return m_bInitialized; }
static bool CanUse();
void AddPlayer( PlayerNumber pn, const NoteData &nd );
@@ -32,12 +34,14 @@ protected:
Model *m_pDancer[NUM_PLAYERS];
Model *m_pDancePad;
Sprite m_sFlash;
Sprite m_sBackground;
AutoActor m_sBackground;
Sprite m_sStepCircle[NUM_PLAYERS][4]; // More memory, but much easier to manage
int m_iLastRowChecked;
int m_iLastRowFlashed;
bool m_bInitialized;
ThemeMetric<bool> SHOW_DANCE_PAD;
};
#endif
+12 -9
View File
@@ -91,7 +91,7 @@ int CourseEntry::GetNumModChanges() const
Course::Course(): m_bIsAutogen(false), m_sPath(""), m_sMainTitle(""),
m_sMainTitleTranslit(""), m_sSubTitle(""), m_sSubTitleTranslit(""),
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_bIncomplete(false), m_vEntries(), m_SortOrder_TotalDifficulty(0),
m_SortOrder_Ranking(0), m_LoadedFromProfile(ProfileSlot_Invalid),
@@ -175,6 +175,7 @@ void Course::Init()
m_sMainTitleTranslit = "";
m_sSubTitle = "";
m_sSubTitleTranslit = "";
m_sScripter = "";
m_sBannerPath = "";
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 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 GetScripter( T* p, lua_State *L ) { lua_pushstring(L, p->m_sScripter ); return 1; }
static int GetTotalSeconds( T* p, lua_State *L )
{
StepsType st = Enum::Check<StepsType>(L, 1);
@@ -1111,28 +1113,29 @@ public:
LunaCourse()
{
ADD_METHOD( GetPlayMode ); // [sm-ssc] returns PlayMode enum now
ADD_METHOD( GetPlayMode );
ADD_METHOD( GetDisplayFullTitle );
ADD_METHOD( GetTranslitFullTitle );
ADD_METHOD( HasMods );
ADD_METHOD( HasTimedMods );
ADD_METHOD( GetCourseType ); // [sm-ssc] returns CourseType enum now
ADD_METHOD( GetCourseType );
ADD_METHOD( GetCourseEntry );
ADD_METHOD( GetCourseEntries );
ADD_METHOD( GetAllTrails );
ADD_METHOD( GetBannerPath );
ADD_METHOD( GetBackgroundPath ); // sm-ssc addition
ADD_METHOD( GetCourseDir ); // sm-ssc addition
ADD_METHOD( GetBackgroundPath );
ADD_METHOD( GetCourseDir );
ADD_METHOD( GetGroupName );
ADD_METHOD( IsAutogen );
ADD_METHOD( GetEstimatedNumStages );
ADD_METHOD( GetScripter );
ADD_METHOD( GetTotalSeconds );
ADD_METHOD( IsEndless );
ADD_METHOD( IsNonstop ); // sm-ssc addition
ADD_METHOD( IsOni ); // sm-ssc addition
ADD_METHOD( IsNonstop );
ADD_METHOD( IsOni );
ADD_METHOD( GetGoalSeconds );
ADD_METHOD( HasBanner ); // sm-ssc addition
ADD_METHOD( HasBackground ); // sm-ssc addition
ADD_METHOD( HasBanner );
ADD_METHOD( HasBackground );
ADD_METHOD( IsAnEdit );
}
};
+2 -1
View File
@@ -161,9 +161,10 @@ public:
RString m_sMainTitle, m_sMainTitleTranslit;
RString m_sSubTitle, m_sSubTitleTranslit;
RString m_sScripter;
RString m_sBannerPath;
RString m_sBackgroundPath; // after 9 years yes finally -aj
RString m_sBackgroundPath;
RString m_sCDTitlePath;
RString m_sGroupName;
+3 -1
View File
@@ -78,7 +78,9 @@ void CourseContentsList::SetItemFromGameState( Actor *pActor, int iCourseEntryIn
FOREACH_HumanPlayer(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;
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];
else if( 0 == stricmp(sValueName, "COURSETRANSLIT") )
out.m_sMainTitleTranslit = sParams[1];
else if( 0 == stricmp(sValueName, "SCRIPTER") )
out.m_sScripter = sParams[1];
else if( 0 == stricmp(sValueName, "REPEAT") )
{
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
// todo: make sure these aren't generating bogus entries due
// to a lack of songs. -aj
LOG->Trace("[CourseLoaderCRS] sParams[1] = %s",sParams[1].c_str());
// most played
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;
}
// 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;
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()) );
if( course.m_sMainTitleTranslit != "" )
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 )
f.PutLine( "#REPEAT:YES;" );
if( course.m_iLives != -1 )
+9
View File
@@ -226,12 +226,14 @@ void FadingBanner::LoadRoulette()
{
BeforeChange();
m_Banner[m_iIndexLatest].LoadRoulette();
m_Banner[m_iIndexLatest].PlayCommand( "Roulette" );
}
void FadingBanner::LoadRandom()
{
BeforeChange();
m_Banner[m_iIndexLatest].LoadRandom();
m_Banner[m_iIndexLatest].PlayCommand( "Random" );
}
void FadingBanner::LoadFromSortOrder( SortOrder so )
@@ -252,6 +254,13 @@ void FadingBanner::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
#include "LuaBinding.h"
+1
View File
@@ -29,6 +29,7 @@ public:
void LoadFromSortOrder( SortOrder so );
void LoadFallback();
void LoadCourseFallback();
void LoadCustom( RString sBanner );
bool LoadFromCachedBanner( 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 )
{
/* 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 )
++iDrawExtraPixelsLeft;
+3 -5
View File
@@ -31,7 +31,7 @@ void LifeMeterBattery::Load( const PlayerState *pPlayerState, PlayerStageStats *
bool bPlayerEnabled = GAMESTATE->IsPlayerEnabled( pPlayerState );
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.SetName( ssprintf("BatteryP%i",int(pn+1)) );
@@ -87,7 +87,7 @@ void LifeMeterBattery::OnSongEnded()
m_iTrailingLivesLeft = m_iLivesLeft;
PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
const Course *pCourse = GAMESTATE->m_pCurCourse;
if( pCourse && pCourse->m_vEntries[GAMESTATE->GetCourseSongIndex()].iGainLives > -1 )
m_iLivesLeft += pCourse->m_vEntries[GAMESTATE->GetCourseSongIndex()].iGainLives;
else
@@ -101,14 +101,12 @@ void LifeMeterBattery::OnSongEnded()
Refresh();
}
void LifeMeterBattery::ChangeLife( TapNoteScore score )
{
if( m_iLivesLeft == 0 )
return;
// xxx: this is hardcoded; we should use metrics for this. -aj
// How to: have a TapNote reference similar to LifeMeterBattery
// xxx: This is hardcoded; we should use metrics for this. -aj
switch( score )
{
case TNS_W1:
+2 -1
View File
@@ -7,6 +7,7 @@
#include "RageSound.h"
#include "PercentageDisplay.h"
#include "ThemeMetric.h"
#include "AutoActor.h"
/** @brief Battery life meter used in Oni mode. */
class LifeMeterBattery : public LifeMeter
@@ -45,7 +46,7 @@ private:
//ThemeMetric<> METRIC_NAME;
ThemeMetric<float> BATTERY_BLINK_TIME;
Sprite m_sprFrame;
AutoActor m_sprFrame;
Sprite m_sprBattery;
BitmapText m_textNumLives;
+5 -1
View File
@@ -24,9 +24,13 @@ ModIcon::ModIcon( const ModIcon &cpy ):
void ModIcon::Load( RString sMetricsGroup )
{
m_sprFilled.Load( THEME->GetPathG(sMetricsGroup,"Filled") );
m_sprFilled->SetName("Filled");
ActorUtil::LoadAllCommands( m_sprFilled, sMetricsGroup );
this->AddChild( m_sprFilled );
m_sprEmpty.Load( THEME->GetPathG(sMetricsGroup,"Empty") );
m_sprEmpty->SetName("Empty");
ActorUtil::LoadAllCommands( m_sprEmpty, sMetricsGroup );
this->AddChild( m_sprEmpty );
m_text.LoadFromFont( THEME->GetPathF(sMetricsGroup,"Text") );
@@ -70,7 +74,7 @@ void ModIcon::Set( const RString &_sText )
m_text.SetText( sText );
// 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;
}
// bool MusicWheel::SelectCustomItem()
void MusicWheel::GetSongList( vector<Song*> &arraySongs, SortOrder so )
{
vector<Song*> apAllSongs;
+1
View File
@@ -57,6 +57,7 @@ protected:
bool SelectSongOrCourse();
bool SelectCourse( const Course *p );
bool SelectModeMenuItem();
//bool SelectCustomItem();
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];
}
else if( sValueName=="ORIGIN" )
{
out.m_sOrigin = sParams[1];
}
else if( sValueName=="CREDIT" )
{
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());
lines.push_back( ssprintf( " %s:", SmEscape(desc).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;
// 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( "#ARTISTTRANSLIT:%s;", SmEscape(out.m_sArtistTranslit).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( "#BANNER:%s;", SmEscape(out.m_sBannerFile).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( "#CHARTSTYLE:%s;", SmEscape(in.GetChartStyle()).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;
FOREACH_PlayerNumber( pn )
+6 -5
View File
@@ -168,7 +168,7 @@ void OptionRow::ChoicesChanged( RowType type )
vbSelected[0] = true;
}
// TRICKY: Insert a down arrow as the first choice in the row.
// TRICKY: Insert a down arrow as the first choice in the row.
if( m_bFirstItemGoesDown )
{
m_pHand->m_Def.m_vsChoices.insert( m_pHand->m_Def.m_vsChoices.begin(), NEXT_ROW_NAME );
@@ -178,7 +178,7 @@ void OptionRow::ChoicesChanged( RowType 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 )
SetChoiceInRowWithFocus( p, 0 );
@@ -260,7 +260,7 @@ void OptionRow::InitText( RowType type )
m_ModIcons[p] = new ModIcon( m_pParentType->m_ModIcon );
m_ModIcons[p]->SetDrawOrder(-1); // under title
m_ModIcons[p]->PlayCommand( "On" );
m_Frame.AddChild( m_ModIcons[p] );
GameCommand gc;
@@ -398,7 +398,7 @@ void OptionRow::InitText( RowType type )
this->SortByDrawOrder();
}
/* After importing options, choose which item is focused. */
// After importing options, choose which item is focused.
void OptionRow::AfterImportOptions( PlayerNumber pn )
{
/* We load items for both players on start, since we don't know which players
@@ -604,7 +604,7 @@ void OptionRow::UpdateEnabledDisabled()
FOREACH_HumanPlayer( pn )
{
bRowEnabled = m_pHand->m_Def.m_vEnabledForPlayers.find(pn) != m_pHand->m_Def.m_vEnabledForPlayers.end();
if( !m_pHand->m_Def.m_bOneChoiceForAllPlayers )
{
if( m_bRowHasFocus[pn] ) color = m_pParentType->COLOR_SELECTED;
@@ -645,6 +645,7 @@ void OptionRow::SetModIcon( PlayerNumber pn, const RString &sText, GameCommand &
// update row frame
Message msg( "Refresh" );
msg.SetParam( "GameCommand", &gc );
msg.SetParam( "Text", sText );
m_sprFrame->HandleMessage( msg );
if( m_ModIcons[pn] != NULL )
m_ModIcons[pn]->Set( sText );
+1 -1
View File
@@ -35,7 +35,7 @@
* </li></ul>
*/
#ifndef PRODUCT_VER_BARE
#define PRODUCT_VER_BARE v1.2.4
#define PRODUCT_VER_BARE v1.2.5
#endif
/**
+1 -1
View File
@@ -5,7 +5,7 @@
; see ProductInfo.h for use descriptions
!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_BITMAP "ssc"
+1 -1
View File
@@ -824,7 +824,7 @@ public:
if( pProfile )
pProfile->PushSelf(L);
else
lua_pushnil(L );
lua_pushnil(L);
return 1;
}
static int GetLocalProfileFromIndex( T* p, lua_State *L ) { Profile *pProfile = p->GetLocalProfileFromIndex(IArg(1)); ASSERT(pProfile); pProfile->PushSelf(L); return 1; }
+1 -2
View File
@@ -519,8 +519,7 @@ static MenuDef g_AreaMenu(
static MenuDef g_StepsInformation(
"ScreenMiniMenuStepsInformation",
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, "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::meter, "Meter", true, EditMode_Practice, true, false, 0, MIN_METER, MAX_METER ),
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::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 )
{
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) );
ActorUtil::LoadAllCommands( *m_sprPercentFrame[p], m_sName );
SET_XY( m_sprPercentFrame[p] );
@@ -452,6 +452,7 @@ void ScreenEvaluation::Init()
}
// init judgment area
ROLLING_NUMBERS_CLASS.Load( m_sName, "RollingNumbersClass" );
FOREACH_ENUM( JudgmentLine, l )
{
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].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 );
SET_XY( m_textJudgmentLineNumber[l][p] );
this->AddChild( &m_textJudgmentLineNumber[l][p] );
+2 -2
View File
@@ -76,10 +76,9 @@ protected:
// grade area
AutoActor m_sprGradeFrame[NUM_PLAYERS];
GradeDisplay m_Grades[NUM_PLAYERS];
GradeDisplay m_Grades[NUM_PLAYERS];
// points area
bool m_bNewSongsUnlocked;
PercentageDisplay m_Percent[NUM_PLAYERS];
AutoActor m_sprPercentFrame[NUM_PLAYERS];
@@ -115,6 +114,7 @@ protected:
RageSound m_soundStart; // sound played if the player passes or fails
ThemeMetric<bool> SUMMARY;
ThemeMetric<RString> ROLLING_NUMBERS_CLASS;
/** @brief Did a player save a screenshot of their score? */
bool m_bSavedScreenshot[NUM_PLAYERS];
};

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