1
0
mirror of synced 2024-11-30 18:24:32 +01:00

Ex/Extra transition animation support (#468)

This commit is contained in:
DragonRatTiger / リュウコ 2023-06-17 02:12:13 -04:00 committed by GitHub
parent 76c4e38baf
commit 9690374ece
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 367 additions and 31 deletions

View File

@ -1215,6 +1215,8 @@ namespace TJAPlayer3
public bool bJudgeCountDisplay;
public bool ShowExExtraAnime;
public bool bEnableCountdownTimer;
// 各画像の表示・非表示設定
@ -1224,7 +1226,6 @@ namespace TJAPlayer3
public bool ShowFooter;
public bool ShowMob;
public bool ShowPuchiChara; // リザーブ
//
public EScrollMode eScrollMode = EScrollMode.Normal;
public bool bスクロールモードを上書き = false;
@ -1924,7 +1925,9 @@ namespace TJAPlayer3
this.bJudgeCountDisplay = false;
ShowChara = true;
ShowExExtraAnime = true;
ShowChara = true;
ShowDancer = true;
ShowRunner = true;
ShowFooter = true;
@ -2402,7 +2405,7 @@ namespace TJAPlayer3
sw.WriteLine("ShowFooter={0}", ShowFooter ? 1 : 0);
sw.WriteLine("; ぷちキャラ画像 (0:OFF, 1:ON)");
sw.WriteLine("ShowPuchiChara={0}", ShowPuchiChara ? 1 : 0);
sw.WriteLine();
sw.WriteLine();
sw.WriteLine( "; DARKモード(0:OFF, 1:HALF, 2:FULL)" );
sw.WriteLine( "Dark={0}", (int) this.eDark );
sw.WriteLine();
@ -2551,6 +2554,9 @@ namespace TJAPlayer3
sw.WriteLine( "; 判定数の表示(0:OFF, 1:ON)" );
sw.WriteLine( "JudgeCountDisplay={0}", this.bJudgeCountDisplay ? 1 : 0 );
sw.WriteLine();
sw.WriteLine("; 裏表移行アニメーションを有効する (0:OFF, 1:ON)");
sw.WriteLine("ShowExExtraAnime={0}", this.ShowExExtraAnime ? 1 : 0);
sw.WriteLine();
sw.WriteLine( "; プレイ人数" );
sw.WriteLine( "PlayerCount={0}", this.nPlayerCount );
sw.WriteLine();
@ -3683,8 +3689,12 @@ namespace TJAPlayer3
{
this.bJudgeCountDisplay = C変換.bONorOFF( str4[ 0 ] );
}
else if (str3.Equals("ShowExExtraAnime"))
{
this.ShowExExtraAnime = C変換.bONorOFF(str4[0]);
}
else if ( str3.Equals( "PlayerCount" ) )
{

View File

@ -418,12 +418,13 @@ namespace TJAPlayer3
public Cシステムサウンド soundEncyclopediaBGM = null;
public Cシステムサウンド soundTowerSelectBGM = null;
public Cシステムサウンド[] soundExToExtra = null;
public Cシステムサウンド[] soundExtraToEx = null;
public Cシステムサウンド[] soundModal = null;
public Cシステムサウンド soundCrownIn = null;
public Cシステムサウンド soundRankIn = null;
public Cシステムサウンド soundDonClear = null;
public Cシステムサウンド soundDonFailed = null;
public Cシステムサウンド soundSelectAnnounce = null;
@ -801,6 +802,9 @@ namespace TJAPlayer3
this.soundEncyclopediaBGM = new Cシステムサウンド(@"Sounds\Encyclopedia\BGM.ogg", true, false, false, ESoundGroup.SongPlayback);
this.soundTowerSelectBGM = new Cシステムサウンド(@"Sounds\Tower\BGM.ogg", true, false, false, ESoundGroup.SongPlayback);
soundExToExtra = new Cシステムサウンド[1] { new Cシステムサウンド(@"Sounds\SongSelect\0\ExToExtra.ogg", false, false, false, ESoundGroup.SoundEffect) }; // Placeholder until Komi decides
soundExtraToEx = new Cシステムサウンド[1] { new Cシステムサウンド(@"Sounds\SongSelect\0\ExtraToEx.ogg", false, false, false, ESoundGroup.SoundEffect) }; // what to do with it lol
soundModal = new Cシステムサウンド[6];
for (int i = 0; i < soundModal.Length - 1; i++)
{
@ -2721,6 +2725,14 @@ namespace TJAPlayer3
SongSelect_Difficulty_Select_Bar_Move[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_Difficulty_Bar_ExExtra_AnimeDuration")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_Preimage")
{
string[] strSplit = strParam.Split(',');
@ -8290,6 +8302,8 @@ namespace TJAPlayer3
public int[] SongSelect_Difficulty_Select_Bar_AnimeIn = new int[] { 0, 50 };
public int[] SongSelect_Difficulty_Select_Bar_Move = new int[] { 25, 0 };
public int[] SongSelect_Difficulty_Bar_ExExtra_AnimeDuration = new int[] { -1, -1 };
public int[] SongSelect_Preimage = new int[] { 120, 110 };
public int[] SongSelect_Preimage_Size = new int[] { 200, 200 };

View File

@ -274,6 +274,9 @@ namespace TJAPlayer3
[10122] = "Clap5P",
[10123] = "Konga key assign:\nTo assign key/pads for Clap5P\n button.",
[10124] = "Use Extreme/Extra Transitions",
[10125] = "Play a skin-defined animation\nwhile switching between\nExtreme & Extra.",
[100] = "Taiko Mode",
[101] = "Dan-i Dojo",
[102] = "Taiko Towers",

View File

@ -328,6 +328,9 @@ namespace TJAPlayer3
[10122] = "Clap5P",
[10123] = "コンガの拍手へのキーの割り当てを設\n定します。",
[10124] = "裏表移行アニメーション",
[10125] = "裏表移行アニメーションを有効する",
[100] = "演奏ゲーム",
[101] = "段位道場",
[102] = "太鼓タワー",

View File

@ -375,7 +375,11 @@ namespace TJAPlayer3
this.iTaikoJudgeCountDisp = new CItemToggle(CLangManager.LangInstance.GetString(93), TJAPlayer3.ConfigIni.bJudgeCountDisplay,
CLangManager.LangInstance.GetString(94));
this.list項目リスト.Add( this.iTaikoJudgeCountDisp );
this.iShowExExtraAnime = new CItemToggle(CLangManager.LangInstance.GetString(10124), TJAPlayer3.ConfigIni.ShowExExtraAnime,
CLangManager.LangInstance.GetString(10125));
this.list項目リスト.Add(this.iShowExExtraAnime);
this.iDrumsGoToKeyAssign = new CItemBase(CLangManager.LangInstance.GetString(95), CItemBase.Eパネル種別.,
CLangManager.LangInstance.GetString(96));
this.list項目リスト.Add( this.iDrumsGoToKeyAssign );
@ -1557,6 +1561,7 @@ namespace TJAPlayer3
CItemToggle ShowMob;
CItemToggle ShowFooter;
CItemToggle ShowPuchiChara;
CItemToggle iShowExExtraAnime;
CItemToggle ShinuchiMode;
CItemToggle FastRender;
CItemInteger MusicPreTimeMs;
@ -1712,8 +1717,9 @@ namespace TJAPlayer3
TJAPlayer3.ConfigIni.eGameMode = (EGame)this.iTaikoGameMode.n現在選択されている項目番号;
//TJAPlayer3.ConfigIni.bJust = this.iTaikoJust.bON;
TJAPlayer3.ConfigIni.bJudgeCountDisplay = this.iTaikoJudgeCountDisp.bON;
TJAPlayer3.ConfigIni.b大音符判定 = this.iTaikoBigNotesJudge.bON;
TJAPlayer3.ConfigIni.bJudgeCountDisplay = this.iTaikoJudgeCountDisp.bON;
TJAPlayer3.ConfigIni.ShowExExtraAnime = this.iShowExExtraAnime.bON;
TJAPlayer3.ConfigIni.b大音符判定 = this.iTaikoBigNotesJudge.bON;
}
//-----------------
#endregion

View File

@ -0,0 +1,38 @@
using NLua;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TJAPlayer3
{
internal class AnimeBG : ScriptBG
{
private LuaFunction LuaPlayAnimation;
public AnimeBG(string filePath) : base(filePath)
{
if (LuaScript != null)
{
LuaPlayAnimation = LuaScript.GetFunction("playAnime");
}
}
public new void Dispose()
{
base.Dispose();
LuaPlayAnimation?.Dispose();
}
public void PlayAnimation()
{
if (LuaScript == null) return;
try
{
LuaPlayAnimation.Call();
}
catch (Exception ex)
{
}
}
}
}

View File

@ -0,0 +1,137 @@
using FDK;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TJAPlayer3
{
internal class CActSelectExExtraTransAnime : CActivity
{
enum AnimeState
{
NotRunning = 0,
ExToExtra = 1,
ExtraToEx = 2,
}
// Timer & script for each anime
// Activate when swapping between ex/extra
// Do not let player move until timer is complete
// Stop drawing script when timer is finished
public CActSelectExExtraTransAnime()
{
}
// because i can't read japanese very well :
public override void OnManagedリソースの作成() //On Managed Create Resource
{
base.OnManagedリソースの作成();
CurrentState = AnimeState.NotRunning;
ExToExtraCounter = new CCounter(0, 1, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[0], TJAPlayer3.Timer);
ExtraToExCounter = new CCounter(0, 1, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[1], TJAPlayer3.Timer);
ExToExtraScript = new AnimeBG(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.SONGSELECT}Difficulty_Select\\ExToExtra\\0\\Script.lua"));
ExtraToExScript = new AnimeBG(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.SONGSELECT}Difficulty_Select\\ExtraToEx\\0\\Script.lua"));
ExToExtraScript.Init();
ExtraToExScript.Init();
}
public override void OnManagedリソースの解放() //On Managed Release Resource
{
base.OnManagedリソースの解放();
ExToExtraCounter = null;
ExtraToExCounter = null;
if (ExToExtraScript != null)
{
ExToExtraScript.Dispose();
ExToExtraScript = null;
}
if (ExtraToExScript != null)
{
ExtraToExScript.Dispose();
ExtraToExScript = null;
}
}
public override void On活性化() //On Activate
{
base.On活性化();
}
public override int On進行描画() //On Progress Draw
{
switch (CurrentState)
{
case AnimeState.ExToExtra:
ExToExtraCounter.t進行();
if (ExToExtraCounter.b終了値に達した)
{
CurrentState = AnimeState.NotRunning;
ExToExtraCounter.t停止();
return 0;
}
ExToExtraScript.Update();
ExToExtraScript.Draw();
return 1;
case AnimeState.ExtraToEx:
ExtraToExCounter.t進行();
if (ExtraToExCounter.b終了値に達した)
{
CurrentState = AnimeState.NotRunning;
ExtraToExCounter.t停止();
return 0;
}
ExtraToExScript.Update();
ExtraToExScript.Draw();
return 1;
case AnimeState.NotRunning:
default:
return 0;
}
}
public override void On非活性化() //On Deactivate
{
base.On非活性化();
}
public void BeginAnime(bool toExtra)
{
if (!TJAPlayer3.ConfigIni.ShowExExtraAnime) return;
else if (toExtra && !ExToExtraScript.Exists()) return;
else if (!toExtra && !ExtraToExScript.Exists()) return;
CurrentState = toExtra ? AnimeState.ExToExtra : AnimeState.ExtraToEx;
if (toExtra)
{
ExToExtraCounter = new CCounter(0, 1, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[0], TJAPlayer3.Timer);
ExToExtraScript.PlayAnimation();
TJAPlayer3.Skin.soundExToExtra[0]?.t再生する(); // Placeholder code
}
else
{
ExtraToExCounter = new CCounter(0, 1, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[1], TJAPlayer3.Timer);
ExtraToExScript.PlayAnimation();
TJAPlayer3.Skin.soundExtraToEx[0]?.t再生する(); // Placeholder code
}
}
#region Private
CCounter ExToExtraCounter, ExtraToExCounter;
AnimeBG ExToExtraScript, ExtraToExScript;
AnimeState CurrentState;
#endregion
}
}

View File

@ -77,10 +77,14 @@ namespace TJAPlayer3
{
if (n現在の選択行[i] == 5)
{
// Extreme to Extra
TJAPlayer3.stage選曲.actExExtraTransAnime.BeginAnime(true);
n現在の選択行[i] = 6;
}
else if (n現在の選択行[i] == 6)
{
//Extra to Extreme
TJAPlayer3.stage選曲.actExExtraTransAnime.BeginAnime(false);
n現在の選択行[i] = 5;
}
}
@ -204,7 +208,7 @@ namespace TJAPlayer3
#region [ ]
if (this.ctBarAnimeIn.b終了値に達した)
if (this.ctBarAnimeIn.b終了値に達した && exextraAnimation == 0) // Prevent player actions if animation is active
{
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
@ -378,7 +382,7 @@ namespace TJAPlayer3
TJAPlayer3.Tx.Difficulty_Back[boxType].t2D中心基準描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Back[0], TJAPlayer3.Skin.SongSelect_Difficulty_Back[1]);
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) break;
@ -408,6 +412,7 @@ namespace TJAPlayer3
TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i][3])); //閉じる
}
exextraAnimation = TJAPlayer3.stage選曲.actExExtraTransAnime.On進行描画();
for (int i = 0; i <= (int)Difficulty.Edit; i++)
{
@ -425,11 +430,14 @@ namespace TJAPlayer3
else
TJAPlayer3.Tx.Difficulty_Bar.color4 = new Color4(0.5f, 0.5f, 0.5f, 1.0f);
TJAPlayer3.Tx.Difficulty_Bar.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_X[i + 2], TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Y[i + 2],
new RectangleF(TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][0],
TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][1],
TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][2],
TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][3]));
if (!(i >= (int)Difficulty.Oni && exextraAnimation > 0)) // Hide Oni/Ura during transition
{
TJAPlayer3.Tx.Difficulty_Bar.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_X[i + 2], TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Y[i + 2],
new RectangleF(TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][0],
TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][1],
TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][2],
TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][3]));
}
if (!avaliable)
continue;
@ -471,7 +479,7 @@ namespace TJAPlayer3
*/
}
if (level >= 0)
if (level >= 0 && (!(i >= (int)Difficulty.Oni && exextraAnimation > 0)))
t小文字表示(TJAPlayer3.stage選曲.r現在選択中のスコア..nレベル[i],
TJAPlayer3.Skin.SongSelect_Difficulty_Number_X[i],
TJAPlayer3.Skin.SongSelect_Difficulty_Number_Y[i],
@ -479,19 +487,22 @@ namespace TJAPlayer3
TJAPlayer3.stage選曲.r現在選択中のスコア..nLevelIcon[i]
);
for (int g = 0; g < 10; g++)
if (!(i >= (int)Difficulty.Oni && exextraAnimation > 0))
{
if (level > g + 10)
for (int g = 0; g < 10; g++)
{
TJAPlayer3.Tx.Difficulty_Star.color4 = new Color4(1f, 0.2f, 0.2f, 1.0f);
TJAPlayer3.Tx.Difficulty_Star?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Star_X[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[0], TJAPlayer3.Skin.SongSelect_Difficulty_Star_Y[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[1]);
}
else if (level > g)
{
TJAPlayer3.Tx.Difficulty_Star.color4 = new Color4(1f, 1f, 1f, 1.0f);
TJAPlayer3.Tx.Difficulty_Star?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Star_X[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[0], TJAPlayer3.Skin.SongSelect_Difficulty_Star_Y[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[1]);
}
if (level > g + 10)
{
TJAPlayer3.Tx.Difficulty_Star.color4 = new Color4(1f, 0.2f, 0.2f, 1.0f);
TJAPlayer3.Tx.Difficulty_Star?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Star_X[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[0], TJAPlayer3.Skin.SongSelect_Difficulty_Star_Y[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[1]);
}
else if (level > g)
{
TJAPlayer3.Tx.Difficulty_Star.color4 = new Color4(1f, 1f, 1f, 1.0f);
TJAPlayer3.Tx.Difficulty_Star?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Star_X[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[0], TJAPlayer3.Skin.SongSelect_Difficulty_Star_Y[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[1]);
}
}
}
if (TJAPlayer3.stage選曲.r現在選択中のスコア..b譜面分岐[i])
@ -587,8 +598,10 @@ namespace TJAPlayer3
private CCounter ctBarAnimeIn;
private CCounter[] ctBarAnime = new CCounter[2];
//0 閉じる 1 演奏オプション 2~ 難易度
public int[] n現在の選択行;
private int exextraAnimation;
//0 閉じる 1 演奏オプション 2~ 難易度
public int[] n現在の選択行;
private int nスイッチカウント;
private bool b裏譜面;

View File

@ -209,7 +209,7 @@ namespace TJAPlayer3
base.list子Activities.Add(this.actQuickConfig = new CActSelectQuickConfig());
base.list子Activities.Add(this.act難易度選択画面 = new CActSelect難易度選択画面());
base.list子Activities.Add(this.actPlayOption = new CActPlayOption());
base.list子Activities.Add(this.actExExtraTransAnime = new CActSelectExExtraTransAnime());
base.list子Activities.Add(this.PuchiChara = new PuchiChara());
@ -1387,6 +1387,7 @@ namespace TJAPlayer3
private CActSelectShowCurrentPosition actShowCurrentPosition;
public CActSelect難易度選択画面 act難易度選択画面;
public CActPlayOption actPlayOption;
public CActSelectExExtraTransAnime actExExtraTransAnime;
public CActSortSongs actSortSongs;
private CActSelectQuickConfig actQuickConfig;

View File

@ -126,6 +126,10 @@ namespace TJAPlayer3
LuaScript = null;
}
}
public bool Exists()
{
return LuaScript != null;
}
public void Dispose()
{
List<CTexture> texs = new List<CTexture>();

View File

@ -163,6 +163,8 @@
<Compile Include="Songs\VTTParser.cs" />
<Compile Include="Stages\01.StartUp\CCharacter.cs" />
<Compile Include="Stages\01.StartUp\CPuchichara.cs" />
<Compile Include="Stages\05.SongSelect\AnimeBG.cs" />
<Compile Include="Stages\05.SongSelect\CActSelectExExtraTransAnime.cs" />
<Compile Include="Stages\07.Game\Taiko\AIBattle.cs" />
<Compile Include="Stages\07.Game\Taiko\CAct演奏DrumsRunner.cs" />
<Compile Include="Stages\07.Game\Taiko\EndAnimeScript.cs" />

View File

@ -0,0 +1 @@
{"id":"qCNzKkLs4jIOYogQx3ZZy3ErWvy55EuSomhch1yqK7XIzTUGOaA0PvhJ6FCo5g7D","url":""}

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

View File

@ -0,0 +1,51 @@
--func:DrawText(x, y, text);
--func:DrawNum(x, y, num);
--func:AddGraph("filename");
--func:DrawGraph(x, y, filename);
--func:DrawRectGraph(x, y, rect_x, rect_y, rect_width, rect_height, filename);
--func:SetOpacity(opacity, "filename");
--func:SetScale(xscale, yscale, "filename");
--func:SetColor(r, g, b, "filename");
local xPos = 1292
local yPos = 405
local rectWidth = 197
local rectHeight = 355
local swipeWidth = 10
local swipeLength = 187
local animeDraw = 0
local swipeDraw = 0
local drawSpeed = 0
function init()
animeDraw = 0
swipeDraw = 0
drawSpeed = 197 / 0.15
func:AddGraph("Diffs.png")
func:AddGraph("Swipe.png")
end
function playAnime()
animeDraw = 0
swipeDraw = 0
end
function update()
animeDraw = animeDraw + (drawSpeed * deltaTime)
swipeDraw = math.min(animeDraw, swipeWidth) - math.min(math.max(animeDraw - swipeLength, 0), swipeWidth)
end
function draw()
-- Draw Extreme
func:DrawRectGraph(xPos + animeDraw, yPos, 0 + animeDraw, 0, math.max(rectWidth - animeDraw, 0), rectHeight, "Diffs.png")
-- Draw Extra
func:DrawRectGraph(xPos, yPos, rectWidth, 0, math.min(animeDraw, rectWidth), rectHeight, "Diffs.png")
-- Draw Swipe
func:DrawRectGraph(xPos + animeDraw, yPos, 0, 0, swipeDraw, rectHeight, "Swipe.png")
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

View File

@ -0,0 +1,51 @@
--func:DrawText(x, y, text);
--func:DrawNum(x, y, num);
--func:AddGraph("filename");
--func:DrawGraph(x, y, filename);
--func:DrawRectGraph(x, y, rect_x, rect_y, rect_width, rect_height, filename);
--func:SetOpacity(opacity, "filename");
--func:SetScale(xscale, yscale, "filename");
--func:SetColor(r, g, b, "filename");
local xPos = 1292
local yPos = 405
local rectWidth = 197
local rectHeight = 355
local swipeWidth = 10
local swipeLength = 187
local animeDraw = 0
local swipeDraw = 0
local drawSpeed = 0
function init()
animeDraw = 0
swipeDraw = 0
drawSpeed = 197 / 0.15
func:AddGraph("Diffs.png")
func:AddGraph("Swipe.png")
end
function playAnime()
animeDraw = 0
swipeDraw = 0
end
function update()
animeDraw = animeDraw + (drawSpeed * deltaTime)
swipeDraw = math.min(animeDraw, swipeWidth) - math.min(math.max(animeDraw - swipeLength, 0), swipeWidth)
end
function draw()
-- Draw Extra
func:DrawRectGraph(xPos + animeDraw, yPos, rectWidth + animeDraw, 0, math.max(rectWidth - animeDraw, 0), rectHeight, "Diffs.png")
-- Draw Extreme
func:DrawRectGraph(xPos, yPos, 0, 0, math.min(animeDraw, rectWidth), rectHeight, "Diffs.png")
-- Draw Swipe
func:DrawRectGraph(xPos + animeDraw, yPos, 0, 0, swipeDraw, rectHeight, "Swipe.png")
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -224,6 +224,8 @@ SongSelect_Difficulty_Number_Y=653,653,653,653,653
SongSelect_Difficulty_Number_Interval=17,0
; Duration in ms for Extreme->Extra and Extra->Extreme animation
SongSelect_Difficulty_Bar_ExExtra_AnimeDuration=150,150
SongSelect_Difficulty_Crown_1P_X=668,884,1100,1316,1316
SongSelect_Difficulty_Crown_2P_X=779,995,1211,1427,1427