merge from some old revision (forgot to commit)

This commit is contained in:
Thai Pangsakulyanont
2011-09-09 08:58:01 +07:00
52 changed files with 429 additions and 173 deletions
+6
View File
@@ -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.
+2
View File
@@ -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.
+64 -64
View File
@@ -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 -1
View File
@@ -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:;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 KiB

After

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 89 KiB

+16 -2
View File
@@ -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;);
};
};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

After

Width:  |  Height:  |  Size: 313 B

+10 -5
View File
@@ -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
+3
View File
@@ -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):
+3
View File
@@ -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.
+1 -1
View File
@@ -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()
+61 -18
View File
@@ -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,
}
);
+4 -2
View File
@@ -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
Binary file not shown.

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
+41 -3
View File
@@ -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
+9 -3
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+6 -2
View File
@@ -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 );
}
+2
View File
@@ -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 );
+2 -1
View File
@@ -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];
+5
View File
@@ -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
+4
View File
@@ -12,7 +12,11 @@ namespace jpeg
{
extern "C"
{
#if defined(MACOSX)
#include <../extern/libjpeg/jpeglib.h>
#else
#include "jpeglib.h"
#endif
}
}
-1
View File
@@ -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 );
+13 -2
View File
@@ -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()
{
+1 -1
View File
@@ -14,7 +14,7 @@ public:
LightsDriver() {};
virtual ~LightsDriver() {};
virtual void Set( const LightsState *ls ) = 0;
};
+1 -1
View File
@@ -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
+42 -25
View File
@@ -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.
*/
+3 -5
View File
@@ -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: ";
+2 -1
View File
@@ -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 )
+3 -5
View File
@@ -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 );
};