1
0
mirror of synced 2024-11-23 23:21:06 +01:00

0.6.0.19 - Allow users to change their name via. Heya menu

- Allow users to change their name via. Heya menu
This commit is contained in:
DragonRatTiger / リュウコ 2024-11-15 12:02:51 -06:00 committed by GitHub
parent 3528b65ecc
commit 49427d4082
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 191 additions and 71 deletions

View File

@ -444,6 +444,8 @@
"HEYA_CHARA": "Charakter",
"HEYA_DAN": "Dan-Titel",
"HEYA_NAMEPLATE": "Namensschild-Titel",
"HEYA_NAME": "Name",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "Name: {0}",

View File

@ -444,6 +444,8 @@
"HEYA_CHARA": "Character",
"HEYA_DAN": "Dan Title",
"HEYA_NAMEPLATE": "Nameplate Title",
"HEYA_NAME": "Name",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "Name: {0}",

View File

@ -445,6 +445,8 @@
"HEYA_CHARA": "Personaje",
"HEYA_DAN": "Título de Dan",
"HEYA_NAMEPLATE": "Título de la placa",
"HEYA_NAME": "Name",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "Name: {0}",

View File

@ -444,6 +444,8 @@
"HEYA_CHARA": "Personnage",
"HEYA_DAN": "Titre Dan",
"HEYA_NAMEPLATE": "Titre",
"HEYA_NAME": "Name",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "Name: {0}",

View File

@ -444,6 +444,8 @@
"HEYA_CHARA": "キャラクター",
"HEYA_DAN": "段位称号",
"HEYA_NAMEPLATE": "名札称号",
"HEYA_NAME": "名前",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "名前:{0}",

View File

@ -444,6 +444,8 @@
"HEYA_CHARA": "캐릭터",
"HEYA_DAN": "단위 제목",
"HEYA_NAMEPLATE": "칭호 타이틀",
"HEYA_NAME": "Name",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "이름: {0}",

View File

@ -440,6 +440,8 @@
"HEYA_CHARA": "Character",
"HEYA_DAN": "Dan Title",
"HEYA_NAMEPLATE": "Nameplate Title",
"HEYA_NAME": "Name",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "Name: {0}",

View File

@ -444,6 +444,8 @@
"HEYA_CHARA": "Персонаж",
"HEYA_DAN": "Ранг дан",
"HEYA_NAMEPLATE": "Ранг таблички",
"HEYA_NAME": "Name",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "Имя: {0}",

View File

@ -444,6 +444,8 @@
"HEYA_CHARA": "角色",
"HEYA_DAN": "段位称号",
"HEYA_NAMEPLATE": "名牌称号",
"HEYA_NAME": "Name",
"HEYA_NAME_INFO": "Type your name (Confirm to save, Cancel to discard changes):",
// {0}: Asset name
"HEYA_DESCRIPTION_NAME": "姓名:{0}",

View File

@ -6882,21 +6882,21 @@ internal class CSkin : IDisposable {
#region Heya
case "Heya_Main_Menu_X": {
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 5; i++) {
for (int i = 0; i < Math.Min(6, strSplit.Length); i++) {
Heya_Main_Menu_X[i] = int.Parse(strSplit[i]);
}
break;
}
case "Heya_Main_Menu_Y": {
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 5; i++) {
for (int i = 0; i < Math.Min(6, strSplit.Length); i++) {
Heya_Main_Menu_Y[i] = int.Parse(strSplit[i]);
}
break;
}
case "Heya_Main_Menu_Font_Offset": {
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 5; i++) {
for (int i = 0; i < 2; i++) {
Heya_Main_Menu_Font_Offset[i] = int.Parse(strSplit[i]);
}
break;
@ -9164,8 +9164,8 @@ internal class CSkin : IDisposable {
#region Heya
public int[] Heya_Main_Menu_X = new int[] { 164, 164, 164, 164, 164 };
public int[] Heya_Main_Menu_Y = new int[] { 26, 106, 186, 266, 346 };
public int[] Heya_Main_Menu_X = new int[] { 164, 164, 164, 164, 164, 164 };
public int[] Heya_Main_Menu_Y = new int[] { 26, 106, 186, 266, 346, 426 };
public int[] Heya_Main_Menu_Font_Offset = new int[] { 0, 14 };
public int Heya_Center_Menu_Box_Count = 11;
public int[] Heya_Center_Menu_Box_X = new int[] { -890, -588, -286, 16, 318, 620, 922, 1224, 1526, 1828, 2130 };

View File

@ -100,7 +100,7 @@ public static class ImGuiDebugWindow {
ImGui.Text("Unknown: " + OpenTaiko.InputManager.InputDevices.Count(device => device.CurrentType == InputDeviceType.Unknown));
foreach (IInputDevice device in OpenTaiko.InputManager.InputDevices) {
if (ImGui.TreeNodeEx(device.CurrentType.ToString() + " (ID " + device.ID + " / Name: " + device.Name + ")")) {
if (ImGui.TreeNodeEx(device.CurrentType.ToString() + " (ID " + device.ID + " / Name: " + device.Name + " / GUID: " + device.GUID + ")")) {
switch (device.CurrentType) {
case InputDeviceType.Keyboard:
var keyboard = (CInputKeyboard)device;

View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenTaiko {
public static class HBlackBackdrop {
public static void Draw(int opacity = 255) {
if (OpenTaiko.Tx.Tile_Black != null) {
OpenTaiko.Tx.Tile_Black.Opacity = opacity;
for (int i = 0; i <= SampleFramework.GameWindowSize.Width; i += OpenTaiko.Tx.Tile_Black.szTextureSize.Width) {
for (int j = 0; j <= SampleFramework.GameWindowSize.Height; j += OpenTaiko.Tx.Tile_Black.szTextureSize.Height) {
OpenTaiko.Tx.Tile_Black.t2D描画(i, j);
}
}
OpenTaiko.Tx.Tile_Black.Opacity = 255;
}
}
}
}

View File

@ -181,14 +181,7 @@ internal class CStage起動 : CStage {
#endregion
} else if (OpenTaiko.ConfigIsNew && !bLanguageSelected) // Prompt language selection if Config.ini is newly generated
{
if (OpenTaiko.Tx.Tile_Black != null) {
OpenTaiko.Tx.Tile_Black.Opacity = 255;
for (int i = 0; i <= SampleFramework.GameWindowSize.Width; i += OpenTaiko.Tx.Tile_Black.szTextureSize.Width) {
for (int j = 0; j <= SampleFramework.GameWindowSize.Height; j += OpenTaiko.Tx.Tile_Black.szTextureSize.Height) {
OpenTaiko.Tx.Tile_Black.t2D描画(i, j);
}
}
}
HBlackBackdrop.Draw();
int x = langSelectOffset[0];
int y = langSelectOffset[1];

View File

@ -377,15 +377,8 @@ internal class CStageコンフィグ : CStage {
actCalibrationMode.Update();
actCalibrationMode.Draw();
} else if (actList.ScoreIniImportThreadIsActive) {
if (OpenTaiko.Tx.Tile_Black != null) {
OpenTaiko.Tx.Tile_Black.Opacity = 191;
for (int i = 0; i <= SampleFramework.GameWindowSize.Width; i += OpenTaiko.Tx.Tile_Black.szTextureSize.Width) {
for (int j = 0; j <= SampleFramework.GameWindowSize.Height; j += OpenTaiko.Tx.Tile_Black.szTextureSize.Height) {
OpenTaiko.Tx.Tile_Black.t2D描画(i, j);
}
}
OpenTaiko.Tx.Tile_Black.Opacity = 255;
}
HBlackBackdrop.Draw(191);
using (var prvFont = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Config_Font_Scale)) {
using (var status_text = new CTexture(prvFont.DrawText(
CScoreIni_Importer.Status,

View File

@ -14,6 +14,14 @@ class CStageHeya : CStage {
base.ChildActivities.Add(this.PuchiChara = new PuchiChara());
}
private enum CurrentMenu : int {
ReturnToMenu = -1,
Puchi,
Chara,
Dan,
Title,
Name
}
public override void Activate() {
if (base.IsActivated)
@ -38,17 +46,16 @@ class CStageHeya : CStage {
#region [Main menu]
this.ttkMainMenuOpt = new TitleTextureKey[5];
this.ttkMainMenuOpt = new TitleTextureKey[6];
this.ttkMainMenuOpt[0] = new TitleTextureKey(CLangManager.LangInstance.GetString("MENU_RETURN"), this.pfHeyaFont, Color.White, Color.DarkGreen, 1000);
this.ttkMainMenuOpt[1] = new TitleTextureKey(CLangManager.LangInstance.GetString("HEYA_PUCHI"), this.pfHeyaFont, Color.White, Color.DarkGreen, 1000);
this.ttkMainMenuOpt[2] = new TitleTextureKey(CLangManager.LangInstance.GetString("HEYA_CHARA"), this.pfHeyaFont, Color.White, Color.DarkGreen, 1000);
this.ttkMainMenuOpt[3] = new TitleTextureKey(CLangManager.LangInstance.GetString("HEYA_DAN"), this.pfHeyaFont, Color.White, Color.DarkGreen, 1000);
this.ttkMainMenuOpt[4] = new TitleTextureKey(CLangManager.LangInstance.GetString("HEYA_NAMEPLATE"), this.pfHeyaFont, Color.White, Color.DarkGreen, 1000);
//for (int i = 1; i < ttkMainMenuOpt.Length; i++)
//{
// this.ttkMainMenuOpt[i] = new TitleTextureKey(CLangManager.LangInstance.GetString(1030 + i), this.pfHeyaFont, Color.White, Color.DarkGreen, 1000);
//}
this.ttkMainMenuOpt[5] = new TitleTextureKey(CLangManager.LangInstance.GetString("HEYA_NAME"), this.pfHeyaFont, Color.White, Color.DarkGreen, 1000);
this.textInputInfo = new TitleTextureKey(CLangManager.LangInstance.GetString("HEYA_NAME_INFO"), this.pfHeyaFont, Color.White, Color.Black, 1000);
#endregion
@ -108,7 +115,7 @@ class CStageHeya : CStage {
#endregion
// -1 : Main Menu, >= 0 : See Main menu opt
iCurrentMenu = -1;
iCurrentMenu = CurrentMenu.ReturnToMenu;
iMainMenuCurrent = 0;
#region [PuchiChara stuff]
@ -141,6 +148,12 @@ class CStageHeya : CStage {
#endregion
#region [Name stuff]
textInput = new CTextInput("", 64);
textInput.Text = OpenTaiko.SaveFileInstances[iPlayer].data.Name;
textInputTitle = new TitleTextureKey("", pfHeyaFont, Color.White, Color.Black, 1000);
#endregion
this.tResetOpts();
this.PuchiChara.IdleAnimation();
@ -183,7 +196,7 @@ class CStageHeya : CStage {
for (int i = 0; i < this.ttkMainMenuOpt.Length; i++) {
CTexture tmpTex = TitleTextureKey.ResolveTitleTexture(this.ttkMainMenuOpt[i]);
if (iCurrentMenu != -1 || iMainMenuCurrent != i) {
if (iCurrentMenu != CurrentMenu.ReturnToMenu || iMainMenuCurrent != i) {
tmpTex.color4 = CConversion.ColorToColor4(Color.DarkGray);
OpenTaiko.Tx.Heya_Side_Menu?.tUpdateColor4(CConversion.ColorToColor4(Color.DarkGray));
} else {
@ -219,9 +232,9 @@ class CStageHeya : CStage {
OpenTaiko.Tx.Characters_Heya_Render[iCharacterCurrent].vcScaleRatio.X = renderRatioX;
OpenTaiko.Tx.Characters_Heya_Render[iCharacterCurrent].vcScaleRatio.Y = renderRatioY;
}
if (iCurrentMenu == 0 || iCurrentMenu == 1) OpenTaiko.Tx.Heya_Render_Field?.t2D描画(0, 0);
if (iCurrentMenu == 0) OpenTaiko.Tx.Puchichara[iPuchiCharaCurrent].render?.t2D描画(0, 0);
if (iCurrentMenu == 1) OpenTaiko.Tx.Characters_Heya_Render[iCharacterCurrent]?.t2D描画(OpenTaiko.Skin.Characters_Heya_Render_Offset[iCharacterCurrent][0] * renderRatioX, OpenTaiko.Skin.Characters_Heya_Render_Offset[iCharacterCurrent][1] * renderRatioY);
if (iCurrentMenu == CurrentMenu.Puchi || iCurrentMenu == CurrentMenu.Chara) OpenTaiko.Tx.Heya_Render_Field?.t2D描画(0, 0);
if (iCurrentMenu == CurrentMenu.Puchi) OpenTaiko.Tx.Puchichara[iPuchiCharaCurrent].render?.t2D描画(0, 0);
if (iCurrentMenu == CurrentMenu.Chara) OpenTaiko.Tx.Characters_Heya_Render[iCharacterCurrent]?.t2D描画(OpenTaiko.Skin.Characters_Heya_Render_Offset[iCharacterCurrent][0] * renderRatioX, OpenTaiko.Skin.Characters_Heya_Render_Offset[iCharacterCurrent][1] * renderRatioY);
#endregion
@ -229,7 +242,7 @@ class CStageHeya : CStage {
#region [Petit chara]
if (iCurrentMenu == 0) {
if (iCurrentMenu == CurrentMenu.Puchi) {
for (int i = -(OpenTaiko.Skin.Heya_Center_Menu_Box_Count / 2); i < (OpenTaiko.Skin.Heya_Center_Menu_Box_Count / 2) + 1; i++) {
int pos = (iPuchiCharaCount * 5 + iPuchiCharaCurrent + i) % iPuchiCharaCount;
@ -294,7 +307,7 @@ class CStageHeya : CStage {
#region [Character]
if (iCurrentMenu == 1) {
if (iCurrentMenu == CurrentMenu.Chara) {
for (int i = -(OpenTaiko.Skin.Heya_Center_Menu_Box_Count / 2); i < (OpenTaiko.Skin.Heya_Center_Menu_Box_Count / 2) + 1; i++) {
int pos = (iCharacterCount * 5 + iCharacterCurrent + i) % iCharacterCount;
@ -356,7 +369,7 @@ class CStageHeya : CStage {
#region [Dan title]
if (iCurrentMenu == 2) {
if (iCurrentMenu == CurrentMenu.Dan) {
for (int i = -(OpenTaiko.Skin.Heya_Side_Menu_Count / 2); i < (OpenTaiko.Skin.Heya_Side_Menu_Count / 2) + 1; i++) {
int pos = (this.ttkDanTitles.Length * 5 + iDanTitleCurrent + i) % this.ttkDanTitles.Length;
@ -364,11 +377,11 @@ class CStageHeya : CStage {
if (i != 0) {
tmpTex.color4 = CConversion.ColorToColor4(Color.DarkGray);
OpenTaiko.Tx.Heya_Side_Menu.color4 = CConversion.ColorToColor4(Color.DarkGray);
OpenTaiko.Tx.Heya_Side_Menu?.tUpdateColor4(CConversion.ColorToColor4(Color.DarkGray));
//TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.DarkGray);
} else {
tmpTex.color4 = CConversion.ColorToColor4(Color.White);
OpenTaiko.Tx.Heya_Side_Menu.color4 = CConversion.ColorToColor4(Color.White);
OpenTaiko.Tx.Heya_Side_Menu?.tUpdateColor4(CConversion.ColorToColor4(Color.White));
//TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.White);
}
@ -397,7 +410,7 @@ class CStageHeya : CStage {
#region [Title plate]
if (iCurrentMenu == 3) {
if (iCurrentMenu == CurrentMenu.Title) {
for (int i = -(OpenTaiko.Skin.Heya_Side_Menu_Count / 2); i < (OpenTaiko.Skin.Heya_Side_Menu_Count / 2) + 1; i++) {
int pos = (this.ttkTitles.Length * 5 + iTitleCurrent + i) % this.ttkTitles.Length;
@ -443,6 +456,19 @@ class CStageHeya : CStage {
}
}
if (iCurrentMenu == CurrentMenu.Name) {
textInput.Update();
HBlackBackdrop.Draw(191);
if (textInput.Text != textInputTitle.str) { textInputTitle = new TitleTextureKey(textInput.Text, pfHeyaFont, Color.White, Color.Black, 1000); }
CTexture text_tex = TitleTextureKey.ResolveTitleTexture(textInputTitle);
CTexture text_info = TitleTextureKey.ResolveTitleTexture(textInputInfo);
text_info.t2D_DisplayImage_AnchorCenter(960, 540);
text_tex.t2D_DisplayImage_AnchorCenter(960, 540 + text_info.szTextureSize.Height);
}
#endregion
#endregion
@ -464,8 +490,8 @@ class CStageHeya : CStage {
#region [Asset description]
if (this.ttkInfoSection == null || this.ttkInfoSection.str == "") {
if (iCurrentMenu == 0) CHeyaDisplayAssetInformations.DisplayPuchicharaInfo(this.pfHeyaFont, OpenTaiko.Tx.Puchichara[iPuchiCharaCurrent]);
if (iCurrentMenu == 1) CHeyaDisplayAssetInformations.DisplayCharacterInfo(this.pfHeyaFont, OpenTaiko.Tx.Characters[iCharacterCurrent]);
if (iCurrentMenu == CurrentMenu.Puchi) CHeyaDisplayAssetInformations.DisplayPuchicharaInfo(this.pfHeyaFont, OpenTaiko.Tx.Puchichara[iPuchiCharaCurrent]);
if (iCurrentMenu == CurrentMenu.Chara) CHeyaDisplayAssetInformations.DisplayCharacterInfo(this.pfHeyaFont, OpenTaiko.Tx.Characters[iCharacterCurrent]);
}
#endregion
@ -539,19 +565,22 @@ class CStageHeya : CStage {
ESelectStatus ess = ESelectStatus.SELECTED;
// Return to main menu
if (iCurrentMenu == -1 && iMainMenuCurrent == 0) {
if (iCurrentMenu == CurrentMenu.ReturnToMenu && iMainMenuCurrent == 0) {
OpenTaiko.Skin.soundHeyaBGM.tStop();
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.actFOtoTitle.tフェードアウト開始();
base.ePhaseID = CStage.EPhase.Common_FADEOUT;
} else if (iCurrentMenu == -1) {
iCurrentMenu = iMainMenuCurrent - 1;
} else if (iCurrentMenu == CurrentMenu.ReturnToMenu) {
iCurrentMenu = (CurrentMenu)iMainMenuCurrent - 1;
if (iCurrentMenu == 0) {
if (iCurrentMenu == CurrentMenu.Puchi) {
this.tUpdateUnlockableTextChara();
this.tUpdateUnlockableTextPuchi();
}
} else if (iCurrentMenu == 0) {
else if (iCurrentMenu == CurrentMenu.Name) {
textInput.Text = OpenTaiko.SaveFileInstances[iPlayer].data.Name;
}
} else if (iCurrentMenu == CurrentMenu.Puchi) {
ess = this.tSelectPuchi();
if (ess == ESelectStatus.SELECTED) {
@ -562,7 +591,7 @@ class CStageHeya : CStage {
OpenTaiko.SaveFileInstances[iPlayer].tApplyHeyaChanges();
OpenTaiko.Tx.Puchichara[iPuchiCharaCurrent].welcome.tPlay();
iCurrentMenu = -1;
iCurrentMenu = CurrentMenu.ReturnToMenu;
this.tResetOpts();
} else if (ess == ESelectStatus.SUCCESS) {
//TJAPlayer3.NamePlateConfig.data.UnlockedPuchicharas[iPlayer].Add(TJAPlayer3.Skin.Puchicharas_Name[iPuchiCharaCurrent]);
@ -573,7 +602,7 @@ class CStageHeya : CStage {
OpenTaiko.SaveFileInstances[iPlayer].tSpendCoins(OpenTaiko.Tx.Puchichara[iPuchiCharaCurrent].unlock.Values[0]);
}
} else if (iCurrentMenu == 1) {
} else if (iCurrentMenu == CurrentMenu.Chara) {
ess = this.tSelectChara();
if (ess == ESelectStatus.SELECTED) {
@ -593,7 +622,7 @@ class CStageHeya : CStage {
OpenTaiko.SaveFileInstances[iPlayer].tApplyHeyaChanges();
iCurrentMenu = -1;
iCurrentMenu = CurrentMenu.ReturnToMenu;
this.tResetOpts();
} else if (ess == ESelectStatus.SUCCESS) {
OpenTaiko.SaveFileInstances[iPlayer].data.UnlockedCharacters.Add(OpenTaiko.Skin.Characters_DirName[iCharacterCurrent]);
@ -602,7 +631,7 @@ class CStageHeya : CStage {
OpenTaiko.SaveFileInstances[iPlayer].tSpendCoins(OpenTaiko.Tx.Characters[iCharacterCurrent].unlock.Values[0]);
// Play modal animation here ?
}
} else if (iCurrentMenu == 2) {
} else if (iCurrentMenu == CurrentMenu.Dan) {
bool iG = false;
int cs = 0;
@ -619,9 +648,9 @@ class CStageHeya : CStage {
OpenTaiko.SaveFileInstances[iPlayer].tApplyHeyaChanges();
iCurrentMenu = -1;
iCurrentMenu = CurrentMenu.ReturnToMenu;
this.tResetOpts();
} else if (iCurrentMenu == 3) {
} else if (iCurrentMenu == CurrentMenu.Title) {
OpenTaiko.SaveFileInstances[iPlayer].data.Title = this.ttkTitles[iTitleCurrent].str;
if (OpenTaiko.SaveFileInstances[iPlayer].data.UnlockedNameplateIds != null
@ -645,7 +674,15 @@ class CStageHeya : CStage {
OpenTaiko.SaveFileInstances[iPlayer].tApplyHeyaChanges();
iCurrentMenu = -1;
iCurrentMenu = CurrentMenu.ReturnToMenu;
this.tResetOpts();
}
else if (iCurrentMenu == CurrentMenu.Name) {
OpenTaiko.SaveFileInstances[iPlayer].data.Name = textInput.Text;
OpenTaiko.SaveFileInstances[iPlayer].tApplyHeyaChanges();
OpenTaiko.NamePlate.tNamePlateRefreshTitles(iPlayer);
iCurrentMenu = CurrentMenu.ReturnToMenu;
this.tResetOpts();
}
@ -657,18 +694,19 @@ class CStageHeya : CStage {
OpenTaiko.Skin.SoundBanapas.tPlay(); // To change with a more appropriate sfx sooner or later
#endregion
} else if (OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Escape) ||
}
else if (OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Escape) ||
OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.Cancel)) {
OpenTaiko.Skin.soundCancelSFX.tPlay();
if (iCurrentMenu == -1) {
if (iCurrentMenu == CurrentMenu.ReturnToMenu) {
OpenTaiko.Skin.soundHeyaBGM.tStop();
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.actFOtoTitle.tフェードアウト開始();
base.ePhaseID = CStage.EPhase.Common_FADEOUT;
} else {
iCurrentMenu = -1;
iCurrentMenu = CurrentMenu.ReturnToMenu;
this.ttkInfoSection = null;
this.tResetOpts();
}
@ -719,7 +757,7 @@ class CStageHeya : CStage {
private int iDanTitleCurrent;
private int iTitleCurrent;
private int iCurrentMenu;
private CurrentMenu iCurrentMenu;
private void tResetOpts() {
// Retrieve titles if they exist
@ -764,20 +802,28 @@ class CStageHeya : CStage {
ScrollMode = off;
ScrollCounter.CurrentValue = 0;
if (iCurrentMenu == -1)
iMainMenuCurrent = (this.ttkMainMenuOpt.Length + iMainMenuCurrent + off) % this.ttkMainMenuOpt.Length;
else if (iCurrentMenu == 0) {
iPuchiCharaCurrent = (iPuchiCharaCount + iPuchiCharaCurrent + off) % iPuchiCharaCount;
tUpdateUnlockableTextPuchi();
} else if (iCurrentMenu == 1) {
iCharacterCurrent = (iCharacterCount + iCharacterCurrent + off) % iCharacterCount;
tUpdateUnlockableTextChara();
} else if (iCurrentMenu == 2)
iDanTitleCurrent = (this.ttkDanTitles.Length + iDanTitleCurrent + off) % this.ttkDanTitles.Length;
else if (iCurrentMenu == 3)
iTitleCurrent = (this.ttkTitles.Length + iTitleCurrent + off) % this.ttkTitles.Length;
else
return false;
switch (iCurrentMenu) {
case CurrentMenu.ReturnToMenu:
iMainMenuCurrent = (this.ttkMainMenuOpt.Length + iMainMenuCurrent + off) % this.ttkMainMenuOpt.Length;
break;
case CurrentMenu.Puchi:
iPuchiCharaCurrent = (iPuchiCharaCount + iPuchiCharaCurrent + off) % iPuchiCharaCount;
tUpdateUnlockableTextPuchi();
break;
case CurrentMenu.Chara:
iCharacterCurrent = (iCharacterCount + iCharacterCurrent + off) % iCharacterCount;
tUpdateUnlockableTextChara();
break;
case CurrentMenu.Dan:
iDanTitleCurrent = (this.ttkDanTitles.Length + iDanTitleCurrent + off) % this.ttkDanTitles.Length;
break;
case CurrentMenu.Title:
iTitleCurrent = (this.ttkTitles.Length + iTitleCurrent + off) % this.ttkTitles.Length;
break;
default:
return false;
}
return true;
}
@ -922,6 +968,11 @@ class CStageHeya : CStage {
private int iPuchiCharaCount;
private int iCharacterCount;
private TitleTextureKey textInputInfo;
private TitleTextureKey textInputTitle;
private CTextInput textInput;
private bool isInputtingText;
private CCounter ScrollCounter;
private const int SideInterval_X = 10;
private const int SideInterval_Y = 70;

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FDK;
using ImGuiNET;
namespace OpenTaiko {
public class CTextInput {
public CTextInput() { }
/// <summary>
///
/// </summary>
/// <param name="text">Text to start with. Changes as user inputs text.</param>
/// <param name="max_length">Max length in bytes that the string can be.</param>
public CTextInput(string text, uint max_length) : base() {
Text = text;
MaxLength = max_length;
}
/// <summary>
/// Returns <c>true</c> if the user presses Enter to confirm their text.
/// </summary>
public bool Update() {
ImGui.SetNextWindowSize(new(300,150));
ImGui.Begin("Text Input", ImGuiWindowFlags.NoResize);
ImGui.SetKeyboardFocusHere();
if (ImGui.InputText("text :)", ref Text, MaxLength, ImGuiInputTextFlags.EnterReturnsTrue)) return true;
ImGui.Text("This window is only visible in Debug mode.\nThis will never show on a Release build.\nDon't run multiple CInputText at once!");
ImGui.End();
return false;
}
public string Text = "";
/// <summary>
/// Length in bytes, not char count.
/// </summary>
public uint MaxLength = 64;
}
}