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