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

Translate japanese variables and code (part 2) (#708)

* feat: translate CConversion

* feat: CConfigIni part 1

* feat: CConfigIni part 2

* feat: CConfigIni part 3
This commit is contained in:
Julian Holfeld 2024-10-20 18:54:08 +02:00 committed by GitHub
parent 92b096c159
commit c610b3ad93
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 414 additions and 479 deletions

View File

@ -2,11 +2,10 @@
public class CConversion {
// Properties
public static readonly string str16進数文字 = "0123456789ABCDEFabcdef";
public static readonly string str36進数文字 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
public static readonly string HexChars = "0123456789ABCDEFabcdef";
public static readonly string Base36Chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
// メソッド
// Methods
public static bool bONorOFF(char c) {
return (c != '0');
@ -25,7 +24,7 @@
return (float)RadianToDegree((double)angle);
}
public static int n値を範囲内に丸めて返す(int value, int min, int max) {
public static int ClampValue(int value, int min, int max) {
if (value < min)
return min;
@ -34,7 +33,8 @@
return value;
}
public static int n値を文字列から取得して範囲内に丸めて返す(string text, int min, int max, int defaultValue) {
public static int ParseIntInRange(string text, int min, int max, int defaultValue) {
int num;
if ((int.TryParse(text, out num) && (num >= min)) && (num <= max))
return num;
@ -42,7 +42,7 @@
return defaultValue;
}
public static double db値を文字列から取得して範囲内に丸めて返す(string text, double min, double max, double defaultValue) {
public static double ParseDoubleInRange(string text, double min, double max, double defaultValue) {
double num;
if ((double.TryParse(text, out num) && (num >= min)) && (num <= max))
return num;
@ -50,9 +50,7 @@
return defaultValue;
}
// #23568 2010.11.04 ikanick add
public static int n値を文字列から取得して範囲内にちゃんと丸めて返す(string text, int min, int max, int defaultValue) {
// 1 と違って範囲外の場合ちゃんと丸めて返します。
public static int ParseIntInRangeAndClamp(string text, int min, int max, int defaultValue) {
int num;
if (int.TryParse(text, out num)) {
if ((num >= min) && (num <= max))
@ -65,7 +63,7 @@
return defaultValue;
}
// --------------------ここまで-------------------------/
public static int StringToInt(string text, int defaultValue) {
int num;
if (!int.TryParse(text, out num))
@ -74,18 +72,18 @@
return num;
}
public static int n16進数2桁の文字列を数値に変換して返す(string strNum) {
public static int HexStringToInt(string strNum) {
if (strNum.Length < 2)
return -1;
int digit2 = str16進数文字.IndexOf(strNum[0]);
int digit2 = HexChars.IndexOf(strNum[0]);
if (digit2 < 0)
return -1;
if (digit2 >= 16)
digit2 -= (16 - 10); // A,B,C... -> 1,2,3...
int digit1 = str16進数文字.IndexOf(strNum[1]);
int digit1 = HexChars.IndexOf(strNum[1]);
if (digit1 < 0)
return -1;
@ -94,18 +92,19 @@
return digit2 * 16 + digit1;
}
public static int n36進数2桁の文字列を数値に変換して返す(string strNum) {
public static int Base36StringToInt(string strNum) {
if (strNum.Length < 2)
return -1;
int digit2 = str36進数文字.IndexOf(strNum[0]);
int digit2 = Base36Chars.IndexOf(strNum[0]);
if (digit2 < 0)
return -1;
if (digit2 >= 36)
digit2 -= (36 - 10); // A,B,C... -> 1,2,3...
int digit1 = str36進数文字.IndexOf(strNum[1]);
int digit1 = Base36Chars.IndexOf(strNum[1]);
if (digit1 < 0)
return -1;
@ -114,52 +113,55 @@
return digit2 * 36 + digit1;
}
public static int n小節番号の文字列3桁を数値に変換して返す(string strNum) {
public static int ParseSectionNumber(string strNum) {
if (strNum.Length >= 3) {
int digit3 = str36進数文字.IndexOf(strNum[0]);
int digit3 = Base36Chars.IndexOf(strNum[0]);
if (digit3 < 0)
return -1;
if (digit3 >= 36) // 3桁目は36進数
digit3 -= (36 - 10);
int digit2 = str16進数文字.IndexOf(strNum[1]); // 2桁目は10進数
int digit2 = HexChars.IndexOf(strNum[1]); // 2桁目は10進数
if ((digit2 < 0) || (digit2 > 9))
return -1;
int digit1 = str16進数文字.IndexOf(strNum[2]); // 1桁目も10進数
int digit1 = HexChars.IndexOf(strNum[2]); // 1桁目も10進数
if ((digit1 >= 0) && (digit1 <= 9))
return digit3 * 100 + digit2 * 10 + digit1;
}
return -1;
}
public static string str小節番号を文字列3桁に変換して返す(int num) {
public static string SectionNumberToString(int num) {
if ((num < 0) || (num >= 3600)) // 3600 == Z99 + 1
return "000";
int digit4 = num / 100;
int digit2 = (num % 100) / 10;
int digit1 = (num % 100) % 10;
char ch3 = str36進数文字[digit4];
char ch2 = str16進数文字[digit2];
char ch1 = str16進数文字[digit1];
char ch3 = Base36Chars[digit4];
char ch2 = HexChars[digit2];
char ch1 = HexChars[digit1];
return (ch3.ToString() + ch2.ToString() + ch1.ToString());
}
public static string str数値を16進数2桁に変換して返す(int num) {
public static string IntToHexString(int num) {
if ((num < 0) || (num >= 0x100))
return "00";
char ch2 = str16進数文字[num / 0x10];
char ch1 = str16進数文字[num % 0x10];
char ch2 = HexChars[num / 0x10];
char ch1 = HexChars[num % 0x10];
return (ch2.ToString() + ch1.ToString());
}
public static string str数値を36進数2桁に変換して返す(int num) {
public static string IntToBase36String(int num) {
if ((num < 0) || (num >= 36 * 36))
return "00";
char ch2 = str36進数文字[num / 36];
char ch1 = str36進数文字[num % 36];
char ch2 = Base36Chars[num / 36];
char ch1 = Base36Chars[num % 36];
return (ch2.ToString() + ch1.ToString());
}
@ -184,29 +186,28 @@
return nArray;
}
/// <summary>
/// 百分率数値を255段階数値に変換するメソッド。透明度用。
/// Converts a percentage value to a value on a scale of 255 (for opacity).
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static int nParsentTo255(double num) {
public static int PercentageTo255(double num) {
return (int)(255.0 * num);
}
/// <summary>
/// 255段階数値を百分率に変換するメソッド。
/// Converts a value from a scale of 255 to a percentage.
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static int n255ToParsent(int num) {
public static int N255ToPercentage(int num) {
return (int)(100.0 / num);
}
public static Color4 n255ToColor4(int nR, int nG, int nB) {
float fR = n255ToParsent(nR);
float fG = n255ToParsent(nG);
float fB = n255ToParsent(nB);
public static Color4 N255ToColor4(int nR, int nG, int nB) {
float fR = N255ToPercentage(nR);
float fG = N255ToPercentage(nG);
float fB = N255ToPercentage(nB);
return new Color4(fR, fG, fB, 1f);
}

File diff suppressed because it is too large Load Diff

View File

@ -1015,7 +1015,7 @@ namespace OpenTaiko {
}
case "DiffDispMode": {
this.eDiffDispMode = (EDifficultyDisplayType)CConversion.n値を文字列から取得して範囲内に丸めて返す(strParam, 0, 2, (int)this.eDiffDispMode);
this.eDiffDispMode = (EDifficultyDisplayType)CConversion.ParseIntInRange(strParam, 0, 2, (int)this.eDiffDispMode);
break;
}
case "NowStageDisp": {

View File

@ -509,7 +509,7 @@ namespace OpenTaiko {
if (File.Exists(path)) {
try {
// Load config info
ConfigIni.tファイルから読み込み(path);
ConfigIni.LoadFromFile(path);
} catch (Exception e) {
Trace.TraceError(e.ToString());
Trace.TraceError("例外が発生しましたが処理を継続します。 (b8d93255-bbe4-4ca3-8264-7ee5175b19f3)");

View File

@ -290,7 +290,7 @@ namespace OpenTaiko {
{
if (device.KeyPressed(i)) {
OpenTaiko.Skin.soundDecideSFX.tPlay();
OpenTaiko.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Gamepad, device.ID, i, this.pad);
OpenTaiko.ConfigIni.RemoveDuplicateKeyAssignments(EInputDevice.Gamepad, device.ID, i, this.pad);
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].InputDevice = EInputDevice.Gamepad;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = device.ID;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].Code = i;
@ -308,7 +308,7 @@ namespace OpenTaiko {
{
if (device.KeyPressed(i)) {
OpenTaiko.Skin.soundDecideSFX.tPlay();
OpenTaiko.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Joypad, device.ID, i, this.pad);
OpenTaiko.ConfigIni.RemoveDuplicateKeyAssignments(EInputDevice.Joypad, device.ID, i, this.pad);
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].InputDevice = EInputDevice.Joypad;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = device.ID;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].Code = i;
@ -334,7 +334,7 @@ namespace OpenTaiko {
OpenTaiko.InputManager.Keyboard.KeyPressed(i)) {
OpenTaiko.Skin.soundDecideSFX.tPlay();
if (pad < EKeyConfigPad.Capture)
OpenTaiko.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Keyboard, 0, i, this.pad);
OpenTaiko.ConfigIni.RemoveDuplicateKeyAssignments(EInputDevice.Keyboard, 0, i, this.pad);
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].InputDevice = EInputDevice.Keyboard;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = 0;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].Code = i;
@ -356,7 +356,7 @@ namespace OpenTaiko {
for (int i = 0; i < 0x100; i++) {
if (device.KeyPressed(i)) {
OpenTaiko.Skin.soundDecideSFX.tPlay();
OpenTaiko.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.MIDIInput, device.ID, i, this.pad);
OpenTaiko.ConfigIni.RemoveDuplicateKeyAssignments(EInputDevice.MIDIInput, device.ID, i, this.pad);
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].InputDevice = EInputDevice.MIDIInput;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = device.ID;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].Code = i;
@ -370,7 +370,7 @@ namespace OpenTaiko {
private bool tキーチェックとアサイン_Mouse() {
for (int i = 0; i < 8; i++) {
if (OpenTaiko.InputManager.Mouse.KeyPressed(i)) {
OpenTaiko.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Mouse, 0, i, this.pad);
OpenTaiko.ConfigIni.RemoveDuplicateKeyAssignments(EInputDevice.Mouse, 0, i, this.pad);
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].InputDevice = EInputDevice.Mouse;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = 0;
OpenTaiko.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].Code = i;

View File

@ -8,49 +8,49 @@ namespace OpenTaiko {
Stop,
Play,
Preview
}
}
/// <summary>
/// DTXVモードかどうか
/// </summary>
public bool Enabled {
get;
set;
}
}
/// <summary>
/// プレビューサウンドの再生が発生した
/// </summary>
public bool Preview {
get;
set;
}
}
/// <summary>
/// 外部から再指示が発生したか
/// </summary>
public bool Refreshed {
get;
set;
}
}
/// <summary>
/// 演奏開始小節番号
/// </summary>
public int nStartBar {
get;
set;
}
}
/// <summary>
/// DTXファイルの再読み込みが必要かどうか
/// </summary>
public bool NeedReload {
get;
private set;
// private set; // 本来はprivate setにすべきだが、デバッグが簡単になるので、しばらくはprivateなしのままにする。
}
private set;
// private set; // 本来はprivate setにすべきだが、デバッグが簡単になるので、しばらくはprivateなしのままにする。
}
/// <summary>
/// DTXCからのコマンド
/// </summary>
@ -66,7 +66,7 @@ namespace OpenTaiko {
public int nASIOdevice {
get;
private set;
}
}
/// <summary>
/// 前回からサウンドデバイスが変更されたか
/// </summary>
@ -116,9 +116,9 @@ namespace OpenTaiko {
public bool lastVSyncWait {
get;
private set;
}
}
/// <summary>
/// コンストラクタ
/// </summary>
@ -136,8 +136,8 @@ namespace OpenTaiko {
this.lastTimeStretch = false;
this.VSyncWait = true;
this.lastVSyncWait = true;
}
}
/// <summary>
/// DTXファイルのリロードが必要かどうか判定する
/// </summary>
@ -147,17 +147,17 @@ namespace OpenTaiko {
/// <remarks>これを呼び出すたびに、Refreshedをtrueにする</remarks>
/// <exception cref="FileNotFoundException"></exception>
public bool bIsNeedReloadDTX(string filename) {
if (!File.Exists(filename)) // 指定したファイルが存在しないなら例外終了
if (!File.Exists(filename)) // 指定したファイルが存在しないなら例外終了
{
Trace.TraceError("ファイルが見つかりません。({0})", filename);
throw new FileNotFoundException();
//return false;
throw new FileNotFoundException();
//return false;
}
this.Refreshed = true;
// 前回とファイル名が異なるか、タイムスタンプが更新されているか、
// GRmode等の設定を変更したなら、DTX要更新
this.Refreshed = true;
// 前回とファイル名が異なるか、タイムスタンプが更新されているか、
// GRmode等の設定を変更したなら、DTX要更新
DateTime current_timestamp = File.GetLastWriteTime(filename);
if (last_path != filename || current_timestamp > last_timestamp ||
this.lastGRmode != this.GRmode || this.lastTimeStretch != this.TimeStretch || this.lastVSyncWait != this.VSyncWait) {
@ -172,8 +172,8 @@ namespace OpenTaiko {
}
this.NeedReload = false;
return false;
}
}
/// <summary>
///
/// </summary>
@ -190,44 +190,44 @@ namespace OpenTaiko {
while (analyzing) {
if (arg == "") {
analyzing = false;
} else if (arg.StartsWith("-V", StringComparison.OrdinalIgnoreCase)) // サウンド再生
{
// -Vvvv,ppp,"filename"の形式。 vvv=volume, ppp=pan.
} else if (arg.StartsWith("-V", StringComparison.OrdinalIgnoreCase)) // サウンド再生
{
// -Vvvv,ppp,"filename"の形式。 vvv=volume, ppp=pan.
this.Enabled = true;
this.Command = ECommand.Preview;
this.Refreshed = true;
ret = true;
arg = arg.Substring(2);
int pVol = arg.IndexOf(','); //Trace.TraceInformation( "pVol=" + pVol );
string strVol = arg.Substring(0, pVol); //Trace.TraceInformation( "strVol=" + strVol );
this.previewVolume = Convert.ToInt32(strVol); //Trace.TraceInformation( "previewVolume=" + previewVolume );
int pPan = arg.IndexOf(',', pVol + 1); //Trace.TraceInformation( "pPan=" + pPan );
string strPan = arg.Substring(pVol + 1, pPan - pVol - 1); //Trace.TraceInformation( "strPan=" + strPan );
this.previewPan = Convert.ToInt32(strPan); //Trace.TraceInformation( "previewPan=" + previewPan );
int pVol = arg.IndexOf(','); //Trace.TraceInformation( "pVol=" + pVol );
string strVol = arg.Substring(0, pVol); //Trace.TraceInformation( "strVol=" + strVol );
this.previewVolume = Convert.ToInt32(strVol); //Trace.TraceInformation( "previewVolume=" + previewVolume );
int pPan = arg.IndexOf(',', pVol + 1); //Trace.TraceInformation( "pPan=" + pPan );
string strPan = arg.Substring(pVol + 1, pPan - pVol - 1); //Trace.TraceInformation( "strPan=" + strPan );
this.previewPan = Convert.ToInt32(strPan); //Trace.TraceInformation( "previewPan=" + previewPan );
arg = arg.Substring(pPan + 1);
arg = arg.Trim(new char[] { '\"' });
this.previewFilename = arg;
analyzing = false;
}
// -S -Nxxx filename
else if (arg.StartsWith("-S", StringComparison.OrdinalIgnoreCase)) // DTXV再生停止
}
// -S -Nxxx filename
else if (arg.StartsWith("-S", StringComparison.OrdinalIgnoreCase)) // DTXV再生停止
{
this.Enabled = true;
this.Command = ECommand.Stop;
this.Refreshed = true;
ret = true;
arg = arg.Substring(2);
} else if (arg.StartsWith("-D", StringComparison.OrdinalIgnoreCase)) {
// -DW, -DA1など
arg = arg.Substring(2); // -D を削除
switch (arg[0]) {
} else if (arg.StartsWith("-D", StringComparison.OrdinalIgnoreCase)) {
// -DW, -DA1など
arg = arg.Substring(2); // -D を削除
switch (arg[0]) {
#region [ DirectSound ]
case 'D':
case 'D':
this.ChangedSoundDevice = false;
arg = arg.Substring(1);
break;
break;
#endregion
#region [ WASAPI ]
case 'W':
@ -238,7 +238,7 @@ namespace OpenTaiko {
this.ChangedSoundDevice = false;
}
arg = arg.Substring(1);
break;
break;
#endregion
#region [ ASIO ]
case 'A':
@ -267,37 +267,37 @@ namespace OpenTaiko {
this.ChangedSoundDevice = true;
this.nASIOdevice = nAsioDev;
}
break;
break;
#endregion
}
}
#region [ GRmode, TimeStretch, VSyncWait ]
{
// Reload判定は、-Nのところで行う
{
// Reload判定は、-Nのところで行う
this.GRmode = (arg[0] == 'Y');
this.TimeStretch = (arg[1] == 'Y');
this.VSyncWait = (arg[2] == 'Y');
arg = arg.Substring(3);
}
}
#endregion
} else if (arg.StartsWith("-N", StringComparison.OrdinalIgnoreCase)) {
this.Enabled = true;
this.Command = ECommand.Play;
ret = true;
arg = arg.Substring(2); // "-N"を除去
arg = arg.Substring(2); // "-N"を除去
string[] p = arg.Split(new char[] { ' ' });
this.nStartBar = int.Parse(p[0]); // 再生開始小節
this.nStartBar = int.Parse(p[0]); // 再生開始小節
if (this.nStartBar < 0) {
this.nStartBar = -1;
}
int startIndex = arg.IndexOf(' ');
string filename = arg.Substring(startIndex + 1); // 再生ファイル名(フルパス) これで引数が終わっていることを想定
string filename = arg.Substring(startIndex + 1); // 再生ファイル名(フルパス) これで引数が終わっていることを想定
try {
filename = filename.Trim(new char[] { '\"' });
bIsNeedReloadDTX(filename);
} catch (Exception e) // 指定ファイルが存在しない
} catch (Exception e) // 指定ファイルが存在しない
{
Trace.TraceError(e.ToString());
Trace.TraceError("例外が発生しましたが処理を継続します。 (d309a608-7311-411e-a565-19226c3116c2)");
@ -306,12 +306,12 @@ namespace OpenTaiko {
analyzing = false;
}
}
}
string[] s = { "Stop", "Play", "Preview" };
}
string[] s = { "Stop", "Play", "Preview" };
Trace.TraceInformation("Command: " + s[(int)this.Command]);
return ret;
}
}
/// <summary>
/// Viewer関連の設定のみを更新して、Config.iniに書き出す
/// </summary>
@ -320,20 +320,20 @@ namespace OpenTaiko {
string path = OpenTaiko.strEXEのあるフォルダ + "Config.ini";
if (File.Exists(path)) {
FileInfo fi = new FileInfo(path);
if (fi.Length > 0) // Config.iniが0byteだったなら、読み込まない
if (fi.Length > 0) // Config.iniが0byteだったなら、読み込まない
{
try {
cc.tファイルから読み込み(path);
} catch (Exception e) {
//ConfigIni = new CConfigIni(); // 存在してなければ新規生成
cc.LoadFromFile(path);
} catch (Exception e) {
//ConfigIni = new CConfigIni(); // 存在してなければ新規生成
Trace.TraceError(e.ToString());
Trace.TraceError("例外が発生しましたが処理を継続します。 (825f9ba6-9164-4f2e-8c41-edf4d73c06c9)");
}
}
fi = null;
}
//cc.nViewerScrollSpeed[0] = TJAPlayer3.ConfigIni.nScrollSpeed[TJAPlayer3.SaveFile];
}
//cc.nViewerScrollSpeed[0] = TJAPlayer3.ConfigIni.nScrollSpeed[TJAPlayer3.SaveFile];
cc.bViewerShowDebugStatus = OpenTaiko.ConfigIni.bDisplayDebugInfo;
cc.bViewerVSyncWait = OpenTaiko.ConfigIni.bEnableVSync;
cc.bViewerTimeStretch = OpenTaiko.ConfigIni.bTimeStretch;