1
0
mirror of synced 2025-02-16 10:42:39 +01:00

Attach OpenEncyclopedia Menu base functionalities, a text allocation bug to fix

This commit is contained in:
0aubsq 2022-06-27 22:57:23 +02:00
parent 64eb2848f9
commit 5ea819e59d
9 changed files with 275 additions and 47 deletions

View File

@ -771,8 +771,15 @@ namespace TJAPlayer3
}
}
#region[Ver.K追加]
public enum Eレーンタイプ
public enum EReturnValue : int
{
Continuation,
ReturnToTitle,
SongChoosen
}
#region[Ver.K追加]
public enum Eレーンタイプ
{
TypeA,
TypeB,

View File

@ -327,6 +327,12 @@ namespace TJAPlayer3
get;
private set;
}
public static COpenEncyclopedia stageOpenEncyclopedia
{
get;
private set;
}
public static CStage曲読み込み stage曲読み込み
{
get;
@ -934,24 +940,22 @@ namespace TJAPlayer3
r現在のステージ = stageOnlineLounge;
//-----------------------------
#endregion
break;
break;
#region [ OPTION: ]
// case 2: // #24525 OPTIONとCONFIGの統合に伴い、OPTIONは廃止
// #region [ *** ]
// //-----------------------------
// r現在のステージ.On非活性化();
// Trace.TraceInformation( "----------------------" );
// Trace.TraceInformation( "■ オプション" );
// stageオプション.On活性化();
// r直前のステージ = r現在のステージ;
// r現在のステージ = stageオプション;
// //-----------------------------
// #endregion
// break;
#endregion
case (int)CStageタイトル.E戻り値.ENCYCLOPEDIA:
#region [Online Lounge]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ Open Encyclopedia");
stageOpenEncyclopedia.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stageOpenEncyclopedia;
//-----------------------------
#endregion
break;
case (int)CStageタイトル.E戻り値.CONFIG:
case (int)CStageタイトル.E戻り値.CONFIG:
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
@ -2149,6 +2153,7 @@ for (int i = 0; i < 3; i++) {
//---------------------
#endregion
#region [ ]
//---------------------
Trace.AutoFlush = true;
@ -2180,6 +2185,7 @@ for (int i = 0; i < 3; i++) {
Trace.TraceInformation( "CLR Version: " + Environment.Version.ToString() );
//---------------------
#endregion
#region [ DTXVmodeクラス ]
//---------------------
//Trace.TraceInformation( "DTXVモードの初期化を行います。" );
@ -2532,7 +2538,7 @@ for (int i = 0; i < 3; i++) {
Random = new Random( (int) Timer.nシステム時刻 );
//---------------------
#endregion
#region [ ]
#region [ Stages initialisation ]
//---------------------
r現在のステージ = null;
r直前のステージ = null;
@ -2544,6 +2550,7 @@ for (int i = 0; i < 3; i++) {
stage段位選択 = new CStage段位選択();
stageHeya = new CStageHeya();
stageOnlineLounge = new CStageOnlineLounge();
stageOpenEncyclopedia = new COpenEncyclopedia();
stage曲読み込み = new CStage曲読み込み();
stage演奏ドラム画面 = new CStage演奏ドラム画面();
stage結果 = new CStage結果();
@ -2562,6 +2569,7 @@ for (int i = 0; i < 3; i++) {
this.listトップレベルActivities.Add( stage段位選択 );
this.listトップレベルActivities.Add( stageHeya );
this.listトップレベルActivities.Add( stageOnlineLounge );
this.listトップレベルActivities.Add( stageOpenEncyclopedia );
this.listトップレベルActivities.Add( stage曲読み込み );
this.listトップレベルActivities.Add( stage演奏ドラム画面 );
this.listトップレベルActivities.Add( stage結果 );

View File

@ -33,6 +33,7 @@ namespace TJAPlayer3
const string MODALS = @"11_Modals\";
const string ONLINELOUNGE = @"12_OnlineLounge\";
const string TOWERSELECT = @"13_TowerSelect\";
const string OPENENCYCLOPEDIA = @"15_OpenEncyclopedia\";
// InGame
public const string DANCER = @"2_Dancer\";
@ -1093,6 +1094,14 @@ namespace TJAPlayer3
#endregion
#region [15_OpenEncyclopedia]
OpenEncyclopedia_Background = TxC(OPENENCYCLOPEDIA + @"Background.png");
OpenEncyclopedia_Context = TxC(OPENENCYCLOPEDIA + @"Context.png");
OpenEncyclopedia_Side_Menu = TxC(OPENENCYCLOPEDIA + @"Side_Menu.png");
#endregion
}
@ -2108,6 +2117,14 @@ namespace TJAPlayer3
#endregion
#region [15_OpenEncyclopedia]
public CTexture OpenEncyclopedia_Background,
OpenEncyclopedia_Context,
OpenEncyclopedia_Side_Menu;
#endregion
#region [ ]
public List<CTexture> listTexture = new List<CTexture>();

View File

@ -128,7 +128,7 @@ namespace TJAPlayer3
true,
true,
true,
false,
true,
false,
false,
false,

View File

@ -34,7 +34,9 @@ namespace TJAPlayer3
return;
base.eフェーズID = CStage.Eフェーズ._通常状態;
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.eフェードアウト完了時の戻り値 = EReturnValue.Continuation;
TJAPlayer3.Skin.soundOnlineLoungeBGM?.t再生する();
this.currentMenu = ECurrentMenu.MAIN;
this.menuPointer = ECurrentMenu.CDN_SELECT;
@ -338,8 +340,8 @@ namespace TJAPlayer3
if (currentMenu == ECurrentMenu.MAIN)
{
// Return to title screen
TJAPlayer3.Skin.soundOnlineLoungeBGM.t停止する();
this.eフェードアウト完了時の戻り値 = E戻り値.;
TJAPlayer3.Skin.soundOnlineLoungeBGM?.t停止する();
this.eフェードアウト完了時の戻り値 = EReturnValue.ReturnToTitle;
this.actFOtoTitle.tフェードアウト開始();
base.eフェーズID = CStage.Eフェーズ._フェードアウト;
}
@ -378,8 +380,8 @@ namespace TJAPlayer3
{
// Quit
TJAPlayer3.Skin.sound取消音.t再生する();
TJAPlayer3.Skin.soundOnlineLoungeBGM.t停止する();
this.eフェードアウト完了時の戻り値 = E戻り値.;
TJAPlayer3.Skin.soundOnlineLoungeBGM?.t停止する();
this.eフェードアウト完了時の戻り値 = EReturnValue.ReturnToTitle;
this.actFOtoTitle.tフェードアウト開始();
base.eフェーズID = CStage.Eフェーズ._フェードアウト;
}
@ -682,13 +684,6 @@ namespace TJAPlayer3
#region [Enums]
public enum E戻り値 : int
{
,
,
}
public enum ECurrentMenu : int
{
RETURN, // Return button
@ -709,7 +704,7 @@ namespace TJAPlayer3
private ECurrentMenu currentMenu;
private ECurrentMenu menuPointer;
private CMenuInfo[] menus;
public E戻り値 eフェードアウト完了時の戻り値;
public EReturnValue eフェードアウト完了時の戻り値;
public CActFIFOBlack actFOtoTitle;

View File

@ -128,6 +128,12 @@ namespace TJAPlayer3
{
tFreeRessources(true);
if (_current.Pages == null)
{
Pages = new (int, CTexture, CTexture)[0];
return; // Menus and Pages are null
}
int _count = _current.Pages.Length;
Pages = new (int, CTexture, CTexture)[_count];
@ -151,9 +157,13 @@ namespace TJAPlayer3
if (_callStack.Count() <= 0)
return true;
if (tArePagesOpened())
PageIndex = 0;
else
tResetIndexes();
_current = _callStack.Pop();
tResetIndexes();
tReallocateCurrentAccordingly();
return false;
@ -168,7 +178,11 @@ namespace TJAPlayer3
_callStack.Push(_current);
_current = _current.Menus[MenuIndex - 1].Value;
tResetIndexes();
if (tArePagesOpened())
PageIndex = 0;
else
tResetIndexes();
tReallocateCurrentAccordingly();
return (true, false);
@ -196,11 +210,13 @@ namespace TJAPlayer3
{
if (pages)
{
PageIndex = (PageIndex + count + Pages.Length) % Pages.Length;
if (Pages.Length > 0)
PageIndex = (PageIndex + count + Pages.Length) % Pages.Length;
}
else
{
MenuIndex = (MenuIndex + count + Submenus.Length) % Submenus.Length;
if (Submenus.Length > 0)
MenuIndex = (MenuIndex + count + Submenus.Length) % Submenus.Length;
}
}

View File

@ -0,0 +1,192 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FDK;
using System.Drawing;
// Minimalist menu class to use for custom menus
namespace TJAPlayer3
{
class COpenEncyclopedia : CStage
{
public COpenEncyclopedia()
{
base.eステージID = Eステージ.Template;
base.eフェーズID = CStage.Eフェーズ._通常状態;
// Load CActivity objects here
// base.list子Activities.Add(this.act = new CAct());
base.list子Activities.Add(this.actFOtoTitle = new CActFIFOBlack());
}
public override void On活性化()
{
// On activation
if (base.b活性化してる)
return;
base.eフェーズID = CStage.Eフェーズ._通常状態;
this.eフェードアウト完了時の戻り値 = EReturnValue.Continuation;
TJAPlayer3.Skin.soundEncyclopediaBGM?.t再生する();
_controler = new CEncyclopediaControler();
base.On活性化();
}
public override void On非活性化()
{
// On de-activation
base.On非活性化();
}
public override void OnManagedリソースの作成()
{
// Ressource allocation
base.OnManagedリソースの作成();
}
public override void OnManagedリソースの解放()
{
// Ressource freeing
base.OnManagedリソースの解放();
}
public override int On進行描画()
{
#region [Fetch variables]
_arePagesOpened = _controler.tArePagesOpened();
bool _backToMain = false;
#endregion
#region [Displayables]
TJAPlayer3.Tx.OpenEncyclopedia_Background?.t2D描画(TJAPlayer3.app.Device, 0, 0);
if (_arePagesOpened)
{
TJAPlayer3.Tx.OpenEncyclopedia_Context?.t2D描画(TJAPlayer3.app.Device, 0, 0);
if (_controler.Pages.Length > 0)
{
var _page = _controler.Pages[_controler.PageIndex];
// To adapt for future 1080p update
_page.Item2?.t2D描画(TJAPlayer3.app.Device, 640, 0);
_page.Item3?.t2D描画(TJAPlayer3.app.Device, 640, 360);
}
}
for (int i = -7; i < 7; i++)
{
var _pos = (_controler.MenuIndex + i + (_controler.Submenus.Length * 7)) % _controler.Submenus.Length;
var _menu = _controler.Submenus[_pos];
if (i != 0)
{
TJAPlayer3.Tx.OpenEncyclopedia_Side_Menu?.tUpdateColor4(C変換.ColorToColor4(Color.DarkGray));
_menu.Item2?.tUpdateColor4(C変換.ColorToColor4(Color.DarkGray));
}
else
{
TJAPlayer3.Tx.OpenEncyclopedia_Side_Menu?.tUpdateColor4(C変換.ColorToColor4(Color.White));
_menu.Item2?.tUpdateColor4(C変換.ColorToColor4(Color.White));
}
TJAPlayer3.Tx.OpenEncyclopedia_Side_Menu?.t2D中心基準描画(TJAPlayer3.app.Device, 320, 360 + i * 90);
_menu.Item2?.t2D中心基準描画(TJAPlayer3.app.Device, 320, 360 + i * 90);
}
#endregion
#region [Inputs]
if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.RightArrow) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.RightChange))
{
_controler.tHandleRight();
TJAPlayer3.Skin.sound変更音.t再生する();
}
else if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.LeftArrow) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.LeftChange))
{
_controler.tHandleLeft();
TJAPlayer3.Skin.sound変更音.t再生する();
}
else if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.Escape) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.Cancel))
{
_backToMain = _controler.tHandleBack();
TJAPlayer3.Skin.sound取消音.t再生する();
}
else if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.Return) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.Decide))
{
var (_b1, _b2) = _controler.tHandleEnter();
_backToMain = _b2;
if (_b1)
TJAPlayer3.Skin.sound変更音.t再生する();
else
TJAPlayer3.Skin.sound取消音.t再生する();
}
#endregion
#region [Postprocessing]
if (_backToMain)
{
TJAPlayer3.Skin.soundEncyclopediaBGM?.t停止する();
this.eフェードアウト完了時の戻り値 = EReturnValue.ReturnToTitle;
this.actFOtoTitle.tフェードアウト開始();
base.eフェーズID = CStage.Eフェーズ._フェードアウト;
}
#endregion
#region [FadeOut]
// Menu exit fade out transition
switch (base.eフェーズID)
{
case CStage.Eフェーズ._フェードアウト:
if (this.actFOtoTitle.On進行描画() == 0)
{
break;
}
return (int)this.eフェードアウト完了時の戻り値;
}
#endregion
return 0;
}
#region [Private]
private CEncyclopediaControler _controler;
private bool _arePagesOpened;
public EReturnValue eフェードアウト完了時の戻り値;
public CActFIFOBlack actFOtoTitle;
#endregion
}
}

View File

@ -29,7 +29,7 @@ namespace TJAPlayer3
return;
base.eフェーズID = CStage.Eフェーズ._通常状態;
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.eフェードアウト完了時の戻り値 = EReturnValue.Continuation;
@ -79,18 +79,10 @@ namespace TJAPlayer3
return 0;
}
public enum E戻り値 : int
{
,
,
}
#region [Private]
public E戻り値 eフェードアウト完了時の戻り値;
public EReturnValue eフェードアウト完了時の戻り値;
public CActFIFOBlack actFOtoTitle;
#endregion

View File

@ -154,6 +154,7 @@
<Compile Include="Stages\07.Game\Taiko\NotesManager.cs" />
<Compile Include="Stages\07.Game\Taiko\ScriptBG.cs" />
<Compile Include="Stages\15.OpenEncyclopedia\CEncyclopediaControler.cs" />
<Compile Include="Stages\15.OpenEncyclopedia\COpenEncyclopedia.cs" />
<Compile Include="Stages\XX.Templates\CStageTemplate.cs" />
<EmbeddedResource Include="Properties\Discord.resx">
<Generator>ResXFileCodeGenerator</Generator>