diff --git a/Themes/HelloWorld/BGAnimations/ScreenTitleMenu background.lua b/Themes/HelloWorld/BGAnimations/ScreenTitleMenu background.lua new file mode 100644 index 0000000000..b2bdd597f2 --- /dev/null +++ b/Themes/HelloWorld/BGAnimations/ScreenTitleMenu background.lua @@ -0,0 +1,9 @@ +-- this file returns a single quad that represents the background of +-- ScreenTitleMenu. +return Def.Quad{ + -- FullScreen is defined in Themes/_fallback/Scripts/02 Actor.lua in sm-ssc. + + -- colors can either be entered as hex ("#FFFFFFFF") or 0..1 ("1.0,1.0,1.0,1.0") + -- where the values are Red, Green, Blue, and Alpha (transparency). + InitCommand=cmd(FullScreen;diffuse,color("#fffdf2")); +}; \ No newline at end of file diff --git a/Themes/HelloWorld/BGAnimations/ScreenTitleMenu underlay.lua b/Themes/HelloWorld/BGAnimations/ScreenTitleMenu underlay.lua new file mode 100644 index 0000000000..9e177fce1d --- /dev/null +++ b/Themes/HelloWorld/BGAnimations/ScreenTitleMenu underlay.lua @@ -0,0 +1,62 @@ +-- This file returns an ActorFrame that holds a few objects. + +-- Since I like to collapse similar code, here is a simple example: +local lineWidth = SCREEN_WIDTH*0.9; +-- previously, I had this set to SCREEN_WIDTH*0.8 in each of the +-- Def.Quad blocks below. Now I just use lineWidth and I get two advantages: +-- 1) I can change it and it takes effect in multiple places. +-- 2) I get a human readable name out of it. +-- It makes your code easier to read and work with. + +local lineTime = 0.625; +-- same with this code. + +return Def.ActorFrame { + Def.ActorFrame{ + Name="Flourishes"; + -- it has to be 0.05 since 0.9 uses up space on both sides. + InitCommand=cmd(x,SCREEN_LEFT+(SCREEN_WIDTH*0.05);y,SCREEN_CENTER_Y;); + + Def.Quad{ + Name="Red"; + InitCommand=cmd(horizalign,left;zoomto,0,4;diffuse,color("#DA8989");diffuserightedge,color("#FFBBBB")); + OnCommand=cmd(sleep,0.1;linear,lineTime;zoomx,lineWidth); + }; + + Def.Quad{ + Name="Yellow"; + InitCommand=cmd(y,4;horizalign,left;zoomto,0,4;diffuse,color("#DAD989");diffuserightedge,color("#FFFCBB")); + OnCommand=cmd(sleep,0.05;linear,lineTime;zoomx,lineWidth); + }; + + Def.Quad{ + Name="Blue"; + InitCommand=cmd(y,8;horizalign,left;zoomto,0,4;diffuse,color("#89C6DA");diffuserightedge,color("#BBEEFF")); + OnCommand=cmd(linear,lineTime;zoomx,lineWidth); + }; + }; + + -- LoadActor() is used to automatically load objects. + -- You'll be using it a lot. + + -- THEME:GetPathG() gets a file from the Graphics folder. + -- What graphic depends on the arguments. + -- There must always be two, and there usually is a space between the + -- first and second, unless you perform a trick like this: + LoadActor( THEME:GetPathG("","_common/_logo") ) .. { + -- the InitCommand puts the logo 44 pixels above vertical center + -- and moves it 60 pixels to the left of horizontal center. + -- diffusealpha,0 makes the object invisible, + -- which is handy for transitions... + InitCommand=cmd(x,SCREEN_CENTER_X*0.8125;y,SCREEN_CENTER_Y-44;diffusealpha,0;); + -- ...as we see in the OnCommand. linear means to perform the next + -- commands over a span of time (in seconds). + -- diffusealpha,1 makes the logo fade in when applied here. + OnCommand=cmd(linear,0.5;diffusealpha,1;); + }; + + -- Creative Commons logo, using a local file in the same directory: + LoadActor( "creativecommons" )..{ + InitCommand=cmd(x,SCREEN_LEFT+64;y,SCREEN_BOTTOM-48;Real); + }; +}; \ No newline at end of file diff --git a/Themes/HelloWorld/BGAnimations/creativecommons.png b/Themes/HelloWorld/BGAnimations/creativecommons.png new file mode 100644 index 0000000000..dece7939b5 Binary files /dev/null and b/Themes/HelloWorld/BGAnimations/creativecommons.png differ diff --git a/Themes/HelloWorld/Fonts/_frutiger roman 24px [alt] 12x11.png b/Themes/HelloWorld/Fonts/_frutiger roman 24px [alt] 12x11.png new file mode 100644 index 0000000000..53d4fc7464 Binary files /dev/null and b/Themes/HelloWorld/Fonts/_frutiger roman 24px [alt] 12x11.png differ diff --git a/Themes/HelloWorld/Fonts/_frutiger roman 24px [main-stroke] 16x16.png b/Themes/HelloWorld/Fonts/_frutiger roman 24px [main-stroke] 16x16.png new file mode 100644 index 0000000000..ed5d753593 Binary files /dev/null and b/Themes/HelloWorld/Fonts/_frutiger roman 24px [main-stroke] 16x16.png differ diff --git a/Themes/HelloWorld/Fonts/_frutiger roman 24px [main] 16x16.png b/Themes/HelloWorld/Fonts/_frutiger roman 24px [main] 16x16.png new file mode 100644 index 0000000000..1963076070 Binary files /dev/null and b/Themes/HelloWorld/Fonts/_frutiger roman 24px [main] 16x16.png differ diff --git a/Themes/HelloWorld/Fonts/_frutiger roman 24px.ini b/Themes/HelloWorld/Fonts/_frutiger roman 24px.ini new file mode 100644 index 0000000000..7734e7e4a8 --- /dev/null +++ b/Themes/HelloWorld/Fonts/_frutiger roman 24px.ini @@ -0,0 +1,392 @@ +[main] +Baseline=23 +Top=6 +LineSpacing=28 +DrawExtraPixelsLeft=1 +DrawExtraPixelsRight=0 +AdvanceExtraPixels=0 +0=10 +1=10 +2=10 +3=10 +4=10 +5=10 +6=10 +7=10 +8=10 +9=10 +10=10 +11=10 +12=10 +13=10 +14=10 +15=10 +16=10 +17=10 +18=10 +19=10 +20=10 +21=10 +22=10 +23=10 +24=10 +25=10 +26=10 +27=10 +28=10 +29=10 +30=10 +31=10 +32=7 +33=9 +34=13 +35=13 +36=13 +37=24 +38=17 +39=7 +40=8 +41=8 +42=13 +43=14 +44=7 +45=8 +46=7 +47=7 +48=13 +49=13 +50=13 +51=13 +52=13 +53=13 +54=13 +55=13 +56=13 +57=13 +58=7 +59=7 +60=14 +61=14 +62=14 +63=12 +64=19 +65=17 +66=15 +67=15 +68=17 +69=13 +70=12 +71=17 +72=17 +73=7 +74=9 +75=16 +76=12 +77=23 +78=17 +79=19 +80=13 +81=19 +82=15 +83=12 +84=13 +85=17 +86=16 +87=24 +88=16 +89=16 +90=13 +91=8 +92=7 +93=8 +94=14 +95=12 +96=7 +97=13 +98=15 +99=11 +100=15 +101=13 +102=9 +103=15 +104=15 +105=7 +106=7 +107=13 +108=7 +109=21 +110=15 +111=15 +112=15 +113=15 +114=9 +115=9 +116=9 +117=15 +118=12 +119=20 +120=12 +121=12 +122=12 +123=8 +124=5 +125=8 +126=14 +127=10 +128=13 +129=10 +130=7 +131=13 +132=13 +133=24 +134=13 +135=13 +136=7 +137=24 +138=12 +139=7 +140=23 +141=10 +142=13 +143=10 +144=10 +145=7 +146=7 +147=13 +148=13 +149=12 +150=12 +151=24 +152=7 +153=24 +154=9 +155=7 +156=23 +157=12 +158=10 +159=16 +160=7 +161=9 +162=13 +163=13 +164=13 +165=13 +166=5 +167=13 +168=7 +169=19 +170=9 +171=13 +172=14 +173=8 +174=19 +175=7 +176=10 +177=14 +178=9 +179=9 +180=7 +181=15 +182=14 +183=7 +184=7 +185=9 +186=10 +187=13 +188=20 +189=20 +190=20 +191=12 +192=17 +193=17 +194=17 +195=17 +196=17 +197=17 +198=23 +199=15 +200=13 +201=13 +202=13 +203=13 +204=7 +205=7 +206=7 +207=7 +208=17 +209=17 +210=19 +211=19 +212=19 +213=19 +214=19 +215=14 +216=19 +217=17 +218=17 +219=17 +220=17 +221=16 +222=13 +223=15 +224=13 +225=13 +226=13 +227=13 +228=13 +229=13 +230=21 +231=11 +232=13 +233=13 +234=13 +235=13 +236=7 +237=7 +238=7 +239=7 +240=15 +241=15 +242=15 +243=15 +244=15 +245=15 +246=15 +247=14 +248=15 +249=15 +250=15 +251=15 +252=15 +253=12 +254=15 +255=12 +[alt] +0=10 +1=10 +2=10 +3=10 +4=10 +5=10 +6=10 +7=10 +8=10 +9=10 +10=10 +11=10 +12=10 +13=10 +14=10 +15=10 +16=10 +17=10 +18=10 +19=10 +20=10 +21=10 +22=10 +23=10 +24=10 +25=10 +26=10 +27=10 +28=10 +29=10 +30=10 +31=10 +32=7 +33=12 +34=7 +35=12 +36=13 +37=10 +38=11 +39=13 +40=7 +41=12 +42=11 +43=9 +44=11 +45=8 +46=13 +47=11 +48=10 +49=11 +50=7 +51=7 +52=7 +53=7 +54=9 +55=7 +56=7 +57=9 +58=9 +59=7 +60=8 +61=7 +62=12 +63=8 +64=13 +65=17 +66=17 +67=12 +68=17 +69=10 +70=12 +71=15 +72=12 +73=13 +74=11 +75=13 +76=11 +77=7 +78=7 +79=13 +80=13 +81=13 +82=13 +83=19 +84=19 +85=13 +86=19 +87=14 +88=13 +89=12 +90=17 +91=12 +92=17 +93=16 +94=9 +95=15 +96=7 +97=13 +98=13 +99=11 +100=13 +101=5 +102=9 +103=11 +104=9 +105=13 +106=10 +107=13 +108=10 +109=7 +110=7 +111=13 +112=11 +113=11 +114=11 +115=15 +116=15 +117=11 +118=15 +119=14 +120=7 +121=11 +122=15 +123=11 +124=15 +125=12 +126=6 +127=7 diff --git a/Themes/HelloWorld/Graphics/ScreenTitleMenu scroll.lua b/Themes/HelloWorld/Graphics/ScreenTitleMenu scroll.lua new file mode 100644 index 0000000000..72e63f3bc7 --- /dev/null +++ b/Themes/HelloWorld/Graphics/ScreenTitleMenu scroll.lua @@ -0,0 +1,30 @@ +-- This file is used to define how the items should look on ScreenTitleMenu. +-- The syntax is different because I took this code from moonlight. :) + +--[[ +Concepts used: +* THEME:GetString(screen,string) +* zoom +* shadowlength +* diffuse +* halign (0 = left, 0.5 = middle, 1 = right) +* strokecolor +* stoptweening +* accelerate +--]] + +local t = Def.ActorFrame{ + LoadFont( "_frutiger roman" ) ..{ + -- This line tries to find a corresponding line in the current language + -- ini file; If it doesn't, (and you haven't disabled error messages,) + -- then an error will pop up telling you where you need to add the + -- string. + Text=THEME:GetString( 'ScreenTitleMenu', Var("GameCommand"):GetText() ); + InitCommand=cmd(zoom,0.85;y,-1;shadowlength,0;diffuse,color("#000000");halign,1;strokecolor,color("0,0,0,0");); + DisabledCommand=cmd( diffuse,color("0.45,0,0,1") ); + GainFocusCommand=cmd(stoptweening;accelerate,0.15;diffuse,color("#000000");strokecolor,color("0.85,0.9,1,0.75");); + LoseFocusCommand=cmd(stoptweening;accelerate,0.2;diffuse,color("#888888");strokecolor,color("0,0,0,0");); + }; +}; + +return t; \ No newline at end of file diff --git a/Themes/HelloWorld/Graphics/_common/_logo.png b/Themes/HelloWorld/Graphics/_common/_logo.png new file mode 100644 index 0000000000..c025372429 Binary files /dev/null and b/Themes/HelloWorld/Graphics/_common/_logo.png differ diff --git a/Themes/HelloWorld/Languages/en.ini b/Themes/HelloWorld/Languages/en.ini new file mode 100644 index 0000000000..361db82e0d --- /dev/null +++ b/Themes/HelloWorld/Languages/en.ini @@ -0,0 +1,6 @@ +[Common] +WindowTitle=Hello World (and other sm-ssc theming examples) + +[ScreenTitleMenu] +Game Start=Enter Guide +Tutorial=Tutorial Series \ No newline at end of file diff --git a/Themes/HelloWorld/ThemeInfo.ini b/Themes/HelloWorld/ThemeInfo.ini new file mode 100644 index 0000000000..d716420a59 --- /dev/null +++ b/Themes/HelloWorld/ThemeInfo.ini @@ -0,0 +1,6 @@ +# [en] ThemeInfo is used to set the theme's name (as it appears in the options +# menu), as well as the author (which shows up on ScreenInit, assuming you use it +# in your them). +[ThemeInfo] +DisplayName=Hello World +Author=SSC \ No newline at end of file diff --git a/Themes/HelloWorld/_assets/_logo.psd b/Themes/HelloWorld/_assets/_logo.psd new file mode 100644 index 0000000000..257cc33e58 Binary files /dev/null and b/Themes/HelloWorld/_assets/_logo.psd differ diff --git a/Themes/HelloWorld/_assets/hello world.psd b/Themes/HelloWorld/_assets/hello world.psd new file mode 100644 index 0000000000..1af3758ee5 Binary files /dev/null and b/Themes/HelloWorld/_assets/hello world.psd differ diff --git a/Themes/HelloWorld/metrics.ini b/Themes/HelloWorld/metrics.ini new file mode 100644 index 0000000000..d812bbbcaf --- /dev/null +++ b/Themes/HelloWorld/metrics.ini @@ -0,0 +1,72 @@ +# Hello World +# (and other sm-ssc theming examples) +# A theme by various contributors. Sign your comments if you wish. + +# contributors: +# AJ Kelly of the Spinal Shark Collective (http://ssc.ajworld.net/) + +################################################################################ +# +[Common] +# InitialScreen defines the starting screen of the theme. +# It can either be a string or a Lua function that returns a string. +InitialScreen="ScreenTitleMenu" + +################################################################################ +# [core] Core Screens; these are the concrete implementations. +[ScreenTitleMenu] +PrevScreen="ScreenTitleMenu" +# These settings are used to disable the attract sequence: +IdleTimeoutSeconds=-1 +IdleTimeoutScreen="ScreenTitleMenu" + +# These settings define what options appear on the menu: +#ChoiceNames="1,4,5,6,7" +ChoiceNames="1,2,4,7" +Choice1="applydefaultoptions;screen,ScreenProfileLoad;text,Game Start" +Choice2="text,Tutorial" +Choice4="screen,ScreenOptionsService;text,Options" +Choice7="screen,ScreenExit;text,Exit" + +# These control the placement of the items, as well as the list: +ScrollerX=SCREEN_RIGHT-44 +ScrollerY=SCREEN_CENTER_Y+32 +ScrollerTransform=function(self,offset,itemIndex,numItems) self:y(27*offset) end + +################################################################################ +# [guide] The guide splits the elements of StepMania theming into different sections. # +# All guide pages aside from ScreenGuideMain MUST be prefixed with "Guide" in +# order to differentiate them from the core screens. +[ScreenGuideMain] + +## Metrics + +## Fonts + +## Graphics + +## BGAnimations +### Decorations (simpler) +### Overlay/Underlay (can be more complex) + +## Sounds + +## Scripts + +## the Other folder + +################################################################################ +# [ref] The reference section contains a complete listing of commands and examples of how they work. # +# All reference pages aside from ScreenReferenceMain MUST be prefixed with "Reference" +# in order to differentiate them from the core screens. +[ScreenReferenceMain] + +## Screens + +## Classes + +## Etc. + +################################################################################ +# [tutor] Tutorials are guides to implementing specific things # +[ScreenTutorialMain] \ No newline at end of file diff --git a/Themes/HelloWorld/readme.txt b/Themes/HelloWorld/readme.txt new file mode 100644 index 0000000000..d14beaae4e --- /dev/null +++ b/Themes/HelloWorld/readme.txt @@ -0,0 +1,25 @@ +Hello World (and other sm-ssc theming examples) +A theme by various contributors. +----------------------------------------------- + +This theme and its accompanying documentation are licensed under +the Creative Commons Attribution-Share Alike 3.0 license. + +The license text can be viewed at: +http://creativecommons.org/licenses/by-sa/3.0/us/ + +================================================================================ +Table of Contents + Introduction [intro] + Chapter List [chapt] +[others tba] + +================================================================================ +Introduction [intro] + +Hello, and welcome to Hello World (and other sm-ssc theming examples). +This theme and accompanying documentation are provided for people new to +theming for StepMania, using sm-ssc as a base. + +================================================================================ +The Chapters [chapt] \ No newline at end of file