@@ -2,6 +2,22 @@
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# CMake Files/Directories
|
||||
CMakeFiles/
|
||||
CMakeCache.txt
|
||||
CMakeScripts/
|
||||
cmake_install.cmake
|
||||
# The following are generated from CMake, and thus should be stopped.
|
||||
Build/*
|
||||
Build/*/*
|
||||
Debug/
|
||||
Release/
|
||||
Contents/
|
||||
verdata.*
|
||||
StepMania-debug
|
||||
Xcode/Info.StepMania.plist
|
||||
Xcode/plistHelper.hpp
|
||||
|
||||
# Text Editor Based Items
|
||||
___*
|
||||
*~
|
||||
@@ -49,6 +65,7 @@ lib*_link.a
|
||||
*.suo
|
||||
*.exp
|
||||
*.ilk
|
||||
*.map
|
||||
|
||||
# Windows General Files
|
||||
Thumbs.db
|
||||
@@ -73,10 +90,18 @@ src/config.h
|
||||
src/config.h.in
|
||||
src/stamp-h1
|
||||
GtkModule.so
|
||||
StepMania
|
||||
|
||||
# Version control specific.
|
||||
*.BACKUP.*
|
||||
*.BASE.*
|
||||
*.LOCAL.*
|
||||
*.REMOTE.*
|
||||
|
||||
# StepMania Specific
|
||||
*.smzip
|
||||
ver.cpp
|
||||
gitversion.h
|
||||
Cache/
|
||||
Save/
|
||||
Logs/
|
||||
@@ -126,6 +151,7 @@ Utils/temp*
|
||||
Program/StepMania*.lib
|
||||
|
||||
# Unknown File Types
|
||||
*.dia
|
||||
.deps
|
||||
*.rej
|
||||
tests/*.err
|
||||
@@ -145,3 +171,4 @@ BuildLog.htm
|
||||
*.swp
|
||||
*.pc
|
||||
*.d
|
||||
|
||||
|
||||
@@ -9,24 +9,25 @@ notifications:
|
||||
irc: "chat.freenode.net#stepmania-devs"
|
||||
|
||||
before_script:
|
||||
- sudo apt-get install nasm
|
||||
- sudo apt-get install libmad0-dev
|
||||
- sudo apt-get install libgtk2.0-dev
|
||||
- sudo apt-get install binutils-dev
|
||||
- sudo apt-get install libasound-dev
|
||||
- sudo apt-get install libpulse-dev
|
||||
- sudo apt-get install libjack-dev
|
||||
- sudo apt-get install libc6-dev
|
||||
- sudo apt-get install libogg-dev
|
||||
- sudo apt-get install libvorbis-dev
|
||||
- sudo apt-get install libbz2-dev
|
||||
- sudo apt-get install zlib1g-dev
|
||||
- sudo apt-get install libjpeg8-dev
|
||||
- sudo apt-get install libpng12-dev
|
||||
- sudo apt-get install libxtst-dev libxrandr-dev
|
||||
- sudo apt-get install libglu1-mesa-dev
|
||||
- sudo apt-get install mesa-common-dev
|
||||
- sudo apt-get install libglew-dev
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -y nasm
|
||||
- sudo apt-get install -y libmad0-dev
|
||||
- sudo apt-get install -y libgtk2.0-dev
|
||||
- sudo apt-get install -y binutils-dev
|
||||
- sudo apt-get install -y libasound-dev
|
||||
- sudo apt-get install -y libpulse-dev
|
||||
- sudo apt-get install -y libjack-dev
|
||||
- sudo apt-get install -y libc6-dev
|
||||
- sudo apt-get install -y libogg-dev
|
||||
- sudo apt-get install -y libvorbis-dev
|
||||
- sudo apt-get install -y libbz2-dev
|
||||
- sudo apt-get install -y zlib1g-dev
|
||||
- sudo apt-get install -y libjpeg8-dev
|
||||
- sudo apt-get install -y libpng12-dev
|
||||
- sudo apt-get install -y libxtst-dev libxrandr-dev
|
||||
- sudo apt-get install -y libglu1-mesa-dev
|
||||
- sudo apt-get install -y mesa-common-dev
|
||||
- sudo apt-get install -y libglew-dev
|
||||
|
||||
script:
|
||||
- ./autogen.sh
|
||||
|
||||
@@ -2,7 +2,13 @@ local Color1 = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;diffuse,Color1;effectclock,"music");
|
||||
OnCommand= function(self)
|
||||
self:xy(_screen.cx, _screen.cy):diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -1,16 +1,32 @@
|
||||
local Color1 = color(Var "Color1");
|
||||
|
||||
local a = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color1;effectclock,"music");
|
||||
OnCommand= function(self)
|
||||
self:cropto(_screen.w/2, _screen.h/2):diffuse(Color1)
|
||||
:effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=function(self)
|
||||
self:x(scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT)):y(scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM))
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
a .. { OnCommand=function(self)
|
||||
self:x(scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT)):y(scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM))
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
a .. { OnCommand=function(self)
|
||||
self:x(scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT)):y(scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM))
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -2,12 +2,25 @@ local Color1 = color(Var "Color1");
|
||||
local Color2 = color(Var "Color2");
|
||||
|
||||
local a1 = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color1;effectclock,"music");
|
||||
OnCommand= function(self)
|
||||
self:cropto(SCREEN_WIDTH/2,SCREEN_HEIGHT/2):diffuse(Color1)
|
||||
:effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
local a2 = LoadActor(Var "File2") .. {
|
||||
OnCommand=cmd(cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color2;effectclock,"music");
|
||||
OnCommand= function(self)
|
||||
self:cropto(SCREEN_WIDTH/2,SCREEN_HEIGHT/2):diffuse(Color2):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
@@ -15,8 +28,14 @@ local a2 = LoadActor(Var "File2") .. {
|
||||
local t = Def.ActorFrame {
|
||||
a1 .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a2 .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a2 .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a1 .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a2 .. { OnCommand=function(self)
|
||||
self:x(scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT)):y(scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM))
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
a1 .. { OnCommand=function(self)
|
||||
self:x(scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT)):y(scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM))
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -3,10 +3,18 @@ local Color2 = color(Var "Color2");
|
||||
|
||||
-- Alternating files being played back at once
|
||||
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;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;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;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;diffuse,Color2;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) };
|
||||
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) };
|
||||
LoadActor(Var "File2") .. {
|
||||
OnCommand=function(self)
|
||||
self: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)
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=function(self)
|
||||
self: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)
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
};
|
||||
|
||||
return t
|
||||
|
||||
@@ -4,14 +4,26 @@ local Color2 = color(Var "Color2");
|
||||
local t = Def.ActorFrame {};
|
||||
|
||||
t[#t+1] = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
if Var("File2") ~= nil then
|
||||
t[#t+1] = LoadActor(Var("File2")) .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color2;effectclock,"music";linear,1;diffusealpha,0);
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color2):effectclock("music"):linear(1):diffusealpha(0)
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -4,14 +4,26 @@ local Color2 = color(Var "Color2");
|
||||
local t = Def.ActorFrame {};
|
||||
|
||||
t[#t+1] = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
if Var("File2") ~= nil then
|
||||
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=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -1,16 +1,31 @@
|
||||
local Color1 = color(Var "Color1");
|
||||
|
||||
local a = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color1;zoomx,self:GetZoomX()*-1;zoomy,self:GetZoomY()*-1;effectclock,"music");
|
||||
OnCommand= function(self)
|
||||
self:cropto(SCREEN_WIDTH/2,SCREEN_HEIGHT/2):diffuse(Color1):zoomx(self:GetZoomX()*-1):zoomy(self:GetZoomY()*-1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=function(self)
|
||||
self:x(scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT)):y(scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM))
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
a .. { OnCommand=function(self)
|
||||
self:x(scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT)):y(scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM))
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
a .. { OnCommand=function(self)
|
||||
self:x(scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT)):y(scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM))
|
||||
if self.SetDecodeMovie then self:SetDecodeMovie(false) end
|
||||
end };
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -9,11 +9,21 @@ local t = Def.ActorFrame {
|
||||
self:scale_or_crop_background();
|
||||
self:diffuse(Color1)
|
||||
self:effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end;
|
||||
};
|
||||
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(blend,"BlendMode_Add";x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color2;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:blend("BlendMode_Add"):x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color2):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end;
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -6,7 +6,14 @@ local t = Def.ActorFrame {
|
||||
self:xy(SCREEN_CENTER_X,SCREEN_CENTER_Y)
|
||||
self:scale_or_crop_background()
|
||||
self:diffuse(Color1)
|
||||
if self.loop ~= nil then
|
||||
-- The playback rate in the simfile is used to set the update rate
|
||||
-- on the ActorFrame, but effectclock("music") causes the sprite to
|
||||
-- ignore the passed in delta time and use the music time instead.
|
||||
-- So this passes the update rate in to the texture. -Kyz
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
if self.loop then
|
||||
self:loop(false)
|
||||
-- make videos start at beginning to prevent sticking on last frame
|
||||
self:position(0)
|
||||
|
||||
@@ -7,6 +7,10 @@ local t = Def.ActorFrame {
|
||||
self:scale_or_crop_background();
|
||||
self:diffuse(Color1)
|
||||
self:effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end;
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
|
||||
@@ -3,7 +3,13 @@ local Color1 = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -3,7 +3,13 @@ local Color1 = color("0,0,1,1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -3,7 +3,13 @@ local Color1 = color("0,1,0,1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -3,7 +3,13 @@ local Color1 = color("1,0,0,1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -2,7 +2,13 @@ local Color1 = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;pause;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):pause():effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -10,6 +10,10 @@ local t = Def.ActorFrame {
|
||||
self:position(0)
|
||||
end
|
||||
self:effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end;
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
|
||||
@@ -3,7 +3,13 @@ local Color1 = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(diffuse,Color1;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -3,13 +3,25 @@ local Color2 = color(Var "Color2");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
LoadActor(Var "File2") .. {
|
||||
OnCommand=cmd(blend,"BlendMode_Add";x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,Color2;effectclock,"music");
|
||||
OnCommand=function(self)
|
||||
self:blend("BlendMode_Add"):x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scaletoclipped(SCREEN_WIDTH,SCREEN_HEIGHT):diffuse(Color2):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -4,14 +4,26 @@ local Color2 = color(Var "Color2");
|
||||
local t = Def.ActorFrame {};
|
||||
|
||||
t[#t+1] = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
OnCommand=function(self)
|
||||
self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color1):effectclock("music")
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
if Var("File2") ~= nil then
|
||||
t[#t+1] = LoadActor(Var("File2")) .. {
|
||||
OnCommand=cmd(blend,"BlendMode_Add";x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color2;effectclock,"music";linear,1;diffusealpha,0);
|
||||
OnCommand=function(self)
|
||||
self:blend("BlendMode_Add"):x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):scale_or_crop_background():diffuse(Color2):effectclock("music"):linear(1):diffusealpha(0)
|
||||
-- Explanation in StretchNoLoop.lua.
|
||||
if self.GetTexture then
|
||||
self:GetTexture():rate(self:GetParent():GetUpdateRate())
|
||||
end
|
||||
end,
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
Warning
|
||||
==
|
||||
Make sure you read README.md first if you have not.
|
||||
|
||||
Compiling StepMania
|
||||
==
|
||||
To use StepMania on your computer, it is first assumed that cmake is run (see README.md for more information). Then, follow the guide based on your operating system.
|
||||
|
||||
Windows
|
||||
===
|
||||
Using Visual Studio, simply build and it will place the .exe file in the correct directory.
|
||||
|
||||
Mac OS X
|
||||
===
|
||||
Using Xcode, simply build in Xcode and it will place the .app file in the correct directory.
|
||||
|
||||
Linux
|
||||
===
|
||||
Using the command line, simply type make and it will place stepmania and GtkModule.so (if requested) in the root StepMania directory. There is no more need to symlink the files.
|
||||
|
||||
Installing StepMania
|
||||
==
|
||||
Installing in this context refers to placing the folders and generated binary in a standard location based on your operating system.
|
||||
This guide assumes default install locations. If you want to change the initial location, pass in `-DCMAKE_INSTALL_PREFIX=/new/path/here` when configuring your local setup.
|
||||
|
||||
Windows
|
||||
===
|
||||
The default installation directory is `C:\Program Files (x86)\Stepmania 5`.
|
||||
|
||||
Mac OS X
|
||||
===
|
||||
The `StepMania.app` package can be copied to `/Applications` and it will work as expected.
|
||||
|
||||
Linux
|
||||
===
|
||||
After installing, run `sudo make install`. The files will be placed in the location specified: by default, that is now `/usr/local/stepmania-5.0`.
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
Warning
|
||||
==
|
||||
This is considered unstable. This may work on Windows and Mac. This is not guaranteed to work on Linux right now.
|
||||
|
||||
Use this at your own risk.
|
||||
|
||||
CMake Installation
|
||||
==
|
||||
There are two ways of working with cmake: the command line and the GUI.
|
||||
|
||||
CMake Command Line
|
||||
===
|
||||
|
||||
If you are unfamiliar with cmake, first run `cmake --help`. This will present a list of options and generators. The generators are used for setting up your project.
|
||||
|
||||
The following steps will assume you operate from the StepMania project's Build directory.
|
||||
|
||||
For the first setup, you will want to run this command:
|
||||
|
||||
`cmake -G {YourGeneratorHere} .. && cmake ..`
|
||||
|
||||
Replace {YourGeneratorHere} with one of the generator choices from `cmake --help`.
|
||||
|
||||
If any cmake project file changes, you can just run `cmake .. && cmake ..` to get up to date. If this by itself doesn't work, you may have to clean the cmake cache. Use `rm -rf CMakeCache.txt CMakeScripts/ CMakeFiles/ cmake_install.txt` to do that, and then run the generator command again.
|
||||
|
||||
The reason for running cmake at least twice is to make sure that all of the variables get set up appropriately.
|
||||
|
||||
Environment variables can be modified at this stage. If you want to pass `-ggdb` or any other flag that is not set up by default, utilize `CXXFLAGS` or any appropriate variable.
|
||||
|
||||
CMake GUI
|
||||
===
|
||||
|
||||
For those that use the GUI to work with cmake, you need to specify where the source code is and where the binaries will be built. The first one, counter-intuitively, is actually the parent directory of this one: the main StepMania directory. The second one for building can be this directory.
|
||||
|
||||
Upon setting the source and build directories, you should `Configure` the build. If no errors show up, you can hit `Generate` until none of the rows on the GUI are red.
|
||||
|
||||
If the cmake project file changes, you can just generate the build to get up to date. If this by itself doesn't work, you may have to clean the cmake cache. Go to File -> Delete Cache, and then run the `Configure` and `Generate` steps again.
|
||||
|
||||
Release vs Debug
|
||||
==
|
||||
|
||||
If you are generating makefiles with cmake, you will also need to specify your build type. Most users will want to use `RELEASE` while some developers may want to use `DEBUG`.
|
||||
|
||||
When generating your cmake files for the first time (or after any cache delete), pass in `-DCMAKE_BUILD_TYPE=Debug` for a debug build. We have `RelWithDbgInfo` and `MinSizeRel` available as well.
|
||||
|
||||
It is advised to clean your cmake cache if you switch builds.
|
||||
|
||||
Note that if you use an IDE like Visual Studio or Xcode, you do not need to worry about setting the build type. You can edit the build type directly in the IDE.
|
||||
|
||||
Last Words
|
||||
==
|
||||
|
||||
With that, you should be good to go. If there are still questions, view the resources on the parent directory's README.md file.
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
LICENSE
|
||||
=======
|
||||
|
||||
StepMania's source code and resulting binary is licensed under the MIT license. Go to http://opensource.org/licenses/MIT for more information.
|
||||
|
||||
A few sample songs were provided that can be distributed. They are under the CC-NC (Creative Commons Non-Commercial) license. Go to https://creativecommons.org/ for more information.
|
||||
|
||||
The FFMPEG codes (see https://www.ffmpeg.org/ for more) and the MAD library (see http://www.underbit.com/products/mad/ for more) use the GPL license. Go to http://www.gnu.org for more information.
|
||||
@@ -0,0 +1,50 @@
|
||||
function(sm_append_simple_target_property target property str)
|
||||
get_target_property(current_property ${target} ${property})
|
||||
if (current_property)
|
||||
list(APPEND current_property ${str})
|
||||
set_target_properties(${target} PROPERTIES ${property} "${current_property}")
|
||||
else()
|
||||
set_target_properties(${target} PROPERTIES ${property} ${str})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Borrowed from http://stackoverflow.com/a/7172941/445373
|
||||
# TODO: Upgrade to cmake 3.x so that this function is not needed.
|
||||
function(sm_join values glue output)
|
||||
string(REPLACE ";" "${glue}" _TMP_STR "${values}")
|
||||
set(${output} "${_TMP_STR}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(sm_add_compile_definition target def)
|
||||
sm_append_simple_target_property(${target} COMPILE_DEFINITIONS ${def})
|
||||
endfunction()
|
||||
|
||||
function(sm_add_compile_flag target flag)
|
||||
sm_append_simple_target_property(${target} COMPILE_FLAGS ${flag})
|
||||
endfunction()
|
||||
|
||||
function(sm_add_link_flag target flag)
|
||||
if (MSVC)
|
||||
# Use a modified form of sm_append_simple_target_property.
|
||||
get_target_property(current_property ${target} LINK_FLAGS)
|
||||
if (current_property)
|
||||
set_target_properties(${target} PROPERTIES LINK_FLAGS "${current_property} ${flag}")
|
||||
else()
|
||||
set_target_properties(${target} PROPERTIES LINK_FLAGS ${flag})
|
||||
endif()
|
||||
else()
|
||||
sm_append_simple_target_property(${target} LINK_FLAGS ${flag})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(disable_project_warnings projectName)
|
||||
if (NOT WITH_EXTERNAL_WARNINGS)
|
||||
if (MSVC)
|
||||
sm_add_compile_flag(${projectName} "/W0")
|
||||
elseif(APPLE)
|
||||
set_target_properties(${projectName} PROPERTIES XCODE_ATTRIBUTE_GCC_WARN_INHIBIT_ALL_WARNINGS "YES")
|
||||
else()
|
||||
set_target_properties(${projectName} PROPERTIES COMPILE_FLAGS "-w")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -0,0 +1,27 @@
|
||||
set(CPACK_PACKAGE_NAME "${SM_EXE_NAME}")
|
||||
set(CPACK_PACKAGE_VENDOR "StepMania")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Rhythm Game Simulator")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR "${SM_VERSION_MAJOR}")
|
||||
set(CPACK_PACKAGE_VERSION_MINOR "${SM_VERSION_MINOR}")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "${SM_VERSION_PATCH}")
|
||||
set(CPACK_PACKAGE_VERSION "${SM_VERSION_TRADITIONAL}")
|
||||
set(CPACK_NSIS_HELP_LINK "https://github.com/stepmania/stepmania/issues")
|
||||
set(CPACK_NSIS_URL_INFO_ABOUT "http://www.stepmania.com/")
|
||||
set(CPACK_RESOURCE_FILE_README "${SM_ROOT_DIR}/README.md")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${SM_BUILD_DIR}/license_install.txt")
|
||||
set(CPACK_PACKAGE_EXECUTABLES
|
||||
"${SM_EXE_NAME}" "StepMania ${SM_VERSION_MAJOR}"
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
|
||||
# By setting these install keys manually,
|
||||
# The default directory of "StepMania major.minor.patch" is lost.
|
||||
# This is currently done to maintain backwards compatibility.
|
||||
# However, removing these two will allow for multiple versions of StepMania
|
||||
# to be installed relatively cleanly.
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "StepMania ${SM_VERSION_MAJOR}")
|
||||
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "StepMania ${SM_VERSION_MAJOR}")
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
@@ -0,0 +1,46 @@
|
||||
# Prep options that are needed for each platform.
|
||||
option(WITH_NETWORKING "Build with networking support." ON)
|
||||
|
||||
# This option quiets warnings that are a part of external projects.
|
||||
option(WITH_EXTERNAL_WARNINGS "Build with warnings for all components, not just StepMania." OFF)
|
||||
|
||||
# This option is not yet working, but will likely default to ON in the future.
|
||||
option(WITH_LTO "Build with Link Time Optimization (LTO)/Whole Program Optimization." OFF)
|
||||
|
||||
# This option handles if we use SSE2 processing.
|
||||
option(WITH_SSE2 "Build with SSE2 Optimizations." ON)
|
||||
|
||||
# This option may go away in the future: if it does, JPEG will always be required.
|
||||
option(WITH_JPEG "Build with JPEG Image Support." ON)
|
||||
|
||||
# Turn this on to set this to a specific release mode.
|
||||
option(WITH_FULL_RELEASE "Build as a proper, full release." OFF)
|
||||
|
||||
# Turn this on to compile tomcrypt with no assembly data. This is a portable mode.
|
||||
option(WITH_PORTABLE_TOMCRYPT "Build with assembly/free tomcrypt, making it portable." OFF)
|
||||
|
||||
# Turn this on to not use the ROLC assembly featurs of tomcrypt.
|
||||
# If WITH_PORTABLE_TOMCRYPT is ON, this will automatically have no effect.
|
||||
option(WITH_NO_ROLC_TOMCRYPT "Build without the ROLC assembly instructions for tomcrypt. (Ignored by Apple builds)" OFF)
|
||||
|
||||
# Turn this option off to not use the GPL exclusive components.
|
||||
option(WITH_GPL_LIBS "Build with GPL libraries." ON)
|
||||
|
||||
if(WIN32)
|
||||
option(WITH_MINIMAID "Build with Mimimaid Lights Support." OFF)
|
||||
else()
|
||||
if(LINUX)
|
||||
option(WITH_FFMPEG "Build with FFMPEG." ON)
|
||||
# Builder beware: later versions of ffmpeg may break!
|
||||
option(WITH_SYSTEM_FFMPEG "Build with the system's FFMPEG." OFF)
|
||||
option(WITH_LIBVA "Build with libVa support for Video Acceleration." OFF)
|
||||
option(WITH_TTY "Build with Linux TTY Input Support." OFF)
|
||||
option(WITH_PROFILING "Build with Profiling Support." OFF)
|
||||
option(WITH_GLES2 "Build with OpenGL ES 2.0 Support." ON)
|
||||
option(WITH_GTK2 "Build with GTK2 Support." ON)
|
||||
option(WITH_OGG "Build with OGG/Vorbis Support." ON)
|
||||
option(WITH_MP3 "Build with MP3 Support." ON)
|
||||
option(WITH_PARALLEL_PORT "Build with Parallel Lights I/O Support." OFF)
|
||||
option(WITH_CRASH_HANDLER "Build with Crash Handler Support." ON)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,42 @@
|
||||
# From the CMake wiki, get the DirectX version needed.
|
||||
# This assumes default directories.
|
||||
|
||||
# Once loaded, the following are defined:
|
||||
# DIRECTX_FOUND
|
||||
# DIRECTX_INCLUDE_DIR
|
||||
# DIRECTX_LIBRARIES
|
||||
|
||||
if(NOT WIN32)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(DIRECTX_INCLUDE_SEARCH_PATHS
|
||||
# TODO: Do not be limited to x86 in the future.
|
||||
"C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include"
|
||||
"C:/DXSDK/Include"
|
||||
)
|
||||
|
||||
set(DIRECTX_LIBRARY_SEARCH_PATHS
|
||||
# TODO: Do not be limited to x86 in the future.
|
||||
"C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86"
|
||||
"C:/DXSDK/Include/Lib/x86"
|
||||
)
|
||||
|
||||
find_path(DIRECTX_INCLUDE_DIR
|
||||
NAMES "DxErr.h"
|
||||
PATHS ${DIRECTX_INCLUDE_SEARCH_PATHS}
|
||||
DOC "Where can DxErr.h be found?"
|
||||
)
|
||||
|
||||
find_library(DIRECTX_LIBRARIES
|
||||
NAMES "DxErr.lib" "d3dx9.lib"
|
||||
PATHS ${DIRECTX_LIBRARY_SEARCH_PATHS}
|
||||
DOC "Where can the DX libraries be found?"
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(DIRECTX DEFAULT_MSG DIRECTX_INCLUDE_DIR DIRECTX_LIBRARIES)
|
||||
|
||||
if(DIRECTX_FOUND)
|
||||
mark_as_advanced(DIRECTX_INCLUDE_DIR DIRECTX_LIBRARIES)
|
||||
endif()
|
||||
@@ -0,0 +1,224 @@
|
||||
# This was copied from the robotology/ycm project.
|
||||
|
||||
#.rst:
|
||||
# FindFFMPEG
|
||||
# ----------
|
||||
#
|
||||
# Find the native FFMPEG includes and library
|
||||
#
|
||||
# This module defines::
|
||||
#
|
||||
# FFMPEG_INCLUDE_DIR, where to find avcodec.h, avformat.h ...
|
||||
# FFMPEG_LIBRARIES, the libraries to link against to use FFMPEG.
|
||||
# FFMPEG_FOUND, If false, do not try to use FFMPEG.
|
||||
#
|
||||
# also defined, but not for general use are::
|
||||
#
|
||||
# FFMPEG_avformat_LIBRARY, where to find the FFMPEG avformat library.
|
||||
# FFMPEG_avcodec_LIBRARY, where to find the FFMPEG avcodec library.
|
||||
#
|
||||
# This is useful to do it this way so that we can always add more libraries
|
||||
# if needed to ``FFMPEG_LIBRARIES`` if ffmpeg ever changes...
|
||||
|
||||
#=============================================================================
|
||||
# Copyright: 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of YCM, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
# Originally from VTK project
|
||||
|
||||
|
||||
find_path(FFMPEG_INCLUDE_DIR1 avformat.h
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/ffmpeg
|
||||
$ENV{FFMPEG_DIR}/libavformat
|
||||
$ENV{FFMPEG_DIR}/include/libavformat
|
||||
$ENV{FFMPEG_DIR}/include/ffmpeg
|
||||
/usr/local/include/ffmpeg
|
||||
/usr/include/ffmpeg
|
||||
/usr/include/libavformat
|
||||
/usr/include/ffmpeg/libavformat
|
||||
/usr/local/include/libavformat
|
||||
)
|
||||
|
||||
find_path(FFMPEG_INCLUDE_DIR2 avutil.h
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/ffmpeg
|
||||
$ENV{FFMPEG_DIR}/libavutil
|
||||
$ENV{FFMPEG_DIR}/include/libavutil
|
||||
$ENV{FFMPEG_DIR}/include/ffmpeg
|
||||
/usr/local/include/ffmpeg
|
||||
/usr/include/ffmpeg
|
||||
/usr/include/libavutil
|
||||
/usr/include/ffmpeg/libavutil
|
||||
/usr/local/include/libavutil
|
||||
)
|
||||
|
||||
find_path(FFMPEG_INCLUDE_DIR3 avcodec.h
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/ffmpeg
|
||||
$ENV{FFMPEG_DIR}/libavcodec
|
||||
$ENV{FFMPEG_DIR}/include/libavcodec
|
||||
$ENV{FFMPEG_DIR}/include/ffmpeg
|
||||
/usr/local/include/ffmpeg
|
||||
/usr/include/ffmpeg
|
||||
/usr/include/libavcodec
|
||||
/usr/include/ffmpeg/libavcodec
|
||||
/usr/local/include/libavcodec
|
||||
)
|
||||
|
||||
find_path(FFMPEG_INCLUDE_DIR4 swscale.h
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/ffmpeg
|
||||
$ENV{FFMPEG_DIR}/libswscale
|
||||
$ENV{FFMPEG_DIR}/include/libswscale
|
||||
$ENV{FFMPEG_DIR}/include/ffmpeg
|
||||
/usr/local/include/ffmpeg
|
||||
/usr/include/ffmpeg
|
||||
/usr/include/libswscale
|
||||
/usr/include/ffmpeg/libswscale
|
||||
/usr/local/include/libswscale
|
||||
)
|
||||
|
||||
find_path(FFMPEG_INCLUDE_DIR5 avdevice.h
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/ffmpeg
|
||||
$ENV{FFMPEG_DIR}/libavdevice
|
||||
$ENV{FFMPEG_DIR}/include/libavdevice
|
||||
$ENV{FFMPEG_DIR}/include/ffmpeg
|
||||
/usr/local/include/ffmpeg
|
||||
/usr/include/ffmpeg
|
||||
/usr/include/libavdevice
|
||||
/usr/include/ffmpeg/libavdevice
|
||||
/usr/local/include/libavdevice
|
||||
)
|
||||
|
||||
if(FFMPEG_INCLUDE_DIR1)
|
||||
if(FFMPEG_INCLUDE_DIR2)
|
||||
if(FFMPEG_INCLUDE_DIR3)
|
||||
set(FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR1}
|
||||
${FFMPEG_INCLUDE_DIR2}
|
||||
${FFMPEG_INCLUDE_DIR3})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(FFMPEG_INCLUDE_DIR4)
|
||||
set(FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR}
|
||||
${FFMPEG_INCLUDE_DIR4})
|
||||
endif()
|
||||
|
||||
if(FFMPEG_INCLUDE_DIR5)
|
||||
set(FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR}
|
||||
${FFMPEG_INCLUDE_DIR5}
|
||||
${FFMPEG_INCLUDE_DIR5}/..)
|
||||
endif()
|
||||
|
||||
find_library(FFMPEG_avformat_LIBRARY avformat
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/lib
|
||||
$ENV{FFMPEG_DIR}/libavformat
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
|
||||
find_library(FFMPEG_avcodec_LIBRARY avcodec
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/lib
|
||||
$ENV{FFMPEG_DIR}/libavcodec
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
|
||||
find_library(FFMPEG_avutil_LIBRARY avutil
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/lib
|
||||
$ENV{FFMPEG_DIR}/libavutil
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
|
||||
if(NOT DISABLE_SWSCALE)
|
||||
find_library(FFMPEG_swscale_LIBRARY swscale
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/lib
|
||||
$ENV{FFMPEG_DIR}/libswscale
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
endif(NOT DISABLE_SWSCALE)
|
||||
|
||||
find_library(FFMPEG_avdevice_LIBRARY avdevice
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/lib
|
||||
$ENV{FFMPEG_DIR}/libavdevice
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
|
||||
find_library(_FFMPEG_z_LIBRARY_ z
|
||||
$ENV{FFMPEG_DIR}
|
||||
$ENV{FFMPEG_DIR}/lib
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
|
||||
|
||||
|
||||
if(FFMPEG_INCLUDE_DIR)
|
||||
if(FFMPEG_avformat_LIBRARY)
|
||||
if(FFMPEG_avcodec_LIBRARY)
|
||||
if(FFMPEG_avutil_LIBRARY)
|
||||
set(FFMPEG_FOUND "YES")
|
||||
set(FFMPEG_LIBRARIES ${FFMPEG_avformat_LIBRARY}
|
||||
${FFMPEG_avcodec_LIBRARY}
|
||||
${FFMPEG_avutil_LIBRARY}
|
||||
)
|
||||
if(FFMPEG_swscale_LIBRARY)
|
||||
set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES}
|
||||
${FFMPEG_swscale_LIBRARY}
|
||||
)
|
||||
endif()
|
||||
if(FFMPEG_avdevice_LIBRARY)
|
||||
set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES}
|
||||
${FFMPEG_avdevice_LIBRARY}
|
||||
)
|
||||
endif()
|
||||
if(_FFMPEG_z_LIBRARY_)
|
||||
set( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES}
|
||||
${_FFMPEG_z_LIBRARY_}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
FFMPEG_INCLUDE_DIR
|
||||
FFMPEG_INCLUDE_DIR1
|
||||
FFMPEG_INCLUDE_DIR2
|
||||
FFMPEG_INCLUDE_DIR3
|
||||
FFMPEG_INCLUDE_DIR4
|
||||
FFMPEG_INCLUDE_DIR5
|
||||
FFMPEG_avformat_LIBRARY
|
||||
FFMPEG_avcodec_LIBRARY
|
||||
FFMPEG_avutil_LIBRARY
|
||||
FFMPEG_swscale_LIBRARY
|
||||
FFMPEG_avdevice_LIBRARY
|
||||
_FFMPEG_z_LIBRARY_
|
||||
)
|
||||
|
||||
# Set package properties if FeatureSummary was included
|
||||
if(COMMAND set_package_properties)
|
||||
set_package_properties(FFMPEG PROPERTIES DESCRIPTION "A complete, cross-platform solution to record, convert and stream audio and video")
|
||||
set_package_properties(FFMPEG PROPERTIES URL "http://ffmpeg.org/")
|
||||
endif()
|
||||
@@ -0,0 +1,61 @@
|
||||
# This was borrowed from the gnuradio repository.
|
||||
|
||||
# - Try to find jack-2.6
|
||||
# Once done this will define
|
||||
#
|
||||
# JACK_FOUND - system has jack
|
||||
# JACK_INCLUDE_DIRS - the jack include directory
|
||||
# JACK_LIBRARIES - Link these to use jack
|
||||
# JACK_DEFINITIONS - Compiler switches required for using jack
|
||||
#
|
||||
# Copyright (c) 2008 Andreas Schneider <[email protected]>
|
||||
# Modified for other libraries by Lasse Kärkkäinen <tronic>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the New
|
||||
# BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
#
|
||||
if (JACK_LIBRARIES AND JACK_INCLUDE_DIRS)
|
||||
# in cache already
|
||||
set(JACK_FOUND TRUE)
|
||||
else (JACK_LIBRARIES AND JACK_INCLUDE_DIRS)
|
||||
# use pkg-config to get the directories and then use these values
|
||||
# in the FIND_PATH() and FIND_LIBRARY() calls
|
||||
if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
|
||||
include(UsePkgConfig)
|
||||
pkgconfig(jack _JACK_INCLUDEDIR _JACK_LIBDIR _JACK_LDFLAGS _JACK_CFLAGS)
|
||||
else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
|
||||
find_package(PkgConfig)
|
||||
if (PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(_JACK jack)
|
||||
endif (PKG_CONFIG_FOUND)
|
||||
endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
|
||||
find_path(JACK_INCLUDE_DIR
|
||||
NAMES
|
||||
jack/jack.h
|
||||
PATHS
|
||||
${_JACK_INCLUDEDIR}
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/opt/local/include
|
||||
/sw/include
|
||||
)
|
||||
|
||||
find_library(JACK_LIBRARY
|
||||
NAMES
|
||||
jack
|
||||
PATHS
|
||||
${_JACK_LIBDIR}
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/local/lib
|
||||
/sw/lib
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(JACK DEFAULT_MSG
|
||||
JACK_INCLUDE_DIRS JACK_LIBRARIES)
|
||||
|
||||
# show the JACK_INCLUDE_DIRS and JACK_LIBRARIES variables only in the advanced view
|
||||
mark_as_advanced(JACK_INCLUDE_DIRS JACK_LIBRARIES)
|
||||
endif (JACK_LIBRARIES AND JACK_INCLUDE_DIRS)
|
||||
@@ -0,0 +1,9 @@
|
||||
find_path(LIBMAD_INCLUDE_DIR mad.h)
|
||||
|
||||
find_library(LIBMAD_LIBRARY mad)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LIBMAD DEFAULT_MSG LIBMAD_LIBRARY LIBMAD_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(LIBMAD_LIBRARY LIBMAD_INCLUDE_DIR)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# Copied from marsyas, which is also copied from fqterm.
|
||||
# Further modifications are done.
|
||||
|
||||
IF(UNIX)
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
SET(OSS_HDR_NAME "linux/soundcard.h")
|
||||
ELSE(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
SET(OSS_HDR_NAME "sys/soundcard.h")
|
||||
ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
ENDIF(UNIX)
|
||||
|
||||
FIND_PATH(OSS_INCLUDE_DIR "${OSS_HDR_NAME}"
|
||||
"/usr/include" "/usr/local/include"
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(OSS DEFAULT_MSG OSS_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED (
|
||||
OSS_FOUND
|
||||
OSS_INCLUDE_DIR
|
||||
)
|
||||
@@ -0,0 +1,17 @@
|
||||
# Borrowed from code.openhub.net
|
||||
|
||||
# Base Io build system
|
||||
# Written by Jeremy Tregunna <[email protected]>
|
||||
#
|
||||
# Find libogg.
|
||||
|
||||
FIND_PATH(OGG_INCLUDE_DIR ogg/ogg.h)
|
||||
|
||||
SET(OGG_NAMES ${OGG_NAMES} ogg libogg)
|
||||
FIND_LIBRARY(OGG_LIBRARY NAMES ${OGG_NAMES} PATH)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OGG DEFAULT_MSG OGG_LIBRARY OGG_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(OGG_LIBRARY OGG_INCLUDE_DIR)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# Find pcre using standard tools.
|
||||
|
||||
# The following will be set:
|
||||
|
||||
# PCRE_INCLUDE_DIR
|
||||
# PCRE_LIBRARY
|
||||
# PCRE_FOUND
|
||||
|
||||
find_path(PCRE_INCLUDE_DIR NAMES pcre.h)
|
||||
find_library(PCRE_LIBRARY NAMES pcre)
|
||||
|
||||
# Properly pass QUIETLY and REQUIRED.
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(PCRE DEFAULT_MSG PCRE_INCLUDE_DIR PCRE_LIBRARY)
|
||||
|
||||
mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARY)
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
# This comes from the PulseAudio QT project.
|
||||
|
||||
# Try to find the PulseAudio library
|
||||
#
|
||||
# Once done this will define:
|
||||
#
|
||||
# PULSEAUDIO_FOUND - system has the PulseAudio library
|
||||
# PULSEAUDIO_INCLUDE_DIR - the PulseAudio include directory
|
||||
# PULSEAUDIO_LIBRARY - the libraries needed to use PulseAudio
|
||||
#
|
||||
# Copyright (c) 2008, Matthias Kretz, <[email protected]>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
#
|
||||
# There was no COPYING-CMAKE-SCRIPTS file in the repo in question. --wolfman
|
||||
|
||||
if (PULSEAUDIO_INCLUDE_DIR AND PULSEAUDIO_LIBRARY)
|
||||
# Already in cache, be silent
|
||||
set(PULSEAUDIO_FIND_QUIETLY TRUE)
|
||||
endif (PULSEAUDIO_INCLUDE_DIR AND PULSEAUDIO_LIBRARY)
|
||||
|
||||
if (NOT WIN32)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PULSEAUDIO libpulse)
|
||||
if(PULSEAUDIO_FOUND)
|
||||
set(PULSEAUDIO_LIBRARY ${PULSEAUDIO_LIBRARIES} CACHE FILEPATH "Path to the PulseAudio library")
|
||||
set(PULSEAUDIO_INCLUDE_DIR ${PULSEAUDIO_INCLUDEDIR} CACHE PATH "Path to the PulseAudio includes")
|
||||
# PULSEAUDIO_DEFINITIONS - Compiler switches required for using PulseAudio
|
||||
# set(PULSEAUDIO_DEFINITIONS ${PULSEAUDIO_CFLAGS})
|
||||
endif(PULSEAUDIO_FOUND)
|
||||
endif (NOT WIN32)
|
||||
|
||||
if (NOT PULSEAUDIO_INCLUDE_DIR)
|
||||
FIND_PATH(PULSEAUDIO_INCLUDE_DIR pulse/pulseaudio.h)
|
||||
endif (NOT PULSEAUDIO_INCLUDE_DIR)
|
||||
|
||||
if (NOT PULSEAUDIO_LIBRARY)
|
||||
FIND_LIBRARY(PULSEAUDIO_LIBRARY NAMES pulse)
|
||||
endif (NOT PULSEAUDIO_LIBRARY)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(PULSEAUDIO DEFAULT_MSG
|
||||
PULSEAUDIO_INCLUDE_DIR PULSEAUDIO_LIBRARY)
|
||||
|
||||
mark_as_advanced(PULSEAUDIO_INCLUDE_DIR PULSEAUDIO_LIBRARY)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# Find the Video Acceleration library.
|
||||
|
||||
# The following will be set:
|
||||
|
||||
# VA_INCLUDE_DIR
|
||||
# VA_LIBRARY
|
||||
# VA_FOUND
|
||||
|
||||
find_path(VA_INCLUDE_DIR NAMES va/va.h)
|
||||
|
||||
set(VA_NAMES "${VA_NAMES}" "va" "libva")
|
||||
find_library(VA_LIBRARY NAMES ${VA_NAMES})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VA DEFAULT_MSG VA_LIBRARY VA_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(VA_LIBRARY VA_INCLUDE_DIR)
|
||||
@@ -0,0 +1,17 @@
|
||||
# Borrowed from code.openhub.net
|
||||
|
||||
# Base Io build system
|
||||
# Written by Jeremy Tregunna <[email protected]>
|
||||
#
|
||||
# Find libvorbis.
|
||||
|
||||
FIND_PATH(VORBIS_INCLUDE_DIR vorbis/codec.h)
|
||||
|
||||
SET(VORBIS_NAMES ${VORBIS_NAMES} vorbis libvorbis)
|
||||
FIND_LIBRARY(VORBIS_LIBRARY NAMES ${VORBIS_NAMES} PATH)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VORBIS DEFAULT_MSG VORBIS_LIBRARY VORBIS_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(VORBIS_LIBRARY VORBIS_INCLUDE_DIR)
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
# Inspired by Jeremy Tregunna's cmake work <[email protected]>
|
||||
#
|
||||
# Find libvorbisfile.
|
||||
|
||||
FIND_PATH(VORBISFILE_INCLUDE_DIR vorbis/vorbisfile.h)
|
||||
|
||||
SET(VORBISFILE_NAMES ${VORBISFILE_NAMES} vorbisfile libvorbisfile)
|
||||
FIND_LIBRARY(VORBISFILE_LIBRARY NAMES ${VORBISFILE_NAMES} PATH)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VORBISFILE DEFAULT_MSG VORBISFILE_LIBRARY VORBISFILE_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(VORBISFILE_LIBRARY VORBISFILE_INCLUDE_DIR)
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
# This is borrowed from FreeRDP.
|
||||
# - Find XRANDR
|
||||
# Find the XRANDR libraries
|
||||
#
|
||||
# This module defines the following variables:
|
||||
# XRANDR_FOUND - true if XRANDR_INCLUDE_DIR & XRANDR_LIBRARY are found
|
||||
# XRANDR_LIBRARIES - Set when XRANDR_LIBRARY is found
|
||||
# XRANDR_INCLUDE_DIRS - Set when XRANDR_INCLUDE_DIR is found
|
||||
#
|
||||
# XRANDR_INCLUDE_DIR - where to find Xrandr.h, etc.
|
||||
# XRANDR_LIBRARY - the XRANDR library
|
||||
#
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2012 Alam Arias <[email protected]>
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#=============================================================================
|
||||
|
||||
find_path(XRANDR_INCLUDE_DIRS NAMES X11/extensions/Xrandr.h
|
||||
PATH_SUFFIXES X11/extensions
|
||||
PATHS /opt/X11/include
|
||||
DOC "The XRANDR include directory"
|
||||
)
|
||||
|
||||
find_library(XRANDR_LIBRARIES NAMES Xrandr
|
||||
PATHS /opt/X11/lib
|
||||
DOC "The XRANDR library"
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XRANDR DEFAULT_MSG XRANDR_LIBRARIES XRANDR_INCLUDE_DIRS)
|
||||
|
||||
mark_as_advanced(XRANDR_INCLUDE_DIRS XRANDR_LIBRARIES)
|
||||
@@ -0,0 +1,13 @@
|
||||
# Try to find the yasm assembly program.
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_program(YASM_EXECUTABLE yasm
|
||||
HINTS $ENV{YASM_ROOT} ${YASM_ROOT}
|
||||
PATH_SUFFIXES bin
|
||||
)
|
||||
|
||||
find_package_handle_standard_args(yasm DEFAULT_MSG YASM_EXECUTABLE)
|
||||
|
||||
mark_as_advanced(YASM_EXECUTABLE)
|
||||
|
||||
@@ -0,0 +1,351 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
project(StepMania)
|
||||
|
||||
# Include the macros and functions.
|
||||
include(CMake/CMakeMacros.cmake)
|
||||
|
||||
# Set up helper variables for future configuring.
|
||||
set(SM_CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
|
||||
set(SM_EXTERN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern")
|
||||
set(SM_BUNDLE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bundle")
|
||||
set(SM_XCODE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Xcode")
|
||||
set(SM_PROGRAM_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Program")
|
||||
set(SM_BUILD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Build")
|
||||
set(SM_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
set(SM_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
# TODO: Reconsile the OS dependent naming scheme.
|
||||
if (WIN32 OR APPLE)
|
||||
set(SM_EXE_NAME "StepMania")
|
||||
else()
|
||||
set(SM_EXE_NAME "stepmania")
|
||||
endif()
|
||||
|
||||
# Some OS specific helpers.
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(LINUX TRUE)
|
||||
else()
|
||||
set(LINUX FALSE)
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
set(MACOSX TRUE)
|
||||
else()
|
||||
set(MACOSX FALSE)
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "BSD")
|
||||
set(BSD TRUE)
|
||||
else()
|
||||
set(BSD FALSE)
|
||||
endif()
|
||||
|
||||
# Allow for finding our libraries in a standard location.
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/CMake/Modules/")
|
||||
|
||||
include("CMake/DefineOptions.cmake")
|
||||
|
||||
# Set up version numbers according to the new scheme.
|
||||
set(SM_VERSION_MAJOR 5)
|
||||
set(SM_VERSION_MINOR 0)
|
||||
set(SM_VERSION_PATCH 7)
|
||||
set(SM_VERSION_TRADITIONAL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}.${SM_VERSION_PATCH}")
|
||||
|
||||
execute_process(COMMAND git rev-parse --short HEAD
|
||||
WORKING_DIRECTORY "${SM_ROOT_DIR}"
|
||||
OUTPUT_VARIABLE SM_VERSION_GIT_HASH
|
||||
RESULT_VARIABLE ret
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
if(NOT (ret STREQUAL "0"))
|
||||
set(SM_VERSION_GIT_HASH "UNKNOWN")
|
||||
set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-${SM_VERSION_GIT_HASH}")
|
||||
else()
|
||||
set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-git-${SM_VERSION_GIT_HASH}")
|
||||
endif()
|
||||
|
||||
# Put the predefined targets in separate groups.
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
# Dependencies go here.
|
||||
set(ENDIANNESS "ENDIAN_LITTLE")
|
||||
if(WIN32)
|
||||
set(HAS_OGG TRUE)
|
||||
set(HAS_MP3 TRUE)
|
||||
set(SYSTEM_PCRE_FOUND FALSE)
|
||||
find_package(DirectX REQUIRED)
|
||||
|
||||
# FFMPEG...it can be evil.
|
||||
find_library(LIB_SWSCALE NAMES "swscale"
|
||||
PATHS "${SM_EXTERN_DIR}/ffmpeg/lib" NO_DEFAULT_PATH
|
||||
)
|
||||
get_filename_component(LIB_SWSCALE ${LIB_SWSCALE} NAME)
|
||||
|
||||
find_library(LIB_AVCODEC NAMES "avcodec"
|
||||
PATHS "${SM_EXTERN_DIR}/ffmpeg/lib" NO_DEFAULT_PATH
|
||||
)
|
||||
get_filename_component(LIB_AVCODEC ${LIB_AVCODEC} NAME)
|
||||
|
||||
find_library(LIB_AVFORMAT NAMES "avformat"
|
||||
PATHS "${SM_EXTERN_DIR}/ffmpeg/lib" NO_DEFAULT_PATH
|
||||
)
|
||||
get_filename_component(LIB_AVFORMAT ${LIB_AVFORMAT} NAME)
|
||||
|
||||
find_library(LIB_AVUTIL NAMES "avutil"
|
||||
PATHS "${SM_EXTERN_DIR}/ffmpeg/lib" NO_DEFAULT_PATH
|
||||
)
|
||||
get_filename_component(LIB_AVUTIL ${LIB_AVUTIL} NAME)
|
||||
elseif(MACOSX)
|
||||
set(HAS_OGG TRUE)
|
||||
set(HAS_MP3 TRUE)
|
||||
set(SYSTEM_PCRE_FOUND FALSE)
|
||||
set(WITH_CRASH_HANDLER TRUE)
|
||||
# Apple Archs needs to be 32-bit for now.
|
||||
# When SDL2 is introduced, this may change.
|
||||
set(CMAKE_OSX_ARCHITECTURES "i386")
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6")
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET_FULL "10.6.8")
|
||||
|
||||
find_library(MAC_FRAME_ACCELERATE Accelerate ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_APPKIT AppKit ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_AUDIOTOOLBOX AudioToolbox ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_AUDIOUNIT AudioUnit ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_CARBON Carbon ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_COCOA Cocoa ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_COREAUDIO CoreAudio ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_COREFOUNDATION CoreFoundation ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_CORESERVICES CoreServices ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_FOUNDATION Foundation ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_IOKIT IOKit ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_OPENGL OpenGL ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
find_library(MAC_FRAME_QUICKTIME QuickTime ${CMAKE_SYSTEM_FRAMEWORK_PATH})
|
||||
|
||||
mark_as_advanced(
|
||||
MAC_FRAME_ACCELERATE
|
||||
MAC_FRAME_APPKIT
|
||||
MAC_FRAME_AUDIOTOOLBOX
|
||||
MAC_FRAME_AUDIOUNIT
|
||||
MAC_FRAME_CARBON
|
||||
MAC_FRAME_COCOA
|
||||
MAC_FRAME_COREAUDIO
|
||||
MAC_FRAME_COREFOUNDATION
|
||||
MAC_FRAME_CORESERVICES
|
||||
MAC_FRAME_FOUNDATION
|
||||
MAC_FRAME_IOKIT
|
||||
MAC_FRAME_OPENGL
|
||||
MAC_FRAME_QUICKTIME
|
||||
)
|
||||
elseif(LINUX)
|
||||
include(TestBigEndian)
|
||||
include(ExternalProject)
|
||||
|
||||
if(NOT WITH_GPL_LIBS)
|
||||
message("Disabling GPL exclusive libraries: no MP3 support.")
|
||||
set(WITH_MP3 OFF)
|
||||
endif()
|
||||
|
||||
if(WITH_GTK2)
|
||||
find_package("GTK2" 2.0)
|
||||
if (${GTK2_FOUND})
|
||||
set(HAS_GTK2 TRUE)
|
||||
else()
|
||||
set(HAS_GTK2 FALSE)
|
||||
message("GTK2 was not found on your system. There will be no loading window.")
|
||||
endif()
|
||||
else()
|
||||
set(HAS_GTK2 FALSE)
|
||||
endif()
|
||||
|
||||
find_package(X11)
|
||||
|
||||
find_package(Pcre)
|
||||
set(SYSTEM_PCRE_FOUND ${PCRE_FOUND})
|
||||
|
||||
find_package("BZip2")
|
||||
if (NOT(${BZIP2_FOUND}))
|
||||
message(FATAL_ERROR "Bzip2 support required.")
|
||||
endif()
|
||||
|
||||
find_package("ZLIB")
|
||||
if (NOT(${ZLIB_FOUND}))
|
||||
message(FATAL_ERROR "zlib support required.")
|
||||
endif()
|
||||
|
||||
find_library(DL_LIBRARY dl)
|
||||
if(${LIBDL_FOUND})
|
||||
set(HAS_LIBDL TRUE)
|
||||
else()
|
||||
set(HAS_LIBDL FALSE)
|
||||
endif()
|
||||
|
||||
find_package(Xrandr)
|
||||
if (${XRANDR_FOUND})
|
||||
set(HAS_XRANDR TRUE)
|
||||
else()
|
||||
set(HAX_XRANDR FALSE)
|
||||
endif()
|
||||
|
||||
if (WITH_OGG)
|
||||
find_package(Ogg)
|
||||
find_package(Vorbis)
|
||||
find_package(VorbisFile)
|
||||
|
||||
if(NOT (OGG_FOUND AND VORBIS_FOUND AND VORBISFILE_FOUND) )
|
||||
message(FATAL_ERROR "Not all vorbis libraries were found. If you wish to skip vorbis support, set WITH_OGG to OFF when configuring.")
|
||||
else()
|
||||
set(HAS_OGG TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (WITH_MP3)
|
||||
find_package(Mad)
|
||||
if(NOT LIBMAD_FOUND)
|
||||
message(FATAL_ERROR "Libmad library not found. If you wish to skip mp3 support, set WITH_MP3 to OFF when configuring.")
|
||||
else()
|
||||
set(HAS_MP3 TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(PulseAudio)
|
||||
if (PULSEAUDIO_FOUND)
|
||||
set(HAS_PULSE TRUE)
|
||||
else()
|
||||
set(HAS_PULSE FALSE)
|
||||
endif()
|
||||
|
||||
find_package(ALSA)
|
||||
if (ALSA_FOUND)
|
||||
set(HAS_ALSA TRUE)
|
||||
else()
|
||||
set(HAS_ALSA FALSE)
|
||||
endif()
|
||||
|
||||
find_package(JACK)
|
||||
if (JACK_FOUND)
|
||||
set(HAS_JACK TRUE)
|
||||
else()
|
||||
set(HAS_JACK FALSE)
|
||||
endif()
|
||||
|
||||
find_package(OSS)
|
||||
if (OSS_FOUND)
|
||||
set(HAS_OSS TRUE)
|
||||
else()
|
||||
set(HAS_OSS FALSE)
|
||||
endif()
|
||||
|
||||
if(NOT OSS_FOUND AND NOT JACK_FOUND AND NOT ALSA_FOUND AND NOT PULSE_FOUND)
|
||||
message(FATAL_ERROR "No sound libraries found. You will require at least one.")
|
||||
else()
|
||||
message(STATUS "-- At least one sound library was found. Do not worry if any were not found at this stage.")
|
||||
endif()
|
||||
|
||||
find_package(Threads)
|
||||
if (${Threads_FOUND})
|
||||
set(HAS_PTHREAD TRUE)
|
||||
else()
|
||||
set(HAS_PTHREAD FALSE)
|
||||
endif()
|
||||
|
||||
find_package(yasm)
|
||||
if (NOT YASM_FOUND)
|
||||
message("YASM was not found. Please install if you wish for ffmpeg support.")
|
||||
set(WITH_FFMPEG OFF)
|
||||
endif()
|
||||
|
||||
if(WITH_FFMPEG)
|
||||
if(WITH_LIBVA)
|
||||
find_package("Va")
|
||||
endif()
|
||||
|
||||
if (WITH_SYSTEM_FFMPEG)
|
||||
find_package("FFMPEG")
|
||||
if(NOT FFMPEG_FOUND)
|
||||
message(FATAL_ERROR "System ffmpeg not found! Either install the libraries or remove the argument, then try again.")
|
||||
else()
|
||||
|
||||
message(STATUS "-- Warning! Your version of ffmpeg may be too high! If you want to use the system ffmpeg, clear your cmake cache and do not include the system ffmpeg argument.")
|
||||
set(HAS_FFMPEG TRUE)
|
||||
endif()
|
||||
else()
|
||||
set(SM_FFMPEG_VERSION "2.1.3")
|
||||
set(SM_FFMPEG_SRC_LIST "${SM_EXTERN_DIR}" "/ffmpeg-linux-" "${SM_FFMPEG_VERSION}")
|
||||
sm_join("${SM_FFMPEG_SRC_LIST}" "" SM_FFMPEG_SRC_DIR)
|
||||
set(SM_FFMPEG_ROOT "${CMAKE_BINARY_DIR}/ffmpeg-prefix/src/ffmpeg-build")
|
||||
list(APPEND FFMPEG_CONFIGURE
|
||||
"${SM_FFMPEG_SRC_DIR}/configure"
|
||||
"--disable-programs"
|
||||
"--disable-doc"
|
||||
"--disable-avdevice"
|
||||
"--disable-swresample"
|
||||
"--disable-postproc"
|
||||
"--disable-avfilter"
|
||||
"--disable-shared"
|
||||
"--enable-static"
|
||||
)
|
||||
if(WITH_GPL_LIBS)
|
||||
list(APPEND FFMPEG_CONFIGURE
|
||||
"--enable-gpl"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (NOT WITH_EXTERNAL_WARNINGS)
|
||||
list(APPEND FFMPEG_CONFIGURE
|
||||
"--extra-cflags=-w"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (IS_DIRECTORY "${SM_FFMPEG_SRC_DIR}")
|
||||
externalproject_add("ffmpeg"
|
||||
SOURCE_DIR "${SM_FFMPEG_SRC_DIR}"
|
||||
CONFIGURE_COMMAND ${FFMPEG_CONFIGURE}
|
||||
BUILD_COMMAND "make"
|
||||
UPDATE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
)
|
||||
else()
|
||||
# --shlibdir=$our_installdir/stepmania-$VERSION
|
||||
externalproject_add("ffmpeg"
|
||||
DOWNLOAD_COMMAND git clone "--branch" "n${SM_FFMPEG_VERSION}" "--depth" "1" "git://source.ffmpeg.org/ffmpeg.git" "${SM_FFMPEG_SRC_DIR}"
|
||||
CONFIGURE_COMMAND "${FFMPEG_CONFIGURE}"
|
||||
BUILD_COMMAND "make"
|
||||
UPDATE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
)
|
||||
endif()
|
||||
set(HAS_FFMPEG TRUE)
|
||||
endif()
|
||||
else()
|
||||
set(HAS_FFMPEG FALSE)
|
||||
endif()
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
if (NOT ${OPENGL_FOUND})
|
||||
message(FATAL_ERROR "OpenGL required to compile StepMania.")
|
||||
endif()
|
||||
|
||||
find_package(GLEW REQUIRED)
|
||||
if (NOT ${GLEW_FOUND})
|
||||
message(FATAL_ERROR "GLEW required to compile StepMania.")
|
||||
endif()
|
||||
|
||||
test_big_endian(BIGENDIAN)
|
||||
if (${BIGENDIAN})
|
||||
set(ENDIANNESS "ENDIAN_BIG")
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
# The external libraries need to be included.
|
||||
add_subdirectory(extern)
|
||||
|
||||
# The internal libraries and eventual executable to be used.
|
||||
add_subdirectory(src)
|
||||
|
||||
# Define installer based items for cpack.
|
||||
include("CMake/CPackSetup.cmake")
|
||||
@@ -0,0 +1,84 @@
|
||||
StepMania 5 Language Changelog
|
||||
________________________________________________________________________________
|
||||
The StepMania 5 Language Changelog covers all language strings added after
|
||||
StepMania 5.0.6. This is to inform translators of strings that need to be
|
||||
translated from English to other languages.
|
||||
________________________________________________________________________________
|
||||
|
||||
Strings are listed by the section of the language file they are in.
|
||||
One string is listed per line, to minimize confusion.
|
||||
Example:
|
||||
|
||||
* [ScreenDebugOverlay] Mute actions
|
||||
Mute actions on
|
||||
Mute actions off
|
||||
|
||||
This means that three strings were added to the "ScreenDebugOverlay" section,
|
||||
"Mute actions", "Mute actions on", and "Mute actions off".
|
||||
|
||||
|
||||
2015/04/08
|
||||
----------
|
||||
* [OptionExplanations] EditClearPromptThreshold
|
||||
HarshHotLifePenalty
|
||||
* [OptionTitles] EditClearPromptThreshold
|
||||
HarshHotLifePenalty
|
||||
* [ScreenEdit] Are you sure you want to clear %d notes?
|
||||
|
||||
2015/04/04 (Day not found)
|
||||
----------
|
||||
* [OptionNames] 1m
|
||||
2m
|
||||
2nd
|
||||
4m
|
||||
* [OptionTitles] All timing
|
||||
BPM changes
|
||||
Combo segments
|
||||
Delays
|
||||
Labels
|
||||
Paste timing from clipboard
|
||||
Scroll segments
|
||||
Shift timing in region down
|
||||
Shift timing in region up
|
||||
Speed segments
|
||||
Stops
|
||||
Tickcount
|
||||
Time Signatures
|
||||
Warps
|
||||
* [ScreenTextEntry] "%s" is an invalid integer value.
|
||||
|
||||
2015/04/02
|
||||
----------
|
||||
* [OptionTitles] Preview
|
||||
* [ScreenEdit] Enter a preview file.
|
||||
* [SongUtil] The preview file '%s' does not exist.
|
||||
|
||||
================================================================================
|
||||
StepMania 5.0.7 | 20150401
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
2015/03/27
|
||||
----------
|
||||
* [OptionExplanations] AllowSongDeletion
|
||||
* [OptionTitles] AllowSongDeletion
|
||||
* [ScreenSelectMusic] PermanentlyDelete
|
||||
|
||||
2015/03/02
|
||||
----------
|
||||
* [OptionTitles] Music File
|
||||
* [ScreenEdit] Enter the music file for this chart.
|
||||
* [SongManager] The music file '%s' does not exist.
|
||||
|
||||
2015/02/27
|
||||
----------
|
||||
* [ScreenDebugOverlay] Mute actions
|
||||
Mute actions on
|
||||
Mute actions off
|
||||
|
||||
2015/02/22
|
||||
----------
|
||||
* [EditMenuAction] LoadAutosave
|
||||
|
||||
2015/02/17
|
||||
----------
|
||||
* [ScreenEdit] Autosave successful.
|
||||
@@ -4,6 +4,280 @@ The StepMania 5 Changelog covers all post-sm-ssc changes. For a list of changes
|
||||
from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
|
||||
________________________________________________________________________________
|
||||
|
||||
2015/04/08
|
||||
----------
|
||||
* [ActorSound] IsAction attribute added. get/set_is_action functions added.
|
||||
[kyzentun]
|
||||
* [GameSoundManager] is_action arg added to PlayOnce. [kyzentun]
|
||||
|
||||
2015/04/06
|
||||
----------
|
||||
* [global] rec_print_children and rec_print_table lua functions added to
|
||||
_fallback. [kyzentun]
|
||||
* [Language] Dutch translation updated. [Thumbsy]
|
||||
* [RadarValues] Stream, Voltage, Air, Freeze, and Chaos are no longer capped
|
||||
at 1. Stream and Voltage no longer count hold heads twice.
|
||||
RadarCategory_Notes added, which counts all notes.
|
||||
Scoring bug fixes related to radar calculation. [kyzentun]
|
||||
* [ScreenSelectGame] Exit option returns to ScreenOptionsService unless the
|
||||
game type actually changed. [Wallacoloo]
|
||||
|
||||
2015/04/04
|
||||
----------
|
||||
* [EditMode] Added submenus to the timing edit menu to allow shifting,
|
||||
copying, and pasting any or all timing segments in the selected region or
|
||||
after the current cursor position. [kyzentun]
|
||||
Shifting menus in edit mode now have choices for 1, 2, or 4 measures or 2
|
||||
beats. [kyzentun]
|
||||
* [global] Fixed crash on OS X for certain dance pads when in Japanese
|
||||
locale. [Wallacoloo]
|
||||
|
||||
2015/04/03
|
||||
----------
|
||||
* [ScreenGameplay] The NoteField board is now underneath everything except
|
||||
the backgound. This means underneath any custom actors on the underlay or
|
||||
overlay or decoration layers, and also underneath the combo/judgment even
|
||||
when the ComboUnderField metric is true. [kyzentun]
|
||||
Fixed bug in screen filter in default theme that made it not appear under
|
||||
the field when a solo file was played without Center1Player. [kyzentun]
|
||||
|
||||
2015/04/02
|
||||
----------
|
||||
* [global] commify function exposed to lua. [kyzentun]
|
||||
|
||||
================================================================================
|
||||
StepMania 5.0.7 | 20150401
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
2015/03/30
|
||||
----------
|
||||
* [Select Music] Ctrl+Shift+R mapped to reload the current song. [kyzentun]
|
||||
* [Song] ReloadFromSongDir lua function exposed. [kyzentun]
|
||||
* [Preferences] NeverCacheList preference added. It's a comma separated
|
||||
list of group names, if a song is in one of the named groups, it is never
|
||||
cached. [kyzentun]
|
||||
|
||||
2015/03/27
|
||||
----------
|
||||
* [Select Music] Ability to delete the current song by pressing Ctrl+Backspace added. [Wallacoloo]
|
||||
|
||||
2015/03/24
|
||||
----------
|
||||
* [Sprite/RageTexture] GetTexturePath moved to RageTexture and renamed to
|
||||
GetPath. [kyzentun]
|
||||
|
||||
2015/03/22
|
||||
----------
|
||||
* [Dev] Primary build method of all platforms changed to CMake. People
|
||||
building from source must install CMake (min 2.8.12) and read
|
||||
Build/README.md for building instructions. [wolfman2000]
|
||||
|
||||
2015/03/18
|
||||
----------
|
||||
* [OSX] Empty Stepmania directory created on desktop removed. [dguzek]
|
||||
|
||||
2015/03/17
|
||||
----------
|
||||
* [ActorFrameTexture] Example added to Themerdocs/Examples/Example_Actors/.
|
||||
Crash fixes for AFTs. [sigatrev]
|
||||
|
||||
2015/03/15
|
||||
----------
|
||||
* [Sprite] GetTexturePath added. [kyzentun]
|
||||
|
||||
2015/03/12
|
||||
----------
|
||||
* [Language] Docs/Changelog_language.txt added for tracking language changes.
|
||||
|
||||
=======
|
||||
================================================================================
|
||||
StepMania 5.0.7rc | 20150309
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
2015/03/09
|
||||
----------
|
||||
* [EditMode] Autosave every 5 minutes added. [kyzentun]
|
||||
* [General] NotesLoaderSM, NotesLoaderSSC, IniFile::ReadFile rewritten,
|
||||
load times substantially faster. [kyzentun]
|
||||
* [Preference] HarshHotLifePenalty preference added, for toggling whether
|
||||
LifeMeterBar takes away .1 life when it's full. [kyzentun]
|
||||
|
||||
2015/03/08
|
||||
----------
|
||||
* [EditMode] Clearing an area now prompts for confirmation if it contains
|
||||
EditClearPromptThreshold notes or more. EditClearPromptThreshold is a
|
||||
preference that can be set in the Advanced Options section, or in the
|
||||
options in Edit Mode. [kyzentun]
|
||||
|
||||
2015/03/05
|
||||
----------
|
||||
* [Graphics] DX9 support improved, giving a large speed boost and fixing the
|
||||
problem that made people get stuck with 16bit color. [xwidghet]
|
||||
|
||||
2015/03/04
|
||||
----------
|
||||
* [Loading] The song length from the cache is used now. This cut loading time
|
||||
by 30% for kyz. [kyzentun]
|
||||
|
||||
2015/03/02
|
||||
----------
|
||||
* [Song] Per-chart music feature added. Each chart can have a MUSIC tag.
|
||||
[kyzentun]
|
||||
|
||||
2015/03/01
|
||||
----------
|
||||
* [SelectMusic] Select Music now plays music file named by #PREVIEW tag if
|
||||
it's not blank, instead of using the song file for the sample music. The
|
||||
sample length is read from the preview file. The sample start is treated as
|
||||
0. [kyzentun]
|
||||
* [Song] GetPreviewMusicPath added. [kyzentun]
|
||||
* [foreach] foreach_ordered lua function now works on tables that have both
|
||||
number and string keys. Number keys are iterated over first. [kyzentun]
|
||||
|
||||
2015/02/28
|
||||
----------
|
||||
* [General] Pause/Break key now toggles "action" sounds off or on. There is
|
||||
also a button in the F3 debug menu (press A, there are so many that it is
|
||||
off the bottom) for people that don't have a Pause/Break key. [kyzentun]
|
||||
|
||||
2015/02/27
|
||||
----------
|
||||
* [ActorFrame] Fixed RemoveChild and RemoveAllChildren lua functions to
|
||||
delete the children instead of leaking memory. [kyzentun]
|
||||
* [Font] Asserts and other things that caused Stepmania to crash on font
|
||||
mistakes now emit non-fatal errors. [kyzentun]
|
||||
|
||||
2015/02/26
|
||||
----------
|
||||
* [PaneDisplay] Changed to print an error when metrics or player number are
|
||||
omitted instead of crashing. [kyzentun]
|
||||
* [Screen] Fixed crash when AddInputCallback is passed nil. [kyzentun]
|
||||
|
||||
2015/02/22
|
||||
----------
|
||||
* [BitmapText] Place characters of right-to-left alphabets correctly.
|
||||
(untested) [roothorick]
|
||||
|
||||
================================================================================
|
||||
StepMania 5.0.6 | 20150217
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
2015/02/16
|
||||
----------
|
||||
* [EditMode] Fixed mistake in TimingData that broke editing bpms. [kyzentun]
|
||||
Fixed crash when deleting steps. [kyzentun]
|
||||
* [InputMapper] Backslash can be mapped now. [kyzentun]
|
||||
|
||||
================================================================================
|
||||
StepMania 5.0.5 | 20150214
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
2015/02/12
|
||||
----------
|
||||
* [InputMapper] Added D-Force Automappings [shakesoda]
|
||||
|
||||
2015/02/04
|
||||
----------
|
||||
* [ActorFrame] GetUpdateRate added. [kyzentun]
|
||||
* [Background] Using the wrong transition name no longer crashes.
|
||||
Playback rate is applied to videos.
|
||||
Checkerboard and other BackgroundEffects that use the same file twice no
|
||||
longer play videos back at multiplied speed. [kyzentun]
|
||||
* [Sprite] Get/SetDecodeMovie added. [kyzentun]
|
||||
|
||||
2015/02/03
|
||||
----------
|
||||
* [MusicWheel] HideActiveSectionTitle metric added. [djpohly]
|
||||
|
||||
2015/02/02
|
||||
----------
|
||||
* [ActorMultiVertex] ForceStateUpdate and Get/SetDecodeMovie added. [kyzentun]
|
||||
* [RageTexture] Get<thing>Width and Height functions added.
|
||||
(<thing> means Source, Texture, or Image) [kyzentun]
|
||||
* [Scripts] find_missing_strings_in_theme_translations function added to
|
||||
_fallback scripts to assist translators in finding what needs to be
|
||||
translated. If you need/want to run it on your them, write a piece of lua
|
||||
like this:
|
||||
find_missing_strings_in_theme_translations("_fallback", "en.ini")
|
||||
The first arg is the folder name of the theme to look at.
|
||||
The second arg is the name of the language that is fully translated. All
|
||||
other languages will be compared to it to decide what is missing or unused.
|
||||
[kyzentun]
|
||||
* [Song] GetBGChanges added. [kyzentun]
|
||||
|
||||
2015/02/01
|
||||
----------
|
||||
* [ActorMultiVertex] Animation state system added. AMVs can now have
|
||||
animated textures controlled by states written in lua. [kyzentun]
|
||||
|
||||
2015/01/31
|
||||
----------
|
||||
* [EditMode] Want more lead in time before recording starts?
|
||||
It's a preference. [kyzentun]
|
||||
|
||||
2015/01/30
|
||||
----------
|
||||
* [Actor] Wrapper states added. This makes wrapping an Actor inside an
|
||||
ActorFrame for any reason unnecessary, and makes it possible to do things
|
||||
that were only possible by wrapping an Actor in an ActorFrame to Actors
|
||||
that you couldn't put inside a frame before. [kyzentun]
|
||||
|
||||
2015/01/20
|
||||
----------
|
||||
* [ScreenSelect] ChoiceNames can be a lua command that is evaluated to get a
|
||||
list of the gamecommands. The main use of this is to get rid of the huge
|
||||
list of metrics that ScreenSelectStyle requires. A single lua function
|
||||
instead of a metric for every style for every game type. [kyzentun]
|
||||
* [ScreenSelectMaster] IconChoicePosFunction metric added. This metric is
|
||||
optional, if it's set, it must be set to a function that returns a table
|
||||
of positions. Each position is a table of the form "{x, y, z}", where x,
|
||||
y, and z are numbers and any that is not a number defaults to 0.
|
||||
The function is passed the number of choices for the screen.
|
||||
IconChoiceOnCommand and IconChoiceOffCommand metrics added so each choice
|
||||
doesn't require its own On/OffCommand pair. These are also optional, but
|
||||
if they are set, they will override the individual commands if they exist.
|
||||
(If "IconChoiceCactusOnCommand" and "IconChoiceOnCommand" both exist,
|
||||
"IconChoiceOnCommand" will be used.) [kyzentun]
|
||||
Example:
|
||||
# in metrics.ini
|
||||
IconChoicePosFunction=choice_positions
|
||||
-- In a file in Scripts/
|
||||
function choice_positions(count)
|
||||
local ret= {}
|
||||
for i= 1, ret do ret[i]= {i*24, i*48} end
|
||||
return ret
|
||||
end
|
||||
|
||||
2015/01/16
|
||||
----------
|
||||
* [ScreenSelectMusic] HardCommentMeter metric added. Sets the meter that
|
||||
will trigger the "select music comment hard" announcer sound. [kyzentun]
|
||||
|
||||
2015/01/12
|
||||
----------
|
||||
* [ScreenOptions] GetNumRows function added. [kyzentun]
|
||||
|
||||
2015/01/09
|
||||
----------
|
||||
* [Sprite] SetStateProperties function added. [kyzentun]
|
||||
|
||||
2015/01/06
|
||||
----------
|
||||
* [ActorMultiVertex] GetSpline and SetVertsFromSplines functions added.
|
||||
[kyzentun]
|
||||
* [NoteColumnRenderer] Functions for fetching the spline handlers for the
|
||||
column added. [kyzentun]
|
||||
* [NCSplineHandler] New class for setting various parameters of a spline used
|
||||
by a NoteColumnRenderer and containing the spline. [kyzentun]
|
||||
* [CubicSplineN] New class that provides spline functionality. [kyzentun]
|
||||
|
||||
2014/12/26
|
||||
----------
|
||||
* [NoteField] Columns turned into actors that can be fetched with
|
||||
get_column_actors. [kyzentun]
|
||||
Tiny boost in fps when there is a large number of notes on screen.
|
||||
* [NoteColumnRenderer] New class for controlling one column. [kyzentun]
|
||||
|
||||
2014/12/20
|
||||
----------
|
||||
* [Preferences] AllowMultipleHighScoreWithSameName, ComboContinuesBetweenSongs
|
||||
@@ -29,6 +303,34 @@ ________________________________________________________________________________
|
||||
* [Player] "ComboBreakOnImmediateHoldLetGo" theme metric added. [sillybear]
|
||||
* [PlayerState] ApplyPreferredOptionsToOtherLevels function added. [kyzentun]
|
||||
|
||||
2014/12/07
|
||||
----------
|
||||
* [Game] GetSeparateStyles function added. Use this to detect whether a game
|
||||
allows the players to play different styles. [kyzentun] (used by kickbox)
|
||||
* [GameManager] Lua Scripts/ folders are now reloaded when the Game mode is
|
||||
changed. [kyzentun]
|
||||
* [GameState] CanSafelyEnterGameplay function added. [kyzentun]
|
||||
In kickbox game mode, players can have different styles set, pass a
|
||||
PlayerNumber when using SetCurrentStyle or GetCurrentStyle.
|
||||
* [kickbox] New game mode with 4 styles. [kyzentun]
|
||||
* [ScreenGameplay] Notefield positioning is handled a bit differently now.
|
||||
See comments in _fallback/metrics.ini above the [ScreenGameplay]
|
||||
MarginFunction metric. Basically, you can define a lua function that
|
||||
returns the space you want at the edges and in the center instead of
|
||||
setting position metrics. Do NOT use Style:GetWidth to calculate the
|
||||
margins your function returns.
|
||||
ScreenGameplay now handles zooming the notefield to fit in the space
|
||||
instead of using the NeedsZoomOutWith2Players flag in the style.
|
||||
If the notefield doesn't fit in the space between the margins, and there is
|
||||
only one player, the player will be centered even if the Center1Player pref
|
||||
is false. [kyzentun]
|
||||
* [Style] NeedsZoomOutWith2Players decapitated. Always returns false now.
|
||||
GetWidth added. [kyzentun]
|
||||
* [techno] Techno game mode no longer has special column width for versus.
|
||||
Techno was the only game mode that used the NeedsZoomOutWith2Players flag,
|
||||
and the zoom factor it applied was 0.6, and the special versus column width
|
||||
was 0.6*normal, so this should make no difference. [kyzentun]
|
||||
|
||||
2014/12/03
|
||||
----------
|
||||
* [command line arg] --game command line arg added for setting the game type
|
||||
@@ -82,6 +384,10 @@ ________________________________________________________________________________
|
||||
----------
|
||||
* [RollingNumbers] Cropping and color during tweens fixed. [kyzentun]
|
||||
|
||||
2014/10/27
|
||||
----------
|
||||
* [Changelog] Vospi read the release notes.
|
||||
|
||||
2014/10/23
|
||||
----------
|
||||
* [Global] approach, multiapproach, lerp, and lerp_color lua functions added. [kyzentun]
|
||||
|
||||
@@ -209,9 +209,11 @@
|
||||
<Function name='class'/>
|
||||
<Function name='collectgarbage'/>
|
||||
<Function name='color'/>
|
||||
<Function name='commify'/>
|
||||
<Function name='dofile'/>
|
||||
<Function name='error'/>
|
||||
<Function name='fapproach'/>
|
||||
<Function name='find_missing_strings_in_theme_translations'/>
|
||||
<Function name='foreach_ordered'/>
|
||||
<Function name='gcinfo'/>
|
||||
<Function name='getenv'/>
|
||||
@@ -237,6 +239,8 @@
|
||||
<Function name='rawequal'/>
|
||||
<Function name='rawget'/>
|
||||
<Function name='rawset'/>
|
||||
<Function name='rec_print_children'/>
|
||||
<Function name='rec_print_table'/>
|
||||
<Function name='require'/>
|
||||
<Function name='round'/>
|
||||
<Function name='scale'/>
|
||||
@@ -257,6 +261,7 @@
|
||||
</GlobalFunctions>
|
||||
<Classes>
|
||||
<Class name='Actor'>
|
||||
<Function name='AddWrapperState'/>
|
||||
<Function name='Center'/>
|
||||
<Function name='CenterX'/>
|
||||
<Function name='CenterY'/>
|
||||
@@ -272,11 +277,13 @@
|
||||
<Function name='GetDiffuse'/>
|
||||
<Function name='GetDiffuseAlpha'/>
|
||||
<Function name='GetEffectDelta'/>
|
||||
<Function name='GetFakeParent'/>
|
||||
<Function name='GetGlow'/>
|
||||
<Function name='GetHAlign'/>
|
||||
<Function name='GetHeight'/>
|
||||
<Function name='GetName'/>
|
||||
<Function name='GetNumStates'/>
|
||||
<Function name='GetNumWrapperStates'/>
|
||||
<Function name='GetParent'/>
|
||||
<Function name='GetRotationX'/>
|
||||
<Function name='GetRotationY'/>
|
||||
@@ -286,6 +293,7 @@
|
||||
<Function name='GetVAlign'/>
|
||||
<Function name='GetVisible'/>
|
||||
<Function name='GetWidth'/>
|
||||
<Function name='GetWrapperState'/>
|
||||
<Function name='GetX'/>
|
||||
<Function name='GetY'/>
|
||||
<Function name='GetZ'/>
|
||||
@@ -300,7 +308,9 @@
|
||||
<Function name='MaskSource'/>
|
||||
<Function name='Real'/>
|
||||
<Function name='RealInverse'/>
|
||||
<Function name='RemoveWrapperState'/>
|
||||
<Function name='RunCommandsRecursively'/>
|
||||
<Function name='SetFakeParent'/>
|
||||
<Function name='SetHeight'/>
|
||||
<Function name='SetSize'/>
|
||||
<Function name='SetTextureFiltering'/>
|
||||
@@ -448,6 +458,7 @@
|
||||
<Function name='GetChildren'/>
|
||||
<Function name='GetDrawFunction'/>
|
||||
<Function name='GetNumChildren'/>
|
||||
<Function name='GetUpdateRate'/>
|
||||
<Function name='RemoveAllChildren'/>
|
||||
<Function name='RemoveChild'/>
|
||||
<Function name='RunCommandsOnChildren'/>
|
||||
@@ -487,23 +498,45 @@
|
||||
<Function name='SetTextureMode'/>
|
||||
</Class>
|
||||
<Class base='Actor' name='ActorMultiVertex'>
|
||||
<Function name='AddState'/>
|
||||
<Function name='AddQuadState'/>
|
||||
<Function name='ForceStateUpdate'/>
|
||||
<Function name='GetCurrDrawMode'/>
|
||||
<Function name='GetCurrFirstToDraw'/>
|
||||
<Function name='GetCurrNumToDraw'/>
|
||||
<Function name='GetDecodeMovie'/>
|
||||
<Function name='GetDestDrawMode'/>
|
||||
<Function name='GetDestFirstToDraw'/>
|
||||
<Function name='GetDestNumToDraw'/>
|
||||
<Function name='GetNumStates'/>
|
||||
<Function name='GetNumQuadStates'/>
|
||||
<Function name='GetNumVertices'/>
|
||||
<Function name='GetQuadState'/>
|
||||
<Function name='GetSpline'/>
|
||||
<Function name='GetState'/>
|
||||
<Function name='GetStateData'/>
|
||||
<Function name='GetTexture'/>
|
||||
<Function name='GetUseAnimationState'/>
|
||||
<Function name='LoadTexture'/>
|
||||
<Function name='RemoveState'/>
|
||||
<Function name='RemoveQuadState'/>
|
||||
<Function name='SetAllStateDelays'/>
|
||||
<Function name='SetDecodeMovie'/>
|
||||
<Function name='SetDrawState'/>
|
||||
<Function name='SetEffectMode'/>
|
||||
<Function name='SetLineWidth'/>
|
||||
<Function name='SetNumVertices'/>
|
||||
<Function name='SetQuadState'/>
|
||||
<Function name='SetSecondsIntoAnimation'/>
|
||||
<Function name='SetState'/>
|
||||
<Function name='SetStateData'/>
|
||||
<Function name='SetStateProperties'/>
|
||||
<Function name='SetTexture'/>
|
||||
<Function name='SetTextureMode'/>
|
||||
<Function name='SetUseAnimationState'/>
|
||||
<Function name='SetVertex'/>
|
||||
<Function name='SetVertices'/>
|
||||
<Function name='SetVertsFromSplines'/>
|
||||
</Class>
|
||||
<Class base='Actor' name='ActorProxy'>
|
||||
<Function name='GetTarget'/>
|
||||
@@ -565,6 +598,7 @@
|
||||
<Function name='SetFromSteps'/>
|
||||
</Class>
|
||||
<Class base='Sprite' name='Banner'>
|
||||
<Function name='GetDecodeMovie'/>
|
||||
<Function name='GetPercentScrolling'/>
|
||||
<Function name='GetScrolling'/>
|
||||
<Function name='LoadBackgroundFromUnlockEntry'/>
|
||||
@@ -577,6 +611,7 @@
|
||||
<Function name='LoadFromSortOrder'/>
|
||||
<Function name='LoadIconFromCharacter'/>
|
||||
<Function name='ScaleToClipped'/>
|
||||
<Function name='SetDecodeMovie'/>
|
||||
<Function name='SetScrolling'/>
|
||||
<Function name='scaletoclipped'/>
|
||||
</Class>
|
||||
@@ -676,6 +711,31 @@
|
||||
<Function name='SHA1File'/>
|
||||
<Function name='SHA1String'/>
|
||||
</Class>
|
||||
<Class name='CubicSplineN'>
|
||||
<Function name='solve'/>
|
||||
<Function name='evaluate'/>
|
||||
<Function name='evaluate_derivative'/>
|
||||
<Function name='evaluate_second_derivative'/>
|
||||
<Function name='evaluate_third_derivative'/>
|
||||
<Function name='set_point'/>
|
||||
<Function name='set_coefficients'/>
|
||||
<Function name='get_coefficients'/>
|
||||
<Function name='set_spatial_extent'/>
|
||||
<Function name='get_spatial_extent'/>
|
||||
<Function name='get_max_t'/>
|
||||
<Function name='set_size'/>
|
||||
<Function name='get_size'/>
|
||||
<Function name='set_dimension'/>
|
||||
<Function name='get_dimension'/>
|
||||
<Function name='empty'/>
|
||||
<Function name='set_loop'/>
|
||||
<Function name='get_loop'/>
|
||||
<Function name='set_polygonal'/>
|
||||
<Function name='get_polygonal'/>
|
||||
<Function name='set_dirty'/>
|
||||
<Function name='get_dirty'/>
|
||||
<Function name='destroy'/>
|
||||
</Class>
|
||||
<Class base='Sprite' name='DifficultyIcon'>
|
||||
<Function name='SetFromDifficulty'/>
|
||||
<Function name='SetFromSteps'/>
|
||||
@@ -702,6 +762,7 @@
|
||||
<Function name='CountNotesSeparately'/>
|
||||
<Function name='GetMapJudgmentTo'/>
|
||||
<Function name='GetName'/>
|
||||
<Function name='GetSeparateStyles'/>
|
||||
</Class>
|
||||
<Class name='GameCommand'>
|
||||
<Function name='GetAnnouncer'/>
|
||||
@@ -750,6 +811,7 @@
|
||||
<Function name='ApplyPreferredModifiers'/>
|
||||
<Function name='ApplyPreferredSongOptionsToOtherLevels'/>
|
||||
<Function name='ApplyStageModifiers'/>
|
||||
<Function name='CanSafelyEnterGameplay'/>
|
||||
<Function name='ClearStageModifiersIllegalForCourse'/>
|
||||
<Function name='CurrentOptionsDisqualifyPlayer'/>
|
||||
<Function name='Dopefish'/>
|
||||
@@ -965,15 +1027,32 @@
|
||||
<Function name='SelectCourse'/>
|
||||
<Function name='SelectSong'/>
|
||||
</Class>
|
||||
<Class name='NCSplineHandler'>
|
||||
<Function name='get_spline'/>
|
||||
<Function name='get_beats_per_t'/>
|
||||
<Function name='set_beats_per_t'/>
|
||||
<Function name='get_receptor_t'/>
|
||||
<Function name='set_receptor_t'/>
|
||||
<Function name='get_spline_mode'/>
|
||||
<Function name='set_spline_mode'/>
|
||||
<Function name='get_subtract_song_beat'/>
|
||||
<Function name='set_subtract_song_beat'/>
|
||||
</Class>
|
||||
<Class base='Actor' name='NoteColumnRenderer'>
|
||||
<Function name='get_pos_handler'/>
|
||||
<Function name='get_rot_handler'/>
|
||||
<Function name='get_zoom_handler'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='NoteField'>
|
||||
<Function name='DidHoldNote'/>
|
||||
<Function name='DidTapNote'/>
|
||||
<Function name='SetPressed'/>
|
||||
<Function name='SetDidHoldNoteCallback'/>
|
||||
<Function name='SetDidTapNoteCallback'/>
|
||||
<Function name='SetSetPressedCallback'/>
|
||||
<Function name='SetStepCallback'/>
|
||||
<Function name='Step'/>
|
||||
<Function name='did_hold_note'/>
|
||||
<Function name='did_tap_note'/>
|
||||
<Function name='get_column_actors'/>
|
||||
<Function name='set_pressed'/>
|
||||
<Function name='set_did_hold_note_callback'/>
|
||||
<Function name='set_did_tap_note_callback'/>
|
||||
<Function name='set_set_pressed_callback'/>
|
||||
<Function name='set_step_callback'/>
|
||||
<Function name='step'/>
|
||||
</Class>
|
||||
<Class name='NoteSkinManager'>
|
||||
<Function name='DoesNoteSkinExist'/>
|
||||
@@ -1317,6 +1396,13 @@
|
||||
<Function name='volume'/>
|
||||
</Class>
|
||||
<Class name='RageTexture'>
|
||||
<Function name='GetSourceWidth'/>
|
||||
<Function name='GetSourceHeight'/>
|
||||
<Function name='GetTextureWidth'/>
|
||||
<Function name='GetTextureHeight'/>
|
||||
<Function name='GetImageWidth'/>
|
||||
<Function name='GetImageHeight'/>
|
||||
<Function name='GetPath'/>
|
||||
<Function name='GetTextureCoordRect'/>
|
||||
<Function name='loop'/>
|
||||
<Function name='position'/>
|
||||
@@ -1396,6 +1482,7 @@
|
||||
<Function name='AllAreOnLastRow'/>
|
||||
<Function name='FocusedItemEndsScreen'/>
|
||||
<Function name='GetCurrentRowIndex'/>
|
||||
<Function name='GetNumRows'/>
|
||||
<Function name='GetOptionRow'/>
|
||||
</Class>
|
||||
<Class base='ScreenOptions' name='ScreenPlayerOptions'>
|
||||
@@ -1439,6 +1526,7 @@
|
||||
<Function name='GetAllSteps'/>
|
||||
<Function name='GetBackgroundPath'/>
|
||||
<Function name='GetBannerPath'/>
|
||||
<Function name='GetBGChanges'/>
|
||||
<Function name='GetCDImagePath'/>
|
||||
<Function name='GetCDTitlePath'/>
|
||||
<Function name='GetDiscPath'/>
|
||||
@@ -1458,6 +1546,7 @@
|
||||
<Function name='GetMusicPath'/>
|
||||
<Function name='GetOneSteps'/>
|
||||
<Function name='GetOrigin'/>
|
||||
<Function name='GetPreviewMusicPath'/>
|
||||
<Function name='GetPreviewVidPath'/>
|
||||
<Function name='GetSampleLength'/>
|
||||
<Function name='GetSampleStart'/>
|
||||
@@ -1581,6 +1670,7 @@
|
||||
<Function name='SetCustomPosCoords'/>
|
||||
<Function name='SetEffectMode'/>
|
||||
<Function name='SetSecondsIntoAnimation'/>
|
||||
<Function name='SetStateProperties'/>
|
||||
<Function name='SetTexture'/>
|
||||
<Function name='StopUsingCustomPosCoords'/>
|
||||
<Function name='addimagecoords'/>
|
||||
@@ -1660,6 +1750,7 @@
|
||||
<Function name='GetName'/>
|
||||
<Function name='GetStepsType'/>
|
||||
<Function name='GetStyleType'/>
|
||||
<Function name='GetWidth'/>
|
||||
<Function name='LockedDifficulty'/>
|
||||
<Function name='NeedsZoomOutWith2Players'/>
|
||||
</Class>
|
||||
@@ -2212,6 +2303,11 @@
|
||||
<EnumValue name=''MusicWheelUsesSections_Always'' value='1'/>
|
||||
<EnumValue name=''MusicWheelUsesSections_ABCOnly'' value='2'/>
|
||||
</Enum>
|
||||
<Enum name='NoteColumnSplineMode'>
|
||||
<EnumValue name=''NoteColumnSplineMode_Disabled'' value='0'/>
|
||||
<EnumValue name=''NoteColumnSplineMode_Offset'' value='1'/>
|
||||
<EnumValue name=''NoteColumnSplineMode_Position'' value='2'/>
|
||||
</Enum>
|
||||
<Enum name='NotePart'>
|
||||
<EnumValue name=''NotePart_TapNote'' value='0'/>
|
||||
<EnumValue name=''NotePart_TapMine'' value='1'/>
|
||||
|
||||
@@ -109,9 +109,21 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='ComboUnderField' theme='_fallback' return='bool' arguments=''>
|
||||
[03 Gameplay.lua] Returns the <code>UserPrefComboUnderField</code> user preference value.
|
||||
</Function>
|
||||
<Function name='commify' return='string' arguments='string number, string comma, string dot'>
|
||||
This will take the number and insert a comma every three digits, as normal in English for writing large numbers.<br />
|
||||
<code>number</code> can be a string, an integer, or a float.<br />
|
||||
<code>comma</code> is an optional argument that is used instead of a comma.<br />
|
||||
"commify(1234, 'cat')" will result in "1cat234".<br />
|
||||
<code>dot</code> is an optional argument that is used instead of a dot to find the end of the part that should be commified.<br />
|
||||
"commify('1234cat5678', ',', 'cat')" will result in "1,234cat5678", but "commify('1234cat5678')" will result in "12,34c,at5,678".<br />
|
||||
The <code>comma</code> and <code>dot</code> arguments are provided to ease compliance with locales or languages that do not use comma and dot in numbers the way English does.
|
||||
</Function>
|
||||
<Function name='ConnectToServer' return='bool' arguments='string sAddress'>
|
||||
Tries to connect to the server at <code>sAddress</code>.
|
||||
</Function>
|
||||
<Function name='create_spline' return='CubicSplineN' arguments=''>
|
||||
Creates a CubicSplineN for you to use. Make sure you destroy the CubicSplineN when you're done with it, or you will have a memory leak.
|
||||
</Function>
|
||||
<Function name='CustomDifficultyToColor' theme='_fallback' return='color' arguments='string cd'>
|
||||
[02 Colors.lua]
|
||||
</Function>
|
||||
@@ -142,6 +154,12 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='fapproach' theme='_fallback' return='float' arguments='float val, float other_val, float to_move'>
|
||||
[02 Utilities.lua] Old name for approach.
|
||||
</Function>
|
||||
<Function name='find_missing_strings_in_theme_translations' return='' arguments='string theme_name, string master_lang_name'>
|
||||
This function creates files in the theme's Languages folder listing all the strings that have no translation and all the strings that are unused.<br />
|
||||
Strings that do not have an entry in the master language are considered unused.<br />
|
||||
master_lang_name is the name of the ini file that contains the language with all strings used by the theme.<br />
|
||||
Example: find_missing_strings_in_theme_translations("my_best_theme", "en.ini")
|
||||
</Function>
|
||||
<Function name='FindSelection' theme='_fallback' return='int' arguments='table list'>
|
||||
[02 Utilities.lua] Return the index of a true value in <code>list</code>.
|
||||
</Function>
|
||||
@@ -450,6 +468,14 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='ReadPrefFromFile' theme='_fallback' return='string' arguments='string prefName'>
|
||||
[03 UserPreferences2.lua] (internal) Reads the specified user preference from its config file.
|
||||
</Function>
|
||||
<Function name='rec_print_children' theme='_fallback' return='' arguments='ActorFrame a, string indent'>
|
||||
Recursively prints all the children of the actor frame to the log file. This can be useful for finding out what actors are on a screen or just seeing what the structure of the actor tree looks like.<br />
|
||||
<code>indent</code> is an optional argument that will be prepended to every line.
|
||||
</Function>
|
||||
<Function name='rec_print_table' theme='_fallback' return='' arguments='table t, string indent'>
|
||||
Recursively prints all values in the table to the log file in the form "(key_type) key: (value_type) value" so that you know the type of the key and the value. Useful if you're not sure exactly what is in a table passed as a parameter.<br />
|
||||
<code>indent</code> is an optional argument that will be prepended to every line.
|
||||
</Function>
|
||||
<Function name='ReportStyle' return='void' arguments=''>
|
||||
Sends the current style to the server.
|
||||
</Function>
|
||||
@@ -828,9 +854,29 @@ save yourself some time, copy this for undocumented things:
|
||||
<!-- Classes -->
|
||||
<Classes>
|
||||
<Class name='Actor'>
|
||||
<Function name='AddWrapperState' return='ActorFrame' arguments=''>
|
||||
This adds a wrapper state around the Actor, which is like wrapping the Actor in an ActorFrame, except that you can use it on any actor, and add or remove wrapper states in response to things that happen while the screen is being used. (wrapping an Actor in an ActorFrame normally requires setting it up before the screen starts)<br />
|
||||
The ActorFrame that is returned is the wrapper state, for convenience.<br />
|
||||
An Actor can have any number of wrapper states. Use GetWrapperState to access wrapper states for the actor.
|
||||
</Function>
|
||||
<Function name='GetNumWrapperStates' return='ActorFrame' arguments=''>
|
||||
Returns the number of wrapper states the actor has.
|
||||
</Function>
|
||||
<Function name='GetWrapperState' return='ActorFrame' arguments='int i'>
|
||||
Returns the wrapper state at index i. Think of wrapper states with a higher index as being "further out". Actor is inside Wrapper 1, Wrapper 1 is inside Wrapper 2, Wrapper 2 is inside Wrapper 3, and so on.
|
||||
</Function>
|
||||
<Function name='RemoveWrapperState' return='' arguments='int i'>
|
||||
Removes the wrapper state at index i.
|
||||
</Function>
|
||||
<Function name='GetParent' return='Actor' arguments=''>
|
||||
Returns the Actor's parent, or <code>nil</code> if it doesn't have one.
|
||||
</Function>
|
||||
<Function name='GetFakeParent' return='Actor' arguments=''>
|
||||
Returns the Actor's fake parent, or <code>nil</code> if it doesn't have one.
|
||||
</Function>
|
||||
<Function name='SetFakeParent' return='' arguments='Actor p'>
|
||||
Sets the Actor's fake parent to p, or clears it if p is nil.
|
||||
</Function>
|
||||
<Function name='GetVisible' return='bool' arguments=''>
|
||||
Returns the Actor's visibility.
|
||||
</Function>
|
||||
@@ -1191,8 +1237,8 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='play' return='void' arguments=''>
|
||||
Starts the Actor's movement. (Usually used for Sprites or Models.)
|
||||
</Function>
|
||||
<Function name='playcommand' return='void' arguments='string sCommandName'>
|
||||
Plays a command named <code>sCommandName</code>.
|
||||
<Function name='playcommand' return='void' arguments='string sCommandName, table params'>
|
||||
Plays a command named <code>sCommandName</code>. <code>params</code> is passed to the command as an argument if it is a table.
|
||||
</Function>
|
||||
<Function name='player' theme='_fallback' return='void' arguments='PlayerNumber p'>
|
||||
[02 Actor.lua] Sets the visibility of the Actor based on <code>p</code> being a human player.
|
||||
@@ -1406,6 +1452,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetNumChildren' return='int' arguments=''>
|
||||
Returns the number of children in the ActorFrame.
|
||||
</Function>
|
||||
<Function name='GetUpdateRate' return='float' arguments=''>
|
||||
Gets the update function's rate.
|
||||
</Function>
|
||||
<Function name='playcommandonchildren' return='void' arguments='string sCommandName'>
|
||||
Plays the <code>sCommandName</code> command on the ActorFrame's children.
|
||||
</Function>
|
||||
@@ -1508,6 +1557,72 @@ save yourself some time, copy this for undocumented things:
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='ActorMultiVertex'>
|
||||
<Function name='AddQuadState' return='' arguments='int offset'>
|
||||
The list of quad states is used to determine which animation state is used for each quad. The offset is added to the AMV's current state, and the resulting state is used.
|
||||
</Function>
|
||||
<Function name='AddState' return='' arguments='table state_data'>
|
||||
Adds an animation state to the ActorMultiVertex. The state_data table must be like this:<br />
|
||||
{{left, top, right, bottom}, delay}<br />
|
||||
left, top, right, and bottom are pixel coordinates, starting at 0. If delay is 0 or negative, the state will last forever.
|
||||
</Function>
|
||||
<Function name='ForceStateUpdate' return='' arguments=''>
|
||||
Forces the AMV to update the texture coordinates on all its quads, even if the current state has not changed.
|
||||
</Function>
|
||||
<Function name='GetUseAnimationState' return= 'bool' arguments=''>
|
||||
Returns whether the AMV uses the animation state.
|
||||
</Function>
|
||||
<Function name='SetUseAnimationState' return= '' arguments='bool use'>
|
||||
Sets whether the AMV uses the animation state.<br />
|
||||
This works best when using DrawMode_Quads.<br />
|
||||
AMV's can have animated textures like sprites. Each state tells the AMV what part of the texture to use, and how long the state lasts.<br />
|
||||
Use AddState to add a state onto the end, or SetStateProperties to set all the states at once, or SetState to set a single state.<br />
|
||||
Each quad has its own offset that is added to the current state. Use AddQuadState to add to the list of quad states, or SetQuadState to set an existing quad state.
|
||||
</Function>
|
||||
<Function name='GetNumStates' return= 'int' arguments=''>
|
||||
Returns the number of states the AMV has.
|
||||
</Function>
|
||||
<Function name='GetNumQuadStates' return= 'int' arguments=''>
|
||||
Returns the number of quad states in the destination tween state for the AMV.
|
||||
</Function>
|
||||
<Function name='GetState' return= 'int' arguments=''>
|
||||
Returns the id of the current state.
|
||||
</Function>
|
||||
<Function name='GetDecodeMovie' return='bool' arguments=''>
|
||||
Gets whether the AMV should call the decode function for its texture during updates.
|
||||
</Function>
|
||||
<Function name='SetDecodeMovie' return='' arguments='bool decode'>
|
||||
Sets whether the AMV should call the decode function for its texture during updates.
|
||||
</Function>
|
||||
<Function name='SetState' return= '' arguments='int id'>
|
||||
Sets the current state.
|
||||
</Function>
|
||||
<Function name='GetQuadState' return= 'int' arguments='int id'>
|
||||
Returns the offset of the requested quad state.
|
||||
</Function>
|
||||
<Function name='SetQuadState' return= '' arguments='int id, int offset'>
|
||||
Sets the offset of the requested quad state.
|
||||
</Function>
|
||||
<Function name='GetStateData' return= 'table' arguments='int id'>
|
||||
Returns a table containing the data for the requested state.
|
||||
</Function>
|
||||
<Function name='SetStateData' return= '' arguments='int id, table state_data'>
|
||||
Sets the requested state to the data in state_data. Similar to AddState, but SetStateData only works on states that have already been added.
|
||||
</Function>
|
||||
<Function name='SetStateProperties' return= '' arguments='table {state_data, ...}'>
|
||||
Each element of the table must be a state_data table, and is used to construct one state. The table as a whole is the entire list of all states for the AMV.
|
||||
</Function>
|
||||
<Function name='RemoveState' return= '' arguments='int id'>
|
||||
Removes the requested state from the state list.
|
||||
</Function>
|
||||
<Function name='RemoveQuadState' return= '' arguments='int id'>
|
||||
Removes the requested quad state from the quad state list.
|
||||
</Function>
|
||||
<Function name='SetAllStateDelays' return= '' arguments='float delay'>
|
||||
Sets the delay for every state to delay.
|
||||
</Function>
|
||||
<Function name='SetSecondsIntoAnimation' return= '' arguments='float seconds'>
|
||||
Sets how far into its animation the AMV is.
|
||||
</Function>
|
||||
<Function name='SetVertex' return='void' arguments='int index, table { table pos, table color, table textcoords }'>
|
||||
Sets vertex number <code>index</code> with the properties provided. The tables of properties are each optional and can be provided in any order.
|
||||
</Function>
|
||||
@@ -1515,6 +1630,22 @@ save yourself some time, copy this for undocumented things:
|
||||
Sets multiple vertices at once. The elements of <code>vertices</code> should themselves be tables, of the form provided to <Link class='ActorMultiVertex' function='SetVertex'>SetVertex</Link>. If <code>vertices</code> is the first argument it will start from vertex 1. If an integer is provided before <code>vertices</code> it will start from that vertex. It will add vertices as necessary.
|
||||
Example: self:SetVertices( { { { x1, y1, z1 } , { r1,g1,b1,a1 } , { tcx1,tcy1 } }; { { x2, y2, z2 } , { r2,g2,b2,a2 } , { tcx2,tcy2 } } } )
|
||||
</Function>
|
||||
<Function name='SetVertsFromSplines' return='' arguments=''>
|
||||
Sets all the drawn verts of the ActorMultiVertex by evaluating the splines.<br />
|
||||
("all the drawn verts" means all the verts between FirstToDraw and NumToDraw, the verts that are set to draw in the current tween state.)<br />
|
||||
The parts of the ActorMultiVertex are evenly spaced along the spline in terms of t value.<br />
|
||||
The exact behavior depends on the draw mode.<br />
|
||||
DrawMode_Quads uses all 4 splines, one for each corner.<br />
|
||||
DrawMode_QuadStrip and DrawMode_Strip use 2 splines, one for each edge of the strip.<br />
|
||||
DrawMode_Fan uses one spline, for the edge verts of the fan. The first vert is not touched because it is the center.<br />
|
||||
DrawMode_Triangles uses 3 splines, one for each corner.<br />
|
||||
DrawMode_SymmetricQuadStrip uses 3 splines, one on each edge and one in the center.<br />
|
||||
DrawMode_LineStrip uses 1 spline.<br />
|
||||
</Function>
|
||||
<Function name='GetSpline' return='CubicSplineN' arguments='int i'>
|
||||
Returns the requested spline. Spline indices range from 1 to 4.<br />
|
||||
ActorMultiVertex splines are not inside the tween state, and will not change the verts until you call SetVertsFromSplines.
|
||||
</Function>
|
||||
<Function name='SetNumVertices' return='void' arguments='int num'>
|
||||
Sets the number of vertices.
|
||||
</Function>
|
||||
@@ -1671,11 +1802,15 @@ save yourself some time, copy this for undocumented things:
|
||||
<Description>
|
||||
This Actor represents a playable sound. There are two attributes that can be set on load.<br />
|
||||
* <code>SupportPan</code> - Let the sound pan from side to side.<br />
|
||||
* <code>SupportRateChanging</code> - Let the sound change rate and pitch.
|
||||
* <code>SupportRateChanging</code> - Let the sound change rate and pitch.<br />
|
||||
* <code>IsAction</code> - If true, the sound is an action sound, and will be muted if the MuteActions preference is turned on.
|
||||
</Description>
|
||||
<Function name='get' return='RageSound' arguments=''>
|
||||
Returns the <Link class='RageSound' /> that can be played by this Actor.
|
||||
</Function>
|
||||
<Function name='get_is_action' return='bool' arguments=''>
|
||||
Returns whether the sound is an action.
|
||||
</Function>
|
||||
<Function name='load' return='void' arguments='string sPath'>
|
||||
Loads the sound at <code>sPath</code>.
|
||||
</Function>
|
||||
@@ -1688,6 +1823,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='playforplayer' theme='_fallback' return='void' arguments='PlayerNumber pn'>
|
||||
[02 Sound.lua] Plays the sound on the given player's side. You must set <code>SupportPan = true</code> on load.
|
||||
</Function>
|
||||
<Function name='set_is_action' return='' arguments='bool is_action'>
|
||||
Sets whether the sound is an action.
|
||||
</Function>
|
||||
<Function name='stop' return='void' arguments=''>
|
||||
Stops the sound.
|
||||
</Function>
|
||||
@@ -2056,6 +2194,92 @@ save yourself some time, copy this for undocumented things:
|
||||
Returns the SHA-1 hash for <code>s</code>.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='CubicSplineN'>
|
||||
<Description>
|
||||
All functions in this class have camel case equivalents, use whichever naming style you prefer.<br />
|
||||
This spline implementation is a cubic spline.<br />
|
||||
A spline is a line calculated from a small set of points with mathematical smooting applied.<br />
|
||||
Splines can have any number of dimensions, but splines owned by actors (the ones inside NCSplineHandler and ActorMultiVertex) always have 3 dimensions.<br />
|
||||
</Description>
|
||||
<Function name='solve' return='' arguments=''>
|
||||
Solves the spline, setting the coefficients.
|
||||
</Function>
|
||||
<Function name='evaluate' return='{float}' arguments='float t'>
|
||||
Evaluates the spline at the given t value, returning a table of the results for each dimension of the spline.<br />
|
||||
t can range from 0 to the value returned by get_max_t().<br />
|
||||
A normal spline will return its starting point for any t value less than 0 and its end point for any t value greater than the max.<br />
|
||||
A looped spline adjust the t value to be within the its range by adding or subtracting the max t as needed. (so if the max t is 4 and you evaluate at 5, it will return the same as if you evaluated at 1.)
|
||||
</Function>
|
||||
<Function name='evaluate_derivative' return='{float}' arguments='float t'>
|
||||
Evaluates the derivative at t.
|
||||
</Function>
|
||||
<Function name='evaluate_second_derivative' return='{float}' arguments='float t'>
|
||||
Evaluates the second derivative at t.
|
||||
</Function>
|
||||
<Function name='evaluate_third_derivative' return='{float}' arguments='float t'>
|
||||
Evaluates the third derivative at t.<br />
|
||||
Second and third derivative functions exist because they're possible, not because they're expected to be useful. The fourth derivative would be 0 because the equation for evaluating the spline is "a + (b*t) + (c*t^2) + (d*t^3)".
|
||||
</Function>
|
||||
<Function name='set_point' return='' arguments='int i, {float} p'>
|
||||
Sets point i of the spline to the position specified by the table p.
|
||||
</Function>
|
||||
<Function name='set_coefficients' return= '' arguments='int i, {float} b, {float} c, {float} d'>
|
||||
Sets the coefficients of the spline at point i.<br />
|
||||
Each table must contain a value for each dimension of the spline.<br />
|
||||
Solving the spline normally should cover all normal usage, this is for people that want a spline with an abnormal behavior, so if you set the coefficients directly, expect to end up with an unsmooth shape.
|
||||
</Function>
|
||||
<Function name='get_coefficients' return='{{float}, {float}, {float}}' arguments='int i'>
|
||||
Returns a table containing the tables of coefficients for the point i.
|
||||
</Function>
|
||||
<Function name='set_spatial_extent' return='' arguments='int d, float e'>
|
||||
Sets the spatial extent of dimension d of the spline to e.<br />
|
||||
The spatial extent exists to handle numbers that exist in a finite looped space, instead of the flat infinite space.<br />
|
||||
To put it more concretely, spatial extent exists to allow a spline to control rotation with wrapping behavior at 0.0 and 2pi, instead of suddenly jerking from 2pi to 0.0.
|
||||
</Function>
|
||||
<Function name='get_spatial_extent' return='float' arguments='int d'>
|
||||
Returns the spatial extent of dimension d of the spline.
|
||||
</Function>
|
||||
<Function name='get_max_t' return='float' arguments=''>
|
||||
Returns the max t value the spline extends to. For a normal spline, this will be size()-1. For a looped spline, this will be size().
|
||||
</Function>
|
||||
<Function name='set_size' return='' arguments='int s'>
|
||||
Sets the number of points in the spline. You must set the number of points before trying to set the position of any point.
|
||||
</Function>
|
||||
<Function name='get_size' return='int s' arguments=''>
|
||||
Returns the number of points in the spline.
|
||||
</Function>
|
||||
<Function name='set_dimension' return='' arguments='int d'>
|
||||
Sets the number of dimensions the spline has.<br />
|
||||
Splines that are owned by actors (the ones inside ActorMultiVertex and NCSplineHandler) cannot have their number of dimensions changed because the actors require them to have 3 dimensions.
|
||||
</Function>
|
||||
<Function name='get_dimension' return='int' arguments=''>
|
||||
Returns the number of dimensions the spline has.
|
||||
</Function>
|
||||
<Function name='empty' return='bool' arguments=''>
|
||||
Returns true of the spline has zero points, or false if it has more than zero points.
|
||||
</Function>
|
||||
<Function name='set_loop' return='' arguments='bool'>
|
||||
Sets whether the spline is looped. A looped spline is one where the end point is connected to the start point.
|
||||
</Function>
|
||||
<Function name='get_loop' return='bool' arguments=''>
|
||||
Returns whether the spline is looped.
|
||||
</Function>
|
||||
<Function name='set_polygonal' return='' arguments='bool'>
|
||||
Sets whether the spline is polygonal. If the spline is polygonal, then it will have straight lines between the points instead of curves.
|
||||
</Function>
|
||||
<Function name='get_polygonal' return='bool' arguments=''>
|
||||
Returns whether the spline is polygonal.
|
||||
</Function>
|
||||
<Function name='set_dirty' return='' arguments='bool'>
|
||||
Sets whether the spline is dirty. A dirty spline is one that has been changed in some way that affects its shape. When solve() is called, the spline will only be solved if it is dirty. The dirty flag is automatically set by everything, so you should never have to call this function.
|
||||
</Function>
|
||||
<Function name='get_dirty' return='bool' arguments=''>
|
||||
Returns whether the spline is currently dirty.
|
||||
</Function>
|
||||
<Function name='destroy' return='' arguments=''>
|
||||
Destroys the spline, freeing the memory allocated for it. This can only be called on splines created with create_spline().
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='DifficultyIcon'>
|
||||
<Function name='SetFromDifficulty' return='void' arguments='Difficulty dc'>
|
||||
Sets the DifficultyIcon's state from the difficulty passed in.
|
||||
@@ -2131,6 +2355,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetName' return='string' arguments=''>
|
||||
Returns the name of the game such as "dance" or "pump".
|
||||
</Function>
|
||||
<Function name='GetSeparateStyles' return='bool' arguments=''>
|
||||
Returns whether this game allows the players to have separate styles.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='GameCommand'>
|
||||
<Function name='GetAnnouncer' return='string' arguments=''>
|
||||
@@ -2240,8 +2467,8 @@ save yourself some time, copy this for undocumented things:
|
||||
tells the sound manager to apply the current music rate. If <code>alignBeat</code>
|
||||
is true or nil, the length is automatically adjusted to cover an integer number of beats.
|
||||
</Function>
|
||||
<Function name='PlayOnce' return='void' arguments='string sPath'>
|
||||
Play the sound at <code>sPath</code> one time.
|
||||
<Function name='PlayOnce' return='void' arguments='string sPath, bool is_action'>
|
||||
Play the sound at <code>sPath</code> one time. <code>is_action</code> is optional, if it is true, the sound is an action sound, and will be muted if the MuteActions preference is turned on.
|
||||
</Function>
|
||||
<Function name='StopMusic' return='void' arguments='void'>
|
||||
Stops the music.
|
||||
@@ -2270,6 +2497,16 @@ save yourself some time, copy this for undocumented things:
|
||||
The second argument is optional. Apply the GameCommand represented by <code>sCommand</code>
|
||||
for <code>pn</code>, if given. See <Link class='GameCommand' />.
|
||||
</Function>
|
||||
<Function name='CanSafelyEnterGameplay' return='bool,string' arguments=''>
|
||||
Checks various things to determine whether the game will crash when gameplay starts. Returns false and a string if gameplay cannot be entered safely.<br />
|
||||
Might not work in all cases, but will catch things like a player not having
|
||||
steps set or no current song or style. Mainly exists for people with a custom ScreenSelectMusic replacement.<br />
|
||||
Example:<br />
|
||||
local can, reason= GAMESTATE:CanSafelyEnterGameplay()<br />
|
||||
if not can then<br />
|
||||
lua.ReportScriptError("Cannot safely enter gameplay: " .. tostring(reason))<br />
|
||||
end<br />
|
||||
</Function>
|
||||
<Function name='ClearStageModifiersIllegalForCourse' return='void' arguments=''>
|
||||
Removes any stage modifiers that are illegal for course play.
|
||||
</Function>
|
||||
@@ -2944,41 +3181,102 @@ save yourself some time, copy this for undocumented things:
|
||||
Returns a table of noteskin names for the current gametype.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='NCSplineHandler'>
|
||||
<Description>
|
||||
All functions in this class have camel case equivalents, use whichever naming style you prefer.<br />
|
||||
The spline handler holds info on how the spline is used by the engine.<br />
|
||||
Each get/set pair of functions in this class is for a different aspect of the spline's behavior.
|
||||
</Description>
|
||||
<Function name='get_spline' return='CubicSplineN' arguments=''>
|
||||
Returns the spline for this handler.
|
||||
</Function>
|
||||
<Function name='get_beats_per_t' return='float' arguments=''>
|
||||
Returns the beats per t value of the spline. If the beats_per_t is 4, then a note must be on screen for 4 beats to traverse from one point on the spline to the next.
|
||||
</Function>
|
||||
<Function name='set_beats_per_t' return='' arguments='float per'>
|
||||
Sets the beats per t value for the spline.
|
||||
</Function>
|
||||
<Function name='get_receptor_t' return='float' arguments=''>
|
||||
Returns the t value that receptors are evaluated at.
|
||||
</Function>
|
||||
<Function name='set_receptor_t' return='' arguments='float t'>
|
||||
the t value that receptors are evaluated at.
|
||||
</Function>
|
||||
<Function name='get_spline_mode' return='NoteColumnSplineMode' arguments=''>
|
||||
Returns the mode the spline is set to.<br />
|
||||
"NoteColumnSplineMode_Disabled" means the spline will not affect the notes or receptors at all.<br />
|
||||
"NoteColumnSplineMode_Offset" means the spline will added to the effects from the mods.<br />
|
||||
"NoteColumnSplineMode_Position" means only the spline affect the notes and mods will be ignored. (but only mods that affect the same aspect of the note as the spline will be disabled. So a rotation spline won't disable Mini or Tiny, but a zoom spline will, and a zoom spline won't disable Dizzy, Twirl, or Roll, but a rotation spline will.)
|
||||
</Function>
|
||||
<Function name='set_spline_mode' return='' arguments='NoteColumnSplineMode mode'>
|
||||
Sets the current spline mode for this handler.
|
||||
</Function>
|
||||
<Function name='get_subtract_song_beat' return='bool' arguments=''>
|
||||
Returns whether the current song beat is subtracted from a note's beat when calculating the t value to use on the spline.
|
||||
</Function>
|
||||
<Function name='set_subtract_song_beat' return='' arguments='bool s'>
|
||||
Sets whether the current song beat is subtracted from a note's beat when calculating the t value to use on the spline.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class base='Actor' name='NoteColumnRenderer'>
|
||||
<Description>
|
||||
All functions in this class have camel case equivalents, use whichever naming style you prefer.<br />
|
||||
Position, rotation, and zoom each have separate spline handlers to allow them to have separate independent behavior.<br />
|
||||
It is important to note that the spline handlers are inside the tween state, so whenever you start a new tween on the actor, you need to refetch the spline handlers.<br />
|
||||
</Description>
|
||||
<Function name='get_pos_handler' return='NCSplineHandler' arguments=''>
|
||||
Returns the handler for the position spline.
|
||||
</Function>
|
||||
<Function name='get_rot_handler' return='NCSplineHandler' arguments=''>
|
||||
Returns the handler for the rotation spline.<br />
|
||||
The rotation applied by the rotation spline is in radians.<br />
|
||||
For convenience, the spatial extent of the rotation spline defaults to 2pi.
|
||||
</Function>
|
||||
<Function name='get_zoom_handler' return='NCSplineHandler' arguments=''>
|
||||
Returns the handler for the zoom spline.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='NoteField'>
|
||||
<Function name='DidHoldNote' return='' arguments='int column, TapNoteScore tns, bool bright'>
|
||||
<Description>
|
||||
All functions in this class have camel case equivalents, use whichever naming style you prefer.<br />
|
||||
</Description>
|
||||
<Function name='did_hold_note' return='' arguments='int column, TapNoteScore tns, bool bright'>
|
||||
Makes the NoteField act as if a hold note was hit in the column, with the given score and bright setting. <br />
|
||||
The callback for DidHoldNote will not be called.
|
||||
The callback for did_hold_note will not be called.
|
||||
</Function>
|
||||
<Function name='DidTapNote' return='' arguments='int column, TapNoteScore tns, bool bright'>
|
||||
<Function name='did_tap_note' return='' arguments='int column, TapNoteScore tns, bool bright'>
|
||||
Makes the NoteField act as if a tap note was hit in the column, with the given score and bright setting. <br />
|
||||
The callback for DidTapNote will not be called.
|
||||
The callback for did_tap_note will not be called.
|
||||
</Function>
|
||||
<Function name='SetDidHoldNoteCallback' return= '' arguments='function callback'>
|
||||
<Function name='get_column_actors' return='{NoteColumnRenderer}' arguments=''>
|
||||
Returns a table of the actors for the columns. This means that each column is an actor, so you can move it around or animate it like an actor. See the NoteColumnRenderer class for a list of special functions for the column's actor.
|
||||
</Function>
|
||||
<Function name='set_did_hold_note_callback' return= '' arguments='function callback'>
|
||||
Same as SetDidTapNoteCallback, but for hold notes. Uses HoldNoteScore instead of TapNoteScore.
|
||||
</Function>
|
||||
<Function name='SetDidTapNoteCallback' return= '' arguments='function callback'>
|
||||
<Function name='set_did_tap_note_callback' return= '' arguments='function callback'>
|
||||
Sets the function that the NoteField will call whenever a tap note is hit.<br />
|
||||
The callback function is passed the column, the TapNoteScore, and whether the explosion will be bright.<br />
|
||||
The callback function can return changed values for the NoteField to use instead of the ones that were passed.<br />
|
||||
Pass nil instead of a function to clear the callback.
|
||||
</Function>
|
||||
<Function name='SetPressed' return='' arguments='int column'>
|
||||
<Function name='set_pressed' return='' arguments='int column'>
|
||||
Makes the NoteField act as if a press occurred in the column. <br />
|
||||
The callback for SetPressed will not be called.
|
||||
The callback for set_pressed will not be called.
|
||||
</Function>
|
||||
<Function name='SetSetPressedCallback' return= '' arguments='function callback'>
|
||||
<Function name='set_set_pressed_callback' return= '' arguments='function callback'>
|
||||
Sets the function that the NoteField will call whenever a press occurs.<br />
|
||||
The callback function is passed the column for the press.<br />
|
||||
The callback function can return changed values for the NoteField to use instead of the ones that were passed.<br />
|
||||
Pass nil instead of a function to clear the callback.
|
||||
</Function>
|
||||
<Function name='SetStepCallback' return= '' arguments='function callback'>
|
||||
<Function name='set_step_callback' return= '' arguments='function callback'>
|
||||
Sets the function that the NoteField will call whenever a step occurs.<br />
|
||||
The callback function is passed the column and the TapNoteScore for the step.<br />
|
||||
The callback function can return changed values for the NoteField to use instead of the ones that were passed.<br />
|
||||
Pass nil instead of a function to clear the callback.
|
||||
</Function>
|
||||
<Function name='Step' return='' arguments='int column, TapNoteScore tns'>
|
||||
<Function name='step' return='' arguments='int column, TapNoteScore tns'>
|
||||
Makes the NoteField act as if a step occurred in the column with the given score.
|
||||
The callback for Step will not be called.
|
||||
</Function>
|
||||
@@ -3802,9 +4100,30 @@ save yourself some time, copy this for undocumented things:
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='RageTexture'>
|
||||
<Function name='GetSourceWidth' return='float' arguments=''>
|
||||
Returns the source width.
|
||||
</Function>
|
||||
<Function name='GetSourceHeight' return='float' arguments=''>
|
||||
Returns the source height.
|
||||
</Function>
|
||||
<Function name='GetTextureWidth' return='float' arguments=''>
|
||||
Returns the texture width.
|
||||
</Function>
|
||||
<Function name='GetTextureHeight' return='float' arguments=''>
|
||||
Returns the texture height.
|
||||
</Function>
|
||||
<Function name='GetImageWidth' return='float' arguments=''>
|
||||
Returns the image width.
|
||||
</Function>
|
||||
<Function name='GetImageHeight' return='float' arguments=''>
|
||||
Returns the image height.
|
||||
</Function>
|
||||
<Function name='GetNumFrames' return='int' arguments=''>
|
||||
Returns the number of frames in this texture.
|
||||
</Function>
|
||||
<Function name='GetPath' return='string' arguments=''>
|
||||
Returns the path to the texture's file.
|
||||
</Function>
|
||||
<Function name='GetTextureCoordRect' return='{float}' arguments=''>
|
||||
Return the texture coordinate rectangle as <code>{left, top, right, bottom}</code>.
|
||||
</Function>
|
||||
@@ -4013,6 +4332,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetCurrentRowIndex' renamed='true' return='int' arguments='PlayerNumber pn'>
|
||||
Returns the current row that player <code>pn</code> is on. (Was previously <code>GetCurrentRow</code>.)
|
||||
</Function>
|
||||
<Function name='GetNumRows' return='int' arguments=''>
|
||||
Returns the number of rows on the screen.
|
||||
</Function>
|
||||
<Function name='GetOptionRow' return='OptionRow' arguments='int iRow'>
|
||||
Returns the specified OptionRow.
|
||||
</Function>
|
||||
@@ -4077,7 +4399,7 @@ save yourself some time, copy this for undocumented things:
|
||||
</Class>
|
||||
<Class name='ScreenTextEntry'>
|
||||
<Description>
|
||||
TextEntrySettings is implemented similar to the Attributes in BitmapText. Formatting issues prevent the sample from being properly shown here; please see Changelog_sm-ssc.txt for the TextEntrySettings format.
|
||||
TextEntrySettings is implemented similar to the Attributes in BitmapText. Formatting issues prevent the sample from being properly shown here.<br />Please see docs/Themerdocs/ScreenTextEntry.txt for the TextEntrySettings format.
|
||||
</Description>
|
||||
<Function name='Load' return='void' arguments='TextEntrySettings args'>
|
||||
Sets up a ScreenTextEntry's values.
|
||||
@@ -4107,6 +4429,11 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetBannerPath' return='string' arguments=''>
|
||||
Returns the path to the song's banner.
|
||||
</Function>
|
||||
<Function name='GetBGChanges' return='table' arguments=''>
|
||||
Returns a table with all the data for the song's BGCHANGES line.<br />
|
||||
Each element of the table is one change like this:<br />
|
||||
{start_beat= 1.0, rate= 1.0, transition= "example", effect= "example", file1= "example", file2= "example", color1= "#FFFFFFFF", color2= "#FFFFFFFF"}
|
||||
</Function>
|
||||
<Function name='GetCDImagePath' return='string' arguments=''>
|
||||
Returns the path to the song's CD image.
|
||||
</Function>
|
||||
@@ -4164,6 +4491,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetOrigin' return='string' arguments=''>
|
||||
Gets the Song's origin.
|
||||
</Function>
|
||||
<Function name='GetPreviewMusicPath' return='string' arguments=''>
|
||||
Returns the path to the Song's preview music. This handles the #PREVIEW tag internally, so it works with songs that use it and songs that don't.
|
||||
</Function>
|
||||
<Function name='GetPreviewVidPath' return='string' arguments=''>
|
||||
Returns the path to the Song's preview video, if it exists. (Returns <code>nil</code> otherwise.)
|
||||
</Function>
|
||||
@@ -4465,6 +4795,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetAnimationLengthSeconds' return='float' arguments=''>
|
||||
Returns the length of the animation in seconds.
|
||||
</Function>
|
||||
<Function name='GetDecodeMovie' return='bool' arguments=''>
|
||||
Gets whether the Sprite should call the decode function for its texture during updates.
|
||||
</Function>
|
||||
<Function name='GetNumStates' return='int' arguments=''>
|
||||
Return the number of states this Sprite has.
|
||||
</Function>
|
||||
@@ -4505,12 +4838,30 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='StopUsingCustomPosCoords' return='void' arguments=''>
|
||||
Turns off the custom pos coords for the sprite.
|
||||
</Function>
|
||||
<Function name='SetDecodeMovie' return='' arguments='bool decode'>
|
||||
Sets whether the Sprite should call the decode function for its texture during updates.
|
||||
</Function>
|
||||
<Function name='SetEffectMode' return='void' arguments='EffectMode mode'>
|
||||
Set the <Link class='ENUM' function='EffectMode' /> to <code>mode</code>.
|
||||
</Function>
|
||||
<Function name='SetSecondsIntoAnimation' return='void' arguments='float fSeconds'>
|
||||
Sets the number of seconds into the animation to <code>fSeconds</code>.
|
||||
</Function>
|
||||
<Function name='SetStateProperties' return= '' arguments='table properties'>
|
||||
Sets the properties of the states of the sprite. The properties table is identical to the "Frames" table that can be put in the sprite when calling Def.Sprite.<br />
|
||||
Example:<br />
|
||||
{{Frame= 0, Delay= .016, {0, 0}, {.25, .25}},<br />
|
||||
{Frame= 1, Delay= .016, {0, 0}, {.25, .25}},<br />
|
||||
{Frame= 2, Delay= .016, {0, 0}, {.25, .25}},<br />
|
||||
{Frame= 3, Delay= .016, {0, 0}, {.25, .25}},<br />
|
||||
}<br />
|
||||
Frame is optional, defaulting to 0.<br />
|
||||
Delay is optional, defaulting to 0.<br />
|
||||
The two tables are optional upper left and lower right corners of the fraction of the frame to use. The example makes the sprite only use the upper left corner of each frame.<br />
|
||||
Simpler example:<br />
|
||||
{{Frame= 0, Delay= .016}, {Frame= 1, Delay= .016}, {Frame= 2, Delay= .016}, {Frame= 3, Delay= .016}}<br />
|
||||
This example makes the sprite use the whole of each frame.
|
||||
</Function>
|
||||
<Function name='SetTexture' return='void' arguments='RageTexture texture'>
|
||||
Set the texture to <code>texture</code>.
|
||||
</Function>
|
||||
@@ -4719,11 +5070,14 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetColumnDrawOrder' return='int' arguments='int column'>
|
||||
Returns the draw order of the column.
|
||||
</Function>
|
||||
<Function name='GetWidth' return='float' arguments='PlayerNumber pn'>
|
||||
Returns the width of the notefield for the given player with this style.
|
||||
</Function>
|
||||
<Function name='LockedDifficulty' return='bool' arguments=''>
|
||||
Returns <code>true</code> if this style locks the difficulty for both players.
|
||||
</Function>
|
||||
<Function name='NeedsZoomOutWith2Players' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the Style needs to be zoomed out with two players.
|
||||
Deprecated. Always returns false.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='TapNote'>
|
||||
|
||||
@@ -0,0 +1,233 @@
|
||||
--[[
|
||||
This file contains 4 examples showing off the various features of ActorFrameTextures. Drop this into any Screen's Decorations or
|
||||
Overlay to see the examples.
|
||||
--]]
|
||||
|
||||
-- Choose which example you'd like to see
|
||||
local ExampleToShow = 1;
|
||||
|
||||
-- Example 1: An ActorFrameTexture draws 3 quads and then hides itself. All of the quads are the same size, but two of them extend
|
||||
-- off the edge of the texture. A sprite draws the texture, which begins scrolling the texture after 2 seconds.
|
||||
local Example1_AlphaBuffer = true; -- Change this to see the effect of the AlphaBuffer. The white background is to demonstate this.
|
||||
|
||||
-- Example 2: An ActorFrameTexture draws a spinning ActorFrame containing 3 color-channging quads. The texture is drawn by a sprite.
|
||||
local Example2_PreserveTexture = false; -- Change this to see the effect of PreserveTexture.
|
||||
|
||||
-- Example 3: This example shows how the Float property of ActorFrameTexture works. An ActorFrameTexture draws a white quad,
|
||||
-- and then draws 3 quads on top of it all using "BlendMode_Add", each with either R, G, or B. Change the diffuse to see different
|
||||
-- colors show up as a result of the texture having RGB values greater than 1.
|
||||
local Example3_Diffuse = { 1,0.5,1,1 } -- Note that with Green of 50%, there is still a white rectangle where the Green square intersect the background white square.
|
||||
|
||||
-- Example 4: Use a pair of AFTs to draw an object with a fading trail behind it. This example is a bit odd, in that the length of the
|
||||
-- trail ends up depending heavily on frame rate. This will look fairly different with and without VSync on. Holding tab or ~ will also
|
||||
-- change the length.
|
||||
|
||||
--[[
|
||||
ActorFrameTexture Explained:
|
||||
|
||||
ActorFrameTexture is like a regular ActorFrame except that it draws to a texture instead of drawing to the screen( the
|
||||
way all other actors draw ). Other actor classes such as Sprite and ActorMultiVertex can draw the texture and maniplate
|
||||
it in ways that you cannot normally manipulate an ActorFrame.
|
||||
|
||||
Because it is not drawing to the screen, an ActorFrameTexture's postion, rotation, and zoom have no affect. Diffuse and
|
||||
glow are applied to the children of an ActorFrameTexture the same way they are applied to the children of an ActorFrame.
|
||||
Additionally, an ActorFrameTexture can draw to it's texture at any time, by calling the Actor method Draw. For all other
|
||||
Actor classes, the Draw method will have no effect if called outside of the Screen's draw cycle.
|
||||
|
||||
ActorFrameTextures draw only actors or parts of actors that are located within the range x = 0 to x = <width> and y = 0
|
||||
to y = <height>. If an actor is sitting at x = 0 inside the ActorFrameTexture, only the right half of the Actor will draw.
|
||||
The SetWidth and SetHeight methods are used to set the width and height. They are explained in more detail below.
|
||||
|
||||
An ActorFrameTexture can be used to cache 'expensive to draw' ensembles of objects by drawing them once to the texture,
|
||||
hiding the AFT, and then having a single sprite draw that texture instead.
|
||||
|
||||
ActorFrameTexture methods:
|
||||
|
||||
The follow methods have effect only if used BEFORE the 'Create' method.
|
||||
|
||||
EnableAlphaBuffer( boolean )
|
||||
- The texture can have transparency if this is set true. If false it will render over a black background.
|
||||
- See example 1 below.
|
||||
|
||||
EnableDepthBuffer( boolean )
|
||||
- If true the texture is created with a zbuffer. This allows masking to occur while rendering to the texture. Both
|
||||
- mask source and mask destination must drawn while rendering to the texture in order to have any effect. Regardless
|
||||
- of this setting, masks drawn before rendering to the texture has begun will not affect objects drawn while rendering
|
||||
- to the texture, and masks drawn while rending to the texture will not affect objects drawn after rendering to the
|
||||
- texture has finished.
|
||||
|
||||
EnableFloat( boolean )
|
||||
- This allows the values ( RGB ) to go outside the range [0,1] when using Blend modes. See example 3.
|
||||
|
||||
SetTextureName( string )
|
||||
- This allows the created texture to be called by name.
|
||||
- This is used in all of the examples below.
|
||||
|
||||
SetHeight( float ) and SetWidth( float )
|
||||
- These methods belong to the Actor class, but the properties they set are used in a specific way by ActorFrameTexture.
|
||||
- These methods are used to set the size of the created texture. The actual texture will have its dimensions rounded up
|
||||
- to the next power of two, but only the portion within the chose height and width will be rendered to.
|
||||
|
||||
Create()
|
||||
- This creates the texture with the properties set by the above methods. Calling any of those methods after calling
|
||||
- create will have no effect.
|
||||
|
||||
The following methods can be used any time.
|
||||
|
||||
EnablePreserveTexture( boolean )
|
||||
- If this is false(default) the texture will be cleared before each time the AFT renders to it. If this is true, the AFT
|
||||
- will render on top of the existing texture without clearing it first. This can be changed dynamically after the texture
|
||||
- has been created.
|
||||
- See example 2.
|
||||
|
||||
GetTexture()
|
||||
- This returns the RageTextureRenderTarget object created with the Create method. You can use with the "SetTexture" methods
|
||||
- of other Actor classes including Sprite and ActorMultiVertex. This is the only way to access the texture if the texture
|
||||
- was created without using SetTextureName.
|
||||
-
|
||||
- This RageTextureRenderTarget has two unique methods of it's own: BeginRenderingTo and FinishRenderingTo. When it's parent
|
||||
- ActorFrameTexture draws it will automatically call these methods, before it begins drawing and after it finishes respectively.
|
||||
- These methods allow you to use a DrawFunction on any ActorFrame's to render to an AFT's texture, and there are several powerful
|
||||
- techinques which take advantage of this.
|
||||
]]
|
||||
|
||||
local Examples = { }
|
||||
|
||||
Examples[1] = Def.ActorFrame{
|
||||
Def.Quad{ InitCommand=cmd(FullScreen) }; -- a blank background.
|
||||
Def.ActorFrameTexture{
|
||||
InitCommand=function(self)
|
||||
self:SetTextureName( "Example 1" )
|
||||
self:SetWidth( 128 );
|
||||
self:SetHeight( 128 );
|
||||
self:EnableAlphaBuffer( Example1_AlphaBuffer );
|
||||
self:Create();
|
||||
|
||||
-- The ActorFrameTexture only needs to draw once, so hide it after the first draw.
|
||||
self:Draw()
|
||||
self:hibernate(math.huge)
|
||||
end;
|
||||
Def.ActorFrame{
|
||||
Name = "Draw";
|
||||
-- three random quads, two of them strattling the edge of the texture.
|
||||
Def.Quad{ InitCommand=cmd(zoom,50;diffuse,1,0,0,0.5) };
|
||||
Def.Quad{ InitCommand=cmd(zoom,50;diffuse,0,1,0,0.5;x,64;y,64) };
|
||||
Def.Quad{ InitCommand=cmd(zoom,50;diffuse,0,0,1,0.5;x,120;y,100) };
|
||||
};
|
||||
};
|
||||
Def.Sprite{
|
||||
Texture="Example 1";
|
||||
InitCommand=cmd(Center;sleep,1;queuecommand,"Scroll");
|
||||
ScrollCommand=cmd(texcoordvelocity,1,0.5); -- Scroll the texture. Texture manipulation is one of the things that makes AFT special.
|
||||
};
|
||||
}
|
||||
|
||||
Examples[2] = Def.ActorFrame{
|
||||
Def.Quad{ InitCommand=cmd(FullScreen;diffuse,0,0,0,1) }; -- a blank background.
|
||||
Def.ActorFrameTexture{
|
||||
InitCommand=function(self)
|
||||
self:SetTextureName( "Example 2" )
|
||||
self:SetWidth( 128 );
|
||||
self:SetHeight( 128 );
|
||||
self:EnableAlphaBuffer( true );
|
||||
self:Create();
|
||||
|
||||
self:EnablePreserveTexture( Example2_PreserveTexture );
|
||||
|
||||
-- No draw function this time, this will draw on every frame.
|
||||
end;
|
||||
Def.ActorFrame{
|
||||
Name = "Draw";
|
||||
InitCommand=cmd(spin;x,64;y,64); -- Something has to change to demonstrate PreserveTexture.
|
||||
Def.Quad{ InitCommand=cmd(zoom,50;rainbow;effectperiod,3;effectoffset,1;x,-40;y,-56) };
|
||||
Def.Quad{ InitCommand=cmd(zoom,50;rainbow;effectperiod,3;effectoffset,0) };
|
||||
Def.Quad{ InitCommand=cmd(zoom,50;rainbow;effectperiod,3;effectoffset,2;x,64;y,50) };
|
||||
};
|
||||
};
|
||||
Def.Sprite{ Texture="Example 2"; InitCommand=cmd(Center); };
|
||||
}
|
||||
|
||||
Examples[3] = Def.ActorFrame{
|
||||
Def.Quad{ InitCommand=cmd(FullScreen;diffuse,0,0,0,1) }; -- a blank background.
|
||||
Def.ActorFrameTexture{
|
||||
InitCommand=function(self)
|
||||
self:SetTextureName( "Example 3" )
|
||||
self:SetWidth( 128 );
|
||||
self:SetHeight( 128 );
|
||||
self:EnableAlphaBuffer( true );
|
||||
self:EnableFloat( true );
|
||||
self:Create();
|
||||
|
||||
self:Draw()
|
||||
self:hibernate(math.huge)
|
||||
end;
|
||||
Def.ActorFrame{
|
||||
Name = "Draw";
|
||||
Def.Quad{ InitCommand=cmd(zoom,80;diffuse,1,1,1,1;x,64;y,64) };
|
||||
Def.Quad{ InitCommand=cmd(zoom,80;diffuse,1,0,0,1;x,14;y,80;blend,"BlendMode_Add") };
|
||||
Def.Quad{ InitCommand=cmd(zoom,80;diffuse,0,1,0,1;x,74;y,20;blend,"BlendMode_Add") };
|
||||
Def.Quad{ InitCommand=cmd(zoom,80;diffuse,0,0,1,1;x,128;y,100;blend,"BlendMode_Add") };
|
||||
};
|
||||
};
|
||||
Def.Sprite{ Texture = "Example 3"; InitCommand=cmd(Center;diffuse,Example3_Diffuse); };
|
||||
}
|
||||
|
||||
--[[
|
||||
We have 2 AFTs, and a sprite to draw the final output.
|
||||
On each frame, the following occurs:
|
||||
The first AFT draws the 'final output' sprite to it's texture, showing the final output of the previous frame.
|
||||
The second AFT draws a sprite containing the first AFT's texture, but at reduced alpha, and then draw's it's own image.
|
||||
The final output sprite draws the second AFT's texture to the screen.
|
||||
|
||||
The image drawn in a frame will be drawn again and again of subsequant frames with continuously decreasing opacity, showing
|
||||
a trail of where it had been.
|
||||
|
||||
We cannot use a single AFT, having it draw a sprite containing it's own texture at lower alpha because the texture is cleared
|
||||
as soon as the texture begins rendering, before it can be drawn. If PreserveTexture is true, we cannot have it fade.
|
||||
--]]
|
||||
|
||||
Examples[4] = Def.ActorFrame{
|
||||
Def.Quad{ InitCommand=cmd(FullScreen;diffuse,0,0,0,1) }; -- a blank background.
|
||||
Def.ActorFrameTexture{
|
||||
Name = "Memory";
|
||||
InitCommand=function(self)
|
||||
self:SetTextureName( "Memory" )
|
||||
self:SetWidth( 256 );
|
||||
self:SetHeight( 256 );
|
||||
self:EnableAlphaBuffer( true );
|
||||
self:Create();
|
||||
end;
|
||||
-- Cannot call the second AFT's texture by name as it has not been created when this Sprite loads.
|
||||
Def.Sprite{ Name = "Sprite"; InitCommand=cmd(x,128;y,128) };
|
||||
};
|
||||
Def.ActorFrameTexture{
|
||||
InitCommand=function(self)
|
||||
self:SetTextureName( "Output" )
|
||||
self:SetWidth( 256 );
|
||||
self:SetHeight( 256 );
|
||||
self:EnableAlphaBuffer( true );
|
||||
self:Create();
|
||||
-- Set the first AFT's child's texture to this AFT's texture, now that it has been created.
|
||||
self:GetParent():GetChild("Memory"):GetChild("Sprite"):SetTexture( self:GetTexture() );
|
||||
end;
|
||||
-- A sprite to draw the 'trail' with.
|
||||
Def.Sprite{ Texture = "Memory"; InitCommand=cmd(x,128;y,128;diffuse,1,1,1,.995); };
|
||||
Def.ActorFrame{ -- eliptical motion.
|
||||
InitCommand=cmd(x,128;y,128;bob;effectmagnitude,96,0,0;effectoffset,0.5);
|
||||
Def.ActorFrame{
|
||||
InitCommand=cmd(bob;effectmagnitude,0,64,0);
|
||||
-- A pixel ghost.
|
||||
Def.Quad{ InitCommand=cmd(zoomto,32,40); };
|
||||
Def.Quad{ InitCommand=cmd(zoomto,8,8;x,-8;y,-8;diffuse,0,0,0,1); };
|
||||
Def.Quad{ InitCommand=cmd(zoomto,8,8;x,8;y,-8;diffuse,0,0,0,1); };
|
||||
Def.Quad{ InitCommand=cmd(zoomto,24,8;x,0;y,2;diffuse,0,0,0,1); };
|
||||
Def.Quad{ InitCommand=cmd(zoomto,8,16;x,-12;y,24); };
|
||||
Def.Quad{ InitCommand=cmd(zoomto,8,16;x,12;y,24); };
|
||||
Def.Quad{ InitCommand=cmd(zoomto,8,16;x,0;y,24); };
|
||||
};
|
||||
};
|
||||
};
|
||||
Def.Sprite{ Name = "Ghosting"; Texture = "Output"; InitCommand=cmd(Center); };
|
||||
}
|
||||
|
||||
return Examples[ ExampleToShow ]
|
||||
@@ -0,0 +1,17 @@
|
||||
-- A simple BitmapText example. Puts "Hello World!" in the center of the screen.
|
||||
-- BitmapTexts put text on the screen (pretty self-explanatory)
|
||||
|
||||
Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
-- Chooses the font for the text. The font needs to be in the theme's Fonts
|
||||
-- folder or the fallback theme's Fonts folder. By default, Common Normal
|
||||
-- is "_open sans semibold".
|
||||
-- File is used in XML files from ITG, instead of Font. It's deprecated.
|
||||
-- You shouldn't use it.
|
||||
|
||||
Text="Hello World!",
|
||||
-- Chooses what the BitmapText will show. Pretty straightforward.
|
||||
|
||||
OnCommand= function(self) self:Center() end,
|
||||
-- Puts the text in the center in the center of the screen.
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
-- A simple quad example.
|
||||
-- Quads are used to create… well, quads.
|
||||
|
||||
Def.Quad{
|
||||
-- Quads have no special attributes, but they do have a few special functions.
|
||||
OnCommand=function(self)
|
||||
self:SetWidth(40) -- scales the quad's width to 40
|
||||
self:SetHeight(40) -- scales the quad's height to 40
|
||||
-- SetWidth and SetHeight must be capitalized to work.
|
||||
-- SetSize (or setsize) is a shorthand for SetWidth and SetHeight.
|
||||
-- The syntax is setsize(x, y), where x is the width and y is the height.
|
||||
-- The default width and height is 1, which is less than 1 pixel on some displays
|
||||
|
||||
self:diffuse(Color.Red)
|
||||
-- Sets the color to red.
|
||||
-- A list of all possible names for the colors can be found in
|
||||
-- Themes/_fallback/Scripts/02 Colors.lua
|
||||
|
||||
self:Center()
|
||||
-- places the quad in the middle of the screen
|
||||
end
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
-- A simple RollingNumbers example, which takes 10 seconds to go from 0 to 1000.
|
||||
-- RollingNumbers are interesting (and kind of lame) in the sense that
|
||||
-- the way they are loaded is through metrics.
|
||||
-- To test this, put this in your metrics ini:
|
||||
|
||||
[RollingNumbersExample]
|
||||
Fallback="RollingNumbers"
|
||||
|
||||
TextFormat="%04.0f"
|
||||
ApproachSeconds=10
|
||||
Commify=true
|
||||
LeadingZeroMultiplyColor=Color.Orange
|
||||
|
||||
-- Be sure to reload the metrics if StepMania is currently open.
|
||||
|
||||
-- Let's go over the parts:
|
||||
-- TextFormat: How many trailing zeroes you want, using the format "xx.0f", where xx
|
||||
-- is the number.
|
||||
-- ApproachSeconds: How many seconds it takes to reach the target number (explained later)
|
||||
-- Commify: Whether or not to use commas every 3 digits, i.e. 1,000 vs 1000.
|
||||
-- Commify can only be true or false.
|
||||
-- LeadingZeroMultiplyColor: The color of the closest zero to the number.
|
||||
-- For example, if you were to make LeadingZeroMultiplyColor red, and
|
||||
-- your RollingNumber was at 100 with a TextFormat of "%04.0f", then
|
||||
-- then the zero before the 1 (0100) would be red.
|
||||
|
||||
-- Now, for the actual thing:
|
||||
Def.RollingNumbers{
|
||||
-- RollingNumbers derives from BitmapText, so you're gonna need a font.
|
||||
Font="Common Normal",
|
||||
|
||||
-- The Text field is ignored.
|
||||
|
||||
-- Let's load the metrics and set our target number
|
||||
-- If you don't call Load, your RollingNumbers actor will not be rendered
|
||||
-- and you won't be able to set the target number.
|
||||
OnCommand= function(self)
|
||||
self:Load("RollingNumbersExample"):targetnumber(1000)
|
||||
:xy(_screen.cx, _screen.cy - 100)
|
||||
end
|
||||
|
||||
}
|
||||
-- Your RollingNumber should start at zero, then take 10 seconds to reach 1000.
|
||||
@@ -0,0 +1,22 @@
|
||||
The BGCHANGES line in a simfile is used to control what backgrounds are loaded by the simfile and when they appear.
|
||||
|
||||
The data is between the colon and the semicolon.
|
||||
Each entry is separated from the next by a comma.
|
||||
Each entry is composed of 1 to 11 values separated by equals.
|
||||
The meanings of the values are as follows:
|
||||
1. start beat
|
||||
2. file or folder name
|
||||
3. play rate
|
||||
4. Backward compatible transition type. CrossFade is used if this is not 0.
|
||||
5. Backward compatible effect flag. StretchRewind is used if this is not 0.
|
||||
6. Backward compatible effect flag. StretchNoLoop is used if this is not 0.
|
||||
7. Name of the effect file to use. The BackgroundEffects folder will be searched for a match.
|
||||
8. Name of the second file.
|
||||
9. Name of the transition file to use. The BackgroundTransitions folder will be searched for a match.
|
||||
10. Color string in either "1.0^0.5^0.75^0.25" or "#ff7fcf3f" form. The fourth channel is optional.
|
||||
11. Second color string, same format.
|
||||
|
||||
The file names (values 2 and 8) and the colors (values 10 and 11) are passed to the effect file as thread variables. Most effects do not use the second file.
|
||||
|
||||
|
||||
The FGCHANGES line uses the same format, except only the start beat and first file are used (values 1 and 2).
|
||||
@@ -1,17 +1,16 @@
|
||||
Stepmania 5系本体用 日本語化セット15(2014/10/01)
|
||||
Stepmania 5系本体用 日本語化セット16(2015/04/11)
|
||||
作者:ナイラー
|
||||
-----------
|
||||
Stepmania5系本体では従来の日本語テーマ、および日本語ランゲージファイルが使用できなくなっています。
|
||||
個人的に日本語が見えているほうが安心できるので、とりあえずファイルを製作してみました。
|
||||
-----------
|
||||
以下のファイルが同梱されています。
|
||||
・fallback20141002.ini(_fallbackテーマ用日本語ランゲージファイルVer 2)
|
||||
・fallback20150411.ini(_fallbackテーマ用日本語ランゲージファイルVer 2)
|
||||
・default20141002.ini(デフォルトテーマ用日本語ランゲージファイルVer 2)
|
||||
-----------
|
||||
今回の更新点
|
||||
・beta 4での追加オプションを補完。
|
||||
(おじゃま周りとプロファイル周りはまだ手が回ってないです)
|
||||
・Speedmodの新仕様に対応しました。
|
||||
・5.0.7での追加分に対応。
|
||||
・Editのバックグラウンド関連はもう少しお待ちください。
|
||||
・その他、一部のおかしかった部分を修正したり。
|
||||
|
||||
-----------
|
||||
|
||||
@@ -3,12 +3,6 @@ AUTOMAKE_OPTIONS = 1.7 foreign
|
||||
SUBDIRS = bundle src
|
||||
ACLOCAL_AMFLAGS = -I autoconf/m4
|
||||
|
||||
## Black magic (read: sed) for getting the product ID as defined in code, not by the autotools.
|
||||
## Quotes are making vim's highlighting of this even worse, so just escape everything,
|
||||
## including the escapes. Make it lowercase to match ArchHooks::MountInitialFileSystems().
|
||||
## Replace space with - so package build tools won't choke on the installation directory.
|
||||
productID := $(shell sed -nr /define\\s+PRODUCT_ID_BARE/\{s/.*define\\s+PRODUCT_ID_BARE\\s+\(.+\)/\\1/\;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ\ /abcdefghijklmnopqrstuvwxyz-/\;p\;q\} $(srcdir)/src/ProductInfo.h)
|
||||
|
||||
installFiles = src/stepmania
|
||||
if HAVE_GTK
|
||||
installFiles += src/GtkModule.so
|
||||
@@ -27,14 +21,14 @@ dist-hook: SMData
|
||||
cp -r -t "$(distdir)" $(installFiles)
|
||||
|
||||
install-exec-hook:
|
||||
mkdir -p "$(DESTDIR)$(prefix)/$(productID)"
|
||||
$(INSTALL) $(installFiles) "$(DESTDIR)$(prefix)/$(productID)"
|
||||
mkdir -p "$(DESTDIR)$(prefix)/stepmania-$(VERSION)"
|
||||
$(INSTALL) $(installFiles) "$(DESTDIR)$(prefix)/stepmania-$(VERSION)"
|
||||
|
||||
install-data-local:
|
||||
mkdir -p "$(DESTDIR)$(prefix)/$(productID)/Songs"
|
||||
cp -r -t "$(DESTDIR)$(prefix)/$(productID)" $(installData)
|
||||
mkdir -p "$(DESTDIR)$(prefix)/stepmania-$(VERSION)/Songs"
|
||||
cp -r -t "$(DESTDIR)$(prefix)/stepmania-$(VERSION)" $(installData)
|
||||
|
||||
uninstall-hook:
|
||||
rm -f "$(DESTDIR)$(prefix)/$(productID)/stepmania"
|
||||
rm -f "$(DESTDIR)$(prefix)/$(productID)/GtkModule.so"
|
||||
rm -f "$(DESTDIR)$(prefix)/stepmania-$(VERSION)/stepmania"
|
||||
rm -f "$(DESTDIR)$(prefix)/stepmania-$(VERSION)/GtkModule.so"
|
||||
# todo: properly remove data
|
||||
|
||||
@@ -89,7 +89,7 @@ in Applications/, then put StepMania 5 in there, and make folders as needed. Tha
|
||||
probably isn't the best way to do it, but it is <strong><em>A</em></strong> way.</p>
|
||||
|
||||
<h4>Linux</h4>
|
||||
<p>Linux users are typically expected to build from source. See <a href="http://code.google.com/p/sm-ssc/wiki/Compiling">Compiling</a>
|
||||
<p>Linux users are typically expected to build from source. See <a href="http://stepmania.com/wiki/compiling-stepmania/">Compiling</a>
|
||||
on the StepMania wiki for more information.</p>
|
||||
<hr/>
|
||||
|
||||
@@ -150,4 +150,4 @@ is a good source of information on theming for StepMania.</p>
|
||||
<hr/>
|
||||
<div id="footer">StepMania is copyright © 2001-2012 StepMania team.
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -11,7 +11,7 @@ return Def.ActorFrame {
|
||||
|
||||
LoadActor( "_Tap Receptor", NOTESKIN:LoadActor(Var "Button", "Go Receptor") ) .. {
|
||||
Frame0000=0;
|
||||
Delay0000=0;
|
||||
Delay0000=1;
|
||||
|
||||
InitCommand=cmd(playcommand, "Set");
|
||||
GameplayLeadInChangedMessageCommand=cmd(playcommand,"Set");
|
||||
|
||||
@@ -16,24 +16,6 @@ local OldRedir = ret.Redir;
|
||||
ret.Redir = function(sButton, sElement)
|
||||
-- sButton, sElement = OldRedir(sButton, sElement);
|
||||
|
||||
-- Instead of separate hold heads, use the tap note graphics.
|
||||
if sElement == "Hold Head Active" or
|
||||
sElement == "Roll Head Active"
|
||||
then
|
||||
sElement =
|
||||
(GAMESTATE:GetCurrentStyle():GetStyleType() == "StyleType_TwoPlayersSharedSides")
|
||||
and "Tap Note" or "Hold Head Active";
|
||||
end
|
||||
|
||||
-- Test
|
||||
if sElement == "Hold Head Inactive" or
|
||||
sElement == "Roll Head Inactive"
|
||||
then
|
||||
sElement =
|
||||
(GAMESTATE:GetCurrentStyle():GetStyleType() == "StyleType_TwoPlayersSharedSides")
|
||||
and "Tap Note" or "Hold Head Inactive";
|
||||
end
|
||||
|
||||
if sElement == "Tap Fake"
|
||||
then
|
||||
sElement = "Tap Note";
|
||||
|
||||
@@ -15,24 +15,6 @@ ret.RedirTable =
|
||||
local OldRedir = ret.Redir;
|
||||
ret.Redir = function(sButton, sElement)
|
||||
-- sButton, sElement = OldRedir(sButton, sElement);
|
||||
|
||||
-- Instead of separate hold heads, use the tap note graphics.
|
||||
if sElement == "Hold Head Active" or
|
||||
sElement == "Roll Head Active"
|
||||
then
|
||||
sElement =
|
||||
(GAMESTATE:GetCurrentStyle():GetStyleType() == "StyleType_TwoPlayersSharedSides")
|
||||
and "Tap Note" or "Hold Head Active";
|
||||
end
|
||||
|
||||
-- Test
|
||||
if sElement == "Hold Head Inactive" or
|
||||
sElement == "Roll Head Inactive"
|
||||
then
|
||||
sElement =
|
||||
(GAMESTATE:GetCurrentStyle():GetStyleType() == "StyleType_TwoPlayersSharedSides")
|
||||
and "Tap Note" or "Hold Head Inactive";
|
||||
end
|
||||
|
||||
if sElement == "Tap Fake"
|
||||
then
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
local t = LoadActor("AnyRightFist Explosion") .. {
|
||||
InitCommand=cmd(basezoomx,-1);
|
||||
}
|
||||
|
||||
return t;
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFist','Hold Head Active');
|
||||
InitCommand=cmd(basezoomx,-1);
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFist','Hold Head Active');
|
||||
InitCommand=cmd(basezoomx,-1;diffuse,color("0.5,0.5,0.5,1"));
|
||||
};
|
||||
@@ -0,0 +1,5 @@
|
||||
local t = LoadActor("AnyRightFist Receptor") .. {
|
||||
InitCommand=cmd(zoomx,-1);
|
||||
}
|
||||
|
||||
return t;
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFist','Roll Head Active');
|
||||
InitCommand=cmd(basezoomx,-1;);
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFist','Roll Head Active');
|
||||
InitCommand=cmd(basezoomx,-1;diffuse,color("0.5,0.5,0.5,1"));
|
||||
};
|
||||
@@ -0,0 +1,5 @@
|
||||
local t = LoadActor("AnyRightFist Tap Lift") .. {
|
||||
InitCommand=cmd(basezoomx,-1);
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -0,0 +1,5 @@
|
||||
local t = LoadActor("AnyRightFist tap Note") .. {
|
||||
InitCommand=cmd(basezoomx,-1);
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -0,0 +1,5 @@
|
||||
local t = LoadActor("AnyRightFoot Explosion") .. {
|
||||
InitCommand=cmd(basezoomx,-1);
|
||||
}
|
||||
|
||||
return t;
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFoot','Hold Head Active');
|
||||
InitCommand=cmd(basezoomx,-1;);
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFoot','Hold Head Active');
|
||||
InitCommand=cmd(basezoomx,-1;diffuse,color("0.5,0.5,0.5,1"));
|
||||
};
|
||||
@@ -0,0 +1,5 @@
|
||||
local t = LoadActor("AnyRightFoot Receptor") .. {
|
||||
InitCommand=cmd(zoomx,-1);
|
||||
}
|
||||
|
||||
return t;
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFoot','Roll Head Active');
|
||||
InitCommand=cmd(basezoomx,-1;);
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFoot','Roll Head Active');
|
||||
InitCommand=cmd(basezoomx,-1;diffuse,color("0.5,0.5,0.5,1"));
|
||||
};
|
||||
@@ -0,0 +1,5 @@
|
||||
local t = LoadActor("AnyRightFoot Tap Lift") .. {
|
||||
InitCommand=cmd(basezoomx,-1);
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -0,0 +1,5 @@
|
||||
local t = LoadActor("AnyRightFoot tap Note") .. {
|
||||
InitCommand=cmd(basezoomx,-1);
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -0,0 +1,29 @@
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor( "_AnyRightFist Hold Explosion" ) .. {
|
||||
HoldingOnCommand=NOTESKIN:GetMetricA("HoldGhostArrow", "HoldingOnCommand");
|
||||
HoldingOffCommand=NOTESKIN:GetMetricA("HoldGhostArrow", "HoldingOffCommand");
|
||||
InitCommand=cmd(playcommand,"HoldingOff";finishtweening);
|
||||
};
|
||||
LoadActor( "_AnyRightFist Roll Explosion" ) .. {
|
||||
RollOnCommand=NOTESKIN:GetMetricA("HoldGhostArrow", "RollOnCommand");
|
||||
RollOffCommand=NOTESKIN:GetMetricA("HoldGhostArrow", "RollOffCommand");
|
||||
InitCommand=cmd(playcommand,"RollOff";finishtweening);
|
||||
};
|
||||
LoadActor( "_AnyRightFist Tap Explosion Dim" ) .. {
|
||||
InitCommand=cmd(diffusealpha,0);
|
||||
W5Command=NOTESKIN:GetMetricA("GhostArrowDim", "W5Command");
|
||||
W4Command=NOTESKIN:GetMetricA("GhostArrowDim", "W4Command");
|
||||
W3Command=NOTESKIN:GetMetricA("GhostArrowDim", "W3Command");
|
||||
W2Command=NOTESKIN:GetMetricA("GhostArrowDim", "W2Command");
|
||||
W1Command=NOTESKIN:GetMetricA("GhostArrowDim", "W1Command");
|
||||
HeldCommand=NOTESKIN:GetMetricA("GhostArrowDim", "HeldCommand");
|
||||
JudgmentCommand=cmd(finishtweening);
|
||||
BrightCommand=cmd(visible,false);
|
||||
DimCommand=cmd(visible,true);
|
||||
};
|
||||
LoadActor( "AnyRightFist HitMine Explosion" ) .. {
|
||||
InitCommand=cmd(blend,"BlendMode_Add";diffusealpha,0);
|
||||
HitMineCommand=NOTESKIN:GetMetricA("GhostArrowBright", "HitMineCommand");
|
||||
};
|
||||
}
|
||||
return t;
|
||||
@@ -0,0 +1 @@
|
||||
Fallback HitMine Explosion
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
@@ -0,0 +1 @@
|
||||
AnyRightFist tap note
|
||||
@@ -0,0 +1,4 @@
|
||||
return Def.Sprite {
|
||||
Texture=NOTESKIN:GetPath('AnyRightFist','Roll Head Active');
|
||||
InitCommand=cmd(diffuse,color("0.5,0.5,0.5,1"));
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
local t = Def.ActorFrame {
|
||||
Def.Sprite {
|
||||
Texture="_AnyRightFist receptor underlay";
|
||||
Frame0000=0;
|
||||
Delay0000=1;
|
||||
InitCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'InitCommand');
|
||||
NoneCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'NoneCommand');
|
||||
};
|
||||
Def.Sprite {
|
||||
Texture="_AnyRightFist receptor frame";
|
||||
Frame0000=0;
|
||||
Delay0000=1;
|
||||
InitCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'InitCommand');
|
||||
PressCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'PressCommand');
|
||||
LiftCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'LiftCommand');
|
||||
NoneCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'NoneCommand');
|
||||
};
|
||||
};
|
||||
return t;
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.4 KiB |