diff --git a/FDK/src/02.Input/CInputGamepad.cs b/FDK/src/02.Input/CInputGamepad.cs new file mode 100644 index 00000000..1d9556b0 --- /dev/null +++ b/FDK/src/02.Input/CInputGamepad.cs @@ -0,0 +1,175 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Diagnostics; +using Silk.NET.Input; + +namespace FDK +{ + public class CInputGamepad : IInputDevice, IDisposable + { + // コンストラクタ + + public CInputGamepad(IGamepad gamepad) + { + this.CurrentType = InputDeviceType.Gamepad; + this.GUID = gamepad.Index.ToString(); + this.ID = gamepad.Index; + + this.InputEvents = new List(32); + + gamepad.ButtonDown += Joystick_ButtonDown; + gamepad.ButtonUp += Joystick_ButtonUp; + } + + + // メソッド + + public void SetID( int nID ) + { + this.ID = nID; + } + + #region [ IInputDevice 実装 ] + //----------------- + public InputDeviceType CurrentType + { + get; + private set; + } + public string GUID + { + get; + private set; + } + public int ID + { + get; + private set; + } + public List InputEvents + { + get; + private set; + } + public string strDeviceName + { + get; + set; + } + + public void Polling(bool useBufferInput) + { + InputEvents.Clear(); + + for (int i = 0; i < ButtonStates.Length; i++) + { + if (ButtonStates[i].Item1) + { + if (ButtonStates[i].Item2 >= 1) + { + ButtonStates[i].Item2 = 2; + } + else + { + ButtonStates[i].Item2 = 1; + + InputEvents.Add( + new STInputEvent() + { + nKey = i, + Pressed = true, + Released = false, + nTimeStamp = SampleFramework.Game.TimeMs, + nVelocity = 0, + } + ); + } + } + else + { + if (ButtonStates[i].Item2 <= -1) + { + ButtonStates[i].Item2 = -2; + } + else + { + ButtonStates[i].Item2 = -1; + + InputEvents.Add( + new STInputEvent() + { + nKey = i, + Pressed = false, + Released = true, + nTimeStamp = SampleFramework.Game.TimeMs, + nVelocity = 0, + } + ); + } + } + } + } + + public bool KeyPressed(int nButton) + { + return ButtonStates[nButton].Item2 == 1; + } + public bool KeyPressing(int nButton) + { + return ButtonStates[nButton].Item2 >= 1; + } + public bool KeyReleased(int nButton) + { + return ButtonStates[nButton].Item2 == -1; + } + public bool KeyReleasing(int nButton) + { + return ButtonStates[nButton].Item2 <= -1; + } + //----------------- + #endregion + + #region [ IDisposable 実装 ] + //----------------- + public void Dispose() + { + if(!this.IsDisposed) + { + if (this.InputEvents != null) + { + this.InputEvents = null; + } + this.IsDisposed = true; + } + } + //----------------- + #endregion + + + // その他 + + #region [ private ] + //----------------- + private (bool, int)[] ButtonStates = new (bool, int)[15]; + private bool IsDisposed; + + private void Joystick_ButtonDown(IGamepad joystick, Button button) + { + if (button.Name != ButtonName.Unknown) + { + ButtonStates[(int)button.Name].Item1 = true; + } + } + + private void Joystick_ButtonUp(IGamepad joystick, Button button) + { + if (button.Name != ButtonName.Unknown) + { + ButtonStates[(int)button.Name].Item1 = false; + } + } + //----------------- + #endregion + } +} diff --git a/FDK/src/02.Input/CInputManager.cs b/FDK/src/02.Input/CInputManager.cs index 19333ac7..b05adc06 100644 --- a/FDK/src/02.Input/CInputManager.cs +++ b/FDK/src/02.Input/CInputManager.cs @@ -99,6 +99,10 @@ namespace FDK { this.InputDevices.Add(new CInputJoystick(joysticks)); } + foreach (var gamepad in Context.Gamepads) + { + this.InputDevices.Add(new CInputGamepad(gamepad)); + } #endregion } @@ -127,6 +131,28 @@ namespace FDK } return null; } + public IInputDevice Gamepad(int ID) + { + foreach (IInputDevice device in this.InputDevices) + { + if ((device.CurrentType == InputDeviceType.Gamepad) && (device.ID == ID)) + { + return device; + } + } + return null; + } + public IInputDevice Gamepad(string GUID) + { + foreach (IInputDevice device in this.InputDevices) + { + if ((device.CurrentType == InputDeviceType.Gamepad) && device.GUID.Equals(GUID)) + { + return device; + } + } + return null; + } public IInputDevice MidiIn(int ID) { foreach (IInputDevice device in this.InputDevices) diff --git a/FDK/src/02.Input/InputDeviceType.cs b/FDK/src/02.Input/InputDeviceType.cs index 0a86c1b3..92ce3eb4 100644 --- a/FDK/src/02.Input/InputDeviceType.cs +++ b/FDK/src/02.Input/InputDeviceType.cs @@ -11,6 +11,7 @@ namespace FDK Keyboard, Mouse, Joystick, + Gamepad, MidiIn, Unknown } diff --git a/FDK/src/04.Graphics/CTexture.cs b/FDK/src/04.Graphics/CTexture.cs index e5a57567..79c39e17 100644 --- a/FDK/src/04.Graphics/CTexture.cs +++ b/FDK/src/04.Graphics/CTexture.cs @@ -455,10 +455,12 @@ namespace FDK Matrix4X4 mvp = Matrix4X4.Identity; + float trueWidth = Math.Abs((float)rc画像内の描画領域.Width); + float trueHeight = Math.Abs((float)rc画像内の描画領域.Height); Matrix4X4 scaling() { - Matrix4X4 resizeMatrix = Matrix4X4.CreateScale((float)rc画像内の描画領域.Width / GameWindowSize.Width, (float)rc画像内の描画領域.Height / GameWindowSize.Height, 0.0f); + Matrix4X4 resizeMatrix = Matrix4X4.CreateScale(trueWidth / GameWindowSize.Width, trueHeight / GameWindowSize.Height, 0.0f); Matrix4X4 scaleMatrix = Matrix4X4.CreateScale(vc拡大縮小倍率.X, vc拡大縮小倍率.Y, vc拡大縮小倍率.Z); return resizeMatrix * scaleMatrix; } @@ -482,8 +484,8 @@ namespace FDK Matrix4X4 translation = Matrix4X4.CreateTranslation(api_x, api_y, 0.0f); Matrix4X4 translation2 = Matrix4X4.CreateTranslation( - (rc画像内の描画領域.Width * vc拡大縮小倍率.X / GameWindowSize.Width), - (rc画像内の描画領域.Height * vc拡大縮小倍率.Y / GameWindowSize.Height) * -1, + (trueWidth * vc拡大縮小倍率.X / GameWindowSize.Width), + (trueHeight * vc拡大縮小倍率.Y / GameWindowSize.Height) * -1, 0.0f); return translation * translation2; } diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Box.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Box.png new file mode 100644 index 00000000..b54bd615 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Box.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Close.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Close.png new file mode 100644 index 00000000..71599329 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Close.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Close_Select.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Close_Select.png new file mode 100644 index 00000000..9cb9335c Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Close_Select.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Lock.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Lock.png new file mode 100644 index 00000000..2e3cd7e4 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/Lock.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/ModeBar.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/ModeBar.png new file mode 100644 index 00000000..af344ffb Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/ModeBar.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/ModeBar_Select.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/ModeBar_Select.png new file mode 100644 index 00000000..521df4b4 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/ModeBar_Select.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_1P.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_1P.png new file mode 100644 index 00000000..5e245298 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_1P.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_2P.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_2P.png new file mode 100644 index 00000000..4e5c733a Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_2P.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_3P.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_3P.png new file mode 100644 index 00000000..9f14424c Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_3P.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_4P.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_4P.png new file mode 100644 index 00000000..e45b4987 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_4P.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_5P.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_5P.png new file mode 100644 index 00000000..a51b1769 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_5P.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_Select.png b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_Select.png new file mode 100644 index 00000000..dec9a443 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle (1080p)/Graphics/3_SongSelect/NewHeya/PlayerPlate_Select.png differ diff --git a/OpenTaiko/System/SimpleStyle (1080p)/SongSelectConfig.ini b/OpenTaiko/System/SimpleStyle (1080p)/SongSelectConfig.ini index 41c71fe1..0369112b 100644 --- a/OpenTaiko/System/SimpleStyle (1080p)/SongSelectConfig.ini +++ b/OpenTaiko/System/SimpleStyle (1080p)/SongSelectConfig.ini @@ -323,4 +323,37 @@ SongSelect_Option_ModMults1_Y=17,17 SongSelect_Option_ModMults2_X=162,1644 -SongSelect_Option_ModMults2_Y=78,78 \ No newline at end of file +SongSelect_Option_ModMults2_Y=78,78 + + + +SongSelect_NewHeya_Close_Select=0,0 + + +SongSelect_NewHeya_PlayerPlate_X=0,385,770,1155,1540 + +SongSelect_NewHeya_PlayerPlate_Y=100,100,100,100,100 + + +SongSelect_NewHeya_ModeBar_X=0,385,770,1155,1540 + +SongSelect_NewHeya_ModeBar_Y=300,300,300,300,300 + +SongSelect_NewHeya_ModeBar_Font_Offset=192,50 + + +SongSelect_NewHeya_Box_Count=7 + +SongSelect_NewHeya_Box_X=-636,-180,276,732,1188,1644,2100 + +SongSelect_NewHeya_Box_Y=410,410,410,410,410,410,410 + +SongSelect_NewHeya_Box_Chara_Offset=228,300 + +SongSelect_NewHeya_Box_Name_Offset=228,580 + +SongSelect_NewHeya_Box_Author_Offset=228,620 + +SongSelect_NewHeya_Lock_Offset=0,110 + +SongSelect_NewHeya_InfoSection_Offset=228,310 \ No newline at end of file diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Box.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Box.png new file mode 100644 index 00000000..94febc61 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Box.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Close.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Close.png new file mode 100644 index 00000000..746d135a Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Close.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Close_Select.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Close_Select.png new file mode 100644 index 00000000..dcb1776e Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Close_Select.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Lock.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Lock.png new file mode 100644 index 00000000..2e796ef0 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/Lock.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/ModeBar.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/ModeBar.png new file mode 100644 index 00000000..a0d153d9 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/ModeBar.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/ModeBar_Select.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/ModeBar_Select.png new file mode 100644 index 00000000..1b651287 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/ModeBar_Select.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_1P.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_1P.png new file mode 100644 index 00000000..c59a9c1c Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_1P.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_2P.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_2P.png new file mode 100644 index 00000000..bf848442 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_2P.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_3P.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_3P.png new file mode 100644 index 00000000..e7278122 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_3P.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_4P.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_4P.png new file mode 100644 index 00000000..2bd441de Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_4P.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_5P.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_5P.png new file mode 100644 index 00000000..ce26be76 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_5P.png differ diff --git a/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_Select.png b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_Select.png new file mode 100644 index 00000000..cc4da466 Binary files /dev/null and b/OpenTaiko/System/SimpleStyle/Graphics/3_SongSelect/NewHeya/PlayerPlate_Select.png differ diff --git a/OpenTaiko/System/SimpleStyle/SongSelectConfig.ini b/OpenTaiko/System/SimpleStyle/SongSelectConfig.ini index 8c4d54ce..844c804f 100644 --- a/OpenTaiko/System/SimpleStyle/SongSelectConfig.ini +++ b/OpenTaiko/System/SimpleStyle/SongSelectConfig.ini @@ -330,4 +330,37 @@ SongSelect_Option_ModMults1_Y=11,11 SongSelect_Option_ModMults2_X=108,1096 -SongSelect_Option_ModMults2_Y=52,52 \ No newline at end of file +SongSelect_Option_ModMults2_Y=52,52 + + + +SongSelect_NewHeya_Close_Select=0, 0 + + +SongSelect_NewHeya_PlayerPlate_X=0, 256, 513, 770, 1026 + +SongSelect_NewHeya_PlayerPlate_Y=66, 66, 66, 66, 66 + + +SongSelect_NewHeya_ModeBar_X=0, 256, 513, 770, 1026 + +SongSelect_NewHeya_ModeBar_Y=200, 200, 200, 200, 200 + +SongSelect_NewHeya_ModeBar_Font_Offset=128,33 + + +SongSelect_NewHeya_Box_Count=7 + +SongSelect_NewHeya_Box_X=-424,-120,184,488,792,1096,1400 + +SongSelect_NewHeya_Box_Y=273,273,273,273,273,273,273 + +SongSelect_NewHeya_Box_Chara_Offset=152,200 + +SongSelect_NewHeya_Box_Name_Offset=152,386 + +SongSelect_NewHeya_Box_Author_Offset=152,413 + +SongSelect_NewHeya_Lock_Offset=0,73 + +SongSelect_NewHeya_InfoSection_Offset=152,206 \ No newline at end of file diff --git a/OpenTaiko/src/Common/CConfigIni.cs b/OpenTaiko/src/Common/CConfigIni.cs index 3d74c8b0..9ce4904c 100644 --- a/OpenTaiko/src/Common/CConfigIni.cs +++ b/OpenTaiko/src/Common/CConfigIni.cs @@ -1059,6 +1059,7 @@ namespace TJAPlayer3 public int nウインドウwidth; // #23510 2010.10.31 yyagi add public int nウインドウheight; // #23510 2010.10.31 yyagi add public Dictionary dicJoystick; + public Dictionary dicGamepad; public Eダークモード eDark; public Eランダムモード[] eRandom; public Eダメージレベル eダメージレベル; @@ -1872,6 +1873,7 @@ namespace TJAPlayer3 this.nヒット範囲ms.Poor = 108; this.ConfigIniファイル名 = ""; this.dicJoystick = new Dictionary( 10 ); + this.dicGamepad = new Dictionary( 10 ); this.tデフォルトのキーアサインに設定する(); #region [ velocityMin ] this.nVelocityMin.LC = 0; // #23857 2011.1.31 yyagi VelocityMin @@ -2596,6 +2598,10 @@ namespace TJAPlayer3 { sw.WriteLine( "JoystickID={0},{1}", pair.Key, pair.Value ); } + foreach( KeyValuePair pair in this.dicGamepad ) + { + sw.WriteLine( "GamepadID={0},{1}", pair.Key, pair.Value ); + } #endregion #region [ DrumsKeyAssign ] sw.WriteLine(); @@ -3794,6 +3800,10 @@ namespace TJAPlayer3 { this.tJoystickIDの取得( str4 ); } + else if( str3.Equals( "GamepadID" ) ) + { + this.tGamepadIDの取得( str4 ); + } continue; //----------------------------- #endregion @@ -4014,6 +4024,22 @@ namespace TJAPlayer3 } } } + private void tGamepadIDの取得( string strキー記述 ) + { + string[] strArray = strキー記述.Split( new char[] { ',' } ); + if( strArray.Length >= 2 ) + { + int result = 0; + if( ( int.TryParse( strArray[ 0 ], out result ) && ( result >= 0 ) ) && ( result <= 9 ) ) + { + if( this.dicGamepad.ContainsKey( result ) ) + { + this.dicGamepad.Remove( result ); + } + this.dicGamepad.Add( result, strArray[ 1 ] ); + } + } + } private void tキーアサインを全部クリアする() { this.KeyAssign = new CKeyAssign(); @@ -4057,6 +4083,10 @@ namespace TJAPlayer3 sw.Write( 'J' ); break; + case E入力デバイス.Gamepad: + sw.Write( 'G' ); + break; + case E入力デバイス.マウス: sw.Write( 'N' ); break; @@ -4081,6 +4111,10 @@ namespace TJAPlayer3 case 'J': e入力デバイス = E入力デバイス.ジョイパッド; break; + + case 'G': + e入力デバイス = E入力デバイス.Gamepad; + break; case 'K': e入力デバイス = E入力デバイス.キーボード; diff --git a/OpenTaiko/src/Common/CPad.cs b/OpenTaiko/src/Common/CPad.cs index 455dd15c..79380571 100644 --- a/OpenTaiko/src/Common/CPad.cs +++ b/OpenTaiko/src/Common/CPad.cs @@ -17,6 +17,7 @@ namespace TJAPlayer3 public bool Keyboard; public bool MIDIIN; public bool Joypad; + public bool Gamepad; public bool Mouse; public void Clear() { @@ -80,6 +81,14 @@ namespace TJAPlayer3 } break; + case E入力デバイス.Gamepad: + if( ( ( device.CurrentType == InputDeviceType.Gamepad ) && ( device.ID == stkeyassignArray[ i ].ID ) ) && ( event2.nKey == stkeyassignArray[ i ].コード ) ) + { + list.Add( event2 ); + this.st検知したデバイス.Gamepad = true; + } + break; + case E入力デバイス.マウス: if( ( device.CurrentType == InputDeviceType.Mouse ) && ( event2.nKey == stkeyassignArray[ i ].コード ) ) { @@ -133,6 +142,18 @@ namespace TJAPlayer3 this.st検知したデバイス.Joypad = true; return true; } + case E入力デバイス.Gamepad: + { + if( !this.rConfigIni.dicJoystick.ContainsKey( stkeyassignArray[ i ].ID ) ) + break; + + IInputDevice device = this.rInput管理.Gamepad( stkeyassignArray[ i ].ID ); + if( ( device == null ) || !device.KeyPressed( stkeyassignArray[ i ].コード ) ) + break; + + this.st検知したデバイス.Gamepad = true; + return true; + } case E入力デバイス.マウス: if( !this.rInput管理.Mouse.KeyPressed( stkeyassignArray[ i ].コード ) ) break; @@ -191,6 +212,21 @@ namespace TJAPlayer3 this.st検知したデバイス.Joypad = true; return true; } + + case E入力デバイス.Gamepad: + { + if( !this.rConfigIni.dicJoystick.ContainsKey( stkeyassignArray[ i ].ID ) ) + { + break; + } + IInputDevice device = this.rInput管理.Gamepad( stkeyassignArray[ i ].ID ); + if( ( device == null ) || !device.KeyPressing( stkeyassignArray[ i ].コード ) ) + { + break; + } + this.st検知したデバイス.Gamepad = true; + return true; + } case E入力デバイス.マウス: if( !this.rInput管理.Mouse.KeyPressing( stkeyassignArray[ i ].コード ) ) { diff --git a/OpenTaiko/src/Common/CSkin.cs b/OpenTaiko/src/Common/CSkin.cs index 7103e151..8ab41229 100644 --- a/OpenTaiko/src/Common/CSkin.cs +++ b/OpenTaiko/src/Common/CSkin.cs @@ -2977,6 +2977,116 @@ namespace TJAPlayer3 SongSelect_Option_ModMults2_Y[i] = int.Parse(strSplit[i]); } } + else if (strCommand == "SongSelect_NewHeya_Close_Select") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_NewHeya_Close_Select[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_PlayerPlate_X") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 5; i++) + { + SongSelect_NewHeya_PlayerPlate_X[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_PlayerPlate_Y") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 5; i++) + { + SongSelect_NewHeya_PlayerPlate_Y[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_ModeBar_X") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 5; i++) + { + SongSelect_NewHeya_ModeBar_X[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_ModeBar_Y") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 5; i++) + { + SongSelect_NewHeya_ModeBar_Y[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_ModeBar_Font_Offset") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_NewHeya_ModeBar_Font_Offset[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_Box_Count") + { + SongSelect_NewHeya_Box_Count = int.Parse(strParam); + } + else if (strCommand == "SongSelect_NewHeya_Box_X") + { + string[] strSplit = strParam.Split(','); + SongSelect_NewHeya_Box_X = new int[SongSelect_NewHeya_Box_Count]; + for (int i = 0; i < SongSelect_NewHeya_Box_Count; i++) + { + SongSelect_NewHeya_Box_X[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_Box_Y") + { + string[] strSplit = strParam.Split(','); + SongSelect_NewHeya_Box_Y = new int[SongSelect_NewHeya_Box_Count]; + for (int i = 0; i < SongSelect_NewHeya_Box_Count; i++) + { + SongSelect_NewHeya_Box_Y[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_Box_Chara_Offset") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_NewHeya_Box_Chara_Offset[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_Box_Name_Offset") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_NewHeya_Box_Name_Offset[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_Box_Author_Offset") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_NewHeya_Box_Author_Offset[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_Lock_Offset") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_NewHeya_Lock_Offset[i] = int.Parse(strSplit[i]); + } + } + else if (strCommand == "SongSelect_NewHeya_InfoSection_Offset") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_NewHeya_InfoSection_Offset[i] = int.Parse(strSplit[i]); + } + } else if (strCommand == "SongSelect_ForeColor_JPOP") @@ -8205,14 +8315,19 @@ namespace TJAPlayer3 Characters_Normal_MissedDown_Ptn, Characters_Normal_Cleared_Ptn, Characters_Normal_Maxed_Ptn, + Characters_MissIn_Ptn, + Characters_MissDownIn_Ptn, Characters_GoGoTime_Ptn, Characters_GoGoTime_Maxed_Ptn, Characters_10Combo_Ptn, + Characters_10Combo_Clear_Ptn, Characters_10Combo_Maxed_Ptn, Characters_GoGoStart_Ptn, + Characters_GoGoStart_Clear_Ptn, Characters_GoGoStart_Maxed_Ptn, Characters_Become_Cleared_Ptn, Characters_Become_Maxed_Ptn, + Characters_SoulOut_Ptn, Characters_Return_Ptn, Characters_Balloon_Breaking_Ptn, Characters_Balloon_Broke_Ptn, @@ -8243,31 +8358,41 @@ namespace TJAPlayer3 public int[][] Characters_Balloon_5P; public int[][] Characters_Motion_Normal, Characters_Motion_10Combo, + Characters_Motion_10Combo_Clear, Characters_Motion_10ComboMax, Characters_Motion_Miss, Characters_Motion_MissDown, Characters_Motion_ClearIn, Characters_Motion_Clear, Characters_Motion_ClearMax, + Characters_Motion_MissIn, + Characters_Motion_MissDownIn, Characters_Motion_GoGoStart, + Characters_Motion_GoGoStart_Clear, Characters_Motion_GoGoStartMax, Characters_Motion_GoGo, Characters_Motion_GoGoMax, Characters_Motion_SoulIn, + Characters_Motion_SoulOut, Characters_Motion_Return; public float[] Characters_Beat_Normal, Characters_Beat_10Combo, + Characters_Beat_10Combo_Clear, Characters_Beat_10ComboMax, Characters_Beat_Miss, Characters_Beat_MissDown, Characters_Beat_ClearIn, Characters_Beat_Clear, Characters_Beat_ClearMax, + Characters_Beat_MissIn, + Characters_Beat_MissDownIn, Characters_Beat_GoGoStart, + Characters_Beat_GoGoStart_Clear, Characters_Beat_GoGoStartMax, Characters_Beat_GoGo, Characters_Beat_GoGoMax, Characters_Beat_SoulIn, + Characters_Beat_SoulOut, Characters_Beat_Return; public int[] Characters_Balloon_Timer; public int[] Characters_Balloon_Delay; @@ -8615,6 +8740,26 @@ namespace TJAPlayer3 public int[] SongSelect_Option_ModMults2_X = new int[] { 108, 1096 }; public int[] SongSelect_Option_ModMults2_Y = new int[] { 52, 52 }; + + public int[] SongSelect_NewHeya_Close_Select = new int[] { 0, 0 }; + + public int[] SongSelect_NewHeya_PlayerPlate_X = new int[] { 0, 256, 513, 770, 1026 }; + public int[] SongSelect_NewHeya_PlayerPlate_Y = new int[] { 66, 66, 66, 66, 66 }; + + public int[] SongSelect_NewHeya_ModeBar_X = new int[] { 0, 256, 513, 770, 1026 }; + public int[] SongSelect_NewHeya_ModeBar_Y = new int[] { 200, 200, 200, 200, 200 }; + public int[] SongSelect_NewHeya_ModeBar_Font_Offset = new int[] { 128, 33 }; + + + public int SongSelect_NewHeya_Box_Count = 7; + public int[] SongSelect_NewHeya_Box_X = new int[] { -424, -120, 184, 488, 792, 1096, 1400 }; + public int[] SongSelect_NewHeya_Box_Y = new int[] { 273, 273, 273, 273, 273, 273, 273 }; + public int[] SongSelect_NewHeya_Box_Chara_Offset = new int[] { 152, 200 }; + public int[] SongSelect_NewHeya_Box_Name_Offset = new int[] { 152, 386 }; + public int[] SongSelect_NewHeya_Box_Author_Offset = new int[] { 152, 413 }; + public int[] SongSelect_NewHeya_Lock_Offset = new int[]{ 0, 73 }; + public int[] SongSelect_NewHeya_InfoSection_Offset = new int[] { 152, 206 }; + public Color SongSelect_ForeColor_JPOP = ColorTranslator.FromHtml("#FFFFFF"); public Color SongSelect_ForeColor_Anime = ColorTranslator.FromHtml("#FFFFFF"); public Color SongSelect_ForeColor_VOCALOID = ColorTranslator.FromHtml("#FFFFFF"); diff --git a/OpenTaiko/src/Common/C定数.cs b/OpenTaiko/src/Common/C定数.cs index f30f1041..cdc649f9 100644 --- a/OpenTaiko/src/Common/C定数.cs +++ b/OpenTaiko/src/Common/C定数.cs @@ -99,25 +99,25 @@ namespace TJAPlayer3 LRed2P = 16, RRed2P = 17, LBlue2P = 18, - RBlue2P = 19, - - LRed3P = 20, - RRed3P = 21, - LBlue3P = 22, - RBlue3P = 23, - - LRed4P = 24, - RRed4P = 25, - LBlue4P = 26, - RBlue4P = 27, - - LRed5P = 28, - RRed5P = 29, - LBlue5P = 30, + RBlue2P = 19, + + LRed3P = 20, + RRed3P = 21, + LBlue3P = 22, + RBlue3P = 23, + + LRed4P = 24, + RRed4P = 25, + LBlue4P = 26, + RBlue4P = 27, + + LRed5P = 28, + RRed5P = 29, + LBlue5P = 30, RBlue5P = 31, CLAP = 32, - CLAP2P = 33, + CLAP2P = 33, CLAP3P = 34, CLAP4P = 35, CLAP5P = 36, @@ -157,21 +157,21 @@ namespace TJAPlayer3 LRed2P = Eパッド.LRed2P, RRed2P = Eパッド.RRed2P, LBlue2P = Eパッド.LBlue2P, - RBlue2P = Eパッド.RBlue2P, - - LRed3P = Eパッド.LRed3P, - RRed3P = Eパッド.RRed3P, - LBlue3P = Eパッド.LBlue3P, - RBlue3P = Eパッド.RBlue3P, - - LRed4P = Eパッド.LRed4P, - RRed4P = Eパッド.RRed4P, - LBlue4P = Eパッド.LBlue4P, - RBlue4P = Eパッド.RBlue4P, - - LRed5P = Eパッド.LRed5P, - RRed5P = Eパッド.RRed5P, - LBlue5P = Eパッド.LBlue5P, + RBlue2P = Eパッド.RBlue2P, + + LRed3P = Eパッド.LRed3P, + RRed3P = Eパッド.RRed3P, + LBlue3P = Eパッド.LBlue3P, + RBlue3P = Eパッド.RBlue3P, + + LRed4P = Eパッド.LRed4P, + RRed4P = Eパッド.RRed4P, + LBlue4P = Eパッド.LBlue4P, + RBlue4P = Eパッド.RBlue4P, + + LRed5P = Eパッド.LRed5P, + RRed5P = Eパッド.RRed5P, + LBlue5P = Eパッド.LBlue5P, RBlue5P = Eパッド.RBlue5P, Clap = Eパッド.CLAP, @@ -227,18 +227,18 @@ namespace TJAPlayer3 HYPERRANDOM } - public enum EFunMods - { - NONE, - AVALANCHE, - MINESWEEPER, - TOTAL, + public enum EFunMods + { + NONE, + AVALANCHE, + MINESWEEPER, + TOTAL, } - public enum EGameType - { - TAIKO = 0, - KONGA = 1, + public enum EGameType + { + TAIKO = 0, + KONGA = 1, } public enum E楽器パート // ここを修正するときは、セットで次の EKeyConfigPart も修正すること。 @@ -270,6 +270,7 @@ namespace TJAPlayer3 MIDI入力 = 1, ジョイパッド = 2, マウス = 3, + Gamepad = 4, 不明 = -1 } public enum E判定 @@ -815,13 +816,13 @@ namespace TJAPlayer3 } } - public enum EReturnValue : int - { - Continuation, - ReturnToTitle, - SongChoosen - } - + public enum EReturnValue : int + { + Continuation, + ReturnToTitle, + SongChoosen + } + #region[Ver.K追加] public enum Eレーンタイプ { diff --git a/OpenTaiko/src/Common/TJAPlayer3.cs b/OpenTaiko/src/Common/TJAPlayer3.cs index 604f9859..7b6b2f55 100644 --- a/OpenTaiko/src/Common/TJAPlayer3.cs +++ b/OpenTaiko/src/Common/TJAPlayer3.cs @@ -2757,6 +2757,15 @@ for (int i = 0; i < 3; i++) { } ConfigIni.dicJoystick.Add( key, device.GUID ); } + else if( ( device.CurrentType == InputDeviceType.Gamepad ) && !ConfigIni.dicGamepad.ContainsValue( device.GUID ) ) + { + int key = 0; + while( ConfigIni.dicGamepad.ContainsKey( key ) ) + { + key++; + } + ConfigIni.dicGamepad.Add( key, device.GUID ); + } } foreach( IInputDevice device2 in Input管理.InputDevices ) { @@ -2772,6 +2781,18 @@ for (int i = 0; i < 3; i++) { } continue; } + else if( device2.CurrentType == InputDeviceType.Gamepad ) + { + foreach( KeyValuePair pair in ConfigIni.dicGamepad ) + { + if( device2.GUID.Equals( pair.Value ) ) + { + ( (CInputGamepad) device2 ).SetID( pair.Key ); + break; + } + } + continue; + } } Trace.TraceInformation( "DirectInput の初期化を完了しました。" ); } diff --git a/OpenTaiko/src/Stages/01.StartUp/TextureLoader.cs b/OpenTaiko/src/Stages/01.StartUp/TextureLoader.cs index c726cc4f..b81e2903 100644 --- a/OpenTaiko/src/Stages/01.StartUp/TextureLoader.cs +++ b/OpenTaiko/src/Stages/01.StartUp/TextureLoader.cs @@ -371,6 +371,19 @@ namespace TJAPlayer3 } #endregion + NewHeya_Close = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}Close.png"); + NewHeya_Close_Select = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}Close_Select.png"); + NewHeya_PlayerPlate[0] = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}PlayerPlate_1P.png"); + NewHeya_PlayerPlate[1] = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}PlayerPlate_2P.png"); + NewHeya_PlayerPlate[2] = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}PlayerPlate_3P.png"); + NewHeya_PlayerPlate[3] = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}PlayerPlate_4P.png"); + NewHeya_PlayerPlate[4] = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}PlayerPlate_5P.png"); + NewHeya_PlayerPlate_Select = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}PlayerPlate_Select.png"); + NewHeya_ModeBar = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}ModeBar.png"); + NewHeya_ModeBar_Select = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}ModeBar_Select.png"); + NewHeya_Box = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}Box.png"); + NewHeya_Lock = TxC(SONGSELECT + @$"NewHeya{Path.DirectorySeparatorChar}Lock.png"); + #endregion #region 3_段位選択画面 @@ -1171,14 +1184,19 @@ namespace TJAPlayer3 Characters_Normal_MissedDown = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_Normal_Cleared = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_Normal_Maxed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; + Characters_MissIn = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; + Characters_MissDownIn = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_GoGoTime = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_GoGoTime_Maxed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_10Combo = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; + Characters_10Combo_Clear = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_10Combo_Maxed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_GoGoStart = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; + Characters_GoGoStart_Clear = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_GoGoStart_Maxed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_Become_Cleared = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_Become_Maxed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; + Characters_SoulOut = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_Return = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_Balloon_Breaking = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; Characters_Balloon_Broke = new CTexture[TJAPlayer3.Skin.Characters_Ptn][]; @@ -1199,14 +1217,19 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_MissIn_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_MissDownIn_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_GoGoTime_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_GoGoTime_Maxed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_10Combo_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_GoGoStart_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Become_Cleared_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Become_Maxed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_SoulOut_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Return_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn]; @@ -1235,17 +1258,22 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Balloon_5P = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_Normal = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_10Combo = new int[TJAPlayer3.Skin.Characters_Ptn][]; + TJAPlayer3.Skin.Characters_Motion_10Combo_Clear = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_10ComboMax = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_Miss = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_MissDown = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_ClearIn = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_Clear = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_ClearMax = new int[TJAPlayer3.Skin.Characters_Ptn][]; + TJAPlayer3.Skin.Characters_Motion_MissIn = new int[TJAPlayer3.Skin.Characters_Ptn][]; + TJAPlayer3.Skin.Characters_Motion_MissDownIn = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_GoGoStart = new int[TJAPlayer3.Skin.Characters_Ptn][]; + TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_GoGoStartMax = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_GoGo = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_GoGoMax = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_SoulIn = new int[TJAPlayer3.Skin.Characters_Ptn][]; + TJAPlayer3.Skin.Characters_Motion_SoulOut = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Motion_Return = new int[TJAPlayer3.Skin.Characters_Ptn][]; TJAPlayer3.Skin.Characters_Beat_Normal = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_Miss = new float[TJAPlayer3.Skin.Characters_Ptn]; @@ -1253,13 +1281,18 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Beat_Clear = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_GoGo = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_10Combo = new float[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_Beat_10Combo_Clear = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_10ComboMax = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_ClearIn = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_ClearMax = new float[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_Beat_MissIn = new float[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_Beat_MissDownIn = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_GoGoStart = new float[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_Beat_GoGoStart_Clear = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_GoGoStartMax = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_GoGoMax = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_SoulIn = new float[TJAPlayer3.Skin.Characters_Ptn]; + TJAPlayer3.Skin.Characters_Beat_SoulOut = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Beat_Return = new float[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Balloon_Timer = new int[TJAPlayer3.Skin.Characters_Ptn]; TJAPlayer3.Skin.Characters_Balloon_Delay = new int[TJAPlayer3.Skin.Characters_Ptn]; @@ -1458,6 +1491,12 @@ namespace TJAPlayer3 for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[i]; j++) Characters_Normal_Maxed[i][j]?.Dispose(); + for (int j = 0; j < TJAPlayer3.Skin.Characters_MissIn_Ptn[i]; j++) + Characters_MissIn[i][j]?.Dispose(); + + for (int j = 0; j < TJAPlayer3.Skin.Characters_MissDownIn_Ptn[i]; j++) + Characters_MissDownIn[i][j]?.Dispose(); + for (int j = 0; j < TJAPlayer3.Skin.Characters_GoGoTime_Ptn[i]; j++) Characters_GoGoTime[i][j]?.Dispose(); @@ -1467,12 +1506,18 @@ namespace TJAPlayer3 for (int j = 0; j < TJAPlayer3.Skin.Characters_GoGoStart_Ptn[i]; j++) Characters_GoGoStart[i][j]?.Dispose(); + for (int j = 0; j < TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[i]; j++) + Characters_GoGoStart_Clear[i][j]?.Dispose(); + for (int j = 0; j < TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[i]; j++) Characters_GoGoStart_Maxed[i][j]?.Dispose(); for (int j = 0; j < TJAPlayer3.Skin.Characters_10Combo_Ptn[i]; j++) Characters_10Combo[i][j]?.Dispose(); + for (int j = 0; j < TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[i]; j++) + Characters_10Combo_Clear[i][j]?.Dispose(); + for (int j = 0; j < TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[i]; j++) Characters_10Combo_Maxed[i][j]?.Dispose(); @@ -1482,6 +1527,9 @@ namespace TJAPlayer3 for (int j = 0; j < TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i]; j++) Characters_Become_Maxed[i][j]?.Dispose(); + for (int j = 0; j < TJAPlayer3.Skin.Characters_SoulOut_Ptn[i]; j++) + Characters_SoulOut[i][j]?.Dispose(); + for (int j = 0; j < TJAPlayer3.Skin.Characters_Return_Ptn[i]; j++) Characters_Return[i][j]?.Dispose(); @@ -1515,16 +1563,21 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Normal_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Normal{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Miss{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}MissDown{Path.DirectorySeparatorChar}"); + TJAPlayer3.Skin.Characters_MissIn_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}MissIn{Path.DirectorySeparatorChar}"); + TJAPlayer3.Skin.Characters_MissDownIn_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}MissDownIn{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Clear{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Clear_Max{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_GoGoTime_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}GoGo{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_GoGoTime_Maxed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}GoGo_Max{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_10Combo_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}10combo{Path.DirectorySeparatorChar}"); + TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}10combo_Clear{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}10combo_Max{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_GoGoStart_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}GoGoStart{Path.DirectorySeparatorChar}"); + TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}GoGoStart_Clear{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}GoGoStart_Max{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Clearin{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Soulin{Path.DirectorySeparatorChar}"); + TJAPlayer3.Skin.Characters_SoulOut_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}SoulOut{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Return_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Return{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Balloon_Breaking{Path.DirectorySeparatorChar}"); TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Balloon_Broke{Path.DirectorySeparatorChar}"); @@ -1544,14 +1597,19 @@ namespace TJAPlayer3 Characters_Normal_MissedDown[i] = new CTexture[TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[i]]; Characters_Normal_Cleared[i] = new CTexture[TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[i]]; Characters_Normal_Maxed[i] = new CTexture[TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[i]]; + Characters_MissIn[i] = new CTexture[TJAPlayer3.Skin.Characters_MissIn_Ptn[i]]; + Characters_MissDownIn[i] = new CTexture[TJAPlayer3.Skin.Characters_MissDownIn_Ptn[i]]; Characters_GoGoTime[i] = new CTexture[TJAPlayer3.Skin.Characters_GoGoTime_Ptn[i]]; Characters_GoGoTime_Maxed[i] = new CTexture[TJAPlayer3.Skin.Characters_GoGoTime_Maxed_Ptn[i]]; Characters_10Combo[i] = new CTexture[TJAPlayer3.Skin.Characters_10Combo_Ptn[i]]; + Characters_10Combo_Clear[i] = new CTexture[TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[i]]; Characters_10Combo_Maxed[i] = new CTexture[TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[i]]; Characters_GoGoStart[i] = new CTexture[TJAPlayer3.Skin.Characters_GoGoStart_Ptn[i]]; + Characters_GoGoStart_Clear[i] = new CTexture[TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[i]]; Characters_GoGoStart_Maxed[i] = new CTexture[TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[i]]; Characters_Become_Cleared[i] = new CTexture[TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[i]]; Characters_Become_Maxed[i] = new CTexture[TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i]]; + Characters_SoulOut[i] = new CTexture[TJAPlayer3.Skin.Characters_SoulOut_Ptn[i]]; Characters_Return[i] = new CTexture[TJAPlayer3.Skin.Characters_Return_Ptn[i]]; Characters_Balloon_Breaking[i] = new CTexture[TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[i]]; Characters_Balloon_Broke[i] = new CTexture[TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[i]]; @@ -1612,6 +1670,12 @@ namespace TJAPlayer3 for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[i]; j++) Characters_Normal_Maxed[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Clear_Max{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + for (int j = 0; j < TJAPlayer3.Skin.Characters_MissIn_Ptn[i]; j++) + Characters_MissIn[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}MissIn{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + + for (int j = 0; j < TJAPlayer3.Skin.Characters_MissDownIn_Ptn[i]; j++) + Characters_MissDownIn[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}MissDownIn{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + for (int j = 0; j < TJAPlayer3.Skin.Characters_GoGoTime_Ptn[i]; j++) Characters_GoGoTime[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}GoGo{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); @@ -1621,12 +1685,18 @@ namespace TJAPlayer3 for (int j = 0; j < TJAPlayer3.Skin.Characters_GoGoStart_Ptn[i]; j++) Characters_GoGoStart[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}GoGoStart{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + for (int j = 0; j < TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[i]; j++) + Characters_GoGoStart_Clear[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}GoGoStart_Clear{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + for (int j = 0; j < TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[i]; j++) Characters_GoGoStart_Maxed[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}GoGoStart_Max{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); for (int j = 0; j < TJAPlayer3.Skin.Characters_10Combo_Ptn[i]; j++) Characters_10Combo[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}10combo{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + for (int j = 0; j < TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[i]; j++) + Characters_10Combo_Clear[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}10combo_Clear{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + for (int j = 0; j < TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[i]; j++) Characters_10Combo_Maxed[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}10combo_Max{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); @@ -1636,6 +1706,9 @@ namespace TJAPlayer3 for (int j = 0; j < TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i]; j++) Characters_Become_Maxed[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Soulin{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + for (int j = 0; j < TJAPlayer3.Skin.Characters_SoulOut_Ptn[i]; j++) + Characters_SoulOut[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Soulout{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); + for (int j = 0; j < TJAPlayer3.Skin.Characters_Return_Ptn[i]; j++) Characters_Return[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Return{Path.DirectorySeparatorChar}" + j.ToString() + @$".png"); @@ -1666,31 +1739,41 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Balloon_5P[i] = new int[] { 0, -168 }; TJAPlayer3.Skin.Characters_Motion_Normal[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Normal_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_10Combo[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_10Combo_Ptn[i]); + TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_10ComboMax[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_Miss[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_MissDown[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_ClearIn[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_Clear[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_ClearMax[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[i]); + TJAPlayer3.Skin.Characters_Motion_MissIn[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_MissIn_Ptn[i]); + TJAPlayer3.Skin.Characters_Motion_MissDownIn[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_MissDownIn_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_GoGoStart[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_GoGoStart_Ptn[i]); + TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_GoGoStartMax[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_GoGo[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_GoGoTime_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_GoGoMax[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_GoGoTime_Maxed_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_SoulIn[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i]); + TJAPlayer3.Skin.Characters_Motion_SoulOut[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_SoulOut_Ptn[i]); TJAPlayer3.Skin.Characters_Motion_Return[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Return_Ptn[i]); TJAPlayer3.Skin.Characters_Beat_Normal[i] = 1; TJAPlayer3.Skin.Characters_Beat_Miss[i] = 1; TJAPlayer3.Skin.Characters_Beat_MissDown[i] = 1; TJAPlayer3.Skin.Characters_Beat_Clear[i] = 2; TJAPlayer3.Skin.Characters_Beat_GoGo[i] = 2; + TJAPlayer3.Skin.Characters_Beat_MissIn[i] = 1.5f; + TJAPlayer3.Skin.Characters_Beat_MissDownIn[i] = 1.5f; TJAPlayer3.Skin.Characters_Beat_10Combo[i] = 1.5f; + TJAPlayer3.Skin.Characters_Beat_10Combo_Clear[i] = 1.5f; TJAPlayer3.Skin.Characters_Beat_10ComboMax[i] = 1.5f; TJAPlayer3.Skin.Characters_Beat_ClearIn[i] = 1.5f; TJAPlayer3.Skin.Characters_Beat_ClearMax[i] = 1.5f; TJAPlayer3.Skin.Characters_Beat_GoGoStart[i] = 1.5f; + TJAPlayer3.Skin.Characters_Beat_GoGoStart_Clear[i] = 1.5f; TJAPlayer3.Skin.Characters_Beat_GoGoStartMax[i] = 1.5f; TJAPlayer3.Skin.Characters_Beat_GoGoMax[i] = 2; TJAPlayer3.Skin.Characters_Beat_SoulIn[i] = 1.5f; + TJAPlayer3.Skin.Characters_Beat_SoulOut[i] = 1.5f; TJAPlayer3.Skin.Characters_Beat_Return[i] = 1.5f; TJAPlayer3.Skin.Characters_Balloon_Timer[i] = 28; TJAPlayer3.Skin.Characters_Balloon_Delay[i] = 500; @@ -1850,6 +1933,11 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Motion_10Combo[i] = CConversion.StringToIntArray(strParam); break; } + case "Game_Chara_Motion_10Combo_Clear": + { + TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[i] = CConversion.StringToIntArray(strParam); + break; + } case "Game_Chara_Motion_10Combo_Max": { TJAPlayer3.Skin.Characters_Motion_10ComboMax[i] = CConversion.StringToIntArray(strParam); @@ -1881,12 +1969,27 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Motion_ClearMax[i] = CConversion.StringToIntArray(strParam); break; } + case "Game_Chara_Motion_MissIn": + { + TJAPlayer3.Skin.Characters_Motion_MissIn[i] = CConversion.StringToIntArray(strParam); + break; + } + case "Game_Chara_Motion_MissDownIn": + { + TJAPlayer3.Skin.Characters_Motion_MissDownIn[i] = CConversion.StringToIntArray(strParam); + break; + } case "Game_Chara_Motion_GoGoStart": { TJAPlayer3.Skin.Characters_Motion_GoGoStart[i] = CConversion.StringToIntArray(strParam); TJAPlayer3.Skin.Characters_Motion_GoGoStartMax[i] = TJAPlayer3.Skin.Characters_Motion_GoGoStart[i]; break; } + case "Game_Chara_Motion_GoGoStart_Clear": + { + TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear[i] = CConversion.StringToIntArray(strParam); + break; + } case "Game_Chara_Motion_GoGoStart_Max": { TJAPlayer3.Skin.Characters_Motion_GoGoStartMax[i] = CConversion.StringToIntArray(strParam); @@ -1908,6 +2011,11 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Motion_SoulIn[i] = CConversion.StringToIntArray(strParam); break; } + case "Game_Chara_Motion_SoulOut": + { + TJAPlayer3.Skin.Characters_Motion_SoulOut[i] = CConversion.StringToIntArray(strParam); + break; + } case "Game_Chara_Motion_Return": { TJAPlayer3.Skin.Characters_Motion_Return[i] = CConversion.StringToIntArray(strParam); @@ -1954,11 +2062,26 @@ namespace TJAPlayer3 TJAPlayer3.Skin.Characters_Beat_ClearMax[i] = float.Parse(strParam); break; } + case "Game_Chara_Beat_MissIn": + { + TJAPlayer3.Skin.Characters_Beat_MissIn[i] = float.Parse(strParam); + break; + } + case "Game_Chara_Beat_MissDownIn": + { + TJAPlayer3.Skin.Characters_Beat_MissDownIn[i] = float.Parse(strParam); + break; + } case "Game_Chara_Beat_GoGoStart": { TJAPlayer3.Skin.Characters_Beat_GoGoStart[i] = float.Parse(strParam); break; } + case "Game_Chara_Beat_GoGoStartClear": + { + TJAPlayer3.Skin.Characters_Beat_GoGoStart_Clear[i] = float.Parse(strParam); + break; + } case "Game_Chara_Beat_GoGoStartMax": { TJAPlayer3.Skin.Characters_Beat_GoGoStartMax[i] = float.Parse(strParam); @@ -2252,6 +2375,15 @@ namespace TJAPlayer3 public CTexture[] Difficulty_Back; #endregion + public CTexture NewHeya_Close; + public CTexture NewHeya_Close_Select; + public CTexture[] NewHeya_PlayerPlate = new CTexture[5]; + public CTexture NewHeya_PlayerPlate_Select; + public CTexture NewHeya_ModeBar; + public CTexture NewHeya_ModeBar_Select; + public CTexture NewHeya_Box; + public CTexture NewHeya_Lock; + #endregion #region 3_段位選択画面 @@ -2626,14 +2758,19 @@ Result_Mountain = new CTexture[4]*/; Characters_Normal_MissedDown, Characters_Normal_Cleared, Characters_Normal_Maxed, + Characters_MissIn, + Characters_MissDownIn, Characters_GoGoTime, Characters_GoGoTime_Maxed, Characters_10Combo, + Characters_10Combo_Clear, Characters_10Combo_Maxed, Characters_GoGoStart, + Characters_GoGoStart_Clear, Characters_GoGoStart_Maxed, Characters_Become_Cleared, Characters_Become_Maxed, + Characters_SoulOut, Characters_Return, Characters_Balloon_Breaking, Characters_Balloon_Broke, diff --git a/OpenTaiko/src/Stages/04.Config/CActConfigKeyAssign.cs b/OpenTaiko/src/Stages/04.Config/CActConfigKeyAssign.cs index f4da03d3..00af8bef 100644 --- a/OpenTaiko/src/Stages/04.Config/CActConfigKeyAssign.cs +++ b/OpenTaiko/src/Stages/04.Config/CActConfigKeyAssign.cs @@ -122,7 +122,7 @@ namespace TJAPlayer3 this.bキー入力待ち = false; TJAPlayer3.Input管理.Polling( false ); } - else if( ( this.tキーチェックとアサイン_Keyboard() || this.tキーチェックとアサイン_MidiIn() ) || ( this.tキーチェックとアサイン_Joypad() || this.tキーチェックとアサイン_Mouse() ) ) + else if( ( this.tキーチェックとアサイン_Keyboard() || this.tキーチェックとアサイン_MidiIn() ) || ( this.tキーチェックとアサイン_Joypad() || tキーチェックとアサイン_Gamepad() || this.tキーチェックとアサイン_Mouse() ) ) { this.bキー入力待ち = false; TJAPlayer3.Input管理.Polling( false ); @@ -177,6 +177,10 @@ namespace TJAPlayer3 this.tアサインコードの描画_Joypad( i + 1, x + num5, y, stkeyassignArray[ i ].ID, stkeyassignArray[ i ].コード, this.n現在の選択行 == i ); break; + case E入力デバイス.Gamepad: + this.tアサインコードの描画_Gamepad( i + 1, x + num5, y, stkeyassignArray[ i ].ID, stkeyassignArray[ i ].コード, this.n現在の選択行 == i ); + break; + case E入力デバイス.マウス: this.tアサインコードの描画_Mouse( i + 1, x + num5, y, stkeyassignArray[ i ].ID, stkeyassignArray[ i ].コード, this.n現在の選択行 == i ); break; @@ -290,6 +294,23 @@ namespace TJAPlayer3 } TJAPlayer3.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. Joypad #{1} ", line, nID ) + str, b強調, 0.75f ); } + private void tアサインコードの描画_Gamepad( int line, int x, int y, int nID, int nCode, bool b強調 ) + { + string str = ""; + if ((8 <= nCode) && (nCode < 8 + 128)) // other buttons (128 types) + { + str = string.Format("Button{0}", nCode - 7); + } + else if ((8 + 128 <= nCode) && (nCode < 8 + 128 + 8)) // POV HAT ( 8 types; 45 degrees per HATs) + { + str = string.Format("POV {0}", (nCode - 8 - 128) * 45); + } + else + { + str = string.Format( "Code{0}", nCode ); + } + TJAPlayer3.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. Gamepad #{1} ", line, nID ) + str, b強調, 0.75f ); + } private void tアサインコードの描画_Keyboard( int line, int x, int y, int nID, int nCode, bool b強調 ) { string str = null; @@ -315,6 +336,29 @@ namespace TJAPlayer3 { TJAPlayer3.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. Mouse Button{1}", line, nCode ), b強調, 0.75f ); } + + private bool tキーチェックとアサイン_Gamepad() + { + foreach( IInputDevice device in TJAPlayer3.Input管理.InputDevices ) + { + if( device.CurrentType == InputDeviceType.Gamepad ) + { + for (int i = 0; i < 15; i++) // +8 for Axis, +8 for HAT + { + if (device.KeyPressed(i)) + { + TJAPlayer3.Skin.sound決定音.t再生する(); + TJAPlayer3.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する( E入力デバイス.Gamepad, device.ID, i, this.pad); + TJAPlayer3.ConfigIni.KeyAssign[ (int) this.part ][ (int) this.pad ][ this.n現在の選択行 ].入力デバイス = E入力デバイス.Gamepad; + TJAPlayer3.ConfigIni.KeyAssign[ (int) this.part ][ (int) this.pad ][ this.n現在の選択行 ].ID = device.ID; + TJAPlayer3.ConfigIni.KeyAssign[ (int) this.part ][ (int) this.pad ][ this.n現在の選択行 ].コード = i; + return true; + } + } + } + } + return false; + } private bool tキーチェックとアサイン_Joypad() { foreach( IInputDevice device in TJAPlayer3.Input管理.InputDevices ) diff --git a/OpenTaiko/src/Stages/04.Config/CStageコンフィグ.cs b/OpenTaiko/src/Stages/04.Config/CStageコンフィグ.cs index eb3398dc..706ab765 100644 --- a/OpenTaiko/src/Stages/04.Config/CStageコンフィグ.cs +++ b/OpenTaiko/src/Stages/04.Config/CStageコンフィグ.cs @@ -223,8 +223,6 @@ namespace TJAPlayer3 //CDTXMania.tテクスチャの解放( ref this.tx下部パネル ); //CDTXMania.tテクスチャの解放( ref this.txMenuカーソル ); - TJAPlayer3.t安全にDisposeする(ref TJAPlayer3.Tx.Config_Cursor); - TJAPlayer3.tテクスチャの解放( ref this.tx説明文パネル ); base.ReleaseManagedResource(); } diff --git a/OpenTaiko/src/Stages/05.SongSelect/CStage選曲.cs b/OpenTaiko/src/Stages/05.SongSelect/CStage選曲.cs index 28180242..9f14b278 100644 --- a/OpenTaiko/src/Stages/05.SongSelect/CStage選曲.cs +++ b/OpenTaiko/src/Stages/05.SongSelect/CStage選曲.cs @@ -207,6 +207,7 @@ namespace TJAPlayer3 base.ChildActivities.Add(this.act難易度選択画面 = new CActSelect難易度選択画面()); base.ChildActivities.Add(this.actPlayOption = new CActPlayOption()); base.ChildActivities.Add(this.actExExtraTransAnime = new CActSelectExExtraTransAnime()); + base.ChildActivities.Add(this.actNewHeya = new CActNewHeya()); base.ChildActivities.Add(this.PuchiChara = new PuchiChara()); @@ -866,7 +867,7 @@ namespace TJAPlayer3 this.act曲リスト.tMenuContextDisable(); } } - else if (!this.actSortSongs.bIsActivePopupMenu && !this.actQuickConfig.bIsActivePopupMenu && !this.act難易度選択画面.bIsDifficltSelect) + else if (!this.actSortSongs.bIsActivePopupMenu && !this.actQuickConfig.bIsActivePopupMenu && !this.act難易度選択画面.bIsDifficltSelect && !actNewHeya.IsOpend) { #region [ ESC ] if ((TJAPlayer3.Pad.b押されたDGB(Eパッド.Cancel) || TJAPlayer3.Input管理.Keyboard.KeyPressed((int)SlimDXKeys.Key.Escape)) && (this.act曲リスト.r現在選択中の曲 != null))// && ( ) ) ) @@ -970,18 +971,24 @@ namespace TJAPlayer3 } } #endregion - /* #region [ F8 ランダム選曲 ] - if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.F8)) + if (TJAPlayer3.Input管理.Keyboard.KeyPressed((int)SlimDXKeys.Key.F8)) { + /* if (TJAPlayer3.Skin.sound曲決定音.b読み込み成功) TJAPlayer3.Skin.sound曲決定音.t再生する(); else TJAPlayer3.Skin.sound決定音.t再生する(); this.t曲をランダム選択する(); + */ + } + #endregion + #region [ F9 ] + if (TJAPlayer3.Input管理.Keyboard.KeyPressed((int)SlimDXKeys.Key.F9)) + { + actNewHeya.Open(); } #endregion - */ if (this.act曲リスト.r現在選択中の曲 != null) { @@ -1284,6 +1291,8 @@ namespace TJAPlayer3 if (act難易度選択画面.bOption[3]) actPlayOption.On進行描画(3); if (act難易度選択画面.bOption[4]) actPlayOption.On進行描画(4); + if (actNewHeya.IsOpend) actNewHeya.Draw(); + switch (base.eフェーズID) { case CStage.Eフェーズ.共通_フェードイン: @@ -1398,6 +1407,7 @@ namespace TJAPlayer3 public CActSelect難易度選択画面 act難易度選択画面; public CActPlayOption actPlayOption; public CActSelectExExtraTransAnime actExExtraTransAnime; + public CActNewHeya actNewHeya; public CActSortSongs actSortSongs; private CActSelectQuickConfig actQuickConfig; @@ -1411,7 +1421,7 @@ namespace TJAPlayer3 //private CCounter ctDonchan_Select; //public CCounter[] ctDonchan_Jump = new CCounter[2]; - private PuchiChara PuchiChara; + public PuchiChara PuchiChara; private int nGenreBack; private int nOldGenreBack; diff --git a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs index 309cfcd4..95aaf25e 100644 --- a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs @@ -1955,11 +1955,34 @@ namespace TJAPlayer3 if ( eJudgeResult == E判定.Poor || eJudgeResult == E判定.Miss || eJudgeResult == E判定.Bad ) { + int Character = this.actChara.iCurrentCharacter[nPlayer]; + // ランナー(みすったやつ) this.actRunner.Start(nPlayer, true, pChip); if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer) && this.bIsAlreadyMaxed[nPlayer] == true) { this.bIsAlreadyMaxed[nPlayer] = false; + if(TJAPlayer3.Skin.Characters_SoulOut_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) + { + this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.SoulOut, true); + } + } + else if (!bIsGOGOTIME[nPlayer]) + { + if (Chara_MissCount[nPlayer] == 1 - 1) + { + if(TJAPlayer3.Skin.Characters_MissIn_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) + { + this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.MissIn, true); + } + } + else if (Chara_MissCount[nPlayer] == 6 - 1) + { + if(TJAPlayer3.Skin.Characters_MissDownIn_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) + { + this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.MissDownIn, true); + } + } } if (!cleared && this.bIsAlreadyCleared[nPlayer] == true) { @@ -3931,7 +3954,7 @@ namespace TJAPlayer3 { if (TJAPlayer3.Skin.Characters_GoGoStart_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) { - if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer)) + if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer) && (!HGaugeMethods.UNSAFE_FastNormaCheck(nPlayer) || TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[Character] == 0)) { // 魂ゲージMAXではない // ゴーゴースタート_ノーマル @@ -3939,6 +3962,13 @@ namespace TJAPlayer3 //this.actChara.マイどん_アクション_10コンボ(); } } + if (TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) + { + if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer) && HGaugeMethods.UNSAFE_FastNormaCheck(nPlayer)) + { + this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.GoGoStart_Clear, true); + } + } if (TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded) { if (HGaugeMethods.UNSAFE_IsRainbow(nPlayer)) diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsキャラクター.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsキャラクター.cs index 1bf879c4..c5f75a65 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsキャラクター.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsキャラクター.cs @@ -171,8 +171,8 @@ namespace TJAPlayer3 } } nNowCharaFrame[i] = (int)nNowCharaCounter[i]; + bool endAnime = nNowCharaFrame[i] > nCharaFrameCount[i]; nNowCharaFrame[i] = Math.Min(nNowCharaFrame[i], nCharaFrameCount[i]); - bool endAnime = nNowCharaFrame[i] >= nCharaFrameCount[i]; if (eNowAnime[i] != Anime.None) { @@ -243,6 +243,32 @@ namespace TJAPlayer3 } } break; + case Anime.MissIn: + { + updateNormal(); + if (TJAPlayer3.Tx.Characters_MissIn[Character] != null && TJAPlayer3.Skin.Characters_MissIn_Ptn[Character] != 0) + { + nowChara = TJAPlayer3.Tx.Characters_MissIn[Character][TJAPlayer3.Skin.Characters_Motion_MissIn[Character][nNowCharaFrame[i]]]; + } + if (endAnime) + { + ReturnDefaultAnime(i, true); + } + } + break; + case Anime.MissDownIn: + { + updateNormal(); + if (TJAPlayer3.Tx.Characters_MissDownIn[Character] != null && TJAPlayer3.Skin.Characters_MissDownIn_Ptn[Character] != 0) + { + nowChara = TJAPlayer3.Tx.Characters_MissDownIn[Character][TJAPlayer3.Skin.Characters_Motion_MissDownIn[Character][nNowCharaFrame[i]]]; + } + if (endAnime) + { + ReturnDefaultAnime(i, true); + } + } + break; case Anime.GoGoTime: { updateNormal(); @@ -280,6 +306,19 @@ namespace TJAPlayer3 } } break; + case Anime.Combo10_Clear: + { + updateNormal(); + if (TJAPlayer3.Tx.Characters_10Combo_Clear[Character] != null && TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[Character] != 0) + { + nowChara = TJAPlayer3.Tx.Characters_10Combo_Clear[Character][TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[Character][nNowCharaFrame[i]]]; + } + if (endAnime) + { + ReturnDefaultAnime(i, true); + } + } + break; case Anime.Combo10_Max: { updateNormal(); @@ -306,6 +345,19 @@ namespace TJAPlayer3 } } break; + case Anime.GoGoStart_Clear: + { + updateNormal(); + if (TJAPlayer3.Tx.Characters_GoGoStart_Clear[Character] != null && TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[Character] != 0) + { + nowChara = TJAPlayer3.Tx.Characters_GoGoStart_Clear[Character][TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear[Character][nNowCharaFrame[i]]]; + } + if (endAnime) + { + ReturnDefaultAnime(i, true); + } + } + break; case Anime.GoGoStart_Max: { updateNormal(); @@ -345,6 +397,19 @@ namespace TJAPlayer3 } } break; + case Anime.SoulOut: + { + updateNormal(); + if (TJAPlayer3.Tx.Characters_SoulOut[Character] != null && TJAPlayer3.Skin.Characters_SoulOut_Ptn[Character] != 0) + { + nowChara = TJAPlayer3.Tx.Characters_SoulOut[Character][TJAPlayer3.Skin.Characters_Motion_SoulOut[Character][nNowCharaFrame[i]]]; + } + if (endAnime) + { + ReturnDefaultAnime(i, true); + } + } + break; case Anime.Return: { updateNormal(); @@ -653,14 +718,19 @@ namespace TJAPlayer3 MissDown, Cleared, Maxed, + MissIn, + MissDownIn, GoGoTime, GoGoTime_Maxed, Combo10, + Combo10_Clear, Combo10_Max, GoGoStart, + GoGoStart_Clear, GoGoStart_Max, Become_Cleared, Become_Maxed, + SoulOut, Return, Balloon_Breaking, Balloon_Broke, @@ -684,59 +754,79 @@ namespace TJAPlayer3 case Anime.None: break; case Anime.Normal: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Normal_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Normal[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Normal[iCurrentCharacter[player]]; break; case Anime.Miss: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Miss[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Miss[iCurrentCharacter[player]]; break; case Anime.MissDown: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissDown[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissDown[iCurrentCharacter[player]]; break; case Anime.Cleared: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Clear[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Clear[iCurrentCharacter[player]]; break; case Anime.Maxed: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_ClearMax[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_ClearMax[iCurrentCharacter[player]]; break; + case Anime.MissIn: + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissIn[iCurrentCharacter[player]].Length - 1; + nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissIn[iCurrentCharacter[player]]; + break; + case Anime.MissDownIn: + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissDownIn[iCurrentCharacter[player]].Length - 1; + nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissDownIn[iCurrentCharacter[player]]; + break; case Anime.GoGoTime: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_GoGoTime_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGo[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGo[iCurrentCharacter[player]]; break; case Anime.GoGoTime_Maxed: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_GoGoTime_Maxed_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoMax[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoMax[iCurrentCharacter[player]]; break; case Anime.Combo10: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_10Combo_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10Combo[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10Combo[iCurrentCharacter[player]]; break; + case Anime.Combo10_Clear: + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[iCurrentCharacter[player]].Length - 1; + nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10Combo_Clear[iCurrentCharacter[player]]; + break; case Anime.Combo10_Max: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10ComboMax[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10ComboMax[iCurrentCharacter[player]]; break; case Anime.GoGoStart: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_GoGoStart_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStart[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStart[iCurrentCharacter[player]]; break; + case Anime.GoGoStart_Clear: + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear[iCurrentCharacter[player]].Length - 1; + nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStart_Clear[iCurrentCharacter[player]]; + break; case Anime.GoGoStart_Max: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStartMax[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStartMax[iCurrentCharacter[player]]; break; case Anime.Become_Cleared: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_ClearIn[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_ClearIn[iCurrentCharacter[player]]; break; case Anime.Become_Maxed: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_SoulIn[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_SoulIn[iCurrentCharacter[player]]; break; + case Anime.SoulOut: + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_SoulOut[iCurrentCharacter[player]].Length - 1; + nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_SoulOut[iCurrentCharacter[player]]; + break; case Anime.Return: - nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Return_Ptn[iCurrentCharacter[player]] - 1; + nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Return[iCurrentCharacter[player]].Length - 1; nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Return[iCurrentCharacter[player]]; break; case Anime.Balloon_Breaking: diff --git a/OpenTaiko/src/Stages/CActNewHeya.cs b/OpenTaiko/src/Stages/CActNewHeya.cs new file mode 100644 index 00000000..ba162468 --- /dev/null +++ b/OpenTaiko/src/Stages/CActNewHeya.cs @@ -0,0 +1,777 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using FDK; + +namespace TJAPlayer3 +{ + class CActNewHeya : CActivity + { + public bool IsOpend { get; private set; } + private CCachedFontRenderer MenuFont; + + private CActSelect曲リスト.TitleTextureKey[] MenuTitleKeys = new CActSelect曲リスト.TitleTextureKey[5]; + private CActSelect曲リスト.TitleTextureKey[] ttkPuchiCharaNames; + private CActSelect曲リスト.TitleTextureKey[] ttkPuchiCharaAuthors; + private CActSelect曲リスト.TitleTextureKey[] ttkCharacterNames; + private CActSelect曲リスト.TitleTextureKey[] ttkCharacterAuthors; + private CActSelect曲リスト.TitleTextureKey ttkInfoSection; + private CActSelect曲リスト.TitleTextureKey[] ttkDanTitles; + private CActSelect曲リスト.TitleTextureKey[] ttkTitles; + private string[] titlesKeys; + + public CCounter InFade; + + public CCounter CharaBoxAnime; + + private int CurrentIndex; + + private int CurrentMaxIndex; + + private int CurrentPlayer; + + private enum SelectableInfo + { + PlayerSelect, + ModeSelect, + Select + } + + private enum ModeType + { + None = -1, + PuchiChara, + Chara, + DanTitle, + SubTitle + } + + private SelectableInfo CurrentState; + + private ModeType CurrentMode = ModeType.None; + + private void SetState(SelectableInfo selectableInfo) + { + CurrentState = selectableInfo; + switch(selectableInfo) + { + case SelectableInfo.PlayerSelect: + CurrentIndex = 1; + CurrentMaxIndex = TJAPlayer3.ConfigIni.nPlayerCount + 1; + break; + case SelectableInfo.ModeSelect: + CurrentIndex = 1; + CurrentMaxIndex = 5; + break; + case SelectableInfo.Select: + CurrentMode = (ModeType)(CurrentIndex - 1); + switch(CurrentMode) + { + case ModeType.Chara: + CurrentMaxIndex = TJAPlayer3.Skin.Characters_Ptn; + break; + case ModeType.PuchiChara: + CurrentMaxIndex = TJAPlayer3.Skin.Puchichara_Ptn; + break; + case ModeType.DanTitle: + { + int amount = 1; + if (TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanTitles != null) + amount += TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanTitles.Count; + + this.ttkDanTitles = new CActSelect曲リスト.TitleTextureKey[amount]; + + // Silver Shinjin (default rank) always avaliable by default + this.ttkDanTitles[0] = new CActSelect曲リスト.TitleTextureKey("新人", this.MenuFont, Color.White, Color.Black, 1000); + + int idx = 1; + if (TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanTitles != null) + { + foreach (var item in TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanTitles) + { + if (item.Value.isGold == true) + this.ttkDanTitles[idx] = new CActSelect曲リスト.TitleTextureKey(item.Key, this.MenuFont, Color.Gold, Color.Black, 1000); + else + this.ttkDanTitles[idx] = new CActSelect曲リスト.TitleTextureKey(item.Key, this.MenuFont, Color.White, Color.Black, 1000); + idx++; + } + } + + CurrentMaxIndex = amount; + } + break; + case ModeType.SubTitle: + { + int amount = 1; + if (TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles != null) + amount += TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles.Count; + + this.ttkTitles = new CActSelect曲リスト.TitleTextureKey[amount]; + this.titlesKeys = new string[amount]; + + // Wood shojinsha (default title) always avaliable by default + this.ttkTitles[0] = new CActSelect曲リスト.TitleTextureKey("初心者", this.MenuFont, Color.Black, Color.Transparent, 1000); + this.titlesKeys[0] = "初心者"; + + int idx = 1; + if (TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles != null) + { + foreach (var item in TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles) + { + this.ttkTitles[idx] = new CActSelect曲リスト.TitleTextureKey(item.Value.cld.GetString(item.Key), this.MenuFont, Color.Black, Color.Transparent, 1000); + this.titlesKeys[idx] = item.Key; + idx++; + } + } + + CurrentMaxIndex = amount; + } + break; + } + CurrentIndex = 0; + break; + } + } + + private void ChangeIndex(int change) + { + CurrentIndex += change; + + if (CurrentIndex < 0) CurrentIndex = CurrentMaxIndex - 1; + else if (CurrentIndex >= CurrentMaxIndex) CurrentIndex = 0; + if (CurrentState == SelectableInfo.Select) + { + switch(CurrentMode) + { + case ModeType.PuchiChara: + tUpdateUnlockableTextPuchi(); + break; + case ModeType.Chara: + tUpdateUnlockableTextChara(); + break; + case ModeType.DanTitle: + break; + case ModeType.SubTitle: + break; + } + } + } + + public void Open() + { + InFade = new CCounter(0, 255, 1.0, TJAPlayer3.Timer); + IsOpend = true; + CurrentMode = ModeType.None; + + SetState(SelectableInfo.PlayerSelect); + } + + public void Close() + { + IsOpend = false; + } + + public override void Activate() + { + InFade = new CCounter(); + CharaBoxAnime = new CCounter(); + + for(int i = 0; i < 5; i++) + { + MenuTitleKeys[i] = new CActSelect曲リスト.TitleTextureKey(CLangManager.LangInstance.GetString(1030 + i), MenuFont, Color.White, Color.Black, 9999); + } + + ttkPuchiCharaNames = new CActSelect曲リスト.TitleTextureKey[TJAPlayer3.Skin.Puchichara_Ptn]; + ttkPuchiCharaAuthors = new CActSelect曲リスト.TitleTextureKey[TJAPlayer3.Skin.Puchichara_Ptn]; + + for (int i = 0; i < TJAPlayer3.Skin.Puchichara_Ptn; i++) + { + var textColor = HRarity.tRarityToColor(TJAPlayer3.Tx.Puchichara[i].metadata.Rarity); + ttkPuchiCharaNames[i] = new CActSelect曲リスト.TitleTextureKey(TJAPlayer3.Tx.Puchichara[i].metadata.Name, this.MenuFont, textColor, Color.Black, 1000); + ttkPuchiCharaAuthors[i] = new CActSelect曲リスト.TitleTextureKey(TJAPlayer3.Tx.Puchichara[i].metadata.Author, this.MenuFont, Color.White, Color.Black, 1000); + } + + + ttkCharacterAuthors = new CActSelect曲リスト.TitleTextureKey[TJAPlayer3.Skin.Characters_Ptn]; + ttkCharacterNames = new CActSelect曲リスト.TitleTextureKey[TJAPlayer3.Skin.Characters_Ptn]; + + for (int i = 0; i < TJAPlayer3.Skin.Characters_Ptn; i++) + { + var textColor = HRarity.tRarityToColor(TJAPlayer3.Tx.Characters[i].metadata.Rarity); + ttkCharacterNames[i] = new CActSelect曲リスト.TitleTextureKey(TJAPlayer3.Tx.Characters[i].metadata.Name, this.MenuFont, textColor, Color.Black, 1000); + ttkCharacterAuthors[i] = new CActSelect曲リスト.TitleTextureKey(TJAPlayer3.Tx.Characters[i].metadata.Author, this.MenuFont, Color.White, Color.Black, 1000); + } + + + base.Activate(); + } + + public override void DeActivate() + { + + base.DeActivate(); + } + + public override void CreateManagedResource() + { + if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName)) + this.MenuFont = new CCachedFontRenderer(TJAPlayer3.ConfigIni.FontName, TJAPlayer3.Skin.Heya_Font_Scale); + else + this.MenuFont = new CCachedFontRenderer(CFontRenderer.DefaultFontName, TJAPlayer3.Skin.Heya_Font_Scale); + + base.CreateManagedResource(); + } + + public override void ReleaseManagedResource() + { + MenuFont.Dispose(); + + base.ReleaseManagedResource(); + } + + public override int Draw() + { + if ((TJAPlayer3.Pad.b押されたDGB(Eパッド.Decide)) || ((TJAPlayer3.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && TJAPlayer3.Input管理.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return)))) + { + switch(CurrentState) + { + case SelectableInfo.PlayerSelect: + { + switch(CurrentIndex) + { + case 0: + Close(); + TJAPlayer3.Skin.sound取消音.t再生する(); + break; + default: + { + CurrentPlayer = TJAPlayer3.GetActualPlayer(CurrentIndex - 1); + SetState(SelectableInfo.ModeSelect); + TJAPlayer3.Skin.sound決定音.t再生する(); + } + break; + } + } + break; + case SelectableInfo.ModeSelect: + { + switch(CurrentIndex) + { + case 0: + SetState(SelectableInfo.PlayerSelect); + TJAPlayer3.Skin.sound取消音.t再生する(); + break; + default: + { + SetState(SelectableInfo.Select); + TJAPlayer3.Skin.sound決定音.t再生する(); + } + break; + } + } + break; + case SelectableInfo.Select: + { + switch(CurrentMode) + { + case ModeType.PuchiChara: + { + var ess = this.tSelectPuchi(); + + if (ess == ESelectStatus.SELECTED) + { + //PuchiChara.tGetPuchiCharaIndexByName(p); + //TJAPlayer3.NamePlateConfig.data.PuchiChara[iPlayer] = TJAPlayer3.Skin.Puchicharas_Name[iPuchiCharaCurrent];// iPuchiCharaCurrent; + //TJAPlayer3.NamePlateConfig.tApplyHeyaChanges(); + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.PuchiChara = TJAPlayer3.Skin.Puchicharas_Name[CurrentIndex];// iPuchiCharaCurrent; + TJAPlayer3.SaveFileInstances[CurrentPlayer].tApplyHeyaChanges(); + TJAPlayer3.Skin.sound決定音.t再生する(); + TJAPlayer3.Tx.Puchichara[CurrentIndex].welcome.t再生する(); + + SetState(SelectableInfo.PlayerSelect); + } + else if (ess == ESelectStatus.SUCCESS) + { + //TJAPlayer3.NamePlateConfig.data.UnlockedPuchicharas[iPlayer].Add(TJAPlayer3.Skin.Puchicharas_Name[iPuchiCharaCurrent]); + //TJAPlayer3.NamePlateConfig.tSpendCoins(TJAPlayer3.Tx.Puchichara[iPuchiCharaCurrent].unlock.Values[0], iPlayer); + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.UnlockedPuchicharas.Add(TJAPlayer3.Skin.Puchicharas_Name[CurrentIndex]); + TJAPlayer3.SaveFileInstances[CurrentPlayer].tSpendCoins(TJAPlayer3.Tx.Puchichara[CurrentIndex].unlock.Values[0]); + TJAPlayer3.Skin.sound決定音.t再生する(); + } + else + { + TJAPlayer3.Skin.soundError.t再生する(); + } + } + break; + case ModeType.Chara: + { + var ess = this.tSelectChara(); + + if (ess == ESelectStatus.SELECTED) + { + //TJAPlayer3.Tx.Loading?.t2D描画(18, 7); + + // Reload character, a bit time expensive but with a O(N) memory complexity instead of O(N * M) + TJAPlayer3.Tx.ReloadCharacter(TJAPlayer3.SaveFileInstances[CurrentPlayer].data.Character, CurrentIndex, CurrentPlayer); + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.Character = CurrentIndex; + + // Update the character + TJAPlayer3.SaveFileInstances[CurrentPlayer].tUpdateCharacterName(TJAPlayer3.Skin.Characters_DirName[CurrentIndex]); + + // Welcome voice using Sanka + TJAPlayer3.Skin.sound決定音.t再生する(); + TJAPlayer3.Skin.voiceTitleSanka[CurrentPlayer]?.t再生する(); + + CMenuCharacter.tMenuResetTimer(CMenuCharacter.ECharacterAnimation.NORMAL); + + TJAPlayer3.SaveFileInstances[CurrentPlayer].tApplyHeyaChanges(); + + SetState(SelectableInfo.PlayerSelect); + CurrentMode = ModeType.None; + } + else if (ess == ESelectStatus.SUCCESS) + { + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.UnlockedCharacters.Add(TJAPlayer3.Skin.Characters_DirName[CurrentIndex]); + TJAPlayer3.SaveFileInstances[CurrentPlayer].tSpendCoins(TJAPlayer3.Tx.Characters[CurrentIndex].unlock.Values[0]); + TJAPlayer3.Skin.sound決定音.t再生する(); + } + else + { + TJAPlayer3.Skin.soundError.t再生する(); + } + } + break; + case ModeType.DanTitle: + { + bool iG = false; + int cs = 0; + + if (CurrentIndex > 0) + { + iG = TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanTitles[this.ttkDanTitles[CurrentIndex].str文字].isGold; + cs = TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanTitles[this.ttkDanTitles[CurrentIndex].str文字].clearStatus; + } + + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.Dan = this.ttkDanTitles[CurrentIndex].str文字; + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanGold = iG; + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanType = cs; + + TJAPlayer3.NamePlate.tNamePlateRefreshTitles(CurrentPlayer); + + TJAPlayer3.SaveFileInstances[CurrentPlayer].tApplyHeyaChanges(); + + TJAPlayer3.Skin.sound決定音.t再生する(); + SetState(SelectableInfo.PlayerSelect); + } + break; + case ModeType.SubTitle: + { + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.Title = this.ttkTitles[CurrentIndex].str文字; + + if (TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles != null + && TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles.ContainsKey(this.titlesKeys[CurrentIndex])) + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.TitleType = TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles[this.titlesKeys[CurrentIndex]].iType; + else if (CurrentIndex == 0) + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.TitleType = 0; + else + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.TitleType = -1; + + TJAPlayer3.NamePlate.tNamePlateRefreshTitles(CurrentPlayer); + + TJAPlayer3.SaveFileInstances[CurrentPlayer].tApplyHeyaChanges(); + + TJAPlayer3.Skin.sound決定音.t再生する(); + SetState(SelectableInfo.PlayerSelect); + } + break; + } + } + break; + } + } + else if ((TJAPlayer3.Pad.b押されたDGB(Eパッド.Cancel) || TJAPlayer3.Input管理.Keyboard.KeyPressed((int)SlimDXKeys.Key.Escape))) + { + Close(); + TJAPlayer3.Skin.sound取消音.t再生する(); + } + else if (TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.LeftChange) + || TJAPlayer3.Input管理.Keyboard.KeyPressed((int)SlimDXKeys.Key.LeftArrow)) + { + ChangeIndex(-1); + TJAPlayer3.Skin.sound変更音.t再生する(); + } + else if (TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.RightChange) + || TJAPlayer3.Input管理.Keyboard.KeyPressed((int)SlimDXKeys.Key.RightArrow)) + { + ChangeIndex(1); + TJAPlayer3.Skin.sound変更音.t再生する(); + } + + InFade.Tick(); + + if (TJAPlayer3.Tx.Tile_Black != null) + { + TJAPlayer3.Tx.Tile_Black.Opacity = InFade.CurrentValue / 2; + for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / TJAPlayer3.Tx.Tile_Black.szテクスチャサイズ.Width); i++) // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size + { + for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / TJAPlayer3.Tx.Tile_Black.szテクスチャサイズ.Height); j++) // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size + { + TJAPlayer3.Tx.Tile_Black.t2D描画( i * TJAPlayer3.Tx.Tile_Black.szテクスチャサイズ.Width, j * TJAPlayer3.Tx.Tile_Black.szテクスチャサイズ.Height); + } + } + } + + + switch (CurrentState) + { + case SelectableInfo.PlayerSelect: + if (CurrentIndex == 0) + { + TJAPlayer3.Tx.NewHeya_Close_Select.t2D描画(TJAPlayer3.Skin.SongSelect_NewHeya_Close_Select[0], TJAPlayer3.Skin.SongSelect_NewHeya_Close_Select[1]); + } + else + { + TJAPlayer3.Tx.NewHeya_PlayerPlate_Select.t2D描画(TJAPlayer3.Skin.SongSelect_NewHeya_PlayerPlate_X[CurrentIndex - 1], TJAPlayer3.Skin.SongSelect_NewHeya_PlayerPlate_Y[CurrentIndex - 1]); + } + break; + case SelectableInfo.ModeSelect: + { + TJAPlayer3.Tx.NewHeya_ModeBar_Select.t2D描画(TJAPlayer3.Skin.SongSelect_NewHeya_ModeBar_X[CurrentIndex], TJAPlayer3.Skin.SongSelect_NewHeya_ModeBar_Y[CurrentIndex]); + } + break; + case SelectableInfo.Select: + { + switch(CurrentMode) + { + case ModeType.Chara: + for(int i = 1; i < TJAPlayer3.Skin.SongSelect_NewHeya_Box_Count - 1; i++) + { + int x = TJAPlayer3.Skin.SongSelect_NewHeya_Box_X[i]; + int y = TJAPlayer3.Skin.SongSelect_NewHeya_Box_Y[i]; + int index = i - (TJAPlayer3.Skin.SongSelect_NewHeya_Box_Count / 2) + CurrentIndex; + while (index < 0) + { + index += CurrentMaxIndex; + } + while (index >= CurrentMaxIndex) + { + index -= CurrentMaxIndex; + } + TJAPlayer3.Tx.NewHeya_Box.t2D描画(x, y); + + + float charaRatioX = 1.0f; + float charaRatioY = 1.0f; + if (TJAPlayer3.Skin.Characters_Resolution[index] != null) + { + charaRatioX = TJAPlayer3.Skin.Resolution[0] / (float)TJAPlayer3.Skin.Characters_Resolution[index][0]; + charaRatioY = TJAPlayer3.Skin.Resolution[1] / (float)TJAPlayer3.Skin.Characters_Resolution[index][1]; + } + + if (TJAPlayer3.Tx.Characters_Heya_Preview[index] != null) + { + TJAPlayer3.Tx.Characters_Heya_Preview[index].vc拡大縮小倍率.X = charaRatioX; + TJAPlayer3.Tx.Characters_Heya_Preview[index].vc拡大縮小倍率.Y = charaRatioY; + } + + TJAPlayer3.Tx.Characters_Heya_Preview[index]?.t2D拡大率考慮中央基準描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Chara_Offset[0], y + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Chara_Offset[1]); + TJAPlayer3.Tx.Characters_Heya_Preview[index]?.tUpdateColor4(CConversion.ColorToColor4(Color.White)); + + if (ttkCharacterNames[index] != null) + { + CTexture tmpTex = TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkCharacterNames[index]); + + tmpTex.t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Name_Offset[0], y + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Name_Offset[1]); + } + + if (ttkCharacterAuthors[index] != null) + { + CTexture tmpTex = TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkCharacterAuthors[index]); + + tmpTex.t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Author_Offset[0], y + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Author_Offset[1]); + } + + if (TJAPlayer3.Tx.Characters[index].unlock != null + && !TJAPlayer3.SaveFileInstances[CurrentPlayer].data.UnlockedCharacters.Contains(TJAPlayer3.Skin.Characters_DirName[index])) + { + TJAPlayer3.Tx.NewHeya_Lock?.t2D描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_Lock_Offset[0], y + TJAPlayer3.Skin.SongSelect_NewHeya_Lock_Offset[1]); + + if (this.ttkInfoSection != null) + TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkInfoSection) + .t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_InfoSection_Offset[0], y + TJAPlayer3.Skin.SongSelect_NewHeya_InfoSection_Offset[1]); + } + } + break; + case ModeType.PuchiChara: + for(int i = 1; i < TJAPlayer3.Skin.SongSelect_NewHeya_Box_Count - 1; i++) + { + int x = TJAPlayer3.Skin.SongSelect_NewHeya_Box_X[i]; + int y = TJAPlayer3.Skin.SongSelect_NewHeya_Box_Y[i]; + int index = i - (TJAPlayer3.Skin.SongSelect_NewHeya_Box_Count / 2) + CurrentIndex; + while (index < 0) + { + index += CurrentMaxIndex; + } + while (index >= CurrentMaxIndex) + { + index -= CurrentMaxIndex; + } + TJAPlayer3.Tx.NewHeya_Box.t2D描画(x, y); + + int puriColumn = index % 5; + int puriRow = index / 5; + + if (TJAPlayer3.Tx.Puchichara[index].tx != null) + { + float puchiScale = TJAPlayer3.Skin.Resolution[1] / 1080.0f; + + TJAPlayer3.Tx.Puchichara[index].tx.vc拡大縮小倍率.X = puchiScale; + TJAPlayer3.Tx.Puchichara[index].tx.vc拡大縮小倍率.Y = puchiScale; + } + + TJAPlayer3.Tx.Puchichara[index].tx?.t2D拡大率考慮中央基準描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Chara_Offset[0], + y + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Chara_Offset[1] + (int)(TJAPlayer3.stage選曲.PuchiChara.sineY), + new Rectangle((TJAPlayer3.stage選曲.PuchiChara.Counter.CurrentValue + 2 * puriColumn) * TJAPlayer3.Skin.Game_PuchiChara[0], + puriRow * TJAPlayer3.Skin.Game_PuchiChara[1], + TJAPlayer3.Skin.Game_PuchiChara[0], + TJAPlayer3.Skin.Game_PuchiChara[1])); + + TJAPlayer3.Tx.Puchichara[index].tx?.tUpdateColor4(CConversion.ColorToColor4(Color.White)); + + + if (ttkCharacterNames[index] != null) + { + CTexture tmpTex = TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkPuchiCharaNames[index]); + + tmpTex.t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Name_Offset[0], y + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Name_Offset[1]); + } + + if (ttkCharacterAuthors[index] != null) + { + CTexture tmpTex = TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkPuchiCharaAuthors[index]); + + tmpTex.t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Author_Offset[0], y + TJAPlayer3.Skin.SongSelect_NewHeya_Box_Author_Offset[1]); + } + + if (TJAPlayer3.Tx.Characters[index].unlock != null + && !TJAPlayer3.SaveFileInstances[CurrentPlayer].data.UnlockedPuchicharas.Contains(TJAPlayer3.Skin.Puchicharas_Name[index])) + TJAPlayer3.Tx.NewHeya_Lock?.t2D描画(x + TJAPlayer3.Skin.SongSelect_NewHeya_InfoSection_Offset[0], y + TJAPlayer3.Skin.SongSelect_NewHeya_InfoSection_Offset[1]); + } + break; + case ModeType.SubTitle: + for(int i = 1; i < TJAPlayer3.Skin.SongSelect_NewHeya_Box_Count - 1; i++) + { + int x = TJAPlayer3.Skin.SongSelect_NewHeya_Box_X[i]; + int y = TJAPlayer3.Skin.SongSelect_NewHeya_Box_Y[i]; + int index = i - (TJAPlayer3.Skin.SongSelect_NewHeya_Box_Count / 2) + CurrentIndex; + while (index < 0) + { + index += CurrentMaxIndex; + } + while (index >= CurrentMaxIndex) + { + index -= CurrentMaxIndex; + } + CTexture tmpTex = TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkTitles[index]); + + if (i != 0) + { + tmpTex.color4 = CConversion.ColorToColor4(Color.DarkGray); + } + else + { + tmpTex.color4 = CConversion.ColorToColor4(Color.White); + } + + TJAPlayer3.Tx.NewHeya_Box.t2D描画(x, y); + + x += TJAPlayer3.Skin.SongSelect_NewHeya_Box_Chara_Offset[0]; + y += TJAPlayer3.Skin.SongSelect_NewHeya_Box_Chara_Offset[1]; + + int iType = -1; + + if (TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles != null && + TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles.ContainsKey(this.titlesKeys[index])) + iType = TJAPlayer3.SaveFileInstances[CurrentPlayer].data.NamePlateTitles[this.titlesKeys[index]].iType; + else if (index == 0) + iType = 0; + + if (iType >= 0 && iType < TJAPlayer3.Skin.Config_NamePlate_Ptn_Title) + { + TJAPlayer3.Tx.NamePlate_Title[iType][TJAPlayer3.NamePlate.ctAnimatedNamePlateTitle.CurrentValue % TJAPlayer3.Skin.Config_NamePlate_Ptn_Title_Boxes[iType]].t2D拡大率考慮上中央基準描画( + x, + y); + } + + tmpTex.t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[0], y + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[1]); + + } + break; + case ModeType.DanTitle: + for(int i = 1; i < TJAPlayer3.Skin.SongSelect_NewHeya_Box_Count - 1; i++) + { + int x = TJAPlayer3.Skin.SongSelect_NewHeya_Box_X[i]; + int y = TJAPlayer3.Skin.SongSelect_NewHeya_Box_Y[i]; + int index = i - (TJAPlayer3.Skin.SongSelect_NewHeya_Box_Count / 2) + CurrentIndex; + while (index < 0) + { + index += CurrentMaxIndex; + } + while (index >= CurrentMaxIndex) + { + index -= CurrentMaxIndex; + } + CTexture tmpTex = TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(this.ttkDanTitles[index]); + + if (i != 0) + { + tmpTex.color4 = CConversion.ColorToColor4(Color.DarkGray); + TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.DarkGray); + } + else + { + tmpTex.color4 = CConversion.ColorToColor4(Color.White); + TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.White); + } + + TJAPlayer3.Tx.NewHeya_Box.t2D描画(x, y); + + x += TJAPlayer3.Skin.SongSelect_NewHeya_Box_Chara_Offset[0]; + y += TJAPlayer3.Skin.SongSelect_NewHeya_Box_Chara_Offset[1]; + + int danGrade = 0; + if (index > 0) + { + danGrade = TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanTitles[this.ttkDanTitles[index].str文字].clearStatus; + } + + TJAPlayer3.NamePlate.tNamePlateDisplayNamePlateBase( + x - TJAPlayer3.Tx.NamePlateBase.szテクスチャサイズ.Width / 2, + y - TJAPlayer3.Tx.NamePlateBase.szテクスチャサイズ.Height / 24, + (8 + danGrade)); + TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.White); + + tmpTex.t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[0], y + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[1]); + + } + break; + } + } + break; + } + + TJAPlayer3.Tx.NewHeya_Close.t2D描画(0, 0); + + for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) + { + TJAPlayer3.Tx.NewHeya_PlayerPlate[TJAPlayer3.GetActualPlayer(i)].t2D描画(TJAPlayer3.Skin.SongSelect_NewHeya_PlayerPlate_X[i], TJAPlayer3.Skin.SongSelect_NewHeya_PlayerPlate_Y[i]); + } + + for(int i = 0; i < 5; i++) + { + TJAPlayer3.Tx.NewHeya_ModeBar.t2D描画(TJAPlayer3.Skin.SongSelect_NewHeya_ModeBar_X[i], TJAPlayer3.Skin.SongSelect_NewHeya_ModeBar_Y[i]); + int title_x = TJAPlayer3.Skin.SongSelect_NewHeya_ModeBar_X[i] + TJAPlayer3.Skin.SongSelect_NewHeya_ModeBar_Font_Offset[0]; + int title_y = TJAPlayer3.Skin.SongSelect_NewHeya_ModeBar_Y[i] + TJAPlayer3.Skin.SongSelect_NewHeya_ModeBar_Font_Offset[1]; + TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(MenuTitleKeys[i], false).t2D拡大率考慮中央基準描画(title_x, title_y); + } + + return base.Draw(); + } + + /* + * FAILED : Selection/Purchase failed (failed condition) + * SUCCESS : Purchase succeed (without selection) + * SELECTED : Selection succeed + */ + private enum ESelectStatus + { + FAILED, + SUCCESS, + SELECTED + }; + + private ESelectStatus tSelectPuchi() + { + // Add "If unlocked" to select directly + + if (TJAPlayer3.Tx.Puchichara[CurrentIndex].unlock != null + && !TJAPlayer3.SaveFileInstances[CurrentPlayer].data.UnlockedPuchicharas.Contains(TJAPlayer3.Skin.Puchicharas_Name[CurrentIndex])) + { + (bool, string) response = TJAPlayer3.Tx.Puchichara[CurrentIndex].unlock.tConditionMetWrapper(TJAPlayer3.SaveFile); + //tConditionMet( + //new int[] { TJAPlayer3.SaveFileInstances[TJAPlayer3.SaveFile].data.Medals }); + + Color responseColor = (response.Item1) ? Color.Lime : Color.Red; + + // Send coins here for the unlock, considering that only coin-paid puchicharas can be unlocked directly from the Heya menu + + this.ttkInfoSection = new CActSelect曲リスト.TitleTextureKey(response.Item2, this.MenuFont, responseColor, Color.Black, 1000); + + return (response.Item1) ? ESelectStatus.SUCCESS : ESelectStatus.FAILED; + } + + this.ttkInfoSection = null; + return ESelectStatus.SELECTED; + } + + private void tUpdateUnlockableTextPuchi() + { + #region [Check unlockable] + + if (TJAPlayer3.Tx.Puchichara[CurrentIndex].unlock != null + && !TJAPlayer3.SaveFileInstances[CurrentPlayer].data.UnlockedPuchicharas.Contains(TJAPlayer3.Skin.Puchicharas_Name[CurrentIndex])) + { + this.ttkInfoSection = new CActSelect曲リスト.TitleTextureKey(TJAPlayer3.Tx.Puchichara[CurrentIndex].unlock.tConditionMessage() + , this.MenuFont, Color.White, Color.Black, 1000); + } + else + this.ttkInfoSection = null; + + #endregion + } + private void tUpdateUnlockableTextChara() + { + #region [Check unlockable] + + if (TJAPlayer3.Tx.Characters[CurrentIndex].unlock != null + && !TJAPlayer3.SaveFileInstances[CurrentPlayer].data.UnlockedCharacters.Contains(TJAPlayer3.Skin.Characters_DirName[CurrentIndex])) + { + this.ttkInfoSection = new CActSelect曲リスト.TitleTextureKey(TJAPlayer3.Tx.Characters[CurrentIndex].unlock.tConditionMessage() + , this.MenuFont, Color.White, Color.Black, 1000); + } + else + this.ttkInfoSection = null; + + #endregion + } + + private ESelectStatus tSelectChara() + { + // Add "If unlocked" to select directly + + if (TJAPlayer3.Tx.Characters[CurrentIndex].unlock != null + && !TJAPlayer3.SaveFileInstances[CurrentPlayer].data.UnlockedCharacters.Contains(TJAPlayer3.Skin.Characters_DirName[CurrentIndex])) + { + (bool, string) response = TJAPlayer3.Tx.Characters[CurrentIndex].unlock.tConditionMetWrapper(TJAPlayer3.SaveFile); + //TJAPlayer3.Tx.Characters[iCharacterCurrent].unlock.tConditionMet( + //new int[] { TJAPlayer3.SaveFileInstances[TJAPlayer3.SaveFile].data.Medals }); + + Color responseColor = (response.Item1) ? Color.Lime : Color.Red; + + // Send coins here for the unlock, considering that only coin-paid puchicharas can be unlocked directly from the Heya menu + + this.ttkInfoSection = new CActSelect曲リスト.TitleTextureKey(response.Item2, this.MenuFont, responseColor, Color.Black, 1000); + + return (response.Item1) ? ESelectStatus.SUCCESS : ESelectStatus.FAILED; + } + + this.ttkInfoSection = null; + return ESelectStatus.SELECTED; + } + } +}