Merge branch 'master' of https://github.com/stepmania/stepmania
Conflicts: Themes/default/Graphics/ScreenWithMenuElements header/default.lua Themes/default/metrics.ini
This commit is contained in:
@@ -1,9 +1,12 @@
|
|||||||
|
local Color1 = color(Var "Color1");
|
||||||
|
local Color2 = color(Var "Color2");
|
||||||
|
|
||||||
-- Alternating files being played back at once
|
-- Alternating files being played back at once
|
||||||
local t = Def.ActorFrame {
|
local t = Def.ActorFrame {
|
||||||
LoadActor(Var "File1") .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;rate,0.25) };
|
LoadActor(Var "File1") .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color1;rate,0.25) };
|
||||||
LoadActor(Var "File2") .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;rate,0.25) };
|
LoadActor(Var "File2") .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color2;rate,0.25) };
|
||||||
LoadActor(Var "File2") .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;rate,0.25) };
|
LoadActor(Var "File2") .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color1;rate,0.25) };
|
||||||
LoadActor(Var "File1") .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;rate,0.25) };
|
LoadActor(Var "File1") .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color2;rate,0.25) };
|
||||||
};
|
};
|
||||||
|
|
||||||
return t
|
return t
|
||||||
@@ -11,9 +11,9 @@ t[#t+1] = LoadActor(Var "File1") .. {
|
|||||||
|
|
||||||
if Var("File2") ~= nil then
|
if Var("File2") ~= nil then
|
||||||
t[#t+1] = LoadActor(Var("File2")) .. {
|
t[#t+1] = LoadActor(Var("File2")) .. {
|
||||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||||
GainFocusCommand=cmd(play);
|
GainFocusCommand=cmd(play);
|
||||||
LoseFocusCommand=cmd(pause);
|
LoseFocusCommand=cmd(pause);
|
||||||
};
|
};
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
local Color = color(Var "Color1");
|
local Color1 = color(Var "Color1");
|
||||||
|
|
||||||
local t = Def.ActorFrame {
|
local t = Def.ActorFrame {
|
||||||
LoadActor(Var "File1") .. {
|
LoadActor(Var "File1") .. {
|
||||||
|
|||||||
@@ -1770,6 +1770,7 @@
|
|||||||
<Function name='GetColor'/>
|
<Function name='GetColor'/>
|
||||||
<Function name='GetText'/>
|
<Function name='GetText'/>
|
||||||
<Function name='GetType'/>
|
<Function name='GetType'/>
|
||||||
|
<Function name='IsLoaded'/>
|
||||||
</Class>
|
</Class>
|
||||||
<Class base='ActorFrame' name='WorkoutGraph'>
|
<Class base='ActorFrame' name='WorkoutGraph'>
|
||||||
<Function name='SetFromCurrentWorkout'/>
|
<Function name='SetFromCurrentWorkout'/>
|
||||||
|
|||||||
@@ -4995,6 +4995,10 @@ save yourself some time, copy this for undocumented things:
|
|||||||
<Function name='GetType' return='WheelItemDataType' arguments=''>
|
<Function name='GetType' return='WheelItemDataType' arguments=''>
|
||||||
Returns the type of this wheel item.
|
Returns the type of this wheel item.
|
||||||
</Function>
|
</Function>
|
||||||
|
<Function name='IsLoaded' return='bool' arguments=''>
|
||||||
|
Returns whether the wheel item has been loaded yet. If this function returns false, calling any other WheelItemBase function will result in an error. <br />
|
||||||
|
A specific case where this is known to happen is commands that trigger on CurrentSongChanged because the music wheel clears the current song before it finishes loading if the current song is longer than the number of stages remaining.
|
||||||
|
</Function>
|
||||||
</Class>
|
</Class>
|
||||||
<Class name='WorkoutGraph'>
|
<Class name='WorkoutGraph'>
|
||||||
<Function name='SetFromCurrentWorkout' return='void' arguments=''>
|
<Function name='SetFromCurrentWorkout' return='void' arguments=''>
|
||||||
|
|||||||
@@ -24,16 +24,16 @@ t[#t+1] = Def.ActorFrame {
|
|||||||
LoadFont("Common Normal") .. {
|
LoadFont("Common Normal") .. {
|
||||||
Text=ProductID();
|
Text=ProductID();
|
||||||
InitCommand=cmd(y,-20;zoom,0.75);
|
InitCommand=cmd(y,-20;zoom,0.75);
|
||||||
OnCommand=cmd(diffuse,color("0,0,0,1");strokecolor,color("#f7941d"));
|
OnCommand=cmd(diffuse,color("0,0,0,1"));
|
||||||
};
|
};
|
||||||
LoadFont("Common Normal") .. {
|
LoadFont("Common Normal") .. {
|
||||||
Text=THEME:GetThemeDisplayName();
|
Text=THEME:GetThemeDisplayName();
|
||||||
OnCommand=cmd(diffuse,color("0,0,0,1");strokecolor,color("#f7941d"));
|
OnCommand=cmd(diffuse,color("0,0,0,1"));
|
||||||
};
|
};
|
||||||
LoadFont("Common Normal") .. {
|
LoadFont("Common Normal") .. {
|
||||||
Text="Created by " .. THEME:GetThemeAuthor();
|
Text="Created by " .. THEME:GetThemeAuthor();
|
||||||
InitCommand=cmd(y,24;zoom,0.75);
|
InitCommand=cmd(y,24;zoom,0.75);
|
||||||
OnCommand=cmd(diffuse,color("0,0,0,1");strokecolor,color("#f7941d"));
|
OnCommand=cmd(diffuse,color("0,0,0,1"));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -392,6 +392,7 @@ Exit=
|
|||||||
Fail=Fail
|
Fail=Fail
|
||||||
FastLoad=If enabled, don't check songs for changes on load.
|
FastLoad=If enabled, don't check songs for changes on load.
|
||||||
FastLoadAdditionalSongs=If enabled, don't check songs for changes to Additional Songs on load.
|
FastLoadAdditionalSongs=If enabled, don't check songs for changes to Additional Songs on load.
|
||||||
|
FastNoteRendering=If enabled, the z buffer is not cleared after every note. This causes 3d noteskins to collide, but substantially improves performance in gameplay.
|
||||||
Fill Machine Stats=
|
Fill Machine Stats=
|
||||||
Game=Change the current game type with this option.
|
Game=Change the current game type with this option.
|
||||||
GetRankingName=Determines if name entry should never be shown, always be shown, or shown when the course is listed on the high scores screen.
|
GetRankingName=Determines if name entry should never be shown, always be shown, or shown when the course is listed on the high scores screen.
|
||||||
@@ -597,6 +598,7 @@ AllGroups=All Groups
|
|||||||
Alternate=Alternate
|
Alternate=Alternate
|
||||||
Always=Always
|
Always=Always
|
||||||
Animations=Animations
|
Animations=Animations
|
||||||
|
Arbitrary Remap Columns=Arbitrarily Remap
|
||||||
Arcade Style=Arcade Style
|
Arcade Style=Arcade Style
|
||||||
Ask=Ask
|
Ask=Ask
|
||||||
AttackMines=AttackMines
|
AttackMines=AttackMines
|
||||||
@@ -668,6 +670,7 @@ Expand 2->3=Expand 2->3
|
|||||||
Expand 2x=Expand 2x
|
Expand 2x=Expand 2x
|
||||||
Expand 3->4=Expand 3->4
|
Expand 3->4=Expand 3->4
|
||||||
Fast=Fast
|
Fast=Fast
|
||||||
|
FastNoteRendering=Fast Note Rendering
|
||||||
FitInside=Fit Inside
|
FitInside=Fit Inside
|
||||||
FitInsideAvoidLetter=Avoid Letter
|
FitInsideAvoidLetter=Avoid Letter
|
||||||
FitInsideAvoidPillar=Avoid Pillar
|
FitInsideAvoidPillar=Avoid Pillar
|
||||||
@@ -791,6 +794,7 @@ SuddenOffset=Sudden Offset
|
|||||||
SuperShuffle=Cement Mixer
|
SuperShuffle=Cement Mixer
|
||||||
SoftShuffle=Soft Shuffle
|
SoftShuffle=Soft Shuffle
|
||||||
Swap Sides=Swap Sides
|
Swap Sides=Swap Sides
|
||||||
|
Swap Up/Down=Swap Up/Down
|
||||||
Sync Machine=Sync Machine
|
Sync Machine=Sync Machine
|
||||||
Sync Song=Sync Song
|
Sync Song=Sync Song
|
||||||
Sync Tempo=Sync Tempo
|
Sync Tempo=Sync Tempo
|
||||||
@@ -917,6 +921,7 @@ DisplayResolution=Display Resolution
|
|||||||
Duration seconds=Duration seconds
|
Duration seconds=Duration seconds
|
||||||
EasterEggs=Easter Eggs
|
EasterEggs=Easter Eggs
|
||||||
Edit Songs/Steps=Edit Songs/Steps
|
Edit Songs/Steps=Edit Songs/Steps
|
||||||
|
FastNoteRendering=Fast Note Rendering
|
||||||
Genre=Genre
|
Genre=Genre
|
||||||
Practice Songs/Steps=Practice Songs/Steps
|
Practice Songs/Steps=Practice Songs/Steps
|
||||||
Edit Courses=Edit Courses
|
Edit Courses=Edit Courses
|
||||||
@@ -1358,6 +1363,7 @@ or=or
|
|||||||
Zoom In Camera=Zoom In Camera
|
Zoom In Camera=Zoom In Camera
|
||||||
|
|
||||||
[ScreenEdit]
|
[ScreenEdit]
|
||||||
|
'%s' is not a track id.='%s' is not a track id.
|
||||||
Adding New Attack=Enter the new modifier for this attack.\nThe length can be adjusted later.\nLeave it blank to cancel.
|
Adding New Attack=Enter the new modifier for this attack.\nThe length can be adjusted later.\nLeave it blank to cancel.
|
||||||
Adding New Mod=Please enter the new modifier for this attack.\n\nLeave it blank to cancel.
|
Adding New Mod=Please enter the new modifier for this attack.\n\nLeave it blank to cancel.
|
||||||
Edit Existing Mod=Please adjust the present modifier below.\n\nLeave it blank to erase the mod.
|
Edit Existing Mod=Please adjust the present modifier below.\n\nLeave it blank to erase the mod.
|
||||||
@@ -1401,6 +1407,8 @@ Enter a new preview start.=Enter when the music sample starts.
|
|||||||
Enter a new preview length.=Enter how long the music sample lasts.
|
Enter a new preview length.=Enter how long the music sample lasts.
|
||||||
Enter a new min BPM.=Enter the minimum displayed BPM.
|
Enter a new min BPM.=Enter the minimum displayed BPM.
|
||||||
Enter a new max BPM.=Enter the maximum displayed BPM.
|
Enter a new max BPM.=Enter the maximum displayed BPM.
|
||||||
|
Enter the new track mapping.=Enter the new track mapping.
|
||||||
|
Entry %d, '%d', is out of range 1 to %d.=Entry %d, '%d', is out of range 1 to %d.
|
||||||
More than %d notes per measure is not allowed. This change has been reverted.=More than %d notes per measure is not allowed. This change has been reverted.
|
More than %d notes per measure is not allowed. This change has been reverted.=More than %d notes per measure is not allowed. This change has been reverted.
|
||||||
No backgrounds available=No backgrounds available
|
No backgrounds available=No backgrounds available
|
||||||
EditHelpText=Up/Down:\n change beat\nLeft/Right:\n change snap\nNumber keys:\n add/remove\n tap note\nN and M keys:\n swap tap notes\nCtrl + N/M:\n swap cycled segment\nCtrl + ,/.:\n cycle segments\nCreate hold note:\n Hold a number\n while moving\n Up or Down\nCreate roll note:\n Hold Shift,\n then create a\n hold note.\nSpace bar: Set area\n marker\nT key: Switch Timing\nEnter: Area Menu\nA Key: Alter Menu\nEscape: Main Menu\nF4: Timing Menu\nF1: Show help\n
|
EditHelpText=Up/Down:\n change beat\nLeft/Right:\n change snap\nNumber keys:\n add/remove\n tap note\nN and M keys:\n swap tap notes\nCtrl + N/M:\n swap cycled segment\nCtrl + ,/.:\n cycle segments\nCreate hold note:\n Hold a number\n while moving\n Up or Down\nCreate roll note:\n Hold Shift,\n then create a\n hold note.\nSpace bar: Set area\n marker\nT key: Switch Timing\nEnter: Area Menu\nA Key: Alter Menu\nEscape: Main Menu\nF4: Timing Menu\nF1: Show help\n
|
||||||
@@ -1413,6 +1421,7 @@ The change has been reverted.=The change has been reverted.
|
|||||||
This change creates more than %d notes in a measure.=This change creates more than %d notes in a measure.
|
This change creates more than %d notes in a measure.=This change creates more than %d notes in a measure.
|
||||||
This change creates notes past the end of the music and is not allowed.=This change creates notes past the end of the music and is not allowed.
|
This change creates notes past the end of the music and is not allowed.=This change creates notes past the end of the music and is not allowed.
|
||||||
This will destroy all unsaved changes.=This will destroy all unsaved changes.
|
This will destroy all unsaved changes.=This will destroy all unsaved changes.
|
||||||
|
Too many tracks specified.=Too many tracks specified.
|
||||||
Undo=Undo
|
Undo=Undo
|
||||||
You must be in Song Timing Mode to edit BG Changes.=You must be in Song Timing Mode to edit BG Changes.
|
You must be in Song Timing Mode to edit BG Changes.=You must be in Song Timing Mode to edit BG Changes.
|
||||||
You must have an area selected to enter the Alter Menu.=You must have an area selected to enter the Alter Menu.
|
You must have an area selected to enter the Alter Menu.=You must have an area selected to enter the Alter Menu.
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ bg_fit_functions= {
|
|||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
function Actor:scale_or_crop_background()
|
function Actor:scale_or_crop_background_no_move()
|
||||||
local fit_mode= PREFSMAN:GetPreference("BackgroundFitMode")
|
local fit_mode= PREFSMAN:GetPreference("BackgroundFitMode")
|
||||||
if bg_fit_functions[fit_mode] then
|
if bg_fit_functions[fit_mode] then
|
||||||
bg_fit_functions[fit_mode](self, SCREEN_WIDTH, SCREEN_HEIGHT)
|
bg_fit_functions[fit_mode](self, SCREEN_WIDTH, SCREEN_HEIGHT)
|
||||||
@@ -187,6 +187,11 @@ function Actor:scale_or_crop_background()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Actor:scale_or_crop_background()
|
||||||
|
self:scale_or_crop_background_no_move()
|
||||||
|
self:xy(SCREEN_CENTER_X, SCREEN_CENTER_Y)
|
||||||
|
end
|
||||||
|
|
||||||
function Actor:CenterX() self:x(SCREEN_CENTER_X) end
|
function Actor:CenterX() self:x(SCREEN_CENTER_X) end
|
||||||
function Actor:CenterY() self:y(SCREEN_CENTER_Y) end
|
function Actor:CenterY() self:y(SCREEN_CENTER_Y) end
|
||||||
function Actor:Center() self:xy(SCREEN_CENTER_X,SCREEN_CENTER_Y) end
|
function Actor:Center() self:xy(SCREEN_CENTER_X,SCREEN_CENTER_Y) end
|
||||||
|
|||||||
@@ -59,6 +59,13 @@ Branch = {
|
|||||||
return "ScreenTitleJoin"
|
return "ScreenTitleJoin"
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
AfterTitleMenu = function()
|
||||||
|
if PREFSMAN:GetPreference("ShowCaution") then
|
||||||
|
return "ScreenCaution"
|
||||||
|
else
|
||||||
|
return Branch.StartGame()
|
||||||
|
end
|
||||||
|
end,
|
||||||
StartGame = function()
|
StartGame = function()
|
||||||
-- Check to see if there are 0 songs installed. Also make sure to check
|
-- Check to see if there are 0 songs installed. Also make sure to check
|
||||||
-- that the additional song count is also 0, because there is
|
-- that the additional song count is also 0, because there is
|
||||||
@@ -119,12 +126,12 @@ Branch = {
|
|||||||
if GAMESTATE:IsEventMode() then
|
if GAMESTATE:IsEventMode() then
|
||||||
return SelectMusicOrCourse()
|
return SelectMusicOrCourse()
|
||||||
elseif STATSMAN:GetCurStageStats():AllFailed() then
|
elseif STATSMAN:GetCurStageStats():AllFailed() then
|
||||||
return "ScreenGameOver"
|
return "ScreenContinue"
|
||||||
elseif GAMESTATE:GetSmallestNumStagesLeftForAnyHumanPlayer() == 0 then
|
elseif GAMESTATE:GetSmallestNumStagesLeftForAnyHumanPlayer() == 0 then
|
||||||
if IsCourse() then
|
if not GAMESTATE:IsCourseMode() then
|
||||||
return "ScreenEvaluationSummary"
|
return "ScreenEvaluationSummary"
|
||||||
else
|
else
|
||||||
return "ScreenGameOver"
|
return "ScreenContinue"
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
return SelectMusicOrCourse()
|
return SelectMusicOrCourse()
|
||||||
@@ -215,8 +222,19 @@ Branch = {
|
|||||||
return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu"
|
return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu"
|
||||||
end,
|
end,
|
||||||
AfterSaveSummary = function()
|
AfterSaveSummary = function()
|
||||||
return "ScreenGameOver"
|
return "ScreenContinue"
|
||||||
-- [[ Enable when Finished ]]
|
-- [[ Enable when Finished ]]
|
||||||
-- return GAMESTATE:AnyPlayerHasRankingFeats() and "ScreenNameEntryTraditional" or "ScreenGameOver"
|
-- return GAMESTATE:AnyPlayerHasRankingFeats() and "ScreenNameEntryTraditional" or "ScreenGameOver"
|
||||||
end,
|
end,
|
||||||
|
AfterContinue = function()
|
||||||
|
if GAMESTATE:GetNumPlayersEnabled() == 0 then
|
||||||
|
return "ScreenGameOver"
|
||||||
|
end
|
||||||
|
|
||||||
|
if STATSMAN:GetStagesPlayed() == 0 then
|
||||||
|
return "ScreenSelectPlayMode"
|
||||||
|
end
|
||||||
|
|
||||||
|
return "ScreenProfileLoad"
|
||||||
|
end
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Color = {
|
|||||||
Yellow = color("#fff200"),
|
Yellow = color("#fff200"),
|
||||||
Orange = color("#f7941d"),
|
Orange = color("#f7941d"),
|
||||||
Purple = color("#92278f"),
|
Purple = color("#92278f"),
|
||||||
Outline = color("0,0,0,0.5"),
|
Outline = color("0,0,0,0.675"),
|
||||||
Invisible = color("1,1,1,0"),
|
Invisible = color("1,1,1,0"),
|
||||||
Stealth = color("0,0,0,0"),
|
Stealth = color("0,0,0,0"),
|
||||||
-- Android Design Stencil Colors
|
-- Android Design Stencil Colors
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ local log_display_mt= {
|
|||||||
-- Long ago, someone decided that "::" should be an alias for "\n"
|
-- Long ago, someone decided that "::" should be an alias for "\n"
|
||||||
-- and hardcoded it into BitmapText.
|
-- and hardcoded it into BitmapText.
|
||||||
local message= tostring(mess.message):gsub("::", ":")
|
local message= tostring(mess.message):gsub("::", ":")
|
||||||
if params.IgnoreIdentical then
|
if params.IgnoreIdentical and not self.hidden then
|
||||||
for i, prevmess in ipairs(self.message_log) do
|
for i, prevmess in ipairs(self.message_log) do
|
||||||
if message == prevmess then return end
|
if message == prevmess then return end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1837,12 +1837,13 @@ UpdateOnMessage=""
|
|||||||
NumChoicesOnPage1=100
|
NumChoicesOnPage1=100
|
||||||
DefaultChoice="GameStart"
|
DefaultChoice="GameStart"
|
||||||
ChoiceNames="GameStart,Options,Edit,Jukebox,GameSelect,Exit"
|
ChoiceNames="GameStart,Options,Edit,Jukebox,GameSelect,Exit"
|
||||||
ChoiceGameStart="applydefaultoptions;text,Game Start;screen,"..Branch.StartGame()
|
ChoiceGameStart="applydefaultoptions;text,Game Start;screen,"..Branch.AfterTitleMenu()
|
||||||
#ChoiceQuickPlay="applydefaultoptions;text,Quick Play;"
|
#ChoiceQuickPlay="applydefaultoptions;text,Quick Play;"
|
||||||
ChoiceOptions="screen,ScreenOptionsService;text,Options"
|
ChoiceOptions="screen,ScreenOptionsService;text,Options"
|
||||||
ChoiceEdit="text,Edit/Share;screen,"..Branch.OptionsEdit()
|
ChoiceEdit="text,Edit/Share;screen,"..Branch.OptionsEdit()
|
||||||
ChoiceExit="screen,ScreenExit;text,Exit"
|
ChoiceExit="screen,ScreenExit;text,Exit"
|
||||||
# Aliases for the future.
|
# Aliases for the future.
|
||||||
|
ChoiceContinue="screen,ScreenContinue;text,Continue?"
|
||||||
ChoiceOnline="screen,ScreenNetworkOptions;text,Play Online"
|
ChoiceOnline="screen,ScreenNetworkOptions;text,Play Online"
|
||||||
ChoiceGameSelect="screen,ScreenSelectGame;text,Select Game"
|
ChoiceGameSelect="screen,ScreenSelectGame;text,Select Game"
|
||||||
ChoiceJukebox="screen,ScreenJukeboxMenu;text,Jukebox"
|
ChoiceJukebox="screen,ScreenJukeboxMenu;text,Jukebox"
|
||||||
@@ -1891,6 +1892,14 @@ LogoY=SCREEN_CENTER_Y-80
|
|||||||
LogoOnCommand=bob;effectperiod,4;effectmagnitude,0,8,0;zoom,0;bounceend,0.35;zoom,1
|
LogoOnCommand=bob;effectperiod,4;effectmagnitude,0,8,0;zoom,0;bounceend,0.35;zoom,1
|
||||||
LogoOffCommand=
|
LogoOffCommand=
|
||||||
|
|
||||||
|
[ScreenCaution]
|
||||||
|
Fallback="ScreenSplash"
|
||||||
|
PrepareScreen=""
|
||||||
|
NextScreen=Branch.StartGame()
|
||||||
|
PrevScreen=Branch.TitleMenu()
|
||||||
|
TimerSeconds=3
|
||||||
|
AllowStartToSkip=true
|
||||||
|
|
||||||
[ScreenProfileLoad]
|
[ScreenProfileLoad]
|
||||||
Class="ScreenProfileLoad"
|
Class="ScreenProfileLoad"
|
||||||
Fallback="ScreenWithMenuElementsBlank"
|
Fallback="ScreenWithMenuElementsBlank"
|
||||||
@@ -2894,12 +2903,13 @@ PrevScreen="ScreenOptionsService"
|
|||||||
Fallback="ScreenOptionsServiceChild"
|
Fallback="ScreenOptionsServiceChild"
|
||||||
PrevScreen="ScreenOptionsService"
|
PrevScreen="ScreenOptionsService"
|
||||||
NextScreen="ScreenOptionsService"
|
NextScreen="ScreenOptionsService"
|
||||||
LineNames="1,2,3,4,5,6,7,8,9,FA,10,11,12,13,14,15,16,17,18,19,20,21,22"
|
LineNames="1,2,3,4,5,FNR,6,7,8,9,FA,10,11,12,13,14,15,16,17,18,19,20,21,22"
|
||||||
Line1="conf,Windowed"
|
Line1="conf,Windowed"
|
||||||
Line2="conf,DisplayResolution"
|
Line2="conf,DisplayResolution"
|
||||||
Line3="conf,DisplayAspectRatio"
|
Line3="conf,DisplayAspectRatio"
|
||||||
Line4="conf,HighResolutionTextures"
|
Line4="conf,HighResolutionTextures"
|
||||||
Line5="conf,Vsync"
|
Line5="conf,Vsync"
|
||||||
|
LineFNR="conf,FastNoteRendering"
|
||||||
Line6="conf,SoundVolume"
|
Line6="conf,SoundVolume"
|
||||||
Line7="conf,TimingWindowScale"
|
Line7="conf,TimingWindowScale"
|
||||||
Line8="conf,LifeDifficulty"
|
Line8="conf,LifeDifficulty"
|
||||||
@@ -2923,7 +2933,7 @@ Line22="conf,EventMode"
|
|||||||
Fallback="ScreenOptionsServiceChild"
|
Fallback="ScreenOptionsServiceChild"
|
||||||
NextScreen="ScreenOptionsService"
|
NextScreen="ScreenOptionsService"
|
||||||
PrevScreen="ScreenOptionsService"
|
PrevScreen="ScreenOptionsService"
|
||||||
LineNames="1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,20"
|
LineNames="1,2,3,4,5,6,7,8,9,10,11,12,13,FNR,14,17,18,19,20"
|
||||||
Line1="conf,Windowed"
|
Line1="conf,Windowed"
|
||||||
Line2="conf,DisplayResolution"
|
Line2="conf,DisplayResolution"
|
||||||
Line3="conf,DisplayAspectRatio"
|
Line3="conf,DisplayAspectRatio"
|
||||||
@@ -2937,6 +2947,7 @@ Line10="conf,CelShadeModels"
|
|||||||
Line11="conf,DelayedTextureDelete"
|
Line11="conf,DelayedTextureDelete"
|
||||||
Line12="conf,RefreshRate"
|
Line12="conf,RefreshRate"
|
||||||
Line13="conf,Vsync"
|
Line13="conf,Vsync"
|
||||||
|
LineFNR="conf,FastNoteRendering"
|
||||||
Line14="conf,ShowStats"
|
Line14="conf,ShowStats"
|
||||||
Line15="conf,ShowBanners"
|
Line15="conf,ShowBanners"
|
||||||
Line16="conf,AttractSoundFrequency"
|
Line16="conf,AttractSoundFrequency"
|
||||||
@@ -2998,7 +3009,7 @@ Line19="conf,NumBackgrounds"
|
|||||||
Fallback="ScreenOptionsServiceChild"
|
Fallback="ScreenOptionsServiceChild"
|
||||||
NextScreen="ScreenOptionsService"
|
NextScreen="ScreenOptionsService"
|
||||||
PrevScreen="ScreenOptionsService"
|
PrevScreen="ScreenOptionsService"
|
||||||
LineNames="1,3,4,6,7,9,10,11,12,14"
|
LineNames="1,3,4,6,7,8,9,10,11,12,14"
|
||||||
Line1="conf,Center1Player"
|
Line1="conf,Center1Player"
|
||||||
Line3="conf,DancePointsForOni"
|
Line3="conf,DancePointsForOni"
|
||||||
Line4="conf,MenuTimer"
|
Line4="conf,MenuTimer"
|
||||||
@@ -3654,6 +3665,17 @@ CodeBackspace="@Select-MenuLeft"
|
|||||||
CodeJumpToEnter="@Select-Start"
|
CodeJumpToEnter="@Select-Start"
|
||||||
CodeEnter="Start"
|
CodeEnter="Start"
|
||||||
|
|
||||||
|
[ScreenContinue]
|
||||||
|
Class="ScreenContinue"
|
||||||
|
Fallback="ScreenWithMenuElements"
|
||||||
|
NextScreen=Branch.AfterContinue()
|
||||||
|
PrevScreen=Branch.AfterContinue()
|
||||||
|
PrepareScreens=""
|
||||||
|
HelpText="100"
|
||||||
|
TimerSeconds=15
|
||||||
|
ForceTimer=true
|
||||||
|
ForceTimerWait=true
|
||||||
|
|
||||||
[ScreenProfileSave]
|
[ScreenProfileSave]
|
||||||
Class="ScreenProfileSave"
|
Class="ScreenProfileSave"
|
||||||
Fallback="ScreenWithMenuElementsBlank"
|
Fallback="ScreenWithMenuElementsBlank"
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 6.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,46 @@
|
|||||||
|
local t = Def.ActorFrame {};
|
||||||
|
|
||||||
|
-- Fade
|
||||||
|
t[#t+1] = Def.ActorFrame {
|
||||||
|
InitCommand=cmd(Center);
|
||||||
|
Def.Quad {
|
||||||
|
InitCommand=cmd(scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT);
|
||||||
|
OnCommand=cmd(diffuse,Color.Black;diffusealpha,0;linear,0.5;diffusealpha,0.75);
|
||||||
|
OffCommand=cmd(linear,0.25;diffusealpha,0);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
-- Emblem
|
||||||
|
t[#t+1] = Def.ActorFrame {
|
||||||
|
InitCommand=cmd(Center);
|
||||||
|
OnCommand=cmd(diffusealpha,0.5);
|
||||||
|
LoadActor("_warning bg") .. {
|
||||||
|
OnCommand=cmd(diffuse,Color.Yellow);
|
||||||
|
};
|
||||||
|
Def.ActorFrame {
|
||||||
|
LoadActor("_exclamation") .. {
|
||||||
|
OnCommand=cmd(diffuse,Color.Yellow);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
-- Text
|
||||||
|
t[#t+1] = Def.ActorFrame {
|
||||||
|
InitCommand=cmd(Center;y,SCREEN_CENTER_Y);
|
||||||
|
OnCommand=cmd(addy,-96);
|
||||||
|
-- Underline
|
||||||
|
Def.Quad {
|
||||||
|
InitCommand=cmd(y,16;zoomto,256,1);
|
||||||
|
OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;shadowcolor,BoostColor(color("#ffd40077"),0.25);linear,0.25;zoomtowidth,256;fadeleft,0.25;faderight,0.25);
|
||||||
|
};
|
||||||
|
LoadFont("Common Bold") .. {
|
||||||
|
Text=Screen.String("Caution");
|
||||||
|
OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25));
|
||||||
|
};
|
||||||
|
LoadFont("Common Normal") .. {
|
||||||
|
Text=Screen.String("CautionText");
|
||||||
|
InitCommand=cmd(y,128);
|
||||||
|
OnCommand=cmd(strokecolor,color("0,0,0,0.5");shadowlength,1;wrapwidthpixels,SCREEN_WIDTH-80);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
--
|
||||||
|
return t
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
local timer_seconds = THEME:GetMetric(Var "LoadingScreen","TimerSeconds");
|
||||||
|
local t = Def.ActorFrame {};
|
||||||
|
|
||||||
|
-- Fade
|
||||||
|
t[#t+1] = Def.ActorFrame {
|
||||||
|
InitCommand=cmd(Center);
|
||||||
|
Def.Quad {
|
||||||
|
InitCommand=cmd(scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT);
|
||||||
|
OnCommand=cmd(diffuse,Color.Black;diffusealpha,0;linear,0.5;diffusealpha,0.25;
|
||||||
|
sleep,timer_seconds/2;
|
||||||
|
linear,timer_seconds/2-0.5;diffusealpha,1);
|
||||||
|
};
|
||||||
|
-- Warning Fade
|
||||||
|
Def.Quad {
|
||||||
|
InitCommand=cmd(y,16;scaletoclipped,SCREEN_WIDTH,148);
|
||||||
|
OnCommand=cmd(diffuse,Color.Black;diffusealpha,0.5;
|
||||||
|
linear,timer_seconds;zoomtoheight,148*0.75);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
--
|
||||||
|
t[#t+1] = Def.ActorFrame {
|
||||||
|
InitCommand=cmd(Center;y,SCREEN_CENTER_Y-24);
|
||||||
|
-- Underline
|
||||||
|
Def.Quad {
|
||||||
|
InitCommand=cmd(y,16;zoomto,256,1);
|
||||||
|
OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;shadowcolor,BoostColor(color("#ffd40077"),0.25);linear,0.25;zoomtowidth,256;fadeleft,0.25;faderight,0.25);
|
||||||
|
};
|
||||||
|
LoadFont("Common Bold") .. {
|
||||||
|
Text="Continue?";
|
||||||
|
OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
--
|
||||||
|
return t
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
local function GraphDisplay( pn )
|
local function GraphDisplay( pn )
|
||||||
local t = Def.ActorFrame {
|
local t = Def.ActorFrame {
|
||||||
|
LoadActor( THEME:GetPathG("_GraphDisplay","overlay")) .. {
|
||||||
|
InitCommand=cmd(y,6);
|
||||||
|
};
|
||||||
Def.GraphDisplay {
|
Def.GraphDisplay {
|
||||||
InitCommand=cmd(Load,"GraphDisplay";);
|
InitCommand=cmd(Load,"GraphDisplay";);
|
||||||
BeginCommand=function(self)
|
BeginCommand=function(self)
|
||||||
|
|||||||
@@ -58,11 +58,11 @@ end;
|
|||||||
local t = Def.ActorFrame {};
|
local t = Def.ActorFrame {};
|
||||||
GAMESTATE:IsPlayerEnabled(PLAYER_1)
|
GAMESTATE:IsPlayerEnabled(PLAYER_1)
|
||||||
t[#t+1] = Def.ActorFrame {
|
t[#t+1] = Def.ActorFrame {
|
||||||
InitCommand=cmd(hide_if,not GAMESTATE:IsPlayerEnabled(PLAYER_1);x,WideScale(math.floor(SCREEN_CENTER_X*0.3)-8,math.floor(SCREEN_CENTER_X*0.5)-8);y,SCREEN_CENTER_Y-34);
|
InitCommand=cmd(hide_if,not GAMESTATE:IsPlayerEnabled(PLAYER_1);x,WideScale(math.floor(SCREEN_CENTER_X*0.3)-8,math.floor(SCREEN_CENTER_X*0.5)-8);y,SCREEN_CENTER_Y-20);
|
||||||
CreateStats( PLAYER_1 );
|
CreateStats( PLAYER_1 );
|
||||||
};
|
};
|
||||||
t[#t+1] = Def.ActorFrame {
|
t[#t+1] = Def.ActorFrame {
|
||||||
InitCommand=cmd(hide_if,not GAMESTATE:IsPlayerEnabled(PLAYER_2);x,WideScale(math.floor(SCREEN_CENTER_X*1.7)+8,math.floor(SCREEN_CENTER_X*1.5)+8);y,SCREEN_CENTER_Y-34);
|
InitCommand=cmd(hide_if,not GAMESTATE:IsPlayerEnabled(PLAYER_2);x,WideScale(math.floor(SCREEN_CENTER_X*1.7)+8,math.floor(SCREEN_CENTER_X*1.5)+8);y,SCREEN_CENTER_Y-20);
|
||||||
CreateStats( PLAYER_2 );
|
CreateStats( PLAYER_2 );
|
||||||
};
|
};
|
||||||
return t
|
return t
|
||||||
@@ -1,10 +1,29 @@
|
|||||||
|
local timer_seconds = THEME:GetMetric(Var "LoadingScreen","TimerSeconds");
|
||||||
|
|
||||||
return Def.ActorFrame {
|
return Def.ActorFrame {
|
||||||
InitCommand=cmd(Center),
|
InitCommand=cmd(Center),
|
||||||
|
-- Fade
|
||||||
|
Def.ActorFrame {
|
||||||
|
InitCommand=cmd();
|
||||||
|
Def.Quad {
|
||||||
|
InitCommand=cmd(scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT),
|
||||||
|
OnCommand=cmd(diffuse,Color.Black;diffusealpha,0;linear,0.5;diffusealpha,0.25;
|
||||||
|
sleep,timer_seconds/2;
|
||||||
|
linear,timer_seconds/2-0.5;diffusealpha,0.8),
|
||||||
|
},
|
||||||
|
-- Warning Fade
|
||||||
|
Def.Quad {
|
||||||
|
InitCommand=cmd(y,-4;scaletoclipped,SCREEN_WIDTH,164),
|
||||||
|
OnCommand=cmd(diffuse,Color.Black;diffusealpha,0.5;
|
||||||
|
linear,timer_seconds;zoomtoheight,164*0.75),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
--
|
||||||
LoadActor(THEME:GetPathG("ScreenGameOver","gameover"))..{
|
LoadActor(THEME:GetPathG("ScreenGameOver","gameover"))..{
|
||||||
InitCommand=cmd(y,-16;shadowlength,2)
|
InitCommand=cmd(y,-16;shadowlength,2)
|
||||||
},
|
},
|
||||||
LoadFont("Common Normal")..{
|
LoadFont("Common Normal")..{
|
||||||
Text=ScreenString("Play again soon!"),
|
Text=ScreenString("Play again soon!"),
|
||||||
InitCommand=cmd(y,36;shadowlength,1)
|
InitCommand=cmd(y,36;shadowlength,2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ for i=1,NumColumns do
|
|||||||
OnCommand=cmd(diffuse,CustomDifficultyToDarkColor(s);diffusealpha,0.5);
|
OnCommand=cmd(diffuse,CustomDifficultyToDarkColor(s);diffusealpha,0.5);
|
||||||
};
|
};
|
||||||
LoadActor(THEME:GetPathB("_frame","3x1"),"rounded gloss", 18) .. {
|
LoadActor(THEME:GetPathB("_frame","3x1"),"rounded gloss", 18) .. {
|
||||||
OnCommand=cmd(diffuse,CustomDifficultyToColor(s);diffusealpha,0.35);
|
OnCommand=cmd(diffuse,CustomDifficultyToColor(s);diffusealpha,0.125);
|
||||||
};
|
};
|
||||||
LoadFont("Common Normal") .. {
|
LoadFont("Common Normal") .. {
|
||||||
InitCommand=cmd(uppercase,true;settext,CustomDifficultyToLocalizedString(s));
|
InitCommand=cmd(uppercase,true;settext,CustomDifficultyToLocalizedString(s));
|
||||||
@@ -39,7 +39,7 @@ end
|
|||||||
|
|
||||||
t[#t+1] = LoadFont("Common Bold") .. {
|
t[#t+1] = LoadFont("Common Bold") .. {
|
||||||
InitCommand=cmd(settext,stString;x,SCREEN_CENTER_X-220;y,SCREEN_CENTER_Y-168);
|
InitCommand=cmd(settext,stString;x,SCREEN_CENTER_X-220;y,SCREEN_CENTER_Y-168);
|
||||||
OnCommand=cmd(zoom,0.675;skewx,-0.125;shadowlength,1);
|
OnCommand=cmd(skewx,-0.125;diffusebottomedge,color("0.75,0.75,0.75");shadowlength,2);
|
||||||
};
|
};
|
||||||
|
|
||||||
t.OnCommand=cmd(draworder,105);
|
t.OnCommand=cmd(draworder,105);
|
||||||
|
|||||||
@@ -170,7 +170,6 @@ if not GAMESTATE:IsCourseMode() then
|
|||||||
local song = GAMESTATE:GetCurrentSong();
|
local song = GAMESTATE:GetCurrentSong();
|
||||||
local cdtitle = self:GetChild("CDTitle");
|
local cdtitle = self:GetChild("CDTitle");
|
||||||
local height = cdtitle:GetHeight();
|
local height = cdtitle:GetHeight();
|
||||||
local width = cdtitle:GetWidth();
|
|
||||||
|
|
||||||
if song then
|
if song then
|
||||||
if song:HasCDTitle() then
|
if song:HasCDTitle() then
|
||||||
@@ -183,27 +182,15 @@ if not GAMESTATE:IsCourseMode() then
|
|||||||
cdtitle:visible(false);
|
cdtitle:visible(false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if height >= 60 and width >= 80 then
|
self:zoom(scale(height,32,480,1,32/480))
|
||||||
if height*(80/60) >= width then
|
|
||||||
cdtitle:zoom(60/height);
|
|
||||||
else
|
|
||||||
cdtitle:zoom(80/width);
|
|
||||||
end;
|
|
||||||
elseif height >= 60 then
|
|
||||||
cdtitle:zoom(60/height);
|
|
||||||
elseif width >= 80 then
|
|
||||||
cdtitle:zoom(80/width);
|
|
||||||
else
|
|
||||||
cdtitle:zoom(1);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
t[#t+1] = Def.ActorFrame {
|
t[#t+1] = Def.ActorFrame {
|
||||||
OnCommand=cmd(draworder,105;x,SCREEN_CENTER_X-76;y,SCREEN_CENTER_Y-72;zoomy,0;sleep,0.5;decelerate,0.25;zoomy,1;SetUpdateFunction,CDTitleUpdate);
|
OnCommand=cmd(draworder,105;x,SCREEN_CENTER_X-256;y,SCREEN_CENTER_Y-84;zoom,0;sleep,0.5;decelerate,0.25;zoom,1;SetUpdateFunction,CDTitleUpdate);
|
||||||
OffCommand=cmd(bouncebegin,0.15;zoomx,0);
|
OffCommand=cmd(bouncebegin,0.15;zoomx,0);
|
||||||
Def.Sprite {
|
Def.Sprite {
|
||||||
Name="CDTitle";
|
Name="CDTitle";
|
||||||
InitCommand=cmd(y,19);
|
OnCommand=cmd(draworder,106;shadowlength,1;zoom,0.75;diffusealpha,1;zoom,0;bounceend,0.35;zoom,0.75;spin;effectperiod,2;effectmagnitude,0,180,0);
|
||||||
--OnCommand=cmd(draworder,106;shadowlength,1;zoom,0.75;diffusealpha,1;zoom,0;bounceend,0.35;zoom,0.75;spin;effectmagnitude,0,180,0);
|
BackCullCommand=cmd(diffuse,color("0.5,0.5,0.5,1"));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
t[#t+1] = StandardDecorationFromFileOptional("NewSong","NewSong") .. {
|
t[#t+1] = StandardDecorationFromFileOptional("NewSong","NewSong") .. {
|
||||||
@@ -276,11 +263,16 @@ t[#t+1] = StandardDecorationFromFileOptional("DifficultyDisplay","DifficultyDisp
|
|||||||
|
|
||||||
t[#t+1] = StandardDecorationFromFileOptional("SortOrder","SortOrderText") .. {
|
t[#t+1] = StandardDecorationFromFileOptional("SortOrder","SortOrderText") .. {
|
||||||
BeginCommand=cmd(playcommand,"Set");
|
BeginCommand=cmd(playcommand,"Set");
|
||||||
SortOrderChangedMessageCommand=cmd(playcommand,"Set";);
|
SortOrderChangedMessageCommand=cmd(playcommand,"Set");
|
||||||
SetCommand=function(self)
|
SetCommand=function(self)
|
||||||
local s = SortOrderToLocalizedString( GAMESTATE:GetSortOrder() );
|
local s = GAMESTATE:GetSortOrder()
|
||||||
self:settext( s );
|
if s ~= nil then
|
||||||
self:playcommand("Sort");
|
local s = SortOrderToLocalizedString( s )
|
||||||
|
self:settext( s )
|
||||||
|
self:playcommand("Sort")
|
||||||
|
else
|
||||||
|
return
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
_roboto Bold 80px
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,30 @@
|
|||||||
|
[common]
|
||||||
|
Baseline=66
|
||||||
|
Top=28
|
||||||
|
LineSpacing=106
|
||||||
|
DrawExtraPixelsLeft=0
|
||||||
|
DrawExtraPixelsRight=0
|
||||||
|
AdvanceExtraPixels=0
|
||||||
|
|
||||||
|
[numbers]
|
||||||
|
Line 0=0123
|
||||||
|
Line 1=4567
|
||||||
|
Line 2=89%.
|
||||||
|
Line 3= :x,
|
||||||
|
|
||||||
|
0=46
|
||||||
|
1=46
|
||||||
|
2=46
|
||||||
|
3=46
|
||||||
|
4=46
|
||||||
|
5=46
|
||||||
|
6=46
|
||||||
|
7=46
|
||||||
|
8=46
|
||||||
|
9=46
|
||||||
|
10=59
|
||||||
|
11=23
|
||||||
|
12=20
|
||||||
|
13=23
|
||||||
|
14=41
|
||||||
|
15=21
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
return LoadFont("Combo Numbers") .. {
|
return LoadFont("Common Bold") .. {
|
||||||
InitCommand=cmd(zoom,12/54;y,-1;shadowlengthx,0;shadowlengthy,1;strokecolor,color("#00000077"););
|
InitCommand=cmd(zoom,12/54;y,-1;shadowlength,1;strokecolor,Color.Outline);
|
||||||
};
|
};
|
||||||
@@ -2,7 +2,6 @@ local t = Def.ActorFrame{
|
|||||||
InitCommand=cmd(fov,70);
|
InitCommand=cmd(fov,70);
|
||||||
LoadActor("_arrow")..{
|
LoadActor("_arrow")..{
|
||||||
InitCommand=cmd(x,225;);
|
InitCommand=cmd(x,225;);
|
||||||
OnCommand=cmd(wag;effectmagnitude,0,0,16;effectperiod,2.5;);
|
|
||||||
};
|
};
|
||||||
LoadActor("_text");
|
LoadActor("_text");
|
||||||
LoadActor("_text")..{
|
LoadActor("_text")..{
|
||||||
|
|||||||
@@ -1,11 +1,23 @@
|
|||||||
local t = Def.ActorFrame {};
|
local t = Def.ActorFrame {};
|
||||||
|
|
||||||
|
local function Update(self)
|
||||||
|
local c = self:GetChildren();
|
||||||
|
local bps = GAMESTATE:GetSongBPS() or 1
|
||||||
|
c.TextureStripe:texcoordvelocity(bps/3,0);
|
||||||
|
end
|
||||||
|
|
||||||
|
local function IsVisible()
|
||||||
|
local r = Screen.String("HeaderText");
|
||||||
|
return string.len(r) > 0 and true or false
|
||||||
|
end
|
||||||
|
|
||||||
t[#t+1] = Def.Quad {
|
t[#t+1] = Def.Quad {
|
||||||
InitCommand=cmd(vertalign,top;zoomto,SCREEN_WIDTH+1,50;diffuse,color("#161616"));
|
InitCommand=cmd(vertalign,top;zoomto,SCREEN_WIDTH+1,50;diffuse,color("#161616"));
|
||||||
}
|
}
|
||||||
t[#t+1] = LoadActor("_texture stripe") .. {
|
t[#t+1] = LoadActor("_texture stripe") .. {
|
||||||
InitCommand=cmd(x,-SCREEN_CENTER_X;y,-2;horizalign,left;vertalign,top;zoomto,320,50;customtexturerect,0,0,(320/1.5)/8,50/32);
|
Name="TextureStripe";
|
||||||
OnCommand=cmd(faderight,0.5;texcoordvelocity,1.5,0;skewx,-0.0375;diffuse,Color("White");diffusealpha,0.125);
|
InitCommand=cmd(x,-SCREEN_CENTER_X-8;y,-2;horizalign,left;vertalign,top;zoomto,320,50;customtexturerect,0,0,(320/2)/8,50/32);
|
||||||
|
OnCommand=cmd(texcoordvelocity,2,0;skewx,-0.0575;diffuse,color("#594300");diffuserightedge,color("#59430000"));
|
||||||
};
|
};
|
||||||
t[#t+1] = LoadActor("Header") .. {
|
t[#t+1] = LoadActor("Header") .. {
|
||||||
InitCommand=cmd(y,1;vertalign,top;zoomtowidth,SCREEN_WIDTH+1;diffuse,color("#ffd400"));
|
InitCommand=cmd(y,1;vertalign,top;zoomtowidth,SCREEN_WIDTH+1;diffuse,color("#ffd400"));
|
||||||
@@ -16,7 +28,7 @@ t[#t+1] = LoadFont("Common Bold") .. {
|
|||||||
Name="HeaderText";
|
Name="HeaderText";
|
||||||
Text=Screen.String("HeaderText");
|
Text=Screen.String("HeaderText");
|
||||||
InitCommand=cmd(x,-SCREEN_CENTER_X+24;y,26;zoom,1;horizalign,left;shadowlength,0;maxwidth,200);
|
InitCommand=cmd(x,-SCREEN_CENTER_X+24;y,26;zoom,1;horizalign,left;shadowlength,0;maxwidth,200);
|
||||||
OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25));
|
OnCommand=cmd(visible,IsVisible();skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25));
|
||||||
UpdateScreenHeaderMessageCommand=function(self,param)
|
UpdateScreenHeaderMessageCommand=function(self,param)
|
||||||
self:settext(param.Header);
|
self:settext(param.Header);
|
||||||
end;
|
end;
|
||||||
@@ -28,5 +40,8 @@ t[#t+1] = Def.Quad {
|
|||||||
OnCommand=cmd(diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25);linear,0.25;zoomtowidth,192;faderight,0.5);
|
OnCommand=cmd(diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25);linear,0.25;zoomtowidth,192;faderight,0.5);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
t.BeginCommand=function(self)
|
||||||
|
self:SetUpdateFunction( Update );
|
||||||
|
end
|
||||||
|
|
||||||
return t
|
return t
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
@@ -1 +1 @@
|
|||||||
_Music title
|
_silent
|
||||||
@@ -1 +1 @@
|
|||||||
_Music title
|
_silent
|
||||||
@@ -212,16 +212,25 @@ MiddleOnCommand=;diffuse,PlayerColor(PLAYER_2)
|
|||||||
RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2)
|
RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2)
|
||||||
|
|
||||||
[MenuTimer]
|
[MenuTimer]
|
||||||
Text1OnCommand=stopeffect;stoptweening;halign,1;shadowlength,0;strokecolor,Color("Outline")
|
Text1OnCommand=horizalign,right;stopeffect;finishtweening;shadowlength,2;strokecolor,Color("Outline");
|
||||||
Text1FormatFunction=function(fSeconds) fSeconds=math.floor(fSeconds); return string.format("%02.0f",fSeconds) end
|
Text1FormatFunction=function(fSeconds) fSeconds=math.floor(fSeconds); return string.format("%02.0f",fSeconds) end
|
||||||
|
|
||||||
Text2OnCommand=x,2;y,-3;stopeffect;stoptweening;halign,0;shadowlength,0;strokecolor,Color("Outline");zoom,0.65
|
Text2OnCommand=x,2;y,3;stopeffect;stoptweening;halign,0;shadowlength,0;strokecolor,Color("Outline");zoom,0.65
|
||||||
Text2FormatFunction=function(fSeconds) local remainder=fSeconds-math.floor(fSeconds); local digit=math.floor(remainder*100); return string.format("%02.0f",digit) end
|
Text2FormatFunction=function(fSeconds) local remainder=fSeconds-math.floor(fSeconds); local digit=math.floor(remainder*100); return string.format("%02.0f",digit) end
|
||||||
|
|
||||||
Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1");
|
Warning10Command=diffuseshift;effectperiod,1;effectcolor1,Color.White;effectcolor2,Color.Red;
|
||||||
|
|
||||||
[MenuTimerNoSound]
|
[MenuTimerNoSound]
|
||||||
|
|
||||||
|
[MenuTimerContinue]
|
||||||
|
Fallback="MenuTimer"
|
||||||
|
Text1OnCommand=strokecolor,Color.Outline;shadowlength,2
|
||||||
|
Text1FormatFunction=function(fSeconds) return string.format("%02.2f",fSeconds) end;
|
||||||
|
|
||||||
|
Text2OnCommand=visible,false
|
||||||
|
Text2FormatFunction=function(fSeconds) return "" end;
|
||||||
|
|
||||||
|
|
||||||
[MusicWheel]
|
[MusicWheel]
|
||||||
SwitchSeconds=0.04
|
SwitchSeconds=0.04
|
||||||
LockedInitialVelocity=7
|
LockedInitialVelocity=7
|
||||||
@@ -597,7 +606,7 @@ AlternateHelpDisplayOnCommand=SetSecsBetweenSwitches,4;zoom,0.675;maxwidth,480/0
|
|||||||
AlternateHelpDisplayOffCommand=linear,0.175;zoomy,0
|
AlternateHelpDisplayOffCommand=linear,0.175;zoomy,0
|
||||||
|
|
||||||
TimerX=SCREEN_RIGHT-36-4
|
TimerX=SCREEN_RIGHT-36-4
|
||||||
TimerY=SCREEN_TOP+24
|
TimerY=SCREEN_TOP+23
|
||||||
TimerOnCommand=draworder,2;visible,PREFSMAN:GetPreference("MenuTimer");
|
TimerOnCommand=draworder,2;visible,PREFSMAN:GetPreference("MenuTimer");
|
||||||
# TimerOnCommand=fov,90;vanishpoint,SCREEN_RIGHT-36-4,SCREEN_TOP+20;draworder,5;visible,PREFSMAN:GetPreference("MenuTimer");rotationy,90;decelerate,0.4;rotationy,0;
|
# TimerOnCommand=fov,90;vanishpoint,SCREEN_RIGHT-36-4,SCREEN_TOP+20;draworder,5;visible,PREFSMAN:GetPreference("MenuTimer");rotationy,90;decelerate,0.4;rotationy,0;
|
||||||
TimerOffCommand=
|
TimerOffCommand=
|
||||||
@@ -699,6 +708,7 @@ NetworkStatusOffCommand=linear,0.5;cropright,1
|
|||||||
#
|
#
|
||||||
|
|
||||||
[ScreenQuickSetupOverview]
|
[ScreenQuickSetupOverview]
|
||||||
|
|
||||||
IconStartX=SCREEN_CENTER_X-160
|
IconStartX=SCREEN_CENTER_X-160
|
||||||
IconStartY=SCREEN_BOTTOM-60
|
IconStartY=SCREEN_BOTTOM-60
|
||||||
IconSetX=SCREEN_CENTER_X-160
|
IconSetX=SCREEN_CENTER_X-160
|
||||||
@@ -894,7 +904,7 @@ MusicWheelOnCommand=draworder,-5;fov,90;vanishpoint,SCREEN_CENTER_X+160,SCREEN_C
|
|||||||
MusicWheelOffCommand=bouncebegin,0.15;zoomx,0;
|
MusicWheelOffCommand=bouncebegin,0.15;zoomx,0;
|
||||||
#
|
#
|
||||||
ShowNewSong=not GAMESTATE:IsCourseMode()
|
ShowNewSong=not GAMESTATE:IsCourseMode()
|
||||||
NewSongX=SCREEN_CENTER_X-160+128-30
|
NewSongX=SCREEN_CENTER_X-160+128-24
|
||||||
NewSongY=SCREEN_TOP+160-2
|
NewSongY=SCREEN_TOP+160-2
|
||||||
NewSongOnCommand=finishtweening;diffuse,Color("Orange");diffusetopedge,Color("Yellow");strokecolor,Color("Black");zoom,0.675;draworder,106;playcommand,"Set"
|
NewSongOnCommand=finishtweening;diffuse,Color("Orange");diffusetopedge,Color("Yellow");strokecolor,Color("Black");zoom,0.675;draworder,106;playcommand,"Set"
|
||||||
NewSongOffCommand=bouncebegin,0.1;zoom,0;diffusealpha,0
|
NewSongOffCommand=bouncebegin,0.1;zoom,0;diffusealpha,0
|
||||||
@@ -905,6 +915,7 @@ ShowSongTime=true
|
|||||||
SongTimeX=SCREEN_CENTER_X-160
|
SongTimeX=SCREEN_CENTER_X-160
|
||||||
SongTimeY=SCREEN_TOP+160+(36/2)+8
|
SongTimeY=SCREEN_TOP+160+(36/2)+8
|
||||||
SongTimeOnCommand=zoom,0.75;strokecolor,Color("Outline");shadowlength,1
|
SongTimeOnCommand=zoom,0.75;strokecolor,Color("Outline");shadowlength,1
|
||||||
|
|
||||||
SongTimeOffCommand=bouncebegin,0.15;zoom,0;diffusealpha,0;
|
SongTimeOffCommand=bouncebegin,0.15;zoom,0;diffusealpha,0;
|
||||||
SongTimeResetCommand=diffuse,Color("White");
|
SongTimeResetCommand=diffuse,Color("White");
|
||||||
SongTimeAutogenCommand=diffuse,Color("Green");
|
SongTimeAutogenCommand=diffuse,Color("Green");
|
||||||
@@ -1091,6 +1102,9 @@ ShowNumCourseSongs=true
|
|||||||
UsePlayerSelectMenu=false
|
UsePlayerSelectMenu=false
|
||||||
SelectMenuAvailable=false
|
SelectMenuAvailable=false
|
||||||
#
|
#
|
||||||
|
ShowSortOrder=true
|
||||||
|
SortOrderOnCommand=visible,false
|
||||||
|
#
|
||||||
ShowPaneDisplayFrameP1=false
|
ShowPaneDisplayFrameP1=false
|
||||||
ShowPaneDisplayTextP1=false
|
ShowPaneDisplayTextP1=false
|
||||||
ShowPaneDisplayFrameP2=false
|
ShowPaneDisplayFrameP2=false
|
||||||
@@ -2011,6 +2025,19 @@ SmallBanner6OffCommand=
|
|||||||
|
|
||||||
[ScreenNameEntry]
|
[ScreenNameEntry]
|
||||||
|
|
||||||
|
[ScreenNameEntryTraditional]
|
||||||
|
|
||||||
|
[ScreenContinue]
|
||||||
|
ShowHeader=false
|
||||||
|
ShowFooter=false
|
||||||
|
#
|
||||||
|
TimerSeconds=20
|
||||||
|
TimerMetricsGroup="MenuTimerContinue"
|
||||||
|
TimerX=SCREEN_CENTER_X
|
||||||
|
TimerY=SCREEN_CENTER_Y+24
|
||||||
|
TimerOnCommand=visible,true
|
||||||
|
TimerOffCommand=
|
||||||
|
|
||||||
[ScreenProfileSave]
|
[ScreenProfileSave]
|
||||||
|
|
||||||
[ScreenProfileSaveSummary]
|
[ScreenProfileSaveSummary]
|
||||||
|
|||||||
@@ -3,7 +3,3 @@
|
|||||||
FallbackTheme=default
|
FallbackTheme=default
|
||||||
|
|
||||||
# Now you can edit or add things. ##############################################
|
# Now you can edit or add things. ##############################################
|
||||||
[ScreenEdit]
|
|
||||||
EditModifiers="midi-note"
|
|
||||||
|
|
||||||
[MusicWheel]
|
|
||||||
+26
-6
@@ -1,15 +1,35 @@
|
|||||||
StepMania Scripts For OS X
|
StepMania Scripts For OS X
|
||||||
=========
|
=========
|
||||||
|
|
||||||
This script can be used to bundle a .dmg installer of StepMania.
|
These scripts can be used to bundle a .dmg installer of StepMania.
|
||||||
It assumes you have already built a StepMania.app using Xcode and
|
It assumes you have already built a StepMania.app using Xcode and
|
||||||
that your stepmania directory structure is intact as you cloned it.
|
that your *stepmania* directory structure is intact as you cloned it.
|
||||||
|
|
||||||
To use this script, open a terminal and cd to your stepmania directory,
|
|
||||||
then run the following commands:
|
|
||||||
|
|
||||||
|
Bundling a Release:
|
||||||
|
-------------------
|
||||||
|
To bundle a release version of StepMania open a terminal and cd to
|
||||||
|
your *stepmania* directory, then run the following commands:
|
||||||
|
|
||||||
|
```
|
||||||
cd Xcode/scripts
|
cd Xcode/scripts
|
||||||
ruby mkrelease.rb
|
ruby mkrelease.rb
|
||||||
|
```
|
||||||
|
|
||||||
You'll see output as each stepmania sub-directory is copied into a tmp directory.
|
This will create a disk image like *StepMania-v5.0-beta-4-mac.dmg*
|
||||||
If all goes well, you'll be notified that the dmg was created in your stepmania directory.
|
in the root of your *stepmania* directory.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Bundling a Nightly:
|
||||||
|
-------------------
|
||||||
|
To bundle an intermediate or "nightly" .dmg installer, cd to your
|
||||||
|
*stepmania* directory, and run the following commands:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd Xcode/scripts
|
||||||
|
ruby mkrelease.rb nightly
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create a disk image like *StepMania-v5.0-31-8-2014-mac.dmg*
|
||||||
|
in the root of your *stepmania* directory.
|
||||||
@@ -6,8 +6,19 @@ require 'tmpdir'
|
|||||||
# cd to the StepMania 5 src directory
|
# cd to the StepMania 5 src directory
|
||||||
Dir.chdir "../../src"
|
Dir.chdir "../../src"
|
||||||
|
|
||||||
|
# check the command line for the presence of the "nightly" option, used
|
||||||
|
# if we are bundling a nightly build as opposed to an official release
|
||||||
|
nightly = (true and ARGV[0] == "nightly") or false
|
||||||
|
|
||||||
# initialize empty strings
|
# initialize empty strings
|
||||||
family, version = ""
|
family, version, date = ""
|
||||||
|
|
||||||
|
# if this is to be a nightly build, store the system date;
|
||||||
|
# we'll use it below to name the bundle
|
||||||
|
if nightly
|
||||||
|
time = time = Time.new
|
||||||
|
date = "#{time.day}-#{time.month}-#{time.year}"
|
||||||
|
end
|
||||||
|
|
||||||
# open ProductInfo.h in read-only mode
|
# open ProductInfo.h in read-only mode
|
||||||
File.open("#{Dir.pwd}/ProductInfo.h", "r") do |f|
|
File.open("#{Dir.pwd}/ProductInfo.h", "r") do |f|
|
||||||
@@ -22,16 +33,21 @@ File.open("#{Dir.pwd}/ProductInfo.h", "r") do |f|
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# replace whitespace with hyphens in version string
|
# replace whitespace with hyphens in the version string
|
||||||
version.gsub!(/\s+/,"-")
|
version.gsub!(/\s+/,"-")
|
||||||
|
|
||||||
# the name of the .dmg file
|
# the name of what we are bundling
|
||||||
name = "#{family}-#{version}-mac.dmg"
|
if nightly
|
||||||
|
version = version.partition("-")[0]
|
||||||
|
name = "#{family}-#{version}-#{date}"
|
||||||
|
else
|
||||||
|
name = "#{family}-#{version}"
|
||||||
|
end
|
||||||
|
|
||||||
# a list of directories we want to include in our .dmg
|
# a list of directories we want to include in our .dmg
|
||||||
directories = [ "Announcers", "BackgroundEffects", "BackgroundTransitions",
|
directories = [ "Announcers", "BackgroundEffects", "BackgroundTransitions",
|
||||||
"BGAnimations", "Characters", "Courses", "Data", "Docs", "Manual",
|
"BGAnimations", "Characters", "Courses", "Data", "Docs", "Manual",
|
||||||
"NoteSkins", "Scripts", "Songs", "StepMania.app", "Themes" ]
|
"NoteSkins", "Scripts", "Songs", "StepMania.app", "Themes" ]
|
||||||
|
|
||||||
# cd back to the root of the StepMania 5 directory
|
# cd back to the root of the StepMania 5 directory
|
||||||
Dir.chdir ".."
|
Dir.chdir ".."
|
||||||
@@ -42,16 +58,16 @@ Dir.mktmpdir {|temp|
|
|||||||
# nest two directories named by family and version within the temp directory
|
# nest two directories named by family and version within the temp directory
|
||||||
# the outer will become the root of the dmg
|
# the outer will become the root of the dmg
|
||||||
# the inner will neatly tidy all the contents together so users can easily drag/drop everything at once
|
# the inner will neatly tidy all the contents together so users can easily drag/drop everything at once
|
||||||
FileUtils.mkdir_p("#{temp}/#{family}-#{version}/#{family}-#{version}/")
|
FileUtils.mkdir_p("#{temp}/#{name}/#{name}/")
|
||||||
|
|
||||||
# loop through the directories array
|
# loop through the directories array
|
||||||
directories.each do |directory|
|
directories.each do |directory|
|
||||||
# recursively copy each directory into our temp directory
|
# recursively copy each directory into our temp directory
|
||||||
FileUtils.cp_r directory, "#{temp}/#{family}-#{version}/#{family}-#{version}/", :verbose => true
|
FileUtils.cp_r directory, "#{temp}/#{name}/#{name}/", :verbose => true
|
||||||
end
|
end
|
||||||
|
|
||||||
#construct the shell command that will create the dmg
|
#construct the shell command that will create the dmg
|
||||||
cmd = "hdiutil create #{Dir.pwd}/#{name} -srcfolder #{temp}/#{family}-#{version} -ov"
|
cmd = "hdiutil create #{Dir.pwd}/#{name}-mac.dmg -srcfolder #{temp}/#{name} -ov"
|
||||||
|
|
||||||
#execute the command in a subshell
|
#execute the command in a subshell
|
||||||
system( cmd )
|
system( cmd )
|
||||||
|
|||||||
+2
-1
@@ -299,7 +299,8 @@ if LINUX
|
|||||||
arch/InputHandler/InputHandler_Linux_PIUIO.cpp arch/InputHandler/InputHandler_Linux_PIUIO.h
|
arch/InputHandler/InputHandler_Linux_PIUIO.cpp arch/InputHandler/InputHandler_Linux_PIUIO.h
|
||||||
|
|
||||||
Lights += arch/Lights/LightsDriver_LinuxWeedTech.cpp arch/Lights/LightsDriver_LinuxWeedTech.h \
|
Lights += arch/Lights/LightsDriver_LinuxWeedTech.cpp arch/Lights/LightsDriver_LinuxWeedTech.h \
|
||||||
arch/Lights/LightsDriver_Linux_PIUIO.cpp arch/Lights/LightsDriver_Linux_PIUIO.h
|
arch/Lights/LightsDriver_Linux_PIUIO.cpp arch/Lights/LightsDriver_Linux_PIUIO.h \
|
||||||
|
arch/Lights/LightsDriver_Linux_PIUIO_Leds.cpp arch/Lights/LightsDriver_Linux_PIUIO_Leds.h
|
||||||
|
|
||||||
MemoryCard += arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp arch/MemoryCard/MemoryCardDriverThreaded_Linux.h
|
MemoryCard += arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp arch/MemoryCard/MemoryCardDriverThreaded_Linux.h
|
||||||
|
|
||||||
|
|||||||
@@ -1453,6 +1453,49 @@ static void GetTrackMapping( StepsType st, NoteDataUtil::TrackMapping tt, int Nu
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case NoteDataUtil::swap_up_down:
|
||||||
|
switch(st)
|
||||||
|
{
|
||||||
|
case StepsType_dance_single:
|
||||||
|
case StepsType_dance_double:
|
||||||
|
case StepsType_dance_couple:
|
||||||
|
case StepsType_dance_routine:
|
||||||
|
iTakeFromTrack[0]= 0;
|
||||||
|
iTakeFromTrack[1]= 2;
|
||||||
|
iTakeFromTrack[2]= 1;
|
||||||
|
iTakeFromTrack[3]= 3;
|
||||||
|
iTakeFromTrack[4]= 4;
|
||||||
|
iTakeFromTrack[5]= 6;
|
||||||
|
iTakeFromTrack[6]= 5;
|
||||||
|
iTakeFromTrack[7]= 7;
|
||||||
|
break;
|
||||||
|
case StepsType_pump_single:
|
||||||
|
case StepsType_pump_double:
|
||||||
|
case StepsType_pump_couple:
|
||||||
|
case StepsType_pump_routine:
|
||||||
|
iTakeFromTrack[0]= 1;
|
||||||
|
iTakeFromTrack[1]= 0;
|
||||||
|
iTakeFromTrack[2]= 2;
|
||||||
|
iTakeFromTrack[3]= 4;
|
||||||
|
iTakeFromTrack[4]= 3;
|
||||||
|
iTakeFromTrack[5]= 6;
|
||||||
|
iTakeFromTrack[6]= 5;
|
||||||
|
iTakeFromTrack[7]= 7;
|
||||||
|
iTakeFromTrack[8]= 9;
|
||||||
|
iTakeFromTrack[9]= 8;
|
||||||
|
break;
|
||||||
|
case StepsType_pump_halfdouble:
|
||||||
|
iTakeFromTrack[0]= 0;
|
||||||
|
iTakeFromTrack[1]= 2;
|
||||||
|
iTakeFromTrack[2]= 1;
|
||||||
|
iTakeFromTrack[3]= 4;
|
||||||
|
iTakeFromTrack[4]= 3;
|
||||||
|
iTakeFromTrack[5]= 5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
@@ -2221,6 +2264,24 @@ void NoteDataUtil::ShiftRight( NoteData &inout )
|
|||||||
ShiftTracks( inout, +1 );
|
ShiftTracks( inout, +1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NoteDataUtil::SwapUpDown(NoteData& inout, StepsType st)
|
||||||
|
{
|
||||||
|
int TakeFrom[MAX_NOTE_TRACKS];
|
||||||
|
GetTrackMapping(st, NoteDataUtil::swap_up_down, inout.GetNumTracks(), TakeFrom);
|
||||||
|
NoteData tempND;
|
||||||
|
tempND.LoadTransformed(inout, inout.GetNumTracks(), TakeFrom);
|
||||||
|
inout.CopyAll(tempND);
|
||||||
|
inout.RevalidateATIs(vector<int>(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NoteDataUtil::ArbitraryRemap(NoteData& inout, int* mapping)
|
||||||
|
{
|
||||||
|
NoteData tempND;
|
||||||
|
tempND.LoadTransformed(inout, inout.GetNumTracks(), mapping);
|
||||||
|
inout.CopyAll(tempND);
|
||||||
|
inout.RevalidateATIs(vector<int>(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct ValidRow
|
struct ValidRow
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ namespace NoteDataUtil
|
|||||||
soft_shuffle,
|
soft_shuffle,
|
||||||
super_shuffle,
|
super_shuffle,
|
||||||
stomp,
|
stomp,
|
||||||
|
swap_up_down,
|
||||||
NUM_TRACK_MAPPINGS
|
NUM_TRACK_MAPPINGS
|
||||||
};
|
};
|
||||||
void Turn( NoteData &inout, StepsType st, TrackMapping tt, int iStartIndex = 0, int iEndIndex = MAX_NOTE_ROW );
|
void Turn( NoteData &inout, StepsType st, TrackMapping tt, int iStartIndex = 0, int iEndIndex = MAX_NOTE_ROW );
|
||||||
@@ -165,6 +166,8 @@ namespace NoteDataUtil
|
|||||||
void ShiftTracks( NoteData &inout, int iShiftBy );
|
void ShiftTracks( NoteData &inout, int iShiftBy );
|
||||||
void ShiftLeft( NoteData &inout );
|
void ShiftLeft( NoteData &inout );
|
||||||
void ShiftRight( NoteData &inout );
|
void ShiftRight( NoteData &inout );
|
||||||
|
void SwapUpDown( NoteData &inout, StepsType st );
|
||||||
|
void ArbitraryRemap( NoteData &inout, int* mapping );
|
||||||
|
|
||||||
void SnapToNearestNoteType( NoteData &inout, NoteType nt1, NoteType nt2, int iStartIndex, int iEndIndex );
|
void SnapToNearestNoteType( NoteData &inout, NoteType nt1, NoteType nt2, int iStartIndex, int iEndIndex );
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -36,8 +36,11 @@ static ThemeMetric<float> FADE_FAIL_TIME( "NoteField", "FadeFailTime" );
|
|||||||
static RString RoutineNoteSkinName( size_t i ) { return ssprintf("RoutineNoteSkinP%i",int(i+1)); }
|
static RString RoutineNoteSkinName( size_t i ) { return ssprintf("RoutineNoteSkinP%i",int(i+1)); }
|
||||||
static ThemeMetric1D<RString> ROUTINE_NOTESKIN( "NoteField", RoutineNoteSkinName, NUM_PLAYERS );
|
static ThemeMetric1D<RString> ROUTINE_NOTESKIN( "NoteField", RoutineNoteSkinName, NUM_PLAYERS );
|
||||||
|
|
||||||
|
static bool FAST_NOTE_RENDERING_PREF_CACHED= false;
|
||||||
|
|
||||||
NoteField::NoteField()
|
NoteField::NoteField()
|
||||||
{
|
{
|
||||||
|
FAST_NOTE_RENDERING_PREF_CACHED= PREFSMAN->m_FastNoteRendering;
|
||||||
m_pNoteData = NULL;
|
m_pNoteData = NULL;
|
||||||
m_pCurDisplay = NULL;
|
m_pCurDisplay = NULL;
|
||||||
|
|
||||||
@@ -1355,7 +1358,10 @@ void NoteField::DrawPrimitives()
|
|||||||
bool bNoteIsUpcoming = NoteRowToBeat(q) > m_pPlayerState->GetDisplayedPosition().m_fSongBeat;
|
bool bNoteIsUpcoming = NoteRowToBeat(q) > m_pPlayerState->GetDisplayedPosition().m_fSongBeat;
|
||||||
bAnyUpcomingInThisCol |= bNoteIsUpcoming;
|
bAnyUpcomingInThisCol |= bNoteIsUpcoming;
|
||||||
|
|
||||||
DISPLAY->ClearZBuffer();
|
if(!FAST_NOTE_RENDERING_PREF_CACHED)
|
||||||
|
{
|
||||||
|
DISPLAY->ClearZBuffer();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cur->m_ReceptorArrowRow.SetNoteUpcoming( c, bAnyUpcomingInThisCol );
|
cur->m_ReceptorArrowRow.SetNoteUpcoming( c, bAnyUpcomingInThisCol );
|
||||||
|
|||||||
@@ -169,9 +169,9 @@ PrefsManager::PrefsManager() :
|
|||||||
m_iDisplayWidth ( "DisplayWidth", 854 ),
|
m_iDisplayWidth ( "DisplayWidth", 854 ),
|
||||||
m_iDisplayHeight ( "DisplayHeight", 480 ),
|
m_iDisplayHeight ( "DisplayHeight", 480 ),
|
||||||
m_fDisplayAspectRatio ( "DisplayAspectRatio", 16/9.f, ValidateDisplayAspectRatio ),
|
m_fDisplayAspectRatio ( "DisplayAspectRatio", 16/9.f, ValidateDisplayAspectRatio ),
|
||||||
m_iDisplayColorDepth ( "DisplayColorDepth", 16 ),
|
m_iDisplayColorDepth ( "DisplayColorDepth", 32 ),
|
||||||
m_iTextureColorDepth ( "TextureColorDepth", 16 ),
|
m_iTextureColorDepth ( "TextureColorDepth", 32 ),
|
||||||
m_iMovieColorDepth ( "MovieColorDepth", 16 ),
|
m_iMovieColorDepth ( "MovieColorDepth", 32 ),
|
||||||
m_bStretchBackgrounds ( "StretchBackgrounds", false ),
|
m_bStretchBackgrounds ( "StretchBackgrounds", false ),
|
||||||
m_BGFitMode("BackgroundFitMode", BFM_CoverPreserve),
|
m_BGFitMode("BackgroundFitMode", BFM_CoverPreserve),
|
||||||
m_HighResolutionTextures ( "HighResolutionTextures", HighResolutionTextures_Auto ),
|
m_HighResolutionTextures ( "HighResolutionTextures", HighResolutionTextures_Auto ),
|
||||||
@@ -184,6 +184,7 @@ PrefsManager::PrefsManager() :
|
|||||||
|
|
||||||
m_bHiddenSongs ( "HiddenSongs", false ),
|
m_bHiddenSongs ( "HiddenSongs", false ),
|
||||||
m_bVsync ( "Vsync", true ),
|
m_bVsync ( "Vsync", true ),
|
||||||
|
m_FastNoteRendering("FastNoteRendering", false),
|
||||||
m_bInterlaced ( "Interlaced", false ),
|
m_bInterlaced ( "Interlaced", false ),
|
||||||
m_bPAL ( "PAL", false ),
|
m_bPAL ( "PAL", false ),
|
||||||
m_bDelayedTextureDelete ( "DelayedTextureDelete", false ),
|
m_bDelayedTextureDelete ( "DelayedTextureDelete", false ),
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ public:
|
|||||||
|
|
||||||
Preference<bool> m_bHiddenSongs;
|
Preference<bool> m_bHiddenSongs;
|
||||||
Preference<bool> m_bVsync;
|
Preference<bool> m_bVsync;
|
||||||
|
Preference<bool> m_FastNoteRendering;
|
||||||
Preference<bool> m_bInterlaced;
|
Preference<bool> m_bInterlaced;
|
||||||
Preference<bool> m_bPAL;
|
Preference<bool> m_bPAL;
|
||||||
Preference<bool> m_bDelayedTextureDelete;
|
Preference<bool> m_bDelayedTextureDelete;
|
||||||
|
|||||||
@@ -1751,6 +1751,16 @@ void MakeLower( wchar_t *p, size_t iLen )
|
|||||||
UnicodeUpperLower( p, iLen, g_LowerCase );
|
UnicodeUpperLower( p, iLen, g_LowerCase );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool operator>>(const RString& lhs, int& rhs)
|
||||||
|
{
|
||||||
|
return istringstream(lhs) >> rhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator>>(const RString& lhs, float& rhs)
|
||||||
|
{
|
||||||
|
return istringstream(lhs) >> rhs;
|
||||||
|
}
|
||||||
|
|
||||||
int StringToInt( const RString &sString )
|
int StringToInt( const RString &sString )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|||||||
@@ -418,6 +418,9 @@ RString IntToString( const int &iNum );
|
|||||||
float StringToFloat( const RString &sString );
|
float StringToFloat( const RString &sString );
|
||||||
RString FloatToString( const float &num );
|
RString FloatToString( const float &num );
|
||||||
bool StringToFloat( const RString &sString, float &fOut );
|
bool StringToFloat( const RString &sString, float &fOut );
|
||||||
|
// Better than IntToString because you can check for success.
|
||||||
|
bool operator>>(const RString& lhs, int& rhs);
|
||||||
|
bool operator>>(const RString& lhs, float& rhs);
|
||||||
|
|
||||||
RString WStringToRString( const wstring &sString );
|
RString WStringToRString( const wstring &sString );
|
||||||
RString WcharToUTF8( wchar_t c );
|
RString WcharToUTF8( wchar_t c );
|
||||||
|
|||||||
+82
-1
@@ -62,6 +62,7 @@ AutoScreenMessage( SM_UpdateTextInfo );
|
|||||||
AutoScreenMessage( SM_BackFromMainMenu );
|
AutoScreenMessage( SM_BackFromMainMenu );
|
||||||
AutoScreenMessage( SM_BackFromAreaMenu );
|
AutoScreenMessage( SM_BackFromAreaMenu );
|
||||||
AutoScreenMessage( SM_BackFromAlterMenu );
|
AutoScreenMessage( SM_BackFromAlterMenu );
|
||||||
|
AutoScreenMessage( SM_BackFromArbitraryRemap );
|
||||||
AutoScreenMessage( SM_BackFromStepsInformation );
|
AutoScreenMessage( SM_BackFromStepsInformation );
|
||||||
AutoScreenMessage( SM_BackFromStepsData );
|
AutoScreenMessage( SM_BackFromStepsData );
|
||||||
AutoScreenMessage( SM_BackFromOptions );
|
AutoScreenMessage( SM_BackFromOptions );
|
||||||
@@ -616,7 +617,7 @@ static MenuDef g_AlterMenu(
|
|||||||
MenuRowDef(ScreenEdit::alter, "Alter", true,
|
MenuRowDef(ScreenEdit::alter, "Alter", true,
|
||||||
EditMode_Practice, true, true, 0, "Autogen To Fill Width","Backwards","Swap Sides",
|
EditMode_Practice, true, true, 0, "Autogen To Fill Width","Backwards","Swap Sides",
|
||||||
"Copy Left To Right","Copy Right To Left","Clear Left","Clear Right",
|
"Copy Left To Right","Copy Right To Left","Clear Left","Clear Right",
|
||||||
"Collapse To One","Collapse Left","Shift Left","Shift Right" ),
|
"Collapse To One","Collapse Left","Shift Left","Shift Right", "Swap Up/Down", "Arbitrary Remap Columns" ),
|
||||||
MenuRowDef(ScreenEdit::tempo, "Tempo", true,
|
MenuRowDef(ScreenEdit::tempo, "Tempo", true,
|
||||||
EditMode_Full, true, true, 0, "Compress 2x","Compress 3->2",
|
EditMode_Full, true, true, 0, "Compress 2x","Compress 3->2",
|
||||||
"Compress 4->3","Expand 3->4","Expand 2->3","Expand 2x" ),
|
"Compress 4->3","Expand 3->4","Expand 2->3","Expand 2x" ),
|
||||||
@@ -3285,6 +3286,10 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
{
|
{
|
||||||
HandleAlterMenuChoice( (AlterMenuChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_viLastAnswers );
|
HandleAlterMenuChoice( (AlterMenuChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_viLastAnswers );
|
||||||
}
|
}
|
||||||
|
else if( SM == SM_BackFromArbitraryRemap )
|
||||||
|
{
|
||||||
|
HandleArbitraryRemapping(ScreenTextEntry::s_sLastAnswer);
|
||||||
|
}
|
||||||
else if( SM == SM_BackFromStepsInformation )
|
else if( SM == SM_BackFromStepsInformation )
|
||||||
{
|
{
|
||||||
HandleStepsInformationChoice( (StepsInformationChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_viLastAnswers );
|
HandleStepsInformationChoice( (StepsInformationChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_viLastAnswers );
|
||||||
@@ -4532,6 +4537,73 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
|
|||||||
GAMESTATE->SetProcessedTimingData(NULL);
|
GAMESTATE->SetProcessedTimingData(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static LocalizedString ENTER_ARBITRARY_MAPPING( "ScreenEdit", "Enter the new track mapping." );
|
||||||
|
static LocalizedString TOO_MANY_TRACKS("ScreenEdit", "Too many tracks specified.");
|
||||||
|
static LocalizedString NOT_A_TRACK("ScreenEdit", "'%s' is not a track id.");
|
||||||
|
static LocalizedString OUT_OF_RANGE_ID("ScreenEdit", "Entry %d, '%d', is out of range 1 to %d.");
|
||||||
|
|
||||||
|
static bool ConvertMappingInputToMapping(RString const& mapstr, int* mapping, RString& error)
|
||||||
|
{
|
||||||
|
vector<RString> mapping_input;
|
||||||
|
split(mapstr, ",", mapping_input);
|
||||||
|
int tracks_for_type= GAMEMAN->GetStepsTypeInfo(GAMESTATE->m_pCurSteps[0]->m_StepsType).iNumTracks;
|
||||||
|
if(mapping_input.size() > tracks_for_type)
|
||||||
|
{
|
||||||
|
error= TOO_MANY_TRACKS;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// mapping_input.size() < tracks_for_type is not checked because
|
||||||
|
// unspecified tracks are mapped directly. -Kyz
|
||||||
|
size_t track= 0;
|
||||||
|
// track will be used for filling in the unspecified part of the mapping.
|
||||||
|
for(; track < mapping_input.size(); ++track)
|
||||||
|
{
|
||||||
|
if(mapping_input[track].empty() || mapping_input[track] == " ")
|
||||||
|
{
|
||||||
|
// This allows blank entries to mean "pass through".
|
||||||
|
mapping[track]= track+1;
|
||||||
|
}
|
||||||
|
else if(!(mapping_input[track] >> mapping[track]))
|
||||||
|
{
|
||||||
|
error= ssprintf(NOT_A_TRACK.GetValue(), mapping_input[track].c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(mapping[track] < 1 || mapping[track] > tracks_for_type)
|
||||||
|
{
|
||||||
|
error= ssprintf(OUT_OF_RANGE_ID.GetValue(), track+1, mapping[track], tracks_for_type);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Simpler for the user if they input track ids starting at 1.
|
||||||
|
--mapping[track];
|
||||||
|
}
|
||||||
|
for(; track < tracks_for_type; ++track)
|
||||||
|
{
|
||||||
|
mapping[track]= track;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool ArbitraryRemapValidate(const RString& answer, RString& error_out)
|
||||||
|
{
|
||||||
|
int mapping[MAX_NOTE_TRACKS];
|
||||||
|
return ConvertMappingInputToMapping(answer, mapping, error_out);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenEdit::HandleArbitraryRemapping(RString const& mapstr)
|
||||||
|
{
|
||||||
|
const NoteData OldClipboard( m_Clipboard );
|
||||||
|
HandleAlterMenuChoice( cut, false );
|
||||||
|
int mapping[MAX_NOTE_TRACKS];
|
||||||
|
RString error;
|
||||||
|
// error is actually reported by the validate function, and unused here.
|
||||||
|
if(ConvertMappingInputToMapping(mapstr, mapping, error))
|
||||||
|
{
|
||||||
|
NoteDataUtil::ArbitraryRemap(m_Clipboard, mapping);
|
||||||
|
}
|
||||||
|
HandleAreaMenuChoice( paste_at_begin_marker, false );
|
||||||
|
m_Clipboard = OldClipboard;
|
||||||
|
}
|
||||||
|
|
||||||
void ScreenEdit::HandleAlterMenuChoice(AlterMenuChoice c, const vector<int> &iAnswers, bool bAllowUndo)
|
void ScreenEdit::HandleAlterMenuChoice(AlterMenuChoice c, const vector<int> &iAnswers, bool bAllowUndo)
|
||||||
{
|
{
|
||||||
ASSERT_M(m_NoteFieldEdit.m_iBeginMarker!=-1 && m_NoteFieldEdit.m_iEndMarker!=-1,
|
ASSERT_M(m_NoteFieldEdit.m_iBeginMarker!=-1 && m_NoteFieldEdit.m_iEndMarker!=-1,
|
||||||
@@ -4676,6 +4748,15 @@ void ScreenEdit::HandleAlterMenuChoice(AlterMenuChoice c, const vector<int> &iAn
|
|||||||
case collapse_left: NoteDataUtil::CollapseLeft( m_Clipboard ); break;
|
case collapse_left: NoteDataUtil::CollapseLeft( m_Clipboard ); break;
|
||||||
case shift_left: NoteDataUtil::ShiftLeft( m_Clipboard ); break;
|
case shift_left: NoteDataUtil::ShiftLeft( m_Clipboard ); break;
|
||||||
case shift_right: NoteDataUtil::ShiftRight( m_Clipboard ); break;
|
case shift_right: NoteDataUtil::ShiftRight( m_Clipboard ); break;
|
||||||
|
case swap_up_down: NoteDataUtil::SwapUpDown(m_Clipboard, GAMESTATE->m_pCurSteps[0]->m_StepsType); break;
|
||||||
|
case arbitrary_remap:
|
||||||
|
ScreenTextEntry::TextEntry(
|
||||||
|
SM_BackFromArbitraryRemap, ENTER_ARBITRARY_MAPPING,
|
||||||
|
"1, 2, 3, 4", MAX_NOTE_TRACKS * 4,
|
||||||
|
// 2 chars for digit, one for comma, one for space.
|
||||||
|
ArbitraryRemapValidate
|
||||||
|
);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleAreaMenuChoice( paste_at_begin_marker, false );
|
HandleAreaMenuChoice( paste_at_begin_marker, false );
|
||||||
|
|||||||
@@ -442,6 +442,7 @@ public:
|
|||||||
modify_keysounds_at_row, /**< Modify the keysounds at this row. */
|
modify_keysounds_at_row, /**< Modify the keysounds at this row. */
|
||||||
NUM_AREA_MENU_CHOICES
|
NUM_AREA_MENU_CHOICES
|
||||||
};
|
};
|
||||||
|
void HandleArbitraryRemapping(RString const& mapstr);
|
||||||
void HandleAlterMenuChoice(AlterMenuChoice c,
|
void HandleAlterMenuChoice(AlterMenuChoice c,
|
||||||
const vector<int> &iAnswers,
|
const vector<int> &iAnswers,
|
||||||
bool bAllowUndo = true);
|
bool bAllowUndo = true);
|
||||||
@@ -501,6 +502,8 @@ public:
|
|||||||
collapse_left,
|
collapse_left,
|
||||||
shift_left,
|
shift_left,
|
||||||
shift_right,
|
shift_right,
|
||||||
|
swap_up_down,
|
||||||
|
arbitrary_remap,
|
||||||
NUM_ALTER_TYPES
|
NUM_ALTER_TYPES
|
||||||
};
|
};
|
||||||
enum TempoType
|
enum TempoType
|
||||||
|
|||||||
@@ -441,6 +441,7 @@ static void TimingWindowScale( int &sel, bool ToSel, const ConfOption *pConfOpti
|
|||||||
{
|
{
|
||||||
// StepMania 5 values (implemented 2008/03/12)
|
// StepMania 5 values (implemented 2008/03/12)
|
||||||
//const float mapping[] = { 2.0f,1.66f,1.33f,1.00f,0.75f,0.50f,0.25f };
|
//const float mapping[] = { 2.0f,1.66f,1.33f,1.00f,0.75f,0.50f,0.25f };
|
||||||
|
|
||||||
// StepMania 3.9 and 4.0 values:
|
// StepMania 3.9 and 4.0 values:
|
||||||
const float mapping[] = { 1.50f,1.33f,1.16f,1.00f,0.84f,0.66f,0.50f,0.33f,0.20f };
|
const float mapping[] = { 1.50f,1.33f,1.16f,1.00f,0.84f,0.66f,0.50f,0.33f,0.20f };
|
||||||
MoveMap( sel, pConfOption, ToSel, mapping, ARRAYLEN(mapping) );
|
MoveMap( sel, pConfOption, ToSel, mapping, ARRAYLEN(mapping) );
|
||||||
@@ -449,12 +450,13 @@ static void TimingWindowScale( int &sel, bool ToSel, const ConfOption *pConfOpti
|
|||||||
/** @brief Life Difficulty scale */
|
/** @brief Life Difficulty scale */
|
||||||
static void LifeDifficulty( int &sel, bool ToSel, const ConfOption *pConfOption )
|
static void LifeDifficulty( int &sel, bool ToSel, const ConfOption *pConfOption )
|
||||||
{
|
{
|
||||||
// StepMania 5 values (implemented 2008/03/12)
|
// original StepMania 5 values (implemented 2008/03/12)
|
||||||
//const float mapping[] = { 2.0f,1.50f,1.00f,0.66f,0.33f };
|
//const float mapping[] = { 2.0f,1.50f,1.00f,0.66f,0.33f };
|
||||||
|
// 3.9 modified so that L6 is L4 (in SM5 some time after)
|
||||||
|
//const float mapping[] = { 1.20f,1.00f,0.80f,0.60f,0.40f,0.33f,0.25f };
|
||||||
|
|
||||||
// StepMania 3.9 and 4.0 values:
|
// StepMania 3.9 and 4.0 values:
|
||||||
//const float mapping[] = { 1.60f,1.40f,1.20f,1.00f,0.80f,0.60f,0.40f };
|
const float mapping[] = { 1.60f,1.40f,1.20f,1.00f,0.80f,0.60f,0.40f };
|
||||||
// 3.9 modified so that L6 is L4
|
|
||||||
const float mapping[] = { 1.20f,1.00f,0.80f,0.60f,0.40f,0.33f,0.25f };
|
|
||||||
MoveMap( sel, pConfOption, ToSel, mapping, ARRAYLEN(mapping) );
|
MoveMap( sel, pConfOption, ToSel, mapping, ARRAYLEN(mapping) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -732,7 +734,7 @@ static void InitializeConfOptions()
|
|||||||
|
|
||||||
ADD( ConfOption( "EventMode", MovePref<bool>, "Off","On (recommended)" ) );
|
ADD( ConfOption( "EventMode", MovePref<bool>, "Off","On (recommended)" ) );
|
||||||
ADD( ConfOption( "TimingWindowScale", TimingWindowScale, "|1","|2","|3","|4","|5","|6","|7","|8","Justice" ) );
|
ADD( ConfOption( "TimingWindowScale", TimingWindowScale, "|1","|2","|3","|4","|5","|6","|7","|8","Justice" ) );
|
||||||
ADD( ConfOption( "LifeDifficulty", LifeDifficulty, "|1.2","|1.0","|0.8","|0.6","|0.4","|0.33","|0.25" ) );
|
ADD( ConfOption( "LifeDifficulty", LifeDifficulty, "|1","|2","|3","|4","|5","|6","|7" ) );
|
||||||
g_ConfOptions.back().m_sPrefName = "LifeDifficultyScale";
|
g_ConfOptions.back().m_sPrefName = "LifeDifficultyScale";
|
||||||
ADD( ConfOption( "ProgressiveLifebar", MovePref<int>, "Off","|1","|2","|3","|4","|5","|6","|7","|8") );
|
ADD( ConfOption( "ProgressiveLifebar", MovePref<int>, "Off","|1","|2","|3","|4","|5","|6","|7","|8") );
|
||||||
ADD( ConfOption( "ProgressiveStageLifebar", MovePref<int>, "Off","|1","|2","|3","|4","|5","|6","|7","|8","Insanity") );
|
ADD( ConfOption( "ProgressiveStageLifebar", MovePref<int>, "Off","|1","|2","|3","|4","|5","|6","|7","|8","Insanity") );
|
||||||
@@ -777,6 +779,7 @@ static void InitializeConfOptions()
|
|||||||
g_ConfOptions.back().m_iEffects = OPT_APPLY_GRAPHICS;
|
g_ConfOptions.back().m_iEffects = OPT_APPLY_GRAPHICS;
|
||||||
ADD( ConfOption( "Vsync", MovePref<bool>, "No", "Yes" ) );
|
ADD( ConfOption( "Vsync", MovePref<bool>, "No", "Yes" ) );
|
||||||
g_ConfOptions.back().m_iEffects = OPT_APPLY_GRAPHICS;
|
g_ConfOptions.back().m_iEffects = OPT_APPLY_GRAPHICS;
|
||||||
|
ADD( ConfOption( "FastNoteRendering", MovePref<bool>, "Off", "On"));
|
||||||
ADD( ConfOption( "ShowStats", MovePref<bool>, "Off","On" ) );
|
ADD( ConfOption( "ShowStats", MovePref<bool>, "Off","On" ) );
|
||||||
ADD( ConfOption( "ShowBanners", MovePref<bool>, "Off","On" ) );
|
ADD( ConfOption( "ShowBanners", MovePref<bool>, "Off","On" ) );
|
||||||
|
|
||||||
|
|||||||
+30
-4
@@ -87,11 +87,36 @@ void WheelItemBase::DrawPrimitives()
|
|||||||
class LunaWheelItemBase: public Luna<WheelItemBase>
|
class LunaWheelItemBase: public Luna<WheelItemBase>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DEFINE_METHOD( GetColor, GetColor() )
|
#define IS_LOADED_CHECK \
|
||||||
DEFINE_METHOD( GetText, GetText() )
|
if(!p->IsLoaded()) \
|
||||||
|
{ \
|
||||||
|
luaL_error(L, "Wheel item is not loaded yet. Use WheelItem:IsLoaded() to check."); \
|
||||||
|
}
|
||||||
|
|
||||||
static int GetType( T* p, lua_State *L ) {
|
static int GetColor(T* p, lua_State *L)
|
||||||
lua_pushnumber( L, p->GetType() );
|
{
|
||||||
|
IS_LOADED_CHECK;
|
||||||
|
LuaHelpers::Push(L, p->GetColor());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int GetText(T* p, lua_State *L)
|
||||||
|
{
|
||||||
|
IS_LOADED_CHECK;
|
||||||
|
LuaHelpers::Push(L, p->GetText());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int GetType(T* p, lua_State *L)
|
||||||
|
{
|
||||||
|
IS_LOADED_CHECK;
|
||||||
|
lua_pushnumber(L, p->GetType());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int IsLoaded(T* p, lua_State *L)
|
||||||
|
{
|
||||||
|
lua_pushboolean(L, p->IsLoaded());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,6 +125,7 @@ public:
|
|||||||
ADD_METHOD( GetColor );
|
ADD_METHOD( GetColor );
|
||||||
ADD_METHOD( GetText );
|
ADD_METHOD( GetText );
|
||||||
ADD_METHOD( GetType );
|
ADD_METHOD( GetType );
|
||||||
|
ADD_METHOD( IsLoaded );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
LUA_REGISTER_DERIVED_CLASS( WheelItemBase, ActorFrame )
|
LUA_REGISTER_DERIVED_CLASS( WheelItemBase, ActorFrame )
|
||||||
|
|||||||
+4
-3
@@ -51,9 +51,10 @@ public:
|
|||||||
|
|
||||||
RageColor m_colorLocked;
|
RageColor m_colorLocked;
|
||||||
|
|
||||||
const RString GetText(){ return m_pData->m_sText; }
|
const RString GetText(){ ASSERT(m_pData != NULL); return m_pData->m_sText; }
|
||||||
const RageColor GetColor(){ return m_pData->m_color; }
|
const RageColor GetColor(){ ASSERT(m_pData != NULL); return m_pData->m_color; }
|
||||||
WheelItemDataType GetType(){ return m_pData->m_Type; }
|
WheelItemDataType GetType(){ ASSERT(m_pData != NULL); return m_pData->m_Type; }
|
||||||
|
bool IsLoaded(){ return m_pData != NULL; }
|
||||||
|
|
||||||
// Lua
|
// Lua
|
||||||
void PushSelf( lua_State *L );
|
void PushSelf( lua_State *L );
|
||||||
|
|||||||
@@ -0,0 +1,157 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include "LightsDriver_Linux_PIUIO_Leds.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
#include "Game.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
|
||||||
|
REGISTER_SOUND_DRIVER_CLASS2(PIUIO_Leds, Linux_PIUIO_Leds);
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const char *cabinet_leds[NUM_CabinetLight] = {
|
||||||
|
"/sys/class/leds/piuio::output23/brightness",
|
||||||
|
"/sys/class/leds/piuio::output26/brightness",
|
||||||
|
"/sys/class/leds/piuio::output25/brightness",
|
||||||
|
"/sys/class/leds/piuio::output24/brightness",
|
||||||
|
"/sys/class/leds/piuio::output10/brightness",
|
||||||
|
"/sys/class/leds/piuio::output10/brightness",
|
||||||
|
};
|
||||||
|
|
||||||
|
const char *dance_leds[NUM_GameController][NUM_GameButton] = {
|
||||||
|
{
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
"/sys/class/leds/piuio::output20/brightness",
|
||||||
|
"/sys/class/leds/piuio::output21/brightness",
|
||||||
|
"/sys/class/leds/piuio::output18/brightness",
|
||||||
|
"/sys/class/leds/piuio::output19/brightness",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
"/sys/class/leds/piuio::output4/brightness",
|
||||||
|
"/sys/class/leds/piuio::output5/brightness",
|
||||||
|
"/sys/class/leds/piuio::output2/brightness",
|
||||||
|
"/sys/class/leds/piuio::output3/brightness",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const char *pump_leds[NUM_GameController][NUM_GameButton] = {
|
||||||
|
{
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
"/sys/class/leds/piuio::output2/brightness",
|
||||||
|
"/sys/class/leds/piuio::output3/brightness",
|
||||||
|
"/sys/class/leds/piuio::output4/brightness",
|
||||||
|
"/sys/class/leds/piuio::output5/brightness",
|
||||||
|
"/sys/class/leds/piuio::output6/brightness",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
"/sys/class/leds/piuio::output18/brightness",
|
||||||
|
"/sys/class/leds/piuio::output19/brightness",
|
||||||
|
"/sys/class/leds/piuio::output20/brightness",
|
||||||
|
"/sys/class/leds/piuio::output21/brightness",
|
||||||
|
"/sys/class/leds/piuio::output22/brightness",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
bool SetLight(const char *filename, bool on)
|
||||||
|
{
|
||||||
|
if (filename == NULL)
|
||||||
|
return true;
|
||||||
|
FILE *f = fopen(filename, "w");
|
||||||
|
if (f == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
fprintf(f, "%d", on ? 255 : 0);
|
||||||
|
fclose(f);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LightsDriver_Linux_PIUIO_Leds::LightsDriver_Linux_PIUIO_Leds()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
LightsDriver_Linux_PIUIO_Leds::~LightsDriver_Linux_PIUIO_Leds()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void LightsDriver_Linux_PIUIO_Leds::Set( const LightsState *ls )
|
||||||
|
{
|
||||||
|
FOREACH_CabinetLight(light)
|
||||||
|
{
|
||||||
|
if (!SetLight(cabinet_leds[light], ls->m_bCabinetLights[light]))
|
||||||
|
{
|
||||||
|
LOG->Warn("Error setting cabinet light %s",
|
||||||
|
CabinetLightToString(light).c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const InputScheme *pInput = &GAMESTATE->GetCurrentGame()->m_InputScheme;
|
||||||
|
RString sInputName = pInput->m_szName;
|
||||||
|
if (sInputName.EqualsNoCase("dance"))
|
||||||
|
{
|
||||||
|
FOREACH_ENUM(GameController, c)
|
||||||
|
{
|
||||||
|
FOREACH_GameButton_Custom(gb)
|
||||||
|
{
|
||||||
|
if (!SetLight(dance_leds[c][gb], ls->m_bGameButtonLights[c][gb]))
|
||||||
|
{
|
||||||
|
LOG->Warn("Error setting button light %s",
|
||||||
|
GameButtonToString(pInput, gb).c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (sInputName.EqualsNoCase("pump"))
|
||||||
|
{
|
||||||
|
FOREACH_ENUM(GameController, c)
|
||||||
|
{
|
||||||
|
FOREACH_GameButton_Custom(gb)
|
||||||
|
{
|
||||||
|
if (!SetLight(pump_leds[c][gb], ls->m_bGameButtonLights[c][gb]))
|
||||||
|
{
|
||||||
|
LOG->Warn("Error setting button light %s",
|
||||||
|
GameButtonToString(pInput, gb).c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (c) 2014 StepMania team
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the
|
||||||
|
* "Software"), to deal in the Software without restriction, including
|
||||||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||||
|
* whom the Software is furnished to do so, provided that the above
|
||||||
|
* copyright notice(s) and this permission notice appear in all copies of
|
||||||
|
* the Software and that both the above copyright notice(s) and this
|
||||||
|
* permission notice appear in supporting documentation.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||||
|
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||||
|
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||||
|
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||||
|
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/* LightsDriver_Linux_PIUIO_Leds: Control PIUIO lights via /sys/class/leds */
|
||||||
|
|
||||||
|
#ifndef LightsDriver_Linux_PIUIO_Leds_H
|
||||||
|
#define LightsDriver_Linux_PIUIO_Leds_H
|
||||||
|
|
||||||
|
#include "arch/Lights/LightsDriver.h"
|
||||||
|
|
||||||
|
class LightsDriver_Linux_PIUIO_Leds : public LightsDriver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LightsDriver_Linux_PIUIO_Leds();
|
||||||
|
virtual ~LightsDriver_Linux_PIUIO_Leds();
|
||||||
|
|
||||||
|
virtual void Set( const LightsState *ls );
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (c) 2014 StepMania team
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the
|
||||||
|
* "Software"), to deal in the Software without restriction, including
|
||||||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||||
|
* whom the Software is furnished to do so, provided that the above
|
||||||
|
* copyright notice(s) and this permission notice appear in all copies of
|
||||||
|
* the Software and that both the above copyright notice(s) and this
|
||||||
|
* permission notice appear in supporting documentation.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||||
|
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||||
|
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||||
|
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||||
|
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Encoding=UTF-8
|
Encoding=UTF-8
|
||||||
Name=Stepmania-ssc
|
Name=StepMania
|
||||||
GenericName=Rhythm and dance game
|
GenericName=Rhythm and dance game
|
||||||
TryExec=stepmania
|
TryExec=stepmania
|
||||||
Exec=stepmania
|
Exec=stepmania
|
||||||
|
|||||||
Reference in New Issue
Block a user