1
0
mirror of synced 2025-01-27 16:53:45 +01:00

色々改善7 (#481)

* いろいろ

* いろいろ2

* タワー選択画面を追加
This commit is contained in:
Takkkom 2023-08-13 20:23:09 +09:00 committed by GitHub
parent e4803aea98
commit c94ba152b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 1961 additions and 416 deletions

View File

@ -2245,6 +2245,150 @@ namespace TJAPlayer3
SongSelect_Explicit[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_FloorNum_Show")
{
SongSelect_FloorNum_Show = C変換.bONorOFF(strParam[0]);
}
else if (strCommand == "SongSelect_FloorNum_X")
{
SongSelect_FloorNum_X = int.Parse(strParam);
}
else if (strCommand == "SongSelect_FloorNum_Y")
{
SongSelect_FloorNum_Y = int.Parse(strParam);
}
else if (strCommand == "SongSelect_FloorNum_Interval")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
SongSelect_FloorNum_Interval[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Show")
{
SongSelect_DanInfo_Show = C変換.bONorOFF(strParam[0]);
}
else if (strCommand == "SongSelect_DanInfo_Icon_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Icon_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Icon_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Icon_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Icon_Scale")
{
SongSelect_DanInfo_Icon_Scale = float.Parse(strParam);
}
else if (strCommand == "SongSelect_DanInfo_Difficulty_Cymbol_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Difficulty_Cymbol_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Difficulty_Cymbol_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Difficulty_Cymbol_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Difficulty_Cymbol_Scale")
{
SongSelect_DanInfo_Difficulty_Cymbol_Scale = float.Parse(strParam);
}
else if (strCommand == "SongSelect_DanInfo_Level_Number_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Level_Number_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Level_Number_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Level_Number_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Level_Number_Scale")
{
SongSelect_DanInfo_Level_Number_Scale = float.Parse(strParam);
}
else if (strCommand == "SongSelect_DanInfo_Title_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Title_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Title_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Title_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Title_Size")
{
SongSelect_DanInfo_Title_Size = int.Parse(strParam);
}
else if (strCommand == "SongSelect_DanInfo_Exam_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 6; i++)
{
SongSelect_DanInfo_Exam_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Exam_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 6; i++)
{
SongSelect_DanInfo_Exam_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Exam_Size")
{
SongSelect_DanInfo_Exam_Size = int.Parse(strParam);
}
else if (strCommand == "SongSelect_DanInfo_Exam_Value_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 3; i++)
{
SongSelect_DanInfo_Exam_Value_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Exam_Value_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 6; i++)
{
SongSelect_DanInfo_Exam_Value_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_DanInfo_Exam_Value_Scale")
{
SongSelect_DanInfo_Exam_Value_Scale = float.Parse(strParam);
}
else if (strCommand == "SongSelect_Table_X")
{
string[] strSplit = strParam.Split(',');
@ -7430,6 +7574,65 @@ namespace TJAPlayer3
}
#endregion
#region TowerSelect
else if (strCommand == "TowerSelect_Title_Size")
{
TowerSelect_Title_Size = int.Parse(strParam);
}
else if (strCommand == "TowerSelect_Title_MaxWidth")
{
TowerSelect_Title_MaxWidth = int.Parse(strParam);
}
else if (strCommand == "TowerSelect_Title_Offset")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
TowerSelect_Title_Offset[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "TowerSelect_SubTitle_Size")
{
TowerSelect_SubTitle_Size = int.Parse(strParam);
}
else if (strCommand == "TowerSelect_SubTitle_MaxWidth")
{
TowerSelect_SubTitle_MaxWidth = int.Parse(strParam);
}
else if (strCommand == "TowerSelect_SubTitle_Offset")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
TowerSelect_SubTitle_Offset[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "TowerSelect_Bar_Count")
{
TowerSelect_Bar_Count = int.Parse(strParam);
}
else if (strCommand == "TowerSelect_Bar_X")
{
TowerSelect_Bar_X = new int[TowerSelect_Bar_Count];
string[] strSplit = strParam.Split(',');
for (int i = 0; i < TowerSelect_Bar_Count; i++)
{
TowerSelect_Bar_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "TowerSelect_Bar_Y")
{
TowerSelect_Bar_Y = new int[TowerSelect_Bar_Count];
string[] strSplit = strParam.Split(',');
for (int i = 0; i < TowerSelect_Bar_Count; i++)
{
TowerSelect_Bar_Y[i] = int.Parse(strSplit[i]);
}
}
#endregion
#region OpenEncyclopedia
else if (strCommand == "OpenEncyclopedia_Context_Item2")
{
@ -8258,6 +8461,31 @@ namespace TJAPlayer3
public int[] SongSelect_Bpm_Y = new int[] { 20, 66, 112 };
public int[] SongSelect_Bpm_Interval = new int[] { 22, 0 };
public bool SongSelect_FloorNum_Show = false;
public int SongSelect_FloorNum_X = 1200;
public int SongSelect_FloorNum_Y = 205;
public int[] SongSelect_FloorNum_Interval = new int[] { 30, 0 };
public bool SongSelect_DanInfo_Show = false;
public int[] SongSelect_DanInfo_Icon_X = new int[] { 1001, 1001, 1001 };
public int[] SongSelect_DanInfo_Icon_Y = new int[] { 269, 309, 349 };
public float SongSelect_DanInfo_Icon_Scale = 0.5f;
public int[] SongSelect_DanInfo_Difficulty_Cymbol_X = new int[] { 1028, 1028, 1028 };
public int[] SongSelect_DanInfo_Difficulty_Cymbol_Y = new int[] { 263, 303, 343 };
public float SongSelect_DanInfo_Difficulty_Cymbol_Scale = 0.5f;
public int[] SongSelect_DanInfo_Level_Number_X = new int[] { 1040, 1040, 1040 };
public int[] SongSelect_DanInfo_Level_Number_Y = new int[] { 267, 307, 347 };
public float SongSelect_DanInfo_Level_Number_Scale = 0.5f;
public int[] SongSelect_DanInfo_Title_X = new int[] { 1032, 1032, 1032 };
public int[] SongSelect_DanInfo_Title_Y = new int[] { 258, 298, 338 };
public int SongSelect_DanInfo_Title_Size = 12;
public int[] SongSelect_DanInfo_Exam_X = new int[] { 1030, 1030, 1030, 1030, 1030, 1030 };
public int[] SongSelect_DanInfo_Exam_Y = new int[] { 398, 426, 454, 482, 510, 538 };
public int SongSelect_DanInfo_Exam_Size = 10;
public int[] SongSelect_DanInfo_Exam_Value_X = new int[] { 1097, 1162, 1227 };
public int[] SongSelect_DanInfo_Exam_Value_Y = new int[] { 388, 416, 444, 472, 500, 528 };
public float SongSelect_DanInfo_Exam_Value_Scale = 0.5f;
public int[] SongSelect_Table_X = new int[] { 0, 1034, 180, 854, 360 };
public int[] SongSelect_Table_Y = new int[] { 0, 0, -204, -204, 0 };
@ -9372,6 +9600,20 @@ namespace TJAPlayer3
#endregion
#region TowerSelect
public int TowerSelect_Title_Size = 30;
public int TowerSelect_Title_MaxWidth = 230;
public int[] TowerSelect_Title_Offset = new int[] { 0, -30 };
public int TowerSelect_SubTitle_Size = 30;
public int TowerSelect_SubTitle_MaxWidth = 230;
public int[] TowerSelect_SubTitle_Offset = new int[] { 0, 10 };
public int TowerSelect_Bar_Count = 7;
public int[] TowerSelect_Bar_X = new int[] { -260, 40, 340, 640, 940, 1240, 1540 };
public int[] TowerSelect_Bar_Y = new int[] { 420, 400, 380, 360, 380, 400, 420 };
#endregion
#region OpenEncyclopedia
public int[] OpenEncyclopedia_Context_Item2 = new int[] { 960, 180 };

View File

@ -383,10 +383,16 @@ namespace TJAPlayer3
}
public static CStageOnlineLounge stageOnlineLounge
{
{
get;
private set;
}
}
public static CStageTowerSelect stageTowerSelect
{
get;
private set;
}
public static COpenEncyclopedia stageOpenEncyclopedia
{
@ -975,6 +981,19 @@ namespace TJAPlayer3
TJAPlayer3.latestSongSelect = stage段位選択;
//-----------------------------
#endregion
break;
case (int)CStageタイトル.E戻り値.TAIKOTOWERSSTART:
#region [Online Lounge]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ Online Lounge");
stageTowerSelect.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stageTowerSelect;
//-----------------------------
#endregion
break;
case (int)CStageタイトル.E戻り値.HEYA:
@ -1299,9 +1318,10 @@ namespace TJAPlayer3
//-----------------------------
#endregion
case (int)CStage選曲.E戻り値.:
case (int)CStage選曲.E戻り値.:
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ 曲読み込み");
@ -1801,6 +1821,66 @@ for (int i = 0; i < 3; i++) {
}
//-----------------------------
#endregion
break;
case CStage.Eステージ.TaikoTowers:
#region [ *** ]
switch (this.n進行描画の戻り値)
{
case (int)EReturnValue.ReturnToTitle:
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ タイトル");
stageタイトル.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stageタイトル;
/*
Skin.bgm選曲画面イン.t停止する();
Skin.bgm選曲画面.t停止する();
*/
CSongSelectSongManager.stopSong();
CSongSelectSongManager.enable();
foreach (STPlugin pg in this.listプラグイン)
{
Directory.SetCurrentDirectory(pg.strプラグインフォルダ);
pg.plugin.Onステージ変更();
Directory.SetCurrentDirectory(TJAPlayer3.strEXEのあるフォルダ);
}
this.tガベージコレクションを実行する();
break;
//-----------------------------
#endregion
case (int)EReturnValue.SongChoosen:
#region [ *** ]
//-----------------------------
latestSongSelect = stageTowerSelect;
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ 曲読み込み");
stage曲読み込み.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stage曲読み込み;
foreach (STPlugin pg in this.listプラグイン)
{
Directory.SetCurrentDirectory(pg.strプラグインフォルダ);
pg.plugin.Onステージ変更();
Directory.SetCurrentDirectory(TJAPlayer3.strEXEのあるフォルダ);
}
this.tガベージコレクションを実行する();
break;
//-----------------------------
#endregion
}
#endregion
break;
case CStage.Eステージ.ChangeSkin:
@ -2651,6 +2731,7 @@ for (int i = 0; i < 3; i++) {
stage段位選択 = new CStage段位選択();
stageHeya = new CStageHeya();
stageOnlineLounge = new CStageOnlineLounge();
stageTowerSelect = new CStageTowerSelect();
stageOpenEncyclopedia = new COpenEncyclopedia();
stage曲読み込み = new CStage曲読み込み();
stage演奏ドラム画面 = new CStage演奏ドラム画面();
@ -2669,7 +2750,8 @@ for (int i = 0; i < 3; i++) {
this.listトップレベルActivities.Add( stage選曲 );
this.listトップレベルActivities.Add( stage段位選択 );
this.listトップレベルActivities.Add( stageHeya );
this.listトップレベルActivities.Add( stageOnlineLounge );
this.listトップレベルActivities.Add(stageOnlineLounge);
this.listトップレベルActivities.Add(stageTowerSelect);
this.listトップレベルActivities.Add( stageOpenEncyclopedia );
this.listトップレベルActivities.Add( stage曲読み込み );
this.listトップレベルActivities.Add( stage演奏ドラム画面 );

View File

@ -50,8 +50,9 @@ namespace TJAPlayer3
}
/*[NonSerialized]
public List<Cスコア> listSongsDB;*/ // songs.dbから構築されるlist
public List<C曲リストード> list曲ルート; // 起動時にフォルダ検索して構築されるlist
public List<C曲リストード> list曲ルート; // 起動時にフォルダ検索して構築されるlist
public List<C曲リストード> list曲ルート_Dan = new List<C曲リストード>(); // 起動時にフォルダ検索して構築されるlist
public List<C曲リストード> list曲ルート_Tower = new List<C曲リストード>(); // 起動時にフォルダ検索して構築されるlist
public static List<FDK.CTexture> listCustomBGs = new List<FDK.CTexture>();
public bool bIsSuspending // 外部スレッドから、内部スレッドのsuspendを指示する時にtrueにする
{ // 再開時は、これをfalseにしてから、次のautoReset.Set()を実行する
@ -956,14 +957,15 @@ namespace TJAPlayer3
foreach (C曲リストード c曲リストード in list曲ルート)
{
if (c曲リストード.eード種別 == C曲リストード.Eード種別.BOX)
{
{
if (c曲リストード.strジャンル == "段位道場")
{
if (TJAPlayer3.ConfigIni.bDanTowerHide)
list曲ルート.Remove(c曲リストード);
// Add to dojo
list曲ルート.Remove(c曲リストード);
// Add to dojo
list曲ルート_Dan = c曲リストード.list子リスト;
/*
for (int i = 0; i < c曲リストード.list子リスト.Count; i++)
{
if(c曲リストード.list子リスト[i].eード種別 == C曲リストード.Eード種別.SCORE)
@ -972,8 +974,16 @@ namespace TJAPlayer3
continue;
}
}
*/
}
else
else if (c曲リストード.strジャンル == "太鼓タワー")
{
if (TJAPlayer3.ConfigIni.bDanTowerHide)
list曲ルート.Remove(c曲リストード);
list曲ルート_Tower = c曲リストード.list子リスト;
}
else
{
for (int i = 0; i < c曲リストード.list子リスト.Count; i++)
{
@ -986,7 +996,16 @@ namespace TJAPlayer3
continue;
}
}
if (c曲リストード.list子リスト[i].arスコア[5] != null)
{
list曲ルート_Tower.Add(c曲リストード.list子リスト[i]);
if (TJAPlayer3.ConfigIni.bDanTowerHide)
c曲リストード.list子リスト.Remove(c曲リストード.list子リスト[i]);
continue;
}
}
}
}
else

View File

@ -32,7 +32,7 @@ namespace TJAPlayer3
const string MODALS = @"11_Modals\";
public const string ONLINELOUNGE = @"12_OnlineLounge\";
const string TOWERSELECT = @"13_TowerSelect\";
public const string TOWERSELECT = @"13_TowerSelect\";
public const string OPENENCYCLOPEDIA = @"15_OpenEncyclopedia\";
// InGame
@ -239,6 +239,7 @@ namespace TJAPlayer3
SongSelect_Level_Number_Big_Icon = TxC(SONGSELECT + @"Level_Number_Big_Icon.png");
SongSelect_Level_Number_Icon = TxC(SONGSELECT + @"Level_Number_Icon.png");
SongSelect_Bpm_Number = TxC(SONGSELECT + @"Bpm_Number.png");
SongSelect_Floor_Number = TxC(SONGSELECT + @"Floor_Number.png");
SongSelect_Credit = TxC(SONGSELECT + @"Credit.png");
SongSelect_Timer = TxC(SONGSELECT + @"Timer.png");
SongSelect_Explicit = TxC(SONGSELECT + @"Explicit.png");
@ -1282,6 +1283,8 @@ namespace TJAPlayer3
#region [13_TowerSelect]
TowerSelect_Tower = TxC(TOWERSELECT + @"Tower.png");
#endregion
#region [15_OpenEncyclopedia]
@ -2102,6 +2105,7 @@ namespace TJAPlayer3
SongSelect_Level_Number_Big_Colored,
SongSelect_Level_Number_Big_Icon,
SongSelect_Bpm_Number,
SongSelect_Floor_Number,
SongSelect_Bar_Select,
SongSelect_Bar_Genre_Overlay,
SongSelect_Credit,
@ -2565,6 +2569,9 @@ Result_Mountain = new CTexture[4]*/;
#region [13_TowerSelect]
public CTexture
TowerSelect_Tower;
#endregion
#region [15_OpenEncyclopedia]

View File

@ -121,7 +121,7 @@ namespace TJAPlayer3
{
true,
true,
false,
true,
false,
false,
true,

View File

@ -350,7 +350,7 @@ namespace TJAPlayer3
{
bool operationSucceded = false;
if (CMainMenuTab.__Menus[usedMenus[this.n現在の選択行モード選択]].rp == E戻り値.DANGAMESTART)
if (CMainMenuTab.__Menus[usedMenus[this.n現在の選択行モード選択]].rp == E戻り値.DANGAMESTART || CMainMenuTab.__Menus[usedMenus[this.n現在の選択行モード選択]].rp == E戻り値.TAIKOTOWERSSTART)
{
if (TJAPlayer3.Songs管理.list曲ルート_Dan.Count > 0 && TJAPlayer3.ConfigIni.nPlayerCount == 1)
operationSucceded = true;

View File

@ -50,8 +50,6 @@ namespace TJAPlayer3
ctExamConditionsAnim = new CCounter(0, 4000, 1, TJAPlayer3.Timer);
stバー情報 = new STバー情報[TJAPlayer3.Songs管理.list曲ルート_Dan.Count];
if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
pfDanSong = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.DaniSelect_Font_DanSong_Size);
else
@ -68,10 +66,8 @@ namespace TJAPlayer3
this.ttkExams[i] = new TitleTextureKey(CLangManager.LangInstance.GetString(1010 + i), this.pfExamFont, Color.White, Color.SaddleBrown, 1000);
}
//一応チェックしておく。
if (TJAPlayer3.Songs管理.list曲ルート_Dan.Count > 0)
this.tバーの初期化();
listSongs = TJAPlayer3.Songs管理.list曲ルート_Dan;
tUpdateSongs();
base.On活性化();
}
@ -252,7 +248,8 @@ namespace TJAPlayer3
private CStage選曲.STNumber[] stLevel = new CStage選曲.STNumber[10];
private CStage選曲.STNumber[] stSoulNumber = new CStage選曲.STNumber[10];
private CStage選曲.STNumber[] stExamNumber = new CStage選曲.STNumber[10];
public List<C曲リストード> listSongs;
public STバー情報[] stバー情報;
public struct STバー情報
@ -260,6 +257,7 @@ namespace TJAPlayer3
public TitleTextureKey[] ttkタイトル;
public int[] n曲難易度;
public int[] n曲レベル;
public C曲リストード.Eード種別 eード種別;
public List<CDTX.DanSongs> List_DanSongs;
public CTexture txBarCenter;
public CTexture txDanPlate;
@ -270,9 +268,19 @@ namespace TJAPlayer3
public Color cDanTickColor;
}
public C曲リストード currentBar
{
get
{
return listSongs[n現在の選択行];
}
}
static CPrivateFastFont pfDanPlateTitle = null;
static CPrivateFastFont pfDanIconTitle = null;
private Dictionary<string, CTexture> BarTexCache = new Dictionary<string, CTexture>();
public static void RefleshSkin()
{
TJAPlayer3.t安全にDisposeする(ref pfDanPlateTitle);
@ -388,336 +396,412 @@ namespace TJAPlayer3
int currentSong = n現在の選択行 + modifier;
bool over4 = false;
#region [Center bar and Dan plate]
int danTick = stバー情報[currentSong].nDanTick;
Color danTickColor = stバー情報[currentSong].cDanTickColor;
// Use the given bar center if provided, else use a default one
if (stバー情報[currentSong].txBarCenter != null)
switch(stバー情報[currentSong].eード種別)
{
stバー情報[currentSong].txBarCenter.t2D描画(TJAPlayer3.app.Device, scroll + Anime, 0);
}
else
{
int unit = TJAPlayer3.Tx.Dani_DanSides.szテクスチャサイズ.Width / 6;
TJAPlayer3.Tx.Dani_DanSides.color4 = C変換.ColorToColor4(danTickColor);
TJAPlayer3.Tx.Dani_Bar_Center.t2D描画(TJAPlayer3.app.Device, scroll + Anime, 0);
// Bar sides
TJAPlayer3.Tx.Dani_DanSides.t2D描画(TJAPlayer3.app.Device, (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_DanSides_X[0], TJAPlayer3.Skin.DaniSelect_DanSides_Y[0], new Rectangle(
unit * danTick,
0,
unit,
TJAPlayer3.Tx.Dani_DanSides.szテクスチャサイズ.Height
));
TJAPlayer3.Tx.Dani_DanSides.t2D左右反転描画(TJAPlayer3.app.Device, (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_DanSides_X[1], TJAPlayer3.Skin.DaniSelect_DanSides_Y[1], new Rectangle(
unit * danTick,
0,
unit,
TJAPlayer3.Tx.Dani_DanSides.szテクスチャサイズ.Height
));
}
CActSelect段位リスト.tDisplayDanPlate(stバー情報[currentSong].txDanPlate, stバー情報[currentSong], (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_DanPlate[0], TJAPlayer3.Skin.DaniSelect_DanPlate[1]);
#endregion
#region [Goukaku plate]
int currentRank = Math.Min(stバー情報[currentSong].clearGrade, 6) - 1;
if (currentRank >= 0)
{
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.X = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.Y = 0.8f;
int rank_width = TJAPlayer3.Tx.DanResult_Rank.szテクスチャサイズ.Width / 7;
int rank_height = TJAPlayer3.Tx.DanResult_Rank.szテクスチャサイズ.Height;
TJAPlayer3.Tx.DanResult_Rank.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, scroll + Anime + TJAPlayer3.Skin.DaniSelect_Rank[0], TJAPlayer3.Skin.DaniSelect_Rank[1], new Rectangle(rank_width * (currentRank + 1), 0, rank_width, rank_height));
}
#endregion
#region [Soul gauge condition]
TJAPlayer3.Tx.Dani_Bloc[2]?.t2D描画(TJAPlayer3.app.Device, scroll + Anime + TJAPlayer3.Skin.DaniSelect_Bloc2[0], TJAPlayer3.Skin.DaniSelect_Bloc2[1]);
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[0] != null)
tSoulDraw(scroll + Anime + TJAPlayer3.Skin.DaniSelect_Value_Gauge[0], TJAPlayer3.Skin.DaniSelect_Value_Gauge[1], stバー情報[currentSong].List_DanSongs[0].Dan_C[0].Value[0]);
//TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkExams[0]).t2D下中央基準描画(TJAPlayer3.app.Device, (int)(scroll + 396 + Anime), 452);
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkExams[0]).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_Text_Gauge[0], TJAPlayer3.Skin.DaniSelect_Text_Gauge[1]);
#endregion
#region [Song information]
int getOpacity(int index, int sections = 2)
{
int current_section = index / 3;
int animJauge = ctExamConditionsAnim.n現在の値;
int split = 4000 / sections;
int begin = split * current_section;
int end = split * (current_section + 1);
if (animJauge < begin || animJauge > end) return 0;
double sinus = Math.Abs(Math.Sin(animJauge * Math.PI / split));
if (sinus == 0) return 0;
return (int)(Math.Abs(Math.Pow(sinus, 1.2) / sinus) * 255);
/*
int opacity = 255;
int half = index / 3;
if (half == 0)
{
if (animJauge > 3745)
opacity = animJauge - 3745;
else if (animJauge > 1745)
opacity = 2000 - animJauge;
}
else
{
if (animJauge > 3745)
opacity = 4000 - animJauge;
else if (animJauge > 1745)
opacity = animJauge - 1745;
else
opacity = 0;
}
return opacity;
*/
}
int difficulty_cymbol_width = TJAPlayer3.Tx.Dani_Difficulty_Cymbol.szテクスチャサイズ.Width / 5;
int difficulty_cymbol_height = TJAPlayer3.Tx.Dani_Difficulty_Cymbol.szテクスチャサイズ.Height;
int sections_count = 1 + ((stバー情報[currentSong].n曲レベル.Length - 1) / 3);
for (int i = 0; i < stバー情報[currentSong].ttkタイトル.Length - 1; i++)
{
int pos = i % 3;
int opacity = 255;
if (stバー情報[currentSong].ttkタイトル.Length - 1 > 3)
{
opacity = getOpacity(i, sections_count);
}
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[currentSong].ttkタイトル[i]).Opacity = opacity;
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[currentSong].ttkタイトル[i]).t2D描画(TJAPlayer3.app.Device, scroll + Anime + TJAPlayer3.Skin.DaniSelect_Title_X[pos], TJAPlayer3.Skin.DaniSelect_Title_Y[pos]);
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[currentSong].ttkタイトル[i]).Opacity = 255;
tDisplayDanIcon(i + 1, scroll + Anime + TJAPlayer3.Skin.DaniSelect_DanIcon_X[pos], TJAPlayer3.Skin.DaniSelect_DanIcon_Y[pos], opacity, 1.0f);
}
for (int i = 0; i < stバー情報[currentSong].n曲難易度.Length; i++)
{
int pos = i % 3;
if (stバー情報[currentSong].n曲難易度.Length > 3)
{
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.Opacity = getOpacity(i, sections_count);
}
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.t2D中心基準描画(TJAPlayer3.app.Device, scroll + Anime + TJAPlayer3.Skin.DaniSelect_Difficulty_Cymbol_X[pos], TJAPlayer3.Skin.DaniSelect_Difficulty_Cymbol_Y[pos], new Rectangle(stバー情報[currentSong].n曲難易度[i] * difficulty_cymbol_width, 0, difficulty_cymbol_width, difficulty_cymbol_height));
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.Opacity = 255;
}
for (int i = 0; i < stバー情報[currentSong].n曲レベル.Length; i++)
{
int pos = i % 3;
if (stバー情報[currentSong].n曲レベル.Length > 3)
{
TJAPlayer3.Tx.Dani_Level_Number.Opacity = getOpacity(i, sections_count);
}
this.tLevelNumberDraw(scroll + Anime + TJAPlayer3.Skin.DaniSelect_Level_Number_X[pos], TJAPlayer3.Skin.DaniSelect_Level_Number_Y[pos], stバー情報[currentSong].n曲レベル[i]);
TJAPlayer3.Tx.Dani_Level_Number.Opacity = 255;
}
#endregion
#region [Check if one of the EXAM5,6,7 slots are used]
for (int j = 4; j < CExamInfo.cMaxExam; j++)
{
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[j] != null)
{
over4 = true;
break;
}
}
#endregion
#region [Display dan conditions]
for (int j = 1; j < CExamInfo.cMaxExam; j++) //段位条件のループ(魂ゲージを除く) 縦(y)
{
// Inner index within the exam 3-set
int index = (j - 1) % 3;
#region [Alter opacity if multi-screen exam display]
int opacity = 255;
if (over4 == true)
{
int half = (j - 1) / 3;
int animJauge = ctExamConditionsAnim.n現在の値;
if (half == 0)
case C曲リストード.Eード種別.SCORE:
{
if (animJauge > 3745)
opacity = animJauge - 3745;
else if (animJauge > 1745)
opacity = 2000 - animJauge;
}
else
{
if (animJauge > 3745)
opacity = 4000 - animJauge;
else if (animJauge > 1745)
opacity = animJauge - 1745;
else
opacity = 0;
}
}
#region [Center bar and Dan plate]
#endregion
int danTick = stバー情報[currentSong].nDanTick;
Color danTickColor = stバー情報[currentSong].cDanTickColor;
#region [Exam value (individual included)]
for (int i = 0; i < stバー情報[currentSong].List_DanSongs.Count; i++) //曲ごとのループ(魂ゲージを除く) 横(x)
{
if (stバー情報[currentSong].List_DanSongs[i].Dan_C[j] != null)
{
TJAPlayer3.Tx.Dani_Exam_Number.Opacity = opacity;
if (stバー情報[currentSong].List_DanSongs[stバー情報[currentSong].List_DanSongs.Count - 1].Dan_C[j] != null) {
//個別の条件がありますよー
int moveX = TJAPlayer3.Skin.DaniSelect_Exam_Interval[0];
int moveY = TJAPlayer3.Skin.DaniSelect_Exam_Interval[1];
int x = TJAPlayer3.Skin.DaniSelect_Exam_Bloc_X[index];
int y = TJAPlayer3.Skin.DaniSelect_Exam_Bloc_Y[index];
int exam_x = TJAPlayer3.Skin.DaniSelect_Exam_X[index];
int exam_y = TJAPlayer3.Skin.DaniSelect_Exam_Y[index];
CTexture tex = null;
switch (stバー情報[currentSong].List_DanSongs.Count)
{
case 1:
tex = TJAPlayer3.Tx.Dani_Bloc[0];
break;
case 2:
case 3:
tex = TJAPlayer3.Tx.Dani_Bloc[1];
break;
case 4:
case 5:
case 6:
default:
tex = TJAPlayer3.Tx.Dani_Bloc[3];
moveX /= 2;
moveY /= 2;
exam_x = TJAPlayer3.Skin.DaniSelect_Exam_X_Ex[index];
exam_y = TJAPlayer3.Skin.DaniSelect_Exam_Y_Ex[index];
break;
}
if (i == 0)
{
if (tex != null)
tex.Opacity = opacity;
tex?.t2D描画(TJAPlayer3.app.Device,
scroll + Anime + x,
y);
}
if (i < 6)
tExamDraw(scroll + Anime + exam_x + (i * moveX),
exam_y + (i * moveY),
stバー情報[currentSong].List_DanSongs[i].Dan_C[j].Value[0], stバー情報[currentSong].List_DanSongs[i].Dan_C[j].GetExamRange());
}
else
// Use the given bar center if provided, else use a default one
if (stバー情報[currentSong].txBarCenter != null)
{
//全体の条件ですよー
stバー情報[currentSong].txBarCenter.t2D描画(TJAPlayer3.app.Device, scroll + Anime, 0);
}
else
{
int unit = TJAPlayer3.Tx.Dani_DanSides.szテクスチャサイズ.Width / 6;
TJAPlayer3.Tx.Dani_DanSides.color4 = C変換.ColorToColor4(danTickColor);
if (i == 0)
{
if (TJAPlayer3.Tx.Dani_Bloc[0] != null)
TJAPlayer3.Tx.Dani_Bloc[0].Opacity = opacity;
TJAPlayer3.Tx.Dani_Bloc[0]?.t2D描画(TJAPlayer3.app.Device,
scroll + Anime + TJAPlayer3.Skin.DaniSelect_Exam_Bloc_X[index],
TJAPlayer3.Skin.DaniSelect_Exam_Bloc_Y[index]);
}
TJAPlayer3.Tx.Dani_Bar_Center.t2D描画(TJAPlayer3.app.Device, scroll + Anime, 0);
tExamDraw(scroll + Anime + TJAPlayer3.Skin.DaniSelect_Exam_X[index], TJAPlayer3.Skin.DaniSelect_Exam_Y[index], stバー情報[currentSong].List_DanSongs[0].Dan_C[j].Value[0], stバー情報[currentSong].List_DanSongs[0].Dan_C[j].GetExamRange());
// Bar sides
TJAPlayer3.Tx.Dani_DanSides.t2D描画(TJAPlayer3.app.Device, (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_DanSides_X[0], TJAPlayer3.Skin.DaniSelect_DanSides_Y[0], new Rectangle(
unit * danTick,
0,
unit,
TJAPlayer3.Tx.Dani_DanSides.szテクスチャサイズ.Height
));
TJAPlayer3.Tx.Dani_DanSides.t2D左右反転描画(TJAPlayer3.app.Device, (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_DanSides_X[1], TJAPlayer3.Skin.DaniSelect_DanSides_Y[1], new Rectangle(
unit * danTick,
0,
unit,
TJAPlayer3.Tx.Dani_DanSides.szテクスチャサイズ.Height
));
}
TJAPlayer3.Tx.Dani_Exam_Number.Opacity = 255;
CActSelect段位リスト.tDisplayDanPlate(stバー情報[currentSong].txDanPlate, stバー情報[currentSong], (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_DanPlate[0], TJAPlayer3.Skin.DaniSelect_DanPlate[1]);
#endregion
#region [Goukaku plate]
int currentRank = Math.Min(stバー情報[currentSong].clearGrade, 6) - 1;
if (currentRank >= 0)
{
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.X = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.Y = 0.8f;
int rank_width = TJAPlayer3.Tx.DanResult_Rank.szテクスチャサイズ.Width / 7;
int rank_height = TJAPlayer3.Tx.DanResult_Rank.szテクスチャサイズ.Height;
TJAPlayer3.Tx.DanResult_Rank.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, scroll + Anime + TJAPlayer3.Skin.DaniSelect_Rank[0], TJAPlayer3.Skin.DaniSelect_Rank[1], new Rectangle(rank_width * (currentRank + 1), 0, rank_width, rank_height));
}
#endregion
#region [Soul gauge condition]
TJAPlayer3.Tx.Dani_Bloc[2]?.t2D描画(TJAPlayer3.app.Device, scroll + Anime + TJAPlayer3.Skin.DaniSelect_Bloc2[0], TJAPlayer3.Skin.DaniSelect_Bloc2[1]);
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[0] != null)
tSoulDraw(scroll + Anime + TJAPlayer3.Skin.DaniSelect_Value_Gauge[0], TJAPlayer3.Skin.DaniSelect_Value_Gauge[1], stバー情報[currentSong].List_DanSongs[0].Dan_C[0].Value[0]);
//TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkExams[0]).t2D下中央基準描画(TJAPlayer3.app.Device, (int)(scroll + 396 + Anime), 452);
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkExams[0]).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_Text_Gauge[0], TJAPlayer3.Skin.DaniSelect_Text_Gauge[1]);
#endregion
#region [Song information]
int getOpacity(int index, int sections = 2)
{
int current_section = index / 3;
int animJauge = ctExamConditionsAnim.n現在の値;
int split = 4000 / sections;
int begin = split * current_section;
int end = split * (current_section + 1);
if (animJauge < begin || animJauge > end) return 0;
double sinus = Math.Abs(Math.Sin(animJauge * Math.PI / split));
if (sinus == 0) return 0;
return (int)(Math.Abs(Math.Pow(sinus, 1.2) / sinus) * 255);
/*
int opacity = 255;
int half = index / 3;
if (half == 0)
{
if (animJauge > 3745)
opacity = animJauge - 3745;
else if (animJauge > 1745)
opacity = 2000 - animJauge;
}
else
{
if (animJauge > 3745)
opacity = 4000 - animJauge;
else if (animJauge > 1745)
opacity = animJauge - 1745;
else
opacity = 0;
}
return opacity;
*/
}
int difficulty_cymbol_width = TJAPlayer3.Tx.Dani_Difficulty_Cymbol.szテクスチャサイズ.Width / 5;
int difficulty_cymbol_height = TJAPlayer3.Tx.Dani_Difficulty_Cymbol.szテクスチャサイズ.Height;
int sections_count = 1 + ((stバー情報[currentSong].n曲レベル.Length - 1) / 3);
for (int i = 0; i < stバー情報[currentSong].ttkタイトル.Length - 1; i++)
{
int pos = i % 3;
int opacity = 255;
if (stバー情報[currentSong].ttkタイトル.Length - 1 > 3)
{
opacity = getOpacity(i, sections_count);
}
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[currentSong].ttkタイトル[i]).Opacity = opacity;
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[currentSong].ttkタイトル[i]).t2D描画(TJAPlayer3.app.Device, scroll + Anime + TJAPlayer3.Skin.DaniSelect_Title_X[pos], TJAPlayer3.Skin.DaniSelect_Title_Y[pos]);
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[currentSong].ttkタイトル[i]).Opacity = 255;
tDisplayDanIcon(i + 1, scroll + Anime + TJAPlayer3.Skin.DaniSelect_DanIcon_X[pos], TJAPlayer3.Skin.DaniSelect_DanIcon_Y[pos], opacity, 1.0f);
}
for (int i = 0; i < stバー情報[currentSong].n曲難易度.Length; i++)
{
int pos = i % 3;
if (stバー情報[currentSong].n曲難易度.Length > 3)
{
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.Opacity = getOpacity(i, sections_count);
}
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.t2D中心基準描画(TJAPlayer3.app.Device, scroll + Anime + TJAPlayer3.Skin.DaniSelect_Difficulty_Cymbol_X[pos], TJAPlayer3.Skin.DaniSelect_Difficulty_Cymbol_Y[pos], new Rectangle(stバー情報[currentSong].n曲難易度[i] * difficulty_cymbol_width, 0, difficulty_cymbol_width, difficulty_cymbol_height));
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.Opacity = 255;
}
for (int i = 0; i < stバー情報[currentSong].n曲レベル.Length; i++)
{
int pos = i % 3;
if (stバー情報[currentSong].n曲レベル.Length > 3)
{
TJAPlayer3.Tx.Dani_Level_Number.Opacity = getOpacity(i, sections_count);
}
this.tLevelNumberDraw(scroll + Anime + TJAPlayer3.Skin.DaniSelect_Level_Number_X[pos], TJAPlayer3.Skin.DaniSelect_Level_Number_Y[pos], stバー情報[currentSong].n曲レベル[i]);
TJAPlayer3.Tx.Dani_Level_Number.Opacity = 255;
}
#endregion
#region [Check if one of the EXAM5,6,7 slots are used]
for (int j = 4; j < CExamInfo.cMaxExam; j++)
{
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[j] != null)
{
over4 = true;
break;
}
}
#endregion
#region [Display dan conditions]
for (int j = 1; j < CExamInfo.cMaxExam; j++) //段位条件のループ(魂ゲージを除く) 縦(y)
{
// Inner index within the exam 3-set
int index = (j - 1) % 3;
#region [Alter opacity if multi-screen exam display]
int opacity = 255;
if (over4 == true)
{
int half = (j - 1) / 3;
int animJauge = ctExamConditionsAnim.n現在の値;
if (half == 0)
{
if (animJauge > 3745)
opacity = animJauge - 3745;
else if (animJauge > 1745)
opacity = 2000 - animJauge;
}
else
{
if (animJauge > 3745)
opacity = 4000 - animJauge;
else if (animJauge > 1745)
opacity = animJauge - 1745;
else
opacity = 0;
}
}
#endregion
#region [Exam value (individual included)]
for (int i = 0; i < stバー情報[currentSong].List_DanSongs.Count; i++) //曲ごとのループ(魂ゲージを除く) 横(x)
{
if (stバー情報[currentSong].List_DanSongs[i].Dan_C[j] != null)
{
TJAPlayer3.Tx.Dani_Exam_Number.Opacity = opacity;
if (stバー情報[currentSong].List_DanSongs[stバー情報[currentSong].List_DanSongs.Count - 1].Dan_C[j] != null)
{
//個別の条件がありますよー
int moveX = TJAPlayer3.Skin.DaniSelect_Exam_Interval[0];
int moveY = TJAPlayer3.Skin.DaniSelect_Exam_Interval[1];
int x = TJAPlayer3.Skin.DaniSelect_Exam_Bloc_X[index];
int y = TJAPlayer3.Skin.DaniSelect_Exam_Bloc_Y[index];
int exam_x = TJAPlayer3.Skin.DaniSelect_Exam_X[index];
int exam_y = TJAPlayer3.Skin.DaniSelect_Exam_Y[index];
CTexture tex = null;
switch (stバー情報[currentSong].List_DanSongs.Count)
{
case 1:
tex = TJAPlayer3.Tx.Dani_Bloc[0];
break;
case 2:
case 3:
tex = TJAPlayer3.Tx.Dani_Bloc[1];
break;
case 4:
case 5:
case 6:
default:
tex = TJAPlayer3.Tx.Dani_Bloc[3];
moveX /= 2;
moveY /= 2;
exam_x = TJAPlayer3.Skin.DaniSelect_Exam_X_Ex[index];
exam_y = TJAPlayer3.Skin.DaniSelect_Exam_Y_Ex[index];
break;
}
if (i == 0)
{
if (tex != null)
tex.Opacity = opacity;
tex?.t2D描画(TJAPlayer3.app.Device,
scroll + Anime + x,
y);
}
if (i < 6)
tExamDraw(scroll + Anime + exam_x + (i * moveX),
exam_y + (i * moveY),
stバー情報[currentSong].List_DanSongs[i].Dan_C[j].Value[0], stバー情報[currentSong].List_DanSongs[i].Dan_C[j].GetExamRange());
}
else
{
//全体の条件ですよー
if (i == 0)
{
if (TJAPlayer3.Tx.Dani_Bloc[0] != null)
TJAPlayer3.Tx.Dani_Bloc[0].Opacity = opacity;
TJAPlayer3.Tx.Dani_Bloc[0]?.t2D描画(TJAPlayer3.app.Device,
scroll + Anime + TJAPlayer3.Skin.DaniSelect_Exam_Bloc_X[index],
TJAPlayer3.Skin.DaniSelect_Exam_Bloc_Y[index]);
}
tExamDraw(scroll + Anime + TJAPlayer3.Skin.DaniSelect_Exam_X[index], TJAPlayer3.Skin.DaniSelect_Exam_Y[index], stバー情報[currentSong].List_DanSongs[0].Dan_C[j].Value[0], stバー情報[currentSong].List_DanSongs[0].Dan_C[j].GetExamRange());
}
TJAPlayer3.Tx.Dani_Exam_Number.Opacity = 255;
}
}
#endregion
#region [Exam title]
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[j] != null)
{
CTexture tmpTex = TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkExams[(int)stバー情報[currentSong].List_DanSongs[0].Dan_C[j].GetExamType()]);
tmpTex.Opacity = opacity;
//tmpTex.t2D下中央基準描画(TJAPlayer3.app.Device, (int)(scroll + 614 + Anime), 452 + index * 88);
tmpTex.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_Exam_Title_X[index], TJAPlayer3.Skin.DaniSelect_Exam_Title_Y[index]);
}
#endregion
}
#endregion
}
}
#endregion
#region [Exam title]
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[j] != null)
{
CTexture tmpTex = TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkExams[(int)stバー情報[currentSong].List_DanSongs[0].Dan_C[j].GetExamType()]);
tmpTex.Opacity = opacity;
//tmpTex.t2D下中央基準描画(TJAPlayer3.app.Device, (int)(scroll + 614 + Anime), 452 + index * 88);
tmpTex.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, (int)(scroll + Anime) + TJAPlayer3.Skin.DaniSelect_Exam_Title_X[index], TJAPlayer3.Skin.DaniSelect_Exam_Title_Y[index]);
}
#endregion
break;
}
#endregion
}
public void tOpenFolder(C曲リストード song)
{
listSongs = song.list子リスト;
n現在の選択行 = 0;
tUpdateSongs();
}
public void tCloseFolder(C曲リストード song)
{
listSongs = song.r親ード.r親ード.list子リスト;
n現在の選択行 = 0;
tUpdateSongs();
}
private void tUpdateSongs()
{
stバー情報 = new STバー情報[listSongs.Count];
this.tバーの初期化();
}
private void tバーの初期化()
{
for (int i = 0; i < stバー情報.Length; i++)
{
var song = TJAPlayer3.Songs管理.list曲ルート_Dan[i];
stバー情報[i].ttkタイトル = new TitleTextureKey[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count + 1];
stバー情報[i].n曲難易度 = new int[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count];
stバー情報[i].n曲レベル = new int[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count];
for (int j = 0; j < TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count; j++)
{
stバー情報[i].ttkタイトル[j] = new TitleTextureKey(song.DanSongs[j].bTitleShow ? "???" : song.DanSongs[j].Title, pfDanSong, Color.White, Color.Black, 700);
stバー情報[i].n曲難易度[j] = song.DanSongs[j].Difficulty;
stバー情報[i].n曲レベル[j] = song.DanSongs[j].Level;
stバー情報[i].List_DanSongs = song.DanSongs;
}
var song = listSongs[i];
// Two char header, will be used for grade unlocking too
string tmp = song.strタイトル.Substring(0, 2);
stバー情報[i].eード種別 = song.eード種別;
switch (song.eード種別)
{
case C曲リストード.Eード種別.SCORE:
{
stバー情報[i].ttkタイトル = new TitleTextureKey[listSongs[i].DanSongs.Count + 1];
stバー情報[i].n曲難易度 = new int[listSongs[i].DanSongs.Count];
stバー情報[i].n曲レベル = new int[listSongs[i].DanSongs.Count];
for (int j = 0; j < listSongs[i].DanSongs.Count; j++)
{
stバー情報[i].ttkタイトル[j] = new TitleTextureKey(song.DanSongs[j].bTitleShow ? "???" : song.DanSongs[j].Title, pfDanSong, Color.White, Color.Black, 700);
stバー情報[i].n曲難易度[j] = song.DanSongs[j].Difficulty;
stバー情報[i].n曲レベル[j] = song.DanSongs[j].Level;
stバー情報[i].List_DanSongs = song.DanSongs;
}
// Two char header, will be used for grade unlocking too
string tmp = song.strタイトル.Substring(0, 2);
stバー情報[i].ttkタイトル[listSongs[i].DanSongs.Count] = new TitleTextureKey(tmp, pfDanSong, Color.Black, Color.Transparent, 700);
stバー情報[i].nDanTick = song.arスコア[6]..nDanTick;
stバー情報[i].cDanTickColor = song.arスコア[6]..cDanTickColor;
//stバー情報[i].clearGrade = song.arスコア[6].譜面情報.nクリア[0];
stバー情報[i].clearGrade = song.arスコア[6].GPInfo[TJAPlayer3.SaveFile].nClear[0];
string barCenter = Path.GetDirectoryName(song.arスコア[6]..) + @"\Bar_Center.png";
if (BarTexCache.TryGetValue(barCenter, out CTexture texture1))
{
stバー情報[i].txBarCenter = texture1;
}
else
{
stバー情報[i].txBarCenter = TJAPlayer3.tテクスチャの生成(barCenter);
BarTexCache.Add(barCenter, stバー情報[i].txBarCenter);
}
string danPlate = Path.GetDirectoryName(song.arスコア[6]..) + @"\Dan_Plate.png";
if (BarTexCache.TryGetValue(danPlate, out CTexture texture2))
{
stバー情報[i].txDanPlate = texture2;
}
else
{
stバー情報[i].txDanPlate = TJAPlayer3.tテクスチャの生成(danPlate);
BarTexCache.Add(danPlate, stバー情報[i].txDanPlate);
}
}
break;
case C曲リストード.Eード種別.BOX:
{
stバー情報[i].ttkタイトル = new TitleTextureKey[1];
stバー情報[i].ttkタイトル[0] = new TitleTextureKey(song.strタイトル, pfDanSong, Color.White, Color.Black, 700);
stバー情報[i].cDanTickColor = song.BoxColor;
}
break;
case C曲リストード.Eード種別.BACKBOX:
{
stバー情報[i].ttkタイトル = new TitleTextureKey[1];
stバー情報[i].ttkタイトル[0] = new TitleTextureKey(CLangManager.LangInstance.GetString(200), pfDanSong, Color.White, Color.Black, 700);
stバー情報[i].cDanTickColor = Color.FromArgb(180, 150, 70);
}
break;
case C曲リストード.Eード種別.RANDOM:
{
stバー情報[i].ttkタイトル = new TitleTextureKey[1];
stバー情報[i].ttkタイトル[0] = new TitleTextureKey(CLangManager.LangInstance.GetString(203), pfDanSong, Color.White, Color.Black, 700);
stバー情報[i].cDanTickColor = Color.FromArgb(150, 250, 255);
}
break;
}
stバー情報[i].ttkタイトル[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count] = new TitleTextureKey(tmp, pfDanSong, Color.Black, Color.Transparent, 700);
stバー情報[i].nDanTick = song.arスコア[6]..nDanTick;
stバー情報[i].cDanTickColor = song.arスコア[6]..cDanTickColor;
//stバー情報[i].clearGrade = song.arスコア[6].譜面情報.nクリア[0];
stバー情報[i].clearGrade = song.arスコア[6].GPInfo[TJAPlayer3.SaveFile].nClear[0];
stバー情報[i].txBarCenter = TJAPlayer3.tテクスチャの生成(Path.GetDirectoryName(song.arスコア[6]..) + @"\Bar_Center.png");
stバー情報[i].txDanPlate = TJAPlayer3.tテクスチャの生成(Path.GetDirectoryName(song.arスコア[6]..) + @"\Dan_Plate.png");
}
}
@ -741,7 +825,7 @@ namespace TJAPlayer3
}
}
public void tLevelNumberDraw(float x, float y, int num)
public void tLevelNumberDraw(float x, float y, int num, float scale = 1.0f)
{
/*
for (int j = 0; j < str.Length; j++)
@ -764,11 +848,15 @@ namespace TJAPlayer3
{
float offset = j;
float _x = x - (TJAPlayer3.Skin.DaniSelect_Level_Number_Interval[0] * offset) + (width / 2);
float _y = y - (TJAPlayer3.Skin.DaniSelect_Level_Number_Interval[1] * offset) - (width / 2);
float _x = x - (((TJAPlayer3.Skin.DaniSelect_Level_Number_Interval[0] * offset) + (width / 2)) * scale);
float _y = y - (((TJAPlayer3.Skin.DaniSelect_Level_Number_Interval[1] * offset) - (width / 2)) * scale);
TJAPlayer3.Tx.Dani_Level_Number.vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Dani_Level_Number.vc拡大縮小倍率.Y = scale;
TJAPlayer3.Tx.Dani_Level_Number.t2D描画(TJAPlayer3.app.Device, _x, _y,
new RectangleF(width * nums[j], 0, width, height));
TJAPlayer3.Tx.Dani_Level_Number.vc拡大縮小倍率.X = 1;
TJAPlayer3.Tx.Dani_Level_Number.vc拡大縮小倍率.Y = 1;
}
}
@ -812,7 +900,7 @@ namespace TJAPlayer3
}
}
public void tExamDraw(float x, float y, int num, Exam.Range Range)
public void tExamDraw(float x, float y, int num, Exam.Range Range, float scale = 1.0f)
{
/*
TJAPlayer3.Tx.Dani_Exam_Number.t2D描画(TJAPlayer3.app.Device, x + 19 * str.Length, y - 24 / 2, new RectangleF(45 * (int)Range, 24, 45, 24));
@ -838,16 +926,20 @@ namespace TJAPlayer3
float text_width = TJAPlayer3.Skin.DaniSelect_Exam_Number_Text_Width;
TJAPlayer3.Tx.Dani_Exam_Number.t2D描画(TJAPlayer3.app.Device, x + TJAPlayer3.Skin.DaniSelect_Exam_Number_Interval[0] + (width / 2),
y + TJAPlayer3.Skin.DaniSelect_Exam_Number_Interval[1] - (height / 2),
TJAPlayer3.Tx.Dani_Exam_Number.vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Dani_Exam_Number.vc拡大縮小倍率.Y = scale;
TJAPlayer3.Tx.Dani_Exam_Number.t2D描画(TJAPlayer3.app.Device,
x + ((TJAPlayer3.Skin.DaniSelect_Exam_Number_Interval[0] + (width / 2)) * scale),
y + ((TJAPlayer3.Skin.DaniSelect_Exam_Number_Interval[1] - (height / 2)) * scale),
new RectangleF(text_width * (int)Range, height, text_width, height));
for (int j = 0; j < nums.Length; j++)
{
float offset = j;
float _x = x - (TJAPlayer3.Skin.DaniSelect_Exam_Number_Interval[0] * offset) + (width / 2);
float _y = y - (TJAPlayer3.Skin.DaniSelect_Exam_Number_Interval[1] * offset) - (height / 2);
float _x = x - (((TJAPlayer3.Skin.DaniSelect_Exam_Number_Interval[0] * offset) + (width / 2)) * scale);
float _y = y - (((TJAPlayer3.Skin.DaniSelect_Exam_Number_Interval[1] * offset) - (height / 2)) * scale);
TJAPlayer3.Tx.Dani_Exam_Number.t2D描画(TJAPlayer3.app.Device, _x, _y,
new RectangleF(width * nums[j], 0, width, height));

View File

@ -6,7 +6,8 @@ using System.Threading.Tasks;
using System.Drawing;
using FDK;
using static TJAPlayer3.CActSelect曲リスト;
using System.Diagnostics;
namespace TJAPlayer3
{
class CStage段位選択 : CStage
@ -178,6 +179,16 @@ namespace TJAPlayer3
if (!this..bスクロール中 && !b選択した && !bDifficultyIn)
{
int returnTitle()
{
TJAPlayer3.Skin.soundDanSelectBGM.t停止する();
TJAPlayer3.Skin.sound取消音.t再生する();
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.actFOtoTitle.tフェードアウト開始();
base.eフェーズID = CStage.Eフェーズ._フェードアウト;
return 0;
}
if (TJAPlayer3.Input管理.Keyboard.bキーが押されている((int)SlimDXKeys.Key.RightArrow) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.RightChange))
{
@ -193,22 +204,44 @@ namespace TJAPlayer3
if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.Return) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.Decide))
{
//this.t段位を選択する();
//TJAPlayer3.Skin.soundDanSongSelectCheck.t再生する();
TJAPlayer3.Skin.voiceMenuDanSelectPrompt[TJAPlayer3.SaveFile]?.t再生する();
this.bDifficultyIn = true;
this..ctBarIn.t開始(0, 255, 1, TJAPlayer3.Timer);
switch(.currentBar.eード種別)
{
case C曲リストード.Eード種別.SCORE:
case C曲リストード.Eード種別.RANDOM:
{
//this.t段位を選択する();
//TJAPlayer3.Skin.soundDanSongSelectCheck.t再生する();
TJAPlayer3.Skin.voiceMenuDanSelectPrompt[TJAPlayer3.SaveFile]?.t再生する();
this.bDifficultyIn = true;
this..ctBarIn.t開始(0, 255, 1, TJAPlayer3.Timer);
}
break;
case C曲リストード.Eード種別.BOX:
{
TJAPlayer3.Skin.sound決定音.t再生する();
.tOpenFolder(.currentBar);
}
break;
case C曲リストード.Eード種別.BACKBOX:
{
if (TJAPlayer3.Songs管理.list曲ルート.Contains(.currentBar.r親ード) && .currentBar.r親ード.strジャンル == "段位道場")
{
return returnTitle();
}
else
{
TJAPlayer3.Skin.sound決定音.t再生する();
.tCloseFolder(.currentBar);
}
}
break;
}
}
if(TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.Escape) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.Cancel))
{
TJAPlayer3.Skin.soundDanSelectBGM.t停止する();
TJAPlayer3.Skin.sound取消音.t再生する();
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.actFOtoTitle.tフェードアウト開始();
base.eフェーズID = CStage.Eフェーズ._フェードアウト;
return 0;
return returnTitle();
}
}
@ -257,7 +290,19 @@ namespace TJAPlayer3
if (ct待機.n現在の値 >= 3000)
{
TJAPlayer3.stage段位選択.t段位を選択する();
if (.currentBar.eード種別 == C曲リストード.Eード種別.RANDOM)
{
if (!tSelectSongRandomly())
{
bDifficultyIn = false;
b選択した = false;
TJAPlayer3.Skin.soundError.t再生する();
}
}
else
{
TJAPlayer3.stage段位選択.t段位を選択する();
}
ct待機.n現在の値 = 0;
ct待機.t停止();
}
@ -293,10 +338,10 @@ namespace TJAPlayer3
public void t段位を選択する()
{
this.b選択した = true;
TJAPlayer3.stage選曲.r確定された曲 = TJAPlayer3.Songs管理.list曲ルート_Dan[.n現在の選択行];
TJAPlayer3.stage選曲.r確定されたスコア = TJAPlayer3.Songs管理.list曲ルート_Dan[.n現在の選択行].arスコア[(int)Difficulty.Dan];
TJAPlayer3.stage選曲.r確定された曲 = .listSongs[.n現在の選択行];
TJAPlayer3.stage選曲.r確定されたスコア = .listSongs[.n現在の選択行].arスコア[(int)Difficulty.Dan];
TJAPlayer3.stage選曲.n確定された曲の難易度[0] = (int)Difficulty.Dan;
TJAPlayer3.stage選曲.str確定された曲のジャンル = TJAPlayer3.Songs管理.list曲ルート_Dan[.n現在の選択行].strジャンル;
TJAPlayer3.stage選曲.str確定された曲のジャンル = .listSongs[.n現在の選択行].strジャンル;
if ((TJAPlayer3.stage選曲.r確定された曲 != null) && (TJAPlayer3.stage選曲.r確定されたスコア != null))
{
this.eフェードアウト完了時の戻り値 = E戻り値.;
@ -305,6 +350,99 @@ namespace TJAPlayer3
}
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.stopSong();
}
private bool tSelectSongRandomly()
{
this.b選択した = true;
var mandatoryDiffs = new List<int>();
C曲リストード song = .currentBar;
song.stackランダム演奏番号.Clear();
song.listランダム用ードリスト = null;
if ((song.stackランダム演奏番号.Count == 0) || (song.listランダム用ードリスト == null))
{
if (song.listランダム用ードリスト == null)
{
List<C曲リストード> songs = new List<C曲リストード>();
TJAPlayer3.stage選曲.t指定された曲の子リストの曲を列挙する_孫リスト含む(song.r親ード, ref songs, ref mandatoryDiffs, true);
song.listランダム用ードリスト = songs;
}
int count = song.listランダム用ードリスト.Count;
if (count == 0)
{
return false;
}
int[] numArray = new int[count];
for (int i = 0; i < count; i++)
{
numArray[i] = i;
}
for (int j = 0; j < (count * 1.5); j++)
{
int index = TJAPlayer3.Random.Next(count);
int num5 = TJAPlayer3.Random.Next(count);
int num6 = numArray[num5];
numArray[num5] = numArray[index];
numArray[index] = num6;
}
for (int k = 0; k < count; k++)
{
song.stackランダム演奏番号.Push(numArray[k]);
}
if (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
{
StringBuilder builder = new StringBuilder(0x400);
builder.Append(string.Format("ランダムインデックスリストを作成しました: {0}曲: ", song.stackランダム演奏番号.Count));
for (int m = 0; m < count; m++)
{
builder.Append(string.Format("{0} ", numArray[m]));
}
Trace.TraceInformation(builder.ToString());
}
}
// Third assignment
TJAPlayer3.stage選曲.r確定された曲 = song.listランダム用ードリスト[song.stackランダム演奏番号.Pop()];
TJAPlayer3.stage選曲.n確定された曲の難易度[0] = (int)Difficulty.Dan;
TJAPlayer3.stage選曲.r確定されたスコア = TJAPlayer3.stage選曲.r確定された曲.arスコア[TJAPlayer3.stage選曲.act曲リスト.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(TJAPlayer3.stage選曲.r確定された曲)];
TJAPlayer3.stage選曲.str確定された曲のジャンル = TJAPlayer3.stage選曲.r確定された曲.strジャンル;
//TJAPlayer3.Skin.sound曲決定音.t再生する();
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
base.eフェーズID = CStage.Eフェーズ._NowLoading画面へのフェードアウト;
#region [Log]
if (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
{
int[] numArray2 = song.stackランダム演奏番号.ToArray();
StringBuilder builder2 = new StringBuilder(0x400);
builder2.Append("ランダムインデックスリスト残り: ");
if (numArray2.Length > 0)
{
for (int n = 0; n < numArray2.Length; n++)
{
builder2.Append(string.Format("{0} ", numArray2[n]));
}
}
else
{
builder2.Append("(なし)");
}
Trace.TraceInformation(builder2.ToString());
}
#endregion
CSongSelectSongManager.stopSong();
return true;
}
private ScriptBG Background;

View File

@ -0,0 +1,217 @@
using FDK;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Minimalist menu class to use for custom menus
namespace TJAPlayer3
{
class CActSelectDanInfo : CStage
{
public CActSelectDanInfo()
{
base.b活性化してない = true;
}
public override void On活性化()
{
// On activation
if (base.b活性化してる)
return;
ctStep = new CCounter(0, 1000, 2, TJAPlayer3.Timer);
ctStepFade = new CCounter(0, 255, 0.5, TJAPlayer3.Timer);
base.On活性化();
}
public override void On非活性化()
{
// On de-activation
base.On非活性化();
}
public override void OnManagedリソースの作成()
{
// Ressource allocation
if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
pfTitleFont = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.SongSelect_DanInfo_Title_Size);
else
pfTitleFont = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.SongSelect_DanInfo_Title_Size);
if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
pfExamFont = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Size);
else
pfExamFont = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Size);
ttkExams = new CActSelect曲リスト.TitleTextureKey[(int)Exam.Type.Total];
for (int i = 0; i < ttkExams.Length; i++)
{
ttkExams[i] = new CActSelect曲リスト.TitleTextureKey(CLangManager.LangInstance.GetString(1010 + i), pfExamFont, Color.Black, Color.Transparent, 700);
}
base.OnManagedリソースの作成();
}
public override void OnManagedリソースの解放()
{
// Ressource freeing
TJAPlayer3.t安全にDisposeする(ref pfTitleFont);
TJAPlayer3.t安全にDisposeする(ref pfExamFont);
base.OnManagedリソースの解放();
}
public override int On進行描画()
{
ctStep.t進行();
ctStepFade.t進行();
if (ctStep.n現在の値 == ctStep.n終了値)
{
ctStep = new CCounter(0, 1000, 2, TJAPlayer3.Timer);
tNextStep();
}
if (TJAPlayer3.Skin.SongSelect_DanInfo_Show)
{
for(int i = 0; i < TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs.Count; i++)
{
var dan = TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs[i];
int songIndex = i / 3;
int opacity = 255;
if (TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs.Count > 3)
{
if (nNowSongIndex == songIndex)
{
opacity = ctStepFade.n現在の値;
}
else if (nPrevSongIndex == songIndex)
{
opacity = 255 - ctStepFade.n現在の値;
}
else
{
opacity = 0;
}
}
int pos = i % 3;
CActSelect段位リスト.tDisplayDanIcon(i + 1, TJAPlayer3.Skin.SongSelect_DanInfo_Icon_X[pos], TJAPlayer3.Skin.SongSelect_DanInfo_Icon_Y[pos], opacity, TJAPlayer3.Skin.SongSelect_DanInfo_Icon_Scale, false);
int difficulty_cymbol_width = TJAPlayer3.Tx.Dani_Difficulty_Cymbol.szテクスチャサイズ.Width / 5;
int difficulty_cymbol_height = TJAPlayer3.Tx.Dani_Difficulty_Cymbol.szテクスチャサイズ.Height;
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.Opacity = opacity;
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.vc拡大縮小倍率.X = TJAPlayer3.Skin.SongSelect_DanInfo_Difficulty_Cymbol_Scale;
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.vc拡大縮小倍率.Y = TJAPlayer3.Skin.SongSelect_DanInfo_Difficulty_Cymbol_Scale;
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_DanInfo_Difficulty_Cymbol_X[pos], TJAPlayer3.Skin.SongSelect_DanInfo_Difficulty_Cymbol_Y[pos], new Rectangle(dan.Difficulty * difficulty_cymbol_width, 0, difficulty_cymbol_width, difficulty_cymbol_height));
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.Opacity = 255;
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.vc拡大縮小倍率.X = 1;
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.vc拡大縮小倍率.Y = 1;
TJAPlayer3.Tx.Dani_Level_Number.Opacity = opacity;
TJAPlayer3.stage段位選択..tLevelNumberDraw(TJAPlayer3.Skin.SongSelect_DanInfo_Level_Number_X[pos], TJAPlayer3.Skin.SongSelect_DanInfo_Level_Number_Y[pos], dan.Level, TJAPlayer3.Skin.SongSelect_DanInfo_Level_Number_Scale);
TJAPlayer3.Tx.Dani_Level_Number.Opacity = 255;
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkTitles[i]).Opacity = opacity;
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkTitles[i]).t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_DanInfo_Title_X[pos], TJAPlayer3.Skin.SongSelect_DanInfo_Title_Y[pos]);
}
for (int j = 0; j < CExamInfo.cMaxExam; j++)
{
int index = j;
Dan_C danc0 = TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs[0].Dan_C[j];
if (danc0 != null)
{
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkExams[(int)danc0.GetExamType()]).t2D中心基準描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_DanInfo_Exam_X[index], TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Y[index]);
}
if (TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs[TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs.Count - 1].Dan_C[j] == null)
{
Dan_C danc = TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs[0].Dan_C[j];
if (danc != null)
{
TJAPlayer3.stage段位選択..tExamDraw(TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Value_X[0], TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Value_Y[index], danc.Value[0], danc.GetExamRange(), TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Value_Scale);
}
}
else
{
for (int i = 0; i < TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs.Count; i++)
{
Dan_C danc = TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs[i].Dan_C[j];
if (danc != null)
{
int opacity = 255;
if (TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs.Count > 3)
{
if (nNowSongIndex == i / 3)
{
opacity = ctStepFade.n現在の値;
}
else if (nPrevSongIndex == i / 3)
{
opacity = 255 - ctStepFade.n現在の値;
}
else
{
opacity = 0;
}
}
TJAPlayer3.Tx.Dani_Exam_Number.Opacity = opacity;
TJAPlayer3.stage段位選択..tExamDraw(TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Value_X[i % 3], TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Value_Y[index], danc.Value[0], danc.GetExamRange(), TJAPlayer3.Skin.SongSelect_DanInfo_Exam_Value_Scale);
TJAPlayer3.Tx.Dani_Exam_Number.Opacity = 255;
}
}
}
}
}
return 0;
}
public void UpdateSong()
{
if (TJAPlayer3.stage選曲.r現在選択中の曲 == null || TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs == null) return;
ttkTitles = new CActSelect曲リスト.TitleTextureKey[TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs.Count];
for (int i = 0; i < TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs.Count; i++)
{
var dan = TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs[i];
ttkTitles[i] = new CActSelect曲リスト.TitleTextureKey(dan.Title, pfTitleFont, Color.Black, Color.Transparent, 700);
}
}
#region [Private]
private CActSelect曲リスト.TitleTextureKey[] ttkTitles;
private CActSelect曲リスト.TitleTextureKey[] ttkExams;
private CPrivateFastFont pfTitleFont;
private CPrivateFastFont pfExamFont;
private CCounter ctStep;
private CCounter ctStepFade;
private int nPrevSongIndex;
private int nNowSongIndex;
private void tNextStep()
{
nPrevSongIndex = nNowSongIndex;
nNowSongIndex = (nNowSongIndex + 1) % (int)Math.Ceiling(TJAPlayer3.stage選曲.r現在選択中の曲.DanSongs.Count / 3.0);
ctStepFade = new CCounter(0, 255, 1, TJAPlayer3.Timer);
}
#endregion
}
}

View File

@ -0,0 +1,106 @@
using FDK;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Minimalist menu class to use for custom menus
namespace TJAPlayer3
{
class CActSelectSongInfo : CStage
{
public CActSelectSongInfo()
{
base.b活性化してない = true;
}
public override void On活性化()
{
// On activation
if (base.b活性化してる)
return;
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進行描画()
{
if (TJAPlayer3.stage選曲.r現在選択中の曲 != null && TJAPlayer3.stage選曲.r現在選択中の曲.eード種別 == C曲リストード.Eード種別.SCORE)
{
int[] bpms = new int[3] {
(int)TJAPlayer3.stage選曲.r現在選択中の曲.arスコア[TJAPlayer3.stage選曲.act曲リスト.tFetchDifficulty(TJAPlayer3.stage選曲.r現在選択中の曲)]..BaseBpm,
(int)TJAPlayer3.stage選曲.r現在選択中の曲.arスコア[TJAPlayer3.stage選曲.act曲リスト.tFetchDifficulty(TJAPlayer3.stage選曲.r現在選択中の曲)]..MinBpm,
(int)TJAPlayer3.stage選曲.r現在選択中の曲.arスコア[TJAPlayer3.stage選曲.act曲リスト.tFetchDifficulty(TJAPlayer3.stage選曲.r現在選択中の曲)]..MaxBpm
};
for (int i = 0; i < 3; i++)
{
tBPMNumberDraw(TJAPlayer3.Skin.SongSelect_Bpm_X[i], TJAPlayer3.Skin.SongSelect_Bpm_Y[i], bpms[i]);
}
if (TJAPlayer3.stage選曲.act曲リスト.ttkSelectedSongMaker != null && TJAPlayer3.Skin.SongSelect_Maker_Show)
{
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(TJAPlayer3.stage選曲.act曲リスト.ttkSelectedSongMaker).t2D拡大率考慮描画(TJAPlayer3.app.Device, CTexture.RefPnt.Left, TJAPlayer3.Skin.SongSelect_Maker[0], TJAPlayer3.Skin.SongSelect_Maker[1]);
}
if (TJAPlayer3.stage選曲.act曲リスト.ttkSelectedSongBPM != null && TJAPlayer3.Skin.SongSelect_BPM_Text_Show)
{
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(TJAPlayer3.stage選曲.act曲リスト.ttkSelectedSongBPM).t2D拡大率考慮描画(TJAPlayer3.app.Device, CTexture.RefPnt.Left, TJAPlayer3.Skin.SongSelect_BPM_Text[0], TJAPlayer3.Skin.SongSelect_BPM_Text[1]);
}
if (TJAPlayer3.stage選曲.r現在選択中の曲.bExplicit == true)
TJAPlayer3.Tx.SongSelect_Explicit?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Explicit[0], TJAPlayer3.Skin.SongSelect_Explicit[1]);
}
return 0;
}
#region [Private]
private void tBPMNumberDraw(float originx, float originy, int num)
{
int[] nums = C変換.SeparateDigits(num);
for (int j = 0; j < nums.Length; j++)
{
if (TJAPlayer3.Skin.SongSelect_Bpm_Show && TJAPlayer3.Tx.SongSelect_Bpm_Number != null)
{
float offset = j;
float x = originx - (TJAPlayer3.Skin.SongSelect_Bpm_Interval[0] * offset);
float y = originy - (TJAPlayer3.Skin.SongSelect_Bpm_Interval[1] * offset);
float width = TJAPlayer3.Tx.SongSelect_Bpm_Number.sz画像サイズ.Width / 10.0f;
float height = TJAPlayer3.Tx.SongSelect_Bpm_Number.sz画像サイズ.Height;
TJAPlayer3.Tx.SongSelect_Bpm_Number.t2D描画(TJAPlayer3.app.Device, x, y, new RectangleF(width * nums[j], 0, width, height));
}
}
}
#endregion
}
}

View File

@ -0,0 +1,83 @@
using FDK;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Minimalist menu class to use for custom menus
namespace TJAPlayer3
{
class CActSelectTowerInfo : CStage
{
public CActSelectTowerInfo()
{
base.b活性化してない = true;
}
public override void On活性化()
{
// On activation
if (base.b活性化してる)
return;
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進行描画()
{
tFloorNumberDraw(TJAPlayer3.Skin.SongSelect_FloorNum_X, TJAPlayer3.Skin.SongSelect_FloorNum_Y, TJAPlayer3.stage選曲.r現在選択中の曲.nTotalFloor);
return 0;
}
#region [Private]
private void tFloorNumberDraw(float originx, float originy, int num)
{
int[] nums = C変換.SeparateDigits(num);
for (int j = 0; j < nums.Length; j++)
{
if (TJAPlayer3.Skin.SongSelect_FloorNum_Show && TJAPlayer3.Tx.SongSelect_Floor_Number != null)
{
float offset = j;
float x = originx - (TJAPlayer3.Skin.SongSelect_FloorNum_Interval[0] * offset);
float y = originy - (TJAPlayer3.Skin.SongSelect_FloorNum_Interval[1] * offset);
float width = TJAPlayer3.Tx.SongSelect_Floor_Number.sz画像サイズ.Width / 10.0f;
float height = TJAPlayer3.Tx.SongSelect_Floor_Number.sz画像サイズ.Height;
TJAPlayer3.Tx.SongSelect_Floor_Number.t2D描画(TJAPlayer3.app.Device, x, y, new RectangleF(width * nums[j], 0, width, height));
}
}
}
#endregion
}
}

View File

@ -1877,14 +1877,18 @@ namespace TJAPlayer3
#region [Displayables]
TJAPlayer3.Tx.SongSelect_Frame_Score[1]?.t2D描画(TJAPlayer3.app.Device, 0, 0);
int displayingDiff = diff == 5 ? 0 : 2;
int width = TJAPlayer3.Tx.SongSelect_Frame_Score[0].sz画像サイズ.Width / 5;
int height = TJAPlayer3.Tx.SongSelect_Frame_Score[0].sz画像サイズ.Height;
TJAPlayer3.Tx.SongSelect_Frame_Score[1].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Frame_Score_X[displayingDiff], TJAPlayer3.Skin.SongSelect_Frame_Score_Y[displayingDiff], new Rectangle(width * displayingDiff, 0, width, height));
var _level_number = (diff == 5) ? TJAPlayer3.Skin.SongSelect_Level_Number_Tower : TJAPlayer3.Skin.SongSelect_Level_Number_Tower;
if (avaliable)
{
t小文字表示(_level_number[0], _level_number[1],
t小文字表示(TJAPlayer3.Skin.SongSelect_Level_Number_X[displayingDiff], TJAPlayer3.Skin.SongSelect_Level_Number_Y[displayingDiff],
TJAPlayer3.stage選曲.r現在選択中のスコア..nレベル[diff],
diff,
TJAPlayer3.stage選曲.r現在選択中のスコア..nLevelIcon[diff]
@ -1913,8 +1917,8 @@ namespace TJAPlayer3
for (int i2 = 0; i2 < TJAPlayer3.stage選曲.r現在選択中のスコア..nレベル[diff]; i2++)
{
TJAPlayer3.Tx.SongSelect_Level?.t2D描画(TJAPlayer3.app.Device,
TJAPlayer3.Skin.SongSelect_Level_X[(diff - 5)] + (TJAPlayer3.Skin.SongSelect_Level_Move[0] * i2),
TJAPlayer3.Skin.SongSelect_Level_Y[(diff - 5)] + (TJAPlayer3.Skin.SongSelect_Level_Move[1] * i2),
TJAPlayer3.Skin.SongSelect_Level_X[displayingDiff] + (TJAPlayer3.Skin.SongSelect_Level_Move[0] * i2),
TJAPlayer3.Skin.SongSelect_Level_Y[displayingDiff] + (TJAPlayer3.Skin.SongSelect_Level_Move[1] * i2),
new RectangleF(level_width * diff, 0, level_width, level_height));
}

View File

@ -198,6 +198,9 @@ namespace TJAPlayer3
//base.list子Activities.Add( this.actFOtoNowLoading = new CActFIFOBlack() );
base.list子Activities.Add(this.actFOtoNowLoading = new CActFIFOStart());
base.list子Activities.Add(this.act曲リスト = new CActSelect曲リスト());
base.list子Activities.Add(this.actSongInfo = new CActSelectSongInfo());
base.list子Activities.Add(this.actDanInfo = new CActSelectDanInfo());
base.list子Activities.Add(this.actTowerInfo = new CActSelectTowerInfo());
base.list子Activities.Add(this.actステータスパネル = new CActSelectステータスパネル());
base.list子Activities.Add(this.act演奏履歴パネル = new CActSelect演奏履歴パネル());
base.list子Activities.Add(this.actPreimageパネル = new CActSelectPreimageパネル());
@ -270,6 +273,7 @@ namespace TJAPlayer3
this.act演奏履歴パネル.t選択曲が変更された();
this.actステータスパネル.t選択曲が変更された();
this.actArtistComment.t選択曲が変更された();
actDanInfo.UpdateSong();
#region [ BOX, RANDOM, BACK ]
//---------------------
@ -540,28 +544,28 @@ namespace TJAPlayer3
tTimerDraw(100 - ctTimer.n現在の値);
if (this.r現在選択中の曲 != null && this.r現在選択中の曲.eード種別 == C曲リストード.Eード種別.SCORE)
{
int[] bpms = new int[3] {
(int)r現在選択中の曲.arスコア[act曲リスト.tFetchDifficulty(r現在選択中の曲)]..BaseBpm,
(int)r現在選択中の曲.arスコア[act曲リスト.tFetchDifficulty(r現在選択中の曲)]..MinBpm,
(int)r現在選択中の曲.arスコア[act曲リスト.tFetchDifficulty(r現在選択中の曲)]..MaxBpm
};
for (int i = 0; i < 3; i++)
{
tBPMNumberDraw(TJAPlayer3.Skin.SongSelect_Bpm_X[i], TJAPlayer3.Skin.SongSelect_Bpm_Y[i], bpms[i]);
}
if (act曲リスト.ttkSelectedSongMaker != null && TJAPlayer3.Skin.SongSelect_Maker_Show)
if (this.r現在選択中の曲 != null)
{
if (this.r現在選択中の曲.eード種別 == C曲リストード.Eード種別.BOX)
{
act曲リスト.ResolveTitleTexture(act曲リスト.ttkSelectedSongMaker).t2D拡大率考慮描画(TJAPlayer3.app.Device, CTexture.RefPnt.Left, TJAPlayer3.Skin.SongSelect_Maker[0], TJAPlayer3.Skin.SongSelect_Maker[1]);
}
if (act曲リスト.ttkSelectedSongBPM != null && TJAPlayer3.Skin.SongSelect_BPM_Text_Show)
}
else if (this.r現在選択中の曲.eード種別 == C曲リストード.Eード種別.SCORE)
{
act曲リスト.ResolveTitleTexture(act曲リスト.ttkSelectedSongBPM).t2D拡大率考慮描画(TJAPlayer3.app.Device, CTexture.RefPnt.Left, TJAPlayer3.Skin.SongSelect_BPM_Text[0], TJAPlayer3.Skin.SongSelect_BPM_Text[1]);
}
if (r現在選択中の曲.bExplicit == true)
TJAPlayer3.Tx.SongSelect_Explicit?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Explicit[0], TJAPlayer3.Skin.SongSelect_Explicit[1]);
actSongInfo.On進行描画();
if (TJAPlayer3.stage選曲.n現在選択中の曲の難易度 == (int)Difficulty.Dan)
{
actDanInfo.On進行描画();
}
else if (TJAPlayer3.stage選曲.n現在選択中の曲の難易度 == (int)Difficulty.Tower)
{
actTowerInfo.On進行描画();
}
else
{
}
}
}
tSongNumberDraw(TJAPlayer3.Skin.SongSelect_SongNumber_X[0], TJAPlayer3.Skin.SongSelect_SongNumber_Y[0], NowSong);
@ -1384,6 +1388,9 @@ namespace TJAPlayer3
private CActSelectステータスパネル actステータスパネル;
public CActSelect演奏履歴パネル act演奏履歴パネル;
public CActSelect曲リスト act曲リスト;
public CActSelectSongInfo actSongInfo;
public CActSelectDanInfo actDanInfo;
public CActSelectTowerInfo actTowerInfo;
private CActSelectShowCurrentPosition actShowCurrentPosition;
public CActSelect難易度選択画面 act難易度選択画面;
public CActPlayOption actPlayOption;
@ -1524,28 +1531,6 @@ namespace TJAPlayer3
TJAPlayer3.Tx.SongSelect_Timer.t2D描画(TJAPlayer3.app.Device, x, y, new RectangleF(width * nums[j], 0, width, height));
}
}
}
private void tBPMNumberDraw(float originx, float originy, int num)
{
//int x = 1171, y = 57;
int[] nums = C変換.SeparateDigits(num);
for (int j = 0; j < nums.Length; j++)
{
if (TJAPlayer3.Skin.SongSelect_Bpm_Show && TJAPlayer3.Tx.SongSelect_Bpm_Number != null)
{
float offset = j;
float x = originx - (TJAPlayer3.Skin.SongSelect_Bpm_Interval[0] * offset);
float y = originy - (TJAPlayer3.Skin.SongSelect_Bpm_Interval[1] * offset);
float width = TJAPlayer3.Tx.SongSelect_Bpm_Number.sz画像サイズ.Width / 10.0f;
float height = TJAPlayer3.Tx.SongSelect_Bpm_Number.sz画像サイズ.Height;
TJAPlayer3.Tx.SongSelect_Bpm_Number.t2D描画(TJAPlayer3.app.Device, x, y, new RectangleF(width * nums[j], 0, width, height));
}
}
}
@ -2017,7 +2002,7 @@ namespace TJAPlayer3
return list;
}
private void t指定された曲の子リストの曲を列挙する_孫リスト含む(C曲リストード r親, ref List<C曲リストード> list, ref List<int> mandatory)
public void t指定された曲の子リストの曲を列挙する_孫リスト含む(C曲リストード r親, ref List<C曲リストード> list, ref List<int> mandatory, bool dan = false, Difficulty difficulty = Difficulty.Dan)
{
if ((r親 != null) && (r親.list子リスト != null))
{
@ -2028,7 +2013,7 @@ namespace TJAPlayer3
// Don't add Dan/Tower charts for Random
int diff = this.act曲リスト.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(c曲リストード);
if (diff < (int)Difficulty.Tower)
if (dan ? diff == (int)difficulty : diff < (int)Difficulty.Tower)
{
// Check if mandatory diffs are present
var score = c曲リストード.arスコア[diff];
@ -2051,7 +2036,7 @@ namespace TJAPlayer3
}
if ((c曲リストード.list子リスト != null) && TJAPlayer3.ConfigIni.bランダムセレクトで子BOXを検索対象とする)
{
this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストード, ref list, ref mandatory);
this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストード, ref list, ref mandatory, dan, difficulty);
}
}
}

View File

@ -39,6 +39,9 @@ namespace TJAPlayer3
// Additional
public APICharterInfo charter;
public APIGenreInfo Genre;
[JsonIgnore]
public bool DownloadNow;
}
#region [ContractResolver override for properties]

View File

@ -343,7 +343,7 @@ namespace TJAPlayer3
#region [Input]
if (!IsDownloading)
//if (!IsDownloading)
{
if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.RightArrow) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.RightChange))
@ -408,20 +408,27 @@ namespace TJAPlayer3
if (currentMenu == ECurrentMenu.MAIN)
{
// Base menu
currentMenu = mainMenu[mainMenuIndex];
if (currentMenu == ECurrentMenu.RETURN)
if (mainMenu[mainMenuIndex] == ECurrentMenu.CDN_SELECT || !IsDownloading)
{
// Quit
TJAPlayer3.Skin.sound取消音.t再生する();
TJAPlayer3.Skin.soundOnlineLoungeBGM?.t停止する();
this.eフェードアウト完了時の戻り値 = EReturnValue.ReturnToTitle;
this.actFOtoTitle.tフェードアウト開始();
base.eフェーズID = CStage.Eフェーズ._フェードアウト;
// Base menu
currentMenu = mainMenu[mainMenuIndex];
if (currentMenu == ECurrentMenu.RETURN)
{
// Quit
TJAPlayer3.Skin.sound取消音.t再生する();
TJAPlayer3.Skin.soundOnlineLoungeBGM?.t停止する();
this.eフェードアウト完了時の戻り値 = EReturnValue.ReturnToTitle;
this.actFOtoTitle.tフェードアウト開始();
base.eフェーズID = CStage.Eフェーズ._フェードアウト;
}
else
{
TJAPlayer3.Skin.sound決定音.t再生する();
}
}
else
{
TJAPlayer3.Skin.sound決定音.t再生する();
TJAPlayer3.Skin.soundError.t再生する();
}
}
else if (currentMenu == ECurrentMenu.CDN_SELECT)
@ -495,7 +502,7 @@ namespace TJAPlayer3
//var zipPath = $@"Cache\{song.Md5}.zip";
var downloadLink = GetDownloadLink(song);
if (CSongDict.tContainsSongUrl(downloadLink))
if (CSongDict.tContainsSongUrl(downloadLink) || song.DownloadNow)
{
TJAPlayer3.Skin.soundError.t再生する();
}
@ -599,6 +606,7 @@ namespace TJAPlayer3
var song = apiMethods.FetchedSongsList[this.cdnSongListIndex - 1];
song.DownloadNow = true;
var zipName = ReplaceInvalidChars($@"{TruncateString(song.SongTitle, 16)}-{TruncateString(song.Md5, 10)}");
var zipPath = $@"Cache\{zipName}.zip";
var downloadLink = GetDownloadLink(song);
@ -711,6 +719,7 @@ namespace TJAPlayer3
}
song.DownloadNow = false;
IsDownloading = false;
}

View File

@ -0,0 +1,410 @@
using FDK;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Minimalist menu class to use for custom menus
namespace TJAPlayer3
{
class CStageTowerSelect : CStage
{
public CStageTowerSelect()
{
base.eステージID = Eステージ.TaikoTowers;
base.eフェーズID = CStage.Eフェーズ._通常状態;
// Load CActivity objects here
// base.list子Activities.Add(this.act = new CAct());
base.list子Activities.Add(this.actFOtoNowLoading = new CActFIFOStart());
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;
if (listSongs == null)
listSongs = TJAPlayer3.Songs管理.list曲ルート_Tower;
base.On活性化();
}
public override void On非活性化()
{
// On de-activation
base.On非活性化();
}
public override void OnManagedリソースの作成()
{
// Ressource allocation
Background = new ScriptBG(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.TOWERSELECT}Script.lua"));
Background.Init();
if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
pfTitleFont = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.TowerSelect_Title_Size);
else
pfTitleFont = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.TowerSelect_Title_Size);
if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
pfSubTitleFont = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.TowerSelect_SubTitle_Size);
else
pfSubTitleFont = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.TowerSelect_SubTitle_Size);
tUpdateBarInfos();
base.OnManagedリソースの作成();
}
public override void OnManagedリソースの解放()
{
// Ressource freeing
TJAPlayer3.t安全にDisposeする(ref Background);
pfTitleFont.Dispose();
pfSubTitleFont.Dispose();
base.OnManagedリソースの解放();
}
public override int On進行描画()
{
Background.Update();
Background.Draw();
for(int i = 0; i < TJAPlayer3.Skin.TowerSelect_Bar_Count; i++)
{
int currentSong = nCurrentSongIndex + i - ((TJAPlayer3.Skin.TowerSelect_Bar_Count - 1) / 2);
if (currentSong < 0 || currentSong >= BarInfos.Length || currentSong >= TJAPlayer3.Skin.TowerSelect_Bar_Count) continue;
var bar = BarInfos[currentSong];
int x = TJAPlayer3.Skin.TowerSelect_Bar_X[i];
int y = TJAPlayer3.Skin.TowerSelect_Bar_Y[i];
tDrawTower(x, y, bar);
}
#region [Input]
if (this.eフェードアウト完了時の戻り値 == EReturnValue.Continuation)
{
int returnTitle()
{
TJAPlayer3.Skin.sound取消音.t再生する();
this.eフェードアウト完了時の戻り値 = EReturnValue.ReturnToTitle;
this.actFOtoTitle.tフェードアウト開始();
base.eフェーズID = CStage.Eフェーズ._フェードアウト;
return 0;
}
if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.RightArrow) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.RightChange))
{
TJAPlayer3.Skin.sound変更音.t再生する();
if (nCurrentSongIndex < BarInfos.Length - 1)
{
nCurrentSongIndex++;
}
}
else if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.LeftArrow) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.LeftChange))
{
TJAPlayer3.Skin.sound変更音.t再生する();
if (nCurrentSongIndex > 0)
{
nCurrentSongIndex--;
}
}
else if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.Escape) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.Cancel))
{
#region [Fast return (Escape)]
TJAPlayer3.Skin.sound取消音.t再生する();
returnTitle();
#endregion
}
else if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.Return) ||
TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.Decide))
{
#region [Decide]
TJAPlayer3.Skin.sound決定音.t再生する();
switch(currentSong.eード種別)
{
case C曲リストード.Eード種別.SCORE:
tSelectSong();
break;
case C曲リストード.Eード種別.RANDOM:
tSelectSongRandomly();
break;
case C曲リストード.Eード種別.BOX:
tOpenFolder(currentSong);
break;
case C曲リストード.Eード種別.BACKBOX:
{
if (TJAPlayer3.Songs管理.list曲ルート.Contains(currentSong.r親ード) && currentSong.r親ード.strジャンル == "太鼓タワー")
{
returnTitle();
}
else
{
tCloseFolder(currentSong);
}
}
break;
}
#endregion
}
}
#endregion
// Menu exit fade out transition
switch (base.eフェーズID)
{
case CStage.Eフェーズ._NowLoading画面へのフェードアウト:
if (this.actFOtoNowLoading.On進行描画() == 0)
{
break;
}
return (int)this.eフェードアウト完了時の戻り値;
case CStage.Eフェーズ._フェードアウト:
if (this.actFOtoTitle.On進行描画() == 0)
{
break;
}
return (int)this.eフェードアウト完了時の戻り値;
}
return 0;
}
#region [Private]
private class BarInfo
{
public string strTitle;
public string strSubTitle;
public C曲リストード.Eード種別 eード種別;
public CActSelect曲リスト.TitleTextureKey ttkTitle;
public CActSelect曲リスト.TitleTextureKey ttkSubTitle;
}
public void tSelectSong()
{
TJAPlayer3.stage選曲.r確定された曲 = listSongs[nCurrentSongIndex];
TJAPlayer3.stage選曲.r確定されたスコア = listSongs[nCurrentSongIndex].arスコア[(int)Difficulty.Tower];
TJAPlayer3.stage選曲.n確定された曲の難易度[0] = (int)Difficulty.Tower;
TJAPlayer3.stage選曲.str確定された曲のジャンル = listSongs[nCurrentSongIndex].strジャンル;
if ((TJAPlayer3.stage選曲.r確定された曲 != null) && (TJAPlayer3.stage選曲.r確定されたスコア != null))
{
this.eフェードアウト完了時の戻り値 = EReturnValue.SongChoosen;
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
base.eフェーズID = CStage.Eフェーズ._NowLoading画面へのフェードアウト;
}
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.stopSong();
}
private bool tSelectSongRandomly()
{
var mandatoryDiffs = new List<int>();
C曲リストード song = currentSong;
song.stackランダム演奏番号.Clear();
song.listランダム用ードリスト = null;
if ((song.stackランダム演奏番号.Count == 0) || (song.listランダム用ードリスト == null))
{
if (song.listランダム用ードリスト == null)
{
List<C曲リストード> songs = new List<C曲リストード>();
TJAPlayer3.stage選曲.t指定された曲の子リストの曲を列挙する_孫リスト含む(song.r親ード, ref songs, ref mandatoryDiffs, true, Difficulty.Tower);
song.listランダム用ードリスト = songs;
}
int count = song.listランダム用ードリスト.Count;
if (count == 0)
{
return false;
}
int[] numArray = new int[count];
for (int i = 0; i < count; i++)
{
numArray[i] = i;
}
for (int j = 0; j < (count * 1.5); j++)
{
int index = TJAPlayer3.Random.Next(count);
int num5 = TJAPlayer3.Random.Next(count);
int num6 = numArray[num5];
numArray[num5] = numArray[index];
numArray[index] = num6;
}
for (int k = 0; k < count; k++)
{
song.stackランダム演奏番号.Push(numArray[k]);
}
if (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
{
StringBuilder builder = new StringBuilder(0x400);
builder.Append(string.Format("ランダムインデックスリストを作成しました: {0}曲: ", song.stackランダム演奏番号.Count));
for (int m = 0; m < count; m++)
{
builder.Append(string.Format("{0} ", numArray[m]));
}
Trace.TraceInformation(builder.ToString());
}
}
// Third assignment
TJAPlayer3.stage選曲.r確定された曲 = song.listランダム用ードリスト[song.stackランダム演奏番号.Pop()];
TJAPlayer3.stage選曲.n確定された曲の難易度[0] = (int)Difficulty.Tower;
TJAPlayer3.stage選曲.r確定されたスコア = TJAPlayer3.stage選曲.r確定された曲.arスコア[TJAPlayer3.stage選曲.act曲リスト.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(TJAPlayer3.stage選曲.r確定された曲)];
TJAPlayer3.stage選曲.str確定された曲のジャンル = TJAPlayer3.stage選曲.r確定された曲.strジャンル;
//TJAPlayer3.Skin.sound曲決定音.t再生する();
this.eフェードアウト完了時の戻り値 = EReturnValue.SongChoosen;
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
base.eフェーズID = CStage.Eフェーズ._NowLoading画面へのフェードアウト;
#region [Log]
if (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
{
int[] numArray2 = song.stackランダム演奏番号.ToArray();
StringBuilder builder2 = new StringBuilder(0x400);
builder2.Append("ランダムインデックスリスト残り: ");
if (numArray2.Length > 0)
{
for (int n = 0; n < numArray2.Length; n++)
{
builder2.Append(string.Format("{0} ", numArray2[n]));
}
}
else
{
builder2.Append("(なし)");
}
Trace.TraceInformation(builder2.ToString());
}
#endregion
CSongSelectSongManager.stopSong();
return true;
}
private void tDrawTower(int x, int y, BarInfo barInfo)
{
switch(barInfo.eード種別)
{
case C曲リストード.Eード種別.SCORE:
TJAPlayer3.Tx.TowerSelect_Tower.t2D中心基準描画(TJAPlayer3.app.Device, x, y);
break;
case C曲リストード.Eード種別.RANDOM:
TJAPlayer3.Tx.TowerSelect_Tower.t2D中心基準描画(TJAPlayer3.app.Device, x, y);
break;
case C曲リストード.Eード種別.BOX:
TJAPlayer3.Tx.TowerSelect_Tower.t2D中心基準描画(TJAPlayer3.app.Device, x, y);
break;
case C曲リストード.Eード種別.BACKBOX:
TJAPlayer3.Tx.TowerSelect_Tower.t2D中心基準描画(TJAPlayer3.app.Device, x, y);
break;
}
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(barInfo.ttkTitle).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, x + TJAPlayer3.Skin.TowerSelect_Title_Offset[0], y + TJAPlayer3.Skin.TowerSelect_Title_Offset[1]);
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(barInfo.ttkSubTitle).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, x + TJAPlayer3.Skin.TowerSelect_SubTitle_Offset[0], y + TJAPlayer3.Skin.TowerSelect_SubTitle_Offset[1]);
}
private void tUpdateBarInfos()
{
BarInfos = new BarInfo[listSongs.Count];
tSetBarInfos();
}
private void tOpenFolder(C曲リストード song)
{
nCurrentSongIndex = 0;
listSongs = song.list子リスト;
tUpdateBarInfos();
}
private void tCloseFolder(C曲リストード song)
{
nCurrentSongIndex = 0;
listSongs = song.r親ード.r親ード.list子リスト;
tUpdateBarInfos();
}
private void tSetBarInfos()
{
for(int i = 0; i < BarInfos.Length; i++)
{
BarInfos[i] = new BarInfo();
BarInfo bar = BarInfos[i];
C曲リストード song = listSongs[i];
bar.strTitle = song.strタイトル;
bar.strSubTitle = song.strサブタイトル;
bar.eード種別 = song.eード種別;
bar.ttkTitle = new CActSelect曲リスト.TitleTextureKey(bar.strTitle, pfTitleFont, Color.Black, Color.Transparent, TJAPlayer3.Skin.TowerSelect_Title_MaxWidth);
bar.ttkSubTitle = new CActSelect曲リスト.TitleTextureKey(bar.strSubTitle, pfTitleFont, Color.Black, Color.Transparent, TJAPlayer3.Skin.TowerSelect_SubTitle_MaxWidth);
}
}
private BarInfo[] BarInfos;
private List<C曲リストード> listSongs;
private ScriptBG Background;
private CPrivateFastFont pfTitleFont;
private CPrivateFastFont pfSubTitleFont;
public EReturnValue eフェードアウト完了時の戻り値;
public CActFIFOStart actFOtoNowLoading;
public CActFIFOBlack actFOtoTitle;
private int nCurrentSongIndex;
private C曲リストード currentSong
{
get
{
return listSongs[nCurrentSongIndex];
}
}
#endregion
}
}

View File

@ -164,13 +164,17 @@
<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\CActSelectDanInfo.cs" />
<Compile Include="Stages\05.SongSelect\CActSelectExExtraTransAnime.cs" />
<Compile Include="Stages\05.SongSelect\CActSelectSongInfo.cs" />
<Compile Include="Stages\05.SongSelect\CActSelectTowerInfo.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" />
<Compile Include="Stages\07.Game\Taiko\NotesManager.cs" />
<Compile Include="Stages\07.Game\Taiko\ScriptBG.cs" />
<Compile Include="Stages\08.Result\ResultBG.cs" />
<Compile Include="Stages\13.TowerSelect\CStageTowerSelect.cs" />
<Compile Include="Stages\15.OpenEncyclopedia\CEncyclopediaControler.cs" />
<Compile Include="Stages\15.OpenEncyclopedia\COpenEncyclopedia.cs" />
<Compile Include="Stages\XX.Templates\CStageTemplate.cs" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -0,0 +1,28 @@
--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:DrawGraphCenter(x, y, filename)
--func:DrawGraphRectCenter(x, y, rect_x, rect_y, rect_width, rect_height, filename)
--func:SetOpacity(opacity, "filename")
--func:SetRotation(angle, "fileName")
--func:SetScale(xscale, yscale, "filename")
--func:SetColor(r, g, b, "filename")
function clearIn(player)
end
function clearOut(player)
end
function init()
func:AddGraph("Background.png")
end
function update()
end
function draw()
func:DrawGraph(0, 0, "Background.png")
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View File

@ -23,6 +23,7 @@ Resolution=1920,1080
#include TowerResultConfig.ini
#include HeyaConfig.ini
#include OnlineLoungeConfig.ini
#include TowerSelectConfig.ini
#include OpenEncyclopediaConfig.ini
#include NamePlateConfig.ini
#include ModalConfig.ini

View File

@ -138,6 +138,36 @@ SongSelect_Maker_Size=34
SongSelect_Maker_MaxSize=270
SongSelect_FloorNum_Show=1
SongSelect_FloorNum_X=1800
SongSelect_FloorNum_Y=307
SongSelect_FloorNum_Interval=45,0
SongSelect_DanInfo_Show=1
SongSelect_DanInfo_Icon_X=1501,1501,1501
SongSelect_DanInfo_Icon_Y=403,463,523
SongSelect_DanInfo_Icon_Scale=0.5
SongSelect_DanInfo_Difficulty_Cymbol_X=1542,1542,1542
SongSelect_DanInfo_Difficulty_Cymbol_Y=394,454,514
SongSelect_DanInfo_Difficulty_Cymbol_Scale=0.5
SongSelect_DanInfo_Level_Number_X=1560,1560,1560
SongSelect_DanInfo_Level_Number_Y=400,460,520
SongSelect_DanInfo_Level_Number_Scale=0.5
SongSelect_DanInfo_Title_X=1548,1548,1548
SongSelect_DanInfo_Title_Y=387,447,507
SongSelect_DanInfo_Title_Size=18
SongSelect_DanInfo_Exam_X=1545,1545,1545,1545,1545,1545
SongSelect_DanInfo_Exam_Y=597,639,681,723,765,807
SongSelect_DanInfo_Exam_Size=15
SongSelect_DanInfo_Exam_Value_X=1645,1743,1840
SongSelect_DanInfo_Exam_Value_Y=582,624,666,708,750,792
SongSelect_DanInfo_Exam_Value_Scale=0.5
SongSelect_Table_X=0,1551,270,1281,540
SongSelect_Table_Y=0,0,-306,-306,0

View File

@ -0,0 +1,13 @@
;Included file
;あとは通常通り設定できます
TowerSelect_Title_Size=45
TowerSelect_Title_MaxWidth=345
TowerSelect_Title_Offset=0,-45
TowerSelect_SubTitle_Size=45
TowerSelect_SubTitle_MaxWidth=345
TowerSelect_SubTitle_Offset=0,15
TowerSelect_Bar_Count=7
TowerSelect_Bar_X=-390,60,510,960,1410,1860,2310
TowerSelect_Bar_Y=630,600,570,540,570,600,630

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

View File

@ -0,0 +1,28 @@
--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:DrawGraphCenter(x, y, filename)
--func:DrawGraphRectCenter(x, y, rect_x, rect_y, rect_width, rect_height, filename)
--func:SetOpacity(opacity, "filename")
--func:SetRotation(angle, "fileName")
--func:SetScale(xscale, yscale, "filename")
--func:SetColor(r, g, b, "filename")
function clearIn(player)
end
function clearOut(player)
end
function init()
func:AddGraph("Background.png")
end
function update()
end
function draw()
func:DrawGraph(0, 0, "Background.png")
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -23,6 +23,7 @@ Resolution=1280,720
#include TowerResultConfig.ini
#include HeyaConfig.ini
#include OnlineLoungeConfig.ini
#include TowerSelectConfig.ini
#include OpenEncyclopediaConfig.ini
#include NamePlateConfig.ini
#include ModalConfig.ini

View File

@ -152,6 +152,36 @@ SongSelect_Maker_Size=23
SongSelect_Maker_MaxSize=180
SongSelect_FloorNum_Show=1
SongSelect_FloorNum_X=1200
SongSelect_FloorNum_Y=205
SongSelect_FloorNum_Interval=30,0
SongSelect_DanInfo_Show=1
SongSelect_DanInfo_Icon_X=1001,1001,1001
SongSelect_DanInfo_Icon_Y=269,309,349
SongSelect_DanInfo_Icon_Scale= 0.5
SongSelect_DanInfo_Difficulty_Cymbol_X=1028,1028,1028
SongSelect_DanInfo_Difficulty_Cymbol_Y=263,303,343
SongSelect_DanInfo_Difficulty_Cymbol_Scale= 0.5
SongSelect_DanInfo_Level_Number_X=1040,1040,1040
SongSelect_DanInfo_Level_Number_Y=267,307,347
SongSelect_DanInfo_Level_Number_Scale=0.5
SongSelect_DanInfo_Title_X=1032,1032,1032
SongSelect_DanInfo_Title_Y=258,298,338
SongSelect_DanInfo_Title_Size=12
SongSelect_DanInfo_Exam_X=1030,1030,1030,1030,1030,1030
SongSelect_DanInfo_Exam_Y=398,426,454,482,510,538
SongSelect_DanInfo_Exam_Size=10
SongSelect_DanInfo_Exam_Value_X=1097,1162,1227
SongSelect_DanInfo_Exam_Value_Y=388,416,444,472,500,528
SongSelect_DanInfo_Exam_Value_Scale=0.5
SongSelect_Table_X=0,1034,180,854,360
SongSelect_Table_Y=0,0,-204,-204,0

View File

@ -0,0 +1,13 @@
;Included file
;あとは通常通り設定できます
TowerSelect_Title_Size=30
TowerSelect_Title_MaxWidth=230
TowerSelect_Title_Offset=0,-30
TowerSelect_SubTitle_Size=30
TowerSelect_SubTitle_MaxWidth=230
TowerSelect_SubTitle_Offset=0,10
TowerSelect_Bar_Count=7
TowerSelect_Bar_X=-260,40,340,640,940,1240,1540
TowerSelect_Bar_Y=420,400,380,360,380,400,420