1
0
mirror of synced 2025-02-06 22:34:26 +01:00

新Speech_Bubbleを追加 (#504)

* 新Speech_Bubbleを追加

* 修正

* SpeechTextを多言語対応
This commit is contained in:
Takkkom 2023-10-08 11:10:43 +09:00 committed by GitHub
parent a1918d1239
commit a21ca9e1d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 254 additions and 12 deletions

View File

@ -2,4 +2,48 @@
"name" : "New Template",
"rarity": "Common",
"author": "[Author]",
"speechtext":[
{
"strings":{
"default":"simplestyleSweat",
"fr":"simplestyleSweat",
"ja":"simplestyleSweat"
}
},
{
"strings":{
"default":"...",
"fr":"...",
"ja":"..."
}
},
{
"strings":{
"default":"○",
"fr":"○",
"ja":"○"
}
},
{
"strings":{
"default":"◎",
"fr":"◎",
"ja":"◎"
}
},
{
"strings":{
"default":"★",
"fr":"★",
"ja":"★"
}
},
{
"strings":{
"default":"!!!!",
"fr":"!!!!",
"ja":"!!!!"
}
}
]
}

View File

@ -6541,6 +6541,38 @@ namespace TJAPlayer3
Result_Speech_Bubble_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Result_Speech_Bubble_V2_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Result_Speech_Bubble_V2_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Result_Speech_Bubble_V2_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Result_Speech_Bubble_V2_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Result_Speech_Bubble_V2_2P_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Result_Speech_Bubble_V2_2P_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Result_Speech_Bubble_V2_2P_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Result_Speech_Bubble_V2_2P_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == nameof(Result_MusicName_X))
{
Result_MusicName_X = int.Parse(strParam);
@ -7078,6 +7110,38 @@ namespace TJAPlayer3
Result_CrownEffect_5P[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Result_Speech_Bubble_V2_4P")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Result_Speech_Bubble_V2_4P[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Result_Speech_Bubble_V2_5P")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Result_Speech_Bubble_V2_5P[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Result_Speech_Text_Offset")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Result_Speech_Text_Offset[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Result_Speech_Text_Size")
{
Result_Speech_Text_Size = int.Parse(strParam);
}
else if (strCommand == "Result_Speech_Text_MaxWidth")
{
Result_Speech_Text_MaxWidth = int.Parse(strParam);
}
else if (strCommand == "Result_NamePlate_4P")
{
string[] strSplit = strParam.Split(',');
@ -9548,6 +9612,12 @@ namespace TJAPlayer3
public int[] Result_Speech_Bubble_X = new int[] { 430, 850 };
public int[] Result_Speech_Bubble_Y = new int[] { 526, 526 };
public int[] Result_Speech_Bubble_V2_X = new int[] { 0, 0 };
public int[] Result_Speech_Bubble_V2_Y = new int[] { 0, 0 };
public int[] Result_Speech_Bubble_V2_2P_X = new int[] { 0, 0 };
public int[] Result_Speech_Bubble_V2_2P_Y = new int[] { 0, 0 };
public int[] Result_NamePlate_X = new int[] { 28, 1032 };
public int[] Result_NamePlate_Y = new int[] { 621, 621 };
@ -9649,6 +9719,16 @@ namespace TJAPlayer3
public int[] Result_CrownEffect_4P = new int[] { 220, 545 };
public int[] Result_CrownEffect_5P = new int[] { 188, 545 };
public int[] Result_Speech_Bubble_V2_4P = new int[] { 0, 0 };
public int[] Result_Speech_Bubble_V2_5P = new int[] { 0, 0 };
public int[] Result_Speech_Text_Offset = new int[] { 0, 0 };
public int Result_Speech_Text_Size = 60;
public int Result_Speech_Text_MaxWidth = 560;
public int[] Result_NamePlate_4P = new int[] { 80, 621 };
public int[] Result_NamePlate_5P = new int[] { 31, 621 };

View File

@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
namespace TJAPlayer3
{
class DBCharacter
@ -43,13 +43,15 @@ namespace TJAPlayer3
Name = "(None)";
Rarity = "Common";
Author = "(None)";
SpeechText = new CLocalizationData[6] { new CLocalizationData(), new CLocalizationData(), new CLocalizationData(), new CLocalizationData(), new CLocalizationData(), new CLocalizationData() };
}
public CharacterData(string pcn, string pcr, string pca)
public CharacterData(string pcn, string pcr, string pca, CLocalizationData[] pcst)
{
Name = pcn;
Rarity = pcr;
Author = pca;
SpeechText = pcst;
}
@ -61,6 +63,9 @@ namespace TJAPlayer3
[JsonProperty("author")]
public string Author;
[JsonProperty("speechtext")]
public CLocalizationData[] SpeechText;
}
}

View File

@ -30,20 +30,20 @@ namespace TJAPlayer3
_path = path;
// Character metadata
if (File.Exists($@"{path}\Metadata.json"))
metadata = ConfigManager.GetConfig<DBCharacter.CharacterData>($@"{path}\Metadata.json");
if (File.Exists($@"{path}{Path.DirectorySeparatorChar}Metadata.json"))
metadata = ConfigManager.GetConfig<DBCharacter.CharacterData>($@"{path}{Path.DirectorySeparatorChar}Metadata.json");
else
metadata = new DBCharacter.CharacterData();
// Character metadata
if (File.Exists($@"{path}\Effects.json"))
effect = ConfigManager.GetConfig<DBCharacter.CharacterEffect>($@"{path}\Effects.json");
if (File.Exists($@"{path}{Path.DirectorySeparatorChar}Effects.json"))
effect = ConfigManager.GetConfig<DBCharacter.CharacterEffect>($@"{path}{Path.DirectorySeparatorChar}Effects.json");
else
effect = new DBCharacter.CharacterEffect();
// Character unlockables
if (File.Exists($@"{path}\Unlock.json"))
unlock = ConfigManager.GetConfig<DBUnlockables.CUnlockConditions>($@"{path}\Unlock.json");
if (File.Exists($@"{path}{Path.DirectorySeparatorChar}Unlock.json"))
unlock = ConfigManager.GetConfig<DBUnlockables.CUnlockConditions>($@"{path}{Path.DirectorySeparatorChar}Unlock.json");
else
unlock = null;
}

View File

@ -1084,6 +1084,10 @@ namespace TJAPlayer3
Result_Speech_Bubble[0] = TxC(RESULT + @$"Speech_Bubble.png");
Result_Speech_Bubble[1] = TxC(RESULT + @$"Speech_Bubble_2.png");
Result_Speech_Bubble_V2[0] = TxC(RESULT + @$"Speech_Bubble_V2_Left.png");
Result_Speech_Bubble_V2[1] = TxC(RESULT + @$"Speech_Bubble_V2_Right.png");
Result_Speech_Bubble_V2[2] = TxC(RESULT + @$"Speech_Bubble_V2_4P_5P.png");
Result_Flower = TxC(RESULT + @$"Flower{Path.DirectorySeparatorChar}Flower.png");
for (int i = 0; i < 4; i++)
@ -2170,6 +2174,17 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Result_Failed_AnimationDuration[i] = int.Parse(strParam);
break;
}
/*
case "Chara_Result_SpeechText":
{
string[] strSplit = strParam.Split(',');
for (int j = 0; j < 6; j++)
{
TJAPlayer3.Skin.Characters_Result_SpeechText[i][j] = strSplit[j];
}
break;
}
*/
default: { break; }
}
}
@ -2714,7 +2729,8 @@ namespace TJAPlayer3
Result_Gauge = new CTexture[5],
Result_Gauge_Base = new CTexture[5],
Result_Speech_Bubble = new CTexture[2]
Result_Speech_Bubble = new CTexture[2],
Result_Speech_Bubble_V2 = new CTexture[3]
/*,
Result_Mountain = new CTexture[4]*/;
#endregion

View File

@ -198,6 +198,21 @@ namespace TJAPlayer3
ttkAISection[i] = new CActSelect曲リスト.TitleTextureKey($"{i + 1}区", pfAISectionText, Color.White, Color.Black, 1280);
}
for (int i = 0; i < 5; i++)
{
ttkSpeechText[i] = new CActSelect曲リスト.TitleTextureKey[6];
int _charaId = TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(i)].data.Character;
for (int j = 0; j < 6; j++)
{
// { "simplestyleSweat", "...", "○", "◎", "★", "!!!!" }
ttkSpeechText[i][j] = new CActSelect曲リスト.TitleTextureKey(
TJAPlayer3.Tx.Characters[_charaId].metadata.SpeechText[j].GetString(""),
pfSpeechText, Color.White, Color.Black, TJAPlayer3.Skin.Result_Speech_Text_MaxWidth);
}
}
ct全体進行 = new CCounter(0, 50000, 1, TJAPlayer3.Timer);
@ -269,12 +284,14 @@ namespace TJAPlayer3
}
public override void CreateManagedResource()
{
pfSpeechText = new CCachedFontRenderer(TJAPlayer3.ConfigIni.FontName, TJAPlayer3.Skin.Result_Speech_Text_Size);
pfAISectionText = new CCachedFontRenderer(TJAPlayer3.ConfigIni.FontName, TJAPlayer3.Skin.Result_AIBattle_SectionText_Scale);
base.CreateManagedResource();
}
public override void ReleaseManagedResource()
{
TJAPlayer3.t安全にDisposeする(ref pfSpeechText);
TJAPlayer3.t安全にDisposeする(ref pfAISectionText);
base.ReleaseManagedResource();
@ -962,6 +979,7 @@ namespace TJAPlayer3
// Speech Bubble
int Mood = 0;
int MoodV2 = 0;
if (gaugeValues[p] >= 100.0f)
Mood = 3;
@ -970,6 +988,37 @@ namespace TJAPlayer3
else if (gaugeValues[p] >= 40.0f)
Mood = 1;
if (TJAPlayer3.stage結果.nクリア[p] == 3)
{
MoodV2 = 5;
}
else if (TJAPlayer3.stage結果.nクリア[p] == 2)
{
MoodV2 = 4;
}
else if (TJAPlayer3.stage結果.nクリア[p] == 1)
{
if (gaugeValues[p] >= 100.0f)
{
MoodV2 = 3;
}
else
{
MoodV2 = 2;
}
}
else if (TJAPlayer3.stage結果.nクリア[p] == 0)
{
if (gaugeValues[p] >= 40.0f)
{
MoodV2 = 1;
}
else
{
MoodV2 = 0;
}
}
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
{
int speechBuddle_width = TJAPlayer3.Tx.Result_Speech_Bubble[pos].szテクスチャサイズ.Width / 4;
@ -980,6 +1029,51 @@ namespace TJAPlayer3
TJAPlayer3.Tx.Result_Speech_Bubble[pos].t2D拡大率考慮中央基準描画(TJAPlayer3.Skin.Result_Speech_Bubble_X[pos], TJAPlayer3.Skin.Result_Speech_Bubble_Y[pos],
new Rectangle(Mood * speechBuddle_width, RandomText * speechBuddle_height, speechBuddle_width, speechBuddle_height));
}
int speech_vubble_index = TJAPlayer3.ConfigIni.nPlayerCount <= 2 ? pos : 2;
if (TJAPlayer3.Tx.Result_Speech_Bubble_V2[speech_vubble_index] != null)
{
int speechBuddle_width = TJAPlayer3.Tx.Result_Speech_Bubble_V2[speech_vubble_index].szテクスチャサイズ.Width;
int speechBuddle_height = TJAPlayer3.Tx.Result_Speech_Bubble_V2[speech_vubble_index].szテクスチャサイズ.Height / 6;
int speech_bubble_x;
int speech_bubble_y;
float scale;
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
speech_bubble_x = TJAPlayer3.Skin.Result_Speech_Bubble_V2_5P[0] + TJAPlayer3.Skin.Result_UIMove_5P_X[pos];
speech_bubble_y = TJAPlayer3.Skin.Result_Speech_Bubble_V2_5P[1] + TJAPlayer3.Skin.Result_UIMove_5P_Y[pos];
scale = 0.5f;
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
speech_bubble_x = TJAPlayer3.Skin.Result_Speech_Bubble_V2_4P[0] + TJAPlayer3.Skin.Result_UIMove_4P_X[pos];
speech_bubble_y = TJAPlayer3.Skin.Result_Speech_Bubble_V2_4P[1] + TJAPlayer3.Skin.Result_UIMove_4P_Y[pos];
scale = 0.5f;
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 2)
{
speech_bubble_x = TJAPlayer3.Skin.Result_Speech_Bubble_V2_2P_X[pos];
speech_bubble_y = TJAPlayer3.Skin.Result_Speech_Bubble_V2_2P_Y[pos];
scale = 0.5f;
}
else
{
speech_bubble_x = TJAPlayer3.Skin.Result_Speech_Bubble_V2_X[pos];
speech_bubble_y = TJAPlayer3.Skin.Result_Speech_Bubble_V2_Y[pos];
scale = 1.0f;
}
TJAPlayer3.Tx.Result_Speech_Bubble_V2[speech_vubble_index].vc拡大縮小倍率.X = 0.9f * scale * (ct全体進行.CurrentValue <= MountainAppearValue + AddCount ? 1.3f - (float)Math.Sin((ct全体進行.CurrentValue - MountainAppearValue) / (AddCount / 90) * (Math.PI / 180)) * 0.3f : 1.0f);
TJAPlayer3.Tx.Result_Speech_Bubble_V2[speech_vubble_index].vc拡大縮小倍率.Y = 0.9f * scale * (ct全体進行.CurrentValue <= MountainAppearValue + AddCount ? 1.3f - (float)Math.Sin((ct全体進行.CurrentValue - MountainAppearValue) / (AddCount / 90) * (Math.PI / 180)) * 0.3f : 1.0f);
TJAPlayer3.Tx.Result_Speech_Bubble_V2[speech_vubble_index].t2D拡大率考慮中央基準描画(speech_bubble_x, speech_bubble_y,
new Rectangle(0, MoodV2 * speechBuddle_height, speechBuddle_width, speechBuddle_height));
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkSpeechText[p][MoodV2]).vc拡大縮小倍率.X = scale;
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkSpeechText[p][MoodV2]).vc拡大縮小倍率.Y = scale;
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkSpeechText[p][MoodV2]).t2D拡大率考慮中央基準描画(
speech_bubble_x + (int)(TJAPlayer3.Skin.Result_Speech_Text_Offset[0] * scale),
speech_bubble_y + (int)(TJAPlayer3.Skin.Result_Speech_Text_Offset[1] * scale));
}
if (!b音声再生[11])
{
if (gaugeValues[p] >= 80.0f)
@ -1229,6 +1323,9 @@ namespace TJAPlayer3
private CActSelect曲リスト.TitleTextureKey[] ttkAISection;
private CActSelect曲リスト.TitleTextureKey[][] ttkSpeechText = new CActSelect曲リスト.TitleTextureKey[5][];
private CCachedFontRenderer pfSpeechText;
private CCachedFontRenderer pfAISectionText;
private CCounter ctAISectionChange;