//──────────────────────────────────────── private void ReadKeyconfig(Gamepadmainloop mainloop, int nPlayerPrm, Memory_GameController gc) { Log_Method pg_Method = new Log_MethodImpl(0); Log_Reports log_Reports_ThisMethod = new Log_ReportsImpl(pg_Method); pg_Method.BeginMethod(Info_Operating.Name_Library, this, "ReadKeyConfig", log_Reports_ThisMethod); // テーブルを、上から下に読んでいく。 // 列の並び順は NO ID Expl PLAYER BEFORE AFTER if (null != this.Table_Humaninput_Keyconfig)//テーブルの読取が成功していること。 { DataTable dataTable = this.Table_Humaninput_Keyconfig.DataTable; foreach (DataRow dataRow in dataTable.Rows) { int nPlayer; Int_HumaninputImpl.TryParse( dataRow.ItemArray[3], out nPlayer, EnumOperationIfErrorvalue.Spaces_To_Alt_Value, 0, log_Reports_ThisMethod ); if (nPlayerPrm == nPlayer) { string sBefore; string sAfter; String_HumaninputImpl.TryParse( dataRow.ItemArray[4], out sBefore, "", "", pg_Method, log_Reports_ThisMethod ); String_HumaninputImpl.TryParse( dataRow.ItemArray[5], out sAfter, "", "", pg_Method, log_Reports_ThisMethod ); EnumGamepadkeyIx o_Before; EnumGamepadkeyBit o_After; switch (sBefore) { case "Up": o_Before = EnumGamepadkeyIx.Up; break; case "Right": o_Before = EnumGamepadkeyIx.Right; break; case "Down": o_Before = EnumGamepadkeyIx.Down; break; case "Left": o_Before = EnumGamepadkeyIx.Left; break; case "1": o_Before = EnumGamepadkeyIx.B0; break; case "2": o_Before = EnumGamepadkeyIx.B1; break; case "3": o_Before = EnumGamepadkeyIx.B2; break; case "4": o_Before = EnumGamepadkeyIx.B3; break; case "5": o_Before = EnumGamepadkeyIx.B4; break; case "6": o_Before = EnumGamepadkeyIx.B5; break; case "7": o_Before = EnumGamepadkeyIx.B6; break; case "8": o_Before = EnumGamepadkeyIx.B7; break; default: o_Before = EnumGamepadkeyIx.Up; break; } switch (sAfter) { case "Up": o_After = EnumGamepadkeyBit.Up; break; case "Right": o_After = EnumGamepadkeyBit.Right; break; case "Down": o_After = EnumGamepadkeyBit.Down; break; case "Left": o_After = EnumGamepadkeyBit.Left; break; case "A": o_After = EnumGamepadkeyBit.A; break; case "B": o_After = EnumGamepadkeyBit.B; break; case "X": o_After = EnumGamepadkeyBit.X; break; case "Y": o_After = EnumGamepadkeyBit.Y; break; case "L": o_After = EnumGamepadkeyBit.L; break; case "R": o_After = EnumGamepadkeyBit.R; break; case "Select": o_After = EnumGamepadkeyBit.Select; break; case "Start": o_After = EnumGamepadkeyBit.Start; break; default: o_After = EnumGamepadkeyBit.Up; break; } gc.KeyCnf.KeyconfigArray[(int)o_Before] = o_After; } } } // // pg_Method.EndMethod(log_Reports_ThisMethod); log_Reports_ThisMethod.EndLogging(pg_Method); }
//──────────────────────────────────────── protected void Execute6_Sub( Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(1, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute6_Sub", log_Reports); string sName_Fnc; this.TrySelectAttribute(out sName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = "Nアクション[" + sName_Fnc + "]実行"; log_Method.Log_Stopwatch.Begin(); } // // 変数は、登録されている名前の変数は存在し、登録されていない名前の変数は(自動作成されたもの以外は)存在しない。 // // 元となるテーブルを見ながら、変数オブジェクトの内容を調べていく。 // // Configurationtree_Node cur_Cf = new Configurationtree_NodeImpl(log_Method.Fullname, null); // 変数ログを吐く。 { StringBuilder sb = new StringBuilder(); //1行目 sb.Append(NamesFld.S_NO); sb.Append(","); sb.Append(NamesFld.S_ID); sb.Append(","); sb.Append(NamesFld.S_EXPL); sb.Append(","); sb.Append(NamesFld.S_NAME); sb.Append(","); sb.Append(NamesFld.S_FOLDER); sb.Append(","); sb.Append(NamesFld.S_VALUE); sb.Append(","); sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); //2行目 sb.Append(NamesTypedb.S_INT); //NO sb.Append(","); sb.Append(NamesTypedb.S_INT); //ID sb.Append(","); sb.Append(NamesTypedb.S_STRING); //Expl sb.Append(","); sb.Append(NamesTypedb.S_STRING); //NAME sb.Append(","); sb.Append(NamesTypedb.S_STRING); //FOLDER sb.Append(","); sb.Append(NamesTypedb.S_STRING); //VALUE sb.Append(","); sb.Append(NamesFld.S_END); //END sb.Append(Environment.NewLine); //3行目 sb.Append("-1,"); //NO sb.Append("使わない,"); //ID sb.Append("解説,"); //Expl sb.Append("変数名,"); //NAME sb.Append("(ファイルパス変数のみ指定有効)フォルダーパス,"); //FOLDER sb.Append("初期値,"); //VALUE sb.Append(NamesFld.S_END); //END sb.Append(Environment.NewLine); int nAuto = 0; this.Owner_MemoryApplication.MemoryVariables.EachVariable(delegate(string sKey, Expression_Node_String ec_String, ref bool bBreak) { if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("[" + sKey + "]=[" + ec_String.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "]"); } sb.Append(nAuto);//NO sb.Append(","); //ID 使わない sb.Append(","); //Expl 消えてしまう sb.Append(","); sb.Append(sKey);//NAME sb.Append(","); //FOLDER TODO:逆算が必要 sb.Append(","); sb.Append(ec_String.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports)); //VALUE sb.Append(","); sb.Append(NamesFld.S_END); //END sb.Append(Environment.NewLine); nAuto++; }); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole(sb.ToString()); } //ログ出力 { Expression_Node_Filepath ec_Fpath_Logs = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename(new Expression_Leaf_StringImpl(NamesVar.S_SP_LOGS, null, cur_Cf), true, log_Reports); string sFpatha_LogVariables = ec_Fpath_Logs.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + System.IO.Path.DirectorySeparatorChar + NamesFile.S_LOG_VARIABLES; if (log_Reports.Successful) { CsvWriterImpl writer = new CsvWriterImpl(); writer.Write( sb.ToString(), sFpatha_LogVariables, true ); } } } //変数CSVを吐き出したい。(登録されている順序を保って) { // 変数ファイルの読取り Table_Humaninput o_Table_Variables; this.Owner_MemoryApplication.MemoryVariables.TryGetTable_Variables( out o_Table_Variables, Application.StartupPath, log_Reports ); if (null != o_Table_Variables) { StringBuilder sb = new StringBuilder(); //1行目 sb.Append(NamesFld.S_NO); sb.Append(","); sb.Append(NamesFld.S_ID); sb.Append(","); sb.Append(NamesFld.S_EXPL); sb.Append(","); sb.Append(NamesFld.S_NAME); sb.Append(","); sb.Append(NamesFld.S_FOLDER); sb.Append(","); sb.Append(NamesFld.S_VALUE); sb.Append(","); sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); //2行目 sb.Append(NamesTypedb.S_INT); //NO sb.Append(","); sb.Append(NamesTypedb.S_INT); //ID sb.Append(","); sb.Append(NamesTypedb.S_STRING); //Expl sb.Append(","); sb.Append(NamesTypedb.S_STRING); //NAME sb.Append(","); sb.Append(NamesTypedb.S_STRING); //FOLDER sb.Append(","); sb.Append(NamesTypedb.S_STRING); //VALUE sb.Append(","); sb.Append(NamesFld.S_END); //END sb.Append(Environment.NewLine); //3行目 sb.Append("-1,"); //NO sb.Append("使わない,"); //ID sb.Append("解説,"); //Expl sb.Append("変数名,"); //NAME sb.Append("(ファイルパス変数のみ指定有効)フォルダーパス,"); //FOLDER sb.Append("初期値,"); //VALUE sb.Append(NamesFld.S_END); //END sb.Append(Environment.NewLine); int nAuto = 0; foreach (DataRow row in o_Table_Variables.DataTable.Rows) { if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_NO)) { int nValue; Int_HumaninputImpl.TryParse(row[NamesFld.S_NO], out nValue, EnumOperationIfErrorvalue.Spaces_To_Alt_Value, 0, log_Reports); sb.Append(nValue); sb.Append(","); } // IDは空欄が正しいが、int型なので空欄にできないので 0 を入れる。 if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_ID)) { int nValue; Int_HumaninputImpl.TryParse(row[NamesFld.S_ID], out nValue, EnumOperationIfErrorvalue.Spaces_To_Alt_Value, 0, log_Reports); sb.Append(nValue); sb.Append(","); } if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_EXPL)) { string sValue; String_HumaninputImpl.TryParse(row[NamesFld.S_EXPL], out sValue, "", "", log_Method, log_Reports); sb.Append(sValue); sb.Append(","); } string sName_Var = ""; if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_NAME)) { string sValue; String_HumaninputImpl.TryParse(row[NamesFld.S_NAME], out sValue, "", "", log_Method, log_Reports); sb.Append(sValue); sb.Append(","); sName_Var = sValue; } // 現在の変数の内容 string sValue_Var = this.Owner_MemoryApplication.MemoryVariables.GetStringByVariablename(new Expression_Leaf_StringImpl(sName_Var, null, cur_Cf), true, log_Reports); //現在の変数の内容を検索 if (NamesVar.Test_Filepath(sName_Var)) { Expression_Node_Filepath ec_Fpath = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename(new Expression_Leaf_StringImpl(sName_Var, null, cur_Cf), true, log_Reports); // 絶対パスとは限らない。フォルダーを指していることもある。 string sFpath = ec_Fpath.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); //フォルダー列値を取得。 string sNamevar_Folder_Src; if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_FOLDER)) { String_HumaninputImpl.TryParse(row[NamesFld.S_FOLDER], out sNamevar_Folder_Src, "", "", log_Method, log_Reports); //フォルダーパス Expression_Node_Filepath ec_Folder = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename(new Expression_Leaf_StringImpl(sNamevar_Folder_Src, null, cur_Cf), false, log_Reports); if (null != ec_Folder) { // FOLDER列に入力があれば。 string sFpath_Folder = ec_Folder.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); if (sValue_Var.StartsWith(sFpath_Folder)) { // FOLDER列値をそのままキープ。 sb.Append(sNamevar_Folder_Src); // 値のフォルダー部分を削る。 sValue_Var = sValue_Var.Substring(sFpath_Folder.Length); // 先頭が ディレクトリー区切り文字なら削る。 if (sValue_Var.StartsWith(System.IO.Path.DirectorySeparatorChar.ToString())) { sValue_Var = sValue_Var.Substring(System.IO.Path.DirectorySeparatorChar.ToString().Length); } } else { // FOLDER列値はそのまま使えない。 } } sb.Append(","); } if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_VALUE)) { //string sValue; //String_HumaninputImpl.TryParse(row[NamesFld.S_VALUE], out sValue, "", "", log_Method, log_Reports); //sb.Append(sValue); //sb.Append(","); // 現在の変数の値(の削った残り)を入れる。 sb.Append(sValue_Var); sb.Append(","); } } else// if (NamesVar.Test_String(sName_Var)) { // FOLDER列値は無し。 sb.Append(","); if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_VALUE)) { // 現在の変数の値を入れる。 sb.Append(sValue_Var); sb.Append(","); } } sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); nAuto++; } //ファイル書出し { Expression_Node_Filepath ec_Fpath_Logs = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename(new Expression_Leaf_StringImpl(NamesVar.S_SP_LOGS, null, cur_Cf), true, log_Reports); string sFpatha_LogVariables = ec_Fpath_Logs.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + System.IO.Path.DirectorySeparatorChar + NamesFile.S_SAVE_VARIABLES; if (log_Reports.Successful) { CsvWriterImpl writer = new CsvWriterImpl(); writer.Write( sb.ToString(), sFpatha_LogVariables, true ); } } } } // // メッセージボックスの表示。 { StringBuilder sb = new StringBuilder(); sb.Append(this.GetType().Name); sb.Append("#Execute6_Sub:"); sb.Append(Environment.NewLine); string sArgMessage; this.TrySelectAttribute(out sArgMessage, Expression_Node_Function45Impl.PM_MESSAGE, EnumHitcount.One_Or_Zero, log_Reports); sb.Append(sArgMessage); MessageBox.Show(sb.ToString(), "変数をCSVファイルに書き出したい。"); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// 項目の文字列。 /// </summary> /// <param name="e"></param> /// <param name="cctLst"></param> /// <param name="log_Reports"></param> /// <returns></returns> public override string P1_GetItemString( int nCurIx,//DrawItemEventArgs e,//e.Index CustomcontrolListbox cctLst, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_MiddleImpl.Name_Library, this, "P1_GetItemLabel", log_Reports); // // string sDisplayText; // ↓2012-01-20 追加 if (nCurIx < cctLst.List_SText_Display.Count) { sDisplayText = cctLst.List_SText_Display[nCurIx]; if (null != sDisplayText) { goto gt_EndMethod; } } // // 項目の数だけ呼び出される。 // 処理はできるだけ軽く。 if (null == this.Expression_ItemLabel) { sDisplayText = "(" + Info_MiddleImpl.Name_Library + "#P1_GetItemString:リストボックスに<a-item-label>が指定されていません)"; goto gt_EndMethod; } // // dataRowViewが入っている。 DataRowView dataRowView = (DataRowView)cctLst.Items[nCurIx]; // // // ID値を取得し、キー値とする。 int nKey; Int_HumaninputImpl.TryParse(// ※仮。 dataRowView.Row["ID"], out nKey, EnumOperationIfErrorvalue.Error, -1, log_Reports ); if (!log_Reports.Successful) { // エラー sDisplayText = "(エラー発生中)"; goto gt_EndMethod; } if (log_Reports.Successful) { string sKey = nKey.ToString(); // ※仮。 // // value-variable-name="" 属性 if (null == this.Expression_ValueVariableName) { // // エラー。 sDisplayText = "(変数名取得失敗)"; goto gt_Error_NullValueVariableName; } else { // // 変数名取得。 StringBuilder sbHint = new StringBuilder(); sbHint.Append(Info_MiddleImpl.Name_Library); sbHint.Append(":"); sbHint.Append(this.GetType().Name); Configurationtree_Node parent_Configurationtree_Node = new Configurationtree_NodeImpl(sbHint.ToString(), null); string sVariableName = this.Expression_ValueVariableName.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); XenonNameImpl o_Name_Variable = new XenonNameImpl(sVariableName, parent_Configurationtree_Node); //ystem.Console.WriteLine(this.GetType().Name + "#P1_GetItemLabel: sVariableName=[" + sVariableName + "] sValue=[" + sValue + "]"); // // ループカウンター変数に、キー値を上書き。 this.Owner_MemoryApplication.MemoryVariables.SetStringValue( o_Name_Variable, sKey, true, log_Reports ); } // // 表示文字列。 sDisplayText = this.Expression_ItemLabel.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); } else { sDisplayText = "(エラー発生中)"; goto gt_EndMethod; } if (!log_Reports.Successful) { sDisplayText = "(エラー発生中)"; goto gt_EndMethod; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullValueVariableName: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー926!", log_Method); StringBuilder t = new StringBuilder(); t.Append("<view>の<f-listbox-for-items>に、"); t.Append(Environment.NewLine); t.Append("value-variable-name=””属性がありませんでした。"); t.Append(Environment.NewLine); t.Append("コントロール名=["); t.Append(cctLst.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports)); t.Append("]"); r.Message = t.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: // ↓2012-01-20 追加 while (cctLst.List_SText_Display.Count <= nCurIx) { cctLst.List_SText_Display.Add(null); } cctLst.List_SText_Display[nCurIx] = sDisplayText; log_Method.EndMethod(log_Reports); return(sDisplayText); }
//──────────────────────────────────────── protected void Execute6_Sub( Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(1, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute6_Sub", log_Reports); string sName_Fnc; this.TrySelectAttribute(out sName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Message = "Nアクション[" + sName_Fnc + "]実行"; log_Method.Log_Stopwatch.Begin(); } // // 変数は、登録されている名前の変数は存在し、登録されていない名前の変数は(自動作成されたもの以外は)存在しない。 // // 元となるテーブルを見ながら、変数オブジェクトの内容を調べていく。 // // Configurationtree_Node cur_Cf = new Configurationtree_NodeImpl(log_Method.Fullname, null); // 変数ログを吐く。 { StringBuilder sb = new StringBuilder(); //1行目 sb.Append(NamesFld.S_NO); //NO sb.Append(","); sb.Append(NamesFld.S_ID); //ID sb.Append(","); sb.Append(NamesFld.S_TREE); //TREE sb.Append(","); sb.Append(NamesFld.S_EXPL); //Expl sb.Append(","); sb.Append(NamesFld.S_FILE); //FILE sb.Append(","); sb.Append(NamesFld.S_NAME); //NAME sb.Append(","); sb.Append(NamesFld.S_TYPE); //TYPE sb.Append(","); sb.Append(NamesFld.S_TEXT); //TEXT sb.Append(","); sb.Append(NamesFld.S_FONT_SIZE_PT); //FONT_SIZE_PT sb.Append(","); sb.Append(NamesFld.S_X_LT); //X_LT sb.Append(","); sb.Append(NamesFld.S_Y_LT); //Y_LT sb.Append(","); sb.Append(NamesFld.S_WIDTH); //WIDTH sb.Append(","); sb.Append(NamesFld.S_HEIGHT); //HEIGHT sb.Append(","); sb.Append(NamesFld.S_ENABLED); //ENABLED sb.Append(","); sb.Append(NamesFld.S_VISIBLE); //VISIBLE sb.Append(","); sb.Append(NamesFld.S_READ_ONLY); //READ_ONLY sb.Append(","); sb.Append(NamesFld.S_WORD_WRAP); //WORD_WRAP sb.Append(","); sb.Append(NamesFld.S_NEW_LINE); //NEW_LINE sb.Append(","); sb.Append(NamesFld.S_SCROLL_BARS); //SCROLL_BARS sb.Append(","); sb.Append(NamesFld.S_CHK_VALUE_TYPE); //CHK_VALUE_TYPE sb.Append(","); sb.Append(NamesFld.S_PIC_ZOOM); //PIC_ZOOM sb.Append(","); sb.Append(NamesFld.S_TAB_INDEX); //TAB_INDEX sb.Append(","); sb.Append(NamesFld.S_BACK_COLOR); //BACK_COLOR sb.Append(","); //ここまで基本テーブル。 sb.Append(NamesFld.S_ITEM_HEIGHT_PX); //ITEM_HEIGHT_PX sb.Append(","); sb.Append(NamesFld.S_ITEM_DISPLAY_FORMAT); //ITEM_DISPLAY_FORMAT sb.Append(","); sb.Append(NamesFld.S_LIST_VALUE_FIELD); //LIST_VALUE_FIELD sb.Append(","); sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); //2行目 sb.Append(NamesTypedb.S_INT); //NO sb.Append(","); sb.Append(NamesTypedb.S_INT); //ID sb.Append(","); sb.Append(NamesTypedb.S_INT); //TREE sb.Append(","); sb.Append(NamesTypedb.S_STRING); //Expl sb.Append(","); sb.Append(NamesTypedb.S_STRING); //FILE sb.Append(","); sb.Append(NamesTypedb.S_STRING); //NAME sb.Append(","); sb.Append(NamesTypedb.S_STRING); //TYPE sb.Append(","); sb.Append(NamesTypedb.S_STRING); //TEXT sb.Append(","); sb.Append(NamesTypedb.S_STRING); //FONT_SIZE_PT sb.Append(","); sb.Append(NamesTypedb.S_INT); //X_LT sb.Append(","); sb.Append(NamesTypedb.S_INT); //Y_LT sb.Append(","); sb.Append(NamesTypedb.S_INT); //WIDTH sb.Append(","); sb.Append(NamesTypedb.S_INT); //HEIGHT sb.Append(","); sb.Append(NamesTypedb.S_BOOL); //ENABLED sb.Append(","); sb.Append(NamesTypedb.S_BOOL); //VISIBLE sb.Append(","); sb.Append(NamesTypedb.S_BOOL); //READ_ONLY sb.Append(","); sb.Append(NamesTypedb.S_BOOL); //WORD_WRAP sb.Append(","); sb.Append(NamesTypedb.S_STRING); //NEW_LINE sb.Append(","); sb.Append(NamesTypedb.S_STRING); //SCROLL_BARS sb.Append(","); sb.Append(NamesTypedb.S_STRING); //CHK_VALUE_TYPE sb.Append(","); sb.Append(NamesTypedb.S_INT); //PIC_ZOOM sb.Append(","); sb.Append(NamesTypedb.S_INT); //TAB_INDEX sb.Append(","); sb.Append(NamesTypedb.S_STRING); //BACK_COLOR sb.Append(","); //ここまで基本テーブル。 sb.Append(NamesTypedb.S_INT); //ITEM_HEIGHT_PX sb.Append(","); sb.Append(NamesTypedb.S_STRING); //ITEM_DISPLAY_FORMAT sb.Append(","); sb.Append(NamesTypedb.S_STRING); //LIST_VALUE_FIELD sb.Append(","); sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); //3行目 sb.Append("-1,"); //NO sb.Append("使わない,"); //ID sb.Append("ネスト関係,"); //TREE sb.Append("解説,"); //Expl sb.Append("コントロール設定ファイルパス,"); //FILE sb.Append("コントロール固有名,"); //NAME sb.Append("コントロールの型,"); //TYPE sb.Append("初期値,"); //TEXT sb.Append("フォントサイズ(pt),"); //FONT_SIZE_PT sb.Append("左上角の座標X,"); //X_LT sb.Append("左上角の座標Y,"); //Y_LT sb.Append("横幅ピクセル,"); //WIDTH sb.Append("縦幅ピクセル,"); //HEIGHT sb.Append("活性化,"); //ENABLED sb.Append("可視,"); //VISIBLE sb.Append("テキストボックス等を読み取り専用にするなら真。,"); //READ_ONLY sb.Append("テキストエリアで行を自動的に折り返すなら真。,"); //WORD_WRAP sb.Append("(テキストエリア)改行記号。,"); //NEW_LINE sb.Append("テキストエリア等で利用。None,Horizontal,Vertical,Bothの4つ。使わないなら空欄。,"); //SCROLL_BARS sb.Append("チェックボックスの値の型。(空欄:false,true。ZERO_ONE:0,1),"); //CHK_VALUE_TYPE sb.Append("(未実装)画像の倍角サイズ。2000で2倍。,"); //PIC_ZOOM sb.Append("タブ・インデックス,"); //TAB_INDEX sb.Append("背景色,"); //BACK_COLOR //ここまで基本テーブル。 sb.Append("リストボックスの項目の高さ(ピクセル),"); //ITEM_HEIGHT_PX sb.Append("リストボックスの各項目の表示書式,"); //ITEM_DISPLAY_FORMAT sb.Append("(開発中)リストボックスの値が入っている、レコードのフィールド名。,"); //LIST_VALUE_FIELD sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); int nAuto = 0; this.Owner_MemoryApplication.MemoryForms.ForEach_Children(delegate(string sKey, Usercontrol uct_Child, ref bool bRemove, ref bool bBreak) { //uct_Child.ControlCommon.Configurationtree_Control.Dictionary_Attribute. sb.Append(nAuto);//NO sb.Append(","); //ID は使わない。 sb.Append(","); sb.Append(NamesFld.S_TREE); //TREE sb.Append(","); sb.Append(NamesFld.S_EXPL); //Expl sb.Append(","); sb.Append(NamesFld.S_FILE); //FILE sb.Append(","); sb.Append(uct_Child.ControlCommon.Configurationtree_Control.Name); //NAME sb.Append(","); sb.Append(NamesFld.S_TYPE); //TYPE sb.Append(","); sb.Append(uct_Child.UsercontrolText); //TEXT sb.Append(","); sb.Append(uct_Child.UsercontrolFontsizept); //FONT_SIZE_PT sb.Append(","); sb.Append(uct_Child.UsercontrolXlt); //X_LT sb.Append(","); sb.Append(uct_Child.UsercontrolYlt); //Y_LT sb.Append(","); sb.Append(uct_Child.UsercontrolWidth); //WIDTH sb.Append(","); sb.Append(uct_Child.UsercontrolHeight); //HEIGHT sb.Append(","); if (uct_Child.UsercontrolEnabled) { sb.Append(uct_Child.UsercontrolEnabled);//ENABLED } sb.Append(","); if (uct_Child.UsercontrolVisible) { sb.Append(uct_Child.UsercontrolVisible);//VISIBLE } sb.Append(","); if (uct_Child.UsercontrolReadonly) { sb.Append(uct_Child.UsercontrolReadonly);//READ_ONLY } sb.Append(","); if (uct_Child.UsercontrolWordwrap) { sb.Append(uct_Child.UsercontrolWordwrap);//WORD_WRAP } sb.Append(","); sb.Append(uct_Child.UsercontrolNewline);//NEW_LINE sb.Append(","); switch (uct_Child.UsercontrolScrollbars) { case ScrollBars.Both: sb.Append(ValuesAttr.S_BOTH); break; case ScrollBars.Horizontal: sb.Append(ValuesAttr.S_HORIZONTAL); break; case ScrollBars.Vertical: sb.Append(ValuesAttr.S_VERTICAL); break; default: //TODO:「無視」と、「無し」は、分けたい。 //sb.Append(ValuesAttr.S_NONE); break; } sb.Append(","); sb.Append(uct_Child.UsercontrolChkvaluetype); //CHK_VALUE_TYPE sb.Append(","); sb.Append(uct_Child.UsercontrolPiczoom); //PIC_ZOOM sb.Append(","); sb.Append(uct_Child.UsercontrolTabindex); //TAB_INDEX sb.Append(","); sb.Append(uct_Child.UsercontrolBackcolor); //BACK_COLOR sb.Append(","); //ここまで基本テーブル。 sb.Append(uct_Child.UsercontrolItemheightpx); //ITEM_HEIGHT_PX sb.Append(","); sb.Append(uct_Child.UsercontrolItemdisplayformat); //ITEM_DISPLAY_FORMAT sb.Append(","); sb.Append(uct_Child.UsercontrolListvaluefield /*"NO"*/); //TODO:LIST_VALUE_FIELD sb.Append(","); sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); nAuto++; }); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole(sb.ToString()); } //ログ出力 { Expression_Node_Filepath ec_Fpath_Logs = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename(new Expression_Leaf_StringImpl(NamesVar.S_SP_LOGS, null, cur_Cf), true, log_Reports); string sFpatha_LogVariables = ec_Fpath_Logs.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + System.IO.Path.DirectorySeparatorChar + NamesFile.S_LOG_FORM; if (log_Reports.Successful) { CsvWriterImpl writer = new CsvWriterImpl(); writer.Write( sb.ToString(), sFpatha_LogVariables, true ); } } } //変数CSVを吐き出したい。(登録されている順序を保って) { // 変数ファイルの読取り Table_Humaninput o_Table_Variables; this.Owner_MemoryApplication.MemoryVariables.TryGetTable_Variables( out o_Table_Variables, Application.StartupPath, log_Reports ); if (null != o_Table_Variables) { StringBuilder sb = new StringBuilder(); //1行目 sb.Append(NamesFld.S_NO); //NO sb.Append(","); sb.Append(NamesFld.S_ID); //ID sb.Append(","); sb.Append(NamesFld.S_TREE); //TREE sb.Append(","); sb.Append(NamesFld.S_EXPL); //Expl sb.Append(","); sb.Append(NamesFld.S_NAME); sb.Append(","); sb.Append(NamesFld.S_FOLDER); sb.Append(","); sb.Append(NamesFld.S_VALUE); sb.Append(","); sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); //2行目 sb.Append(NamesTypedb.S_INT); //NO sb.Append(","); sb.Append(NamesTypedb.S_INT); //ID sb.Append(","); sb.Append(NamesTypedb.S_STRING); //Expl sb.Append(","); sb.Append(NamesTypedb.S_STRING); //NAME sb.Append(","); sb.Append(NamesTypedb.S_STRING); //FOLDER sb.Append(","); sb.Append(NamesTypedb.S_STRING); //VALUE sb.Append(","); sb.Append(NamesFld.S_END); //END sb.Append(Environment.NewLine); //3行目 sb.Append("-1,"); //NO sb.Append("使わない,"); //ID sb.Append("解説,"); //Expl sb.Append("変数名,"); //NAME sb.Append("(ファイルパス変数のみ指定有効)フォルダーパス,"); //FOLDER sb.Append("初期値,"); //VALUE sb.Append(NamesFld.S_END); //END sb.Append(Environment.NewLine); int nAuto = 0; foreach (DataRow row in o_Table_Variables.DataTable.Rows) { if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_NO)) { int nValue; Int_HumaninputImpl.TryParse(row[NamesFld.S_NO], out nValue, EnumOperationIfErrorvalue.Spaces_To_Alt_Value, 0, log_Reports); sb.Append(nValue); sb.Append(","); } // IDは空欄が正しいが、int型なので空欄にできないので 0 を入れる。 if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_ID)) { int nValue; Int_HumaninputImpl.TryParse(row[NamesFld.S_ID], out nValue, EnumOperationIfErrorvalue.Spaces_To_Alt_Value, 0, log_Reports); sb.Append(nValue); sb.Append(","); } if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_EXPL)) { string sValue; String_HumaninputImpl.TryParse(row[NamesFld.S_EXPL], out sValue, "", "", log_Method, log_Reports); sb.Append(sValue); sb.Append(","); } string sName_Var = ""; if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_NAME)) { string sValue; String_HumaninputImpl.TryParse(row[NamesFld.S_NAME], out sValue, "", "", log_Method, log_Reports); sb.Append(sValue); sb.Append(","); sName_Var = sValue; } // 現在の変数の内容 string sValue_Var = this.Owner_MemoryApplication.MemoryVariables.GetStringByVariablename(new Expression_Leaf_StringImpl(sName_Var, null, cur_Cf), true, log_Reports); //現在の変数の内容を検索 if (NamesVar.Test_Filepath(sName_Var)) { Expression_Node_Filepath ec_Fpath = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename(new Expression_Leaf_StringImpl(sName_Var, null, cur_Cf), true, log_Reports); // 絶対パスとは限らない。フォルダーを指していることもある。 string sFpath = ec_Fpath.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); //フォルダー列値を取得。 string sNamevar_Folder_Src; if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_FOLDER)) { String_HumaninputImpl.TryParse(row[NamesFld.S_FOLDER], out sNamevar_Folder_Src, "", "", log_Method, log_Reports); //フォルダーパス Expression_Node_Filepath ec_Folder = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename(new Expression_Leaf_StringImpl(sNamevar_Folder_Src, null, cur_Cf), false, log_Reports); if (null != ec_Folder) { // FOLDER列に入力があれば。 string sFpath_Folder = ec_Folder.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); if (sValue_Var.StartsWith(sFpath_Folder)) { // FOLDER列値をそのままキープ。 sb.Append(sNamevar_Folder_Src); // 値のフォルダー部分を削る。 sValue_Var = sValue_Var.Substring(sFpath_Folder.Length); // 先頭が ディレクトリー区切り文字なら削る。 if (sValue_Var.StartsWith(System.IO.Path.DirectorySeparatorChar.ToString())) { sValue_Var = sValue_Var.Substring(System.IO.Path.DirectorySeparatorChar.ToString().Length); } } else { // FOLDER列値はそのまま使えない。 } } sb.Append(","); } if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_VALUE)) { //string sValue; //String_HumaninputImpl.TryParse(row[NamesFld.S_VALUE], out sValue, "", "", log_Method, log_Reports); //sb.Append(sValue); //sb.Append(","); // 現在の変数の値(の削った残り)を入れる。 sb.Append(sValue_Var); sb.Append(","); } } else// if (NamesVar.Test_String(sName_Var)) { // FOLDER列値は無し。 sb.Append(","); if (o_Table_Variables.DataTable.Columns.Contains(NamesFld.S_VALUE)) { // 現在の変数の値を入れる。 sb.Append(sValue_Var); sb.Append(","); } } sb.Append(NamesFld.S_END); sb.Append(Environment.NewLine); nAuto++; } //ファイル書出し { Expression_Node_Filepath ec_Fpath_Logs = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename(new Expression_Leaf_StringImpl(NamesVar.S_SP_LOGS, null, cur_Cf), true, log_Reports); string sFpatha_LogVariables = ec_Fpath_Logs.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + System.IO.Path.DirectorySeparatorChar + NamesFile.S_SAVE_FORM; if (log_Reports.Successful) { CsvWriterImpl writer = new CsvWriterImpl(); writer.Write( sb.ToString(), sFpatha_LogVariables, true ); } } } } // // メッセージボックスの表示。 { StringBuilder sb = new StringBuilder(); sb.Append(this.GetType().Name); sb.Append("#Execute6_Sub:"); sb.Append(Environment.NewLine); string sArgMessage; this.TrySelectAttribute(out sArgMessage, Expression_Node_Function46Impl.PM_MESSAGE, EnumHitcount.One_Or_Zero, log_Reports); sb.Append(sArgMessage); MessageBox.Show(sb.ToString(), "変数をCSVファイルに書き出したい。"); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public void XTo( out KeyconfigImpl out_Keycnf, Log_Reports log_Reports ) { Log_Method pg_Method = new Log_MethodImpl(0); Log_Reports log_Reports_Load = new Log_ReportsImpl(pg_Method); pg_Method.BeginMethod(Info_Operating.Name_Library, this, "XToO", log_Reports_Load); // // out_Keycnf = new KeyconfigImpl(); CsvTo_Table_HumaninputImpl csvTo = new CsvTo_Table_HumaninputImpl(); Request_ReadsTable oRequest_TableReads = new Request_ReadsTableImpl(); { Configurationtree_NodeImpl cf_ConfigStack = new Configurationtree_NodeImpl(Info_Operating.Name_Library + ":" + this.GetType().Name + "#<init>:", null); Configurationtree_NodeFilepath cf_Fpath = new Configurationtree_NodeFilepathImpl("ファイルパス出典未指定L03_1", cf_ConfigStack); cf_Fpath.InitPath( "Editor-config/GAME_PAD/Key-config.csv", log_Reports ); Expression_Node_Filepath ec_Fpath = new Expression_Node_FilepathImpl(cf_Fpath); oRequest_TableReads.Expression_Filepath = ec_Fpath; if (!log_Reports.Successful) { // エラー goto gt_EndMethod; } } Format_Table_Humaninput o_TableFormat = new Format_Table_HumaninputImpl(); out_Keycnf.O_Table_Keycnf = csvTo.Read( oRequest_TableReads, o_TableFormat, true, log_Reports ); if (!log_Reports.Successful) { // エラー goto gt_EndMethod; } // // テーブルを上から1行ずつ読んでいきます。 // foreach (DataRow dataRow in out_Keycnf.O_Table_Keycnf.DataTable.Rows) { //NO ID Expl PLAYER BEFORE AFTER // プレイヤー番号 int nPlayer; { Int_HumaninputImpl o_Player = (Int_HumaninputImpl)dataRow["PLAYER"]; if (Int_HumaninputImpl.TryParse( o_Player, out nPlayer, EnumOperationIfErrorvalue.Error, 0, log_Reports )) { } if (!log_Reports.Successful) { // エラー goto gt_EndMethod; } } // BEFORE EnumGamepadkeyIx enumGmkeyArray; { string sBefore; string sDebug1 = ""; string sDebug2 = ""; String_HumaninputImpl o_Before = (String_HumaninputImpl)dataRow["BEFORE"]; if (String_HumaninputImpl.TryParse( o_Before, out sBefore, sDebug1, sDebug2, pg_Method, log_Reports )) { } if (!log_Reports.Successful) { // エラー goto gt_EndMethod; } switch (sBefore) { case "Up": enumGmkeyArray = EnumGamepadkeyIx.Up; break; case "Right": enumGmkeyArray = EnumGamepadkeyIx.Right; break; case "Down": enumGmkeyArray = EnumGamepadkeyIx.Down; break; case "Left": enumGmkeyArray = EnumGamepadkeyIx.Left; break; case "0": enumGmkeyArray = EnumGamepadkeyIx.B0; break; case "1": enumGmkeyArray = EnumGamepadkeyIx.B1; break; case "2": enumGmkeyArray = EnumGamepadkeyIx.B2; break; case "3": enumGmkeyArray = EnumGamepadkeyIx.B3; break; case "4": enumGmkeyArray = EnumGamepadkeyIx.B4; break; case "5": enumGmkeyArray = EnumGamepadkeyIx.B5; break; case "6": enumGmkeyArray = EnumGamepadkeyIx.B6; break; case "7": enumGmkeyArray = EnumGamepadkeyIx.B7; break; default: // エラー enumGmkeyArray = EnumGamepadkeyIx.B0; break; } } // AFTER EnumGamepadkeyBit gmkeyPushEnum; { string sAfter; string sDebug1 = ""; string sDebug2 = ""; String_HumaninputImpl o_Before = (String_HumaninputImpl)dataRow["AFTER"]; if (String_HumaninputImpl.TryParse( o_Before, out sAfter, sDebug1, sDebug2, pg_Method, log_Reports )) { } if (!log_Reports.Successful) { // エラー goto gt_EndMethod; } switch (sAfter) { case "Up": gmkeyPushEnum = EnumGamepadkeyBit.Up; break; case "Right": gmkeyPushEnum = EnumGamepadkeyBit.Right; break; case "Down": gmkeyPushEnum = EnumGamepadkeyBit.Down; break; case "Left": gmkeyPushEnum = EnumGamepadkeyBit.Left; break; case "A": gmkeyPushEnum = EnumGamepadkeyBit.A; break; case "B": gmkeyPushEnum = EnumGamepadkeyBit.B; break; case "X": gmkeyPushEnum = EnumGamepadkeyBit.X; break; case "Y": gmkeyPushEnum = EnumGamepadkeyBit.Y; break; case "L": gmkeyPushEnum = EnumGamepadkeyBit.L; break; case "R": gmkeyPushEnum = EnumGamepadkeyBit.R; break; case "Select": gmkeyPushEnum = EnumGamepadkeyBit.Select; break; case "Start": gmkeyPushEnum = EnumGamepadkeyBit.Start; break; default: // エラー gmkeyPushEnum = EnumGamepadkeyBit.A; break; } } // // 記憶 // KeyconfigPadImpl keycnfPad; if (out_Keycnf.Dic_KeyCnf.ContainsKey(nPlayer)) { keycnfPad = out_Keycnf.Dic_KeyCnf[nPlayer]; } else { keycnfPad = new KeyconfigPadImpl(); } keycnfPad.KeyconfigArray[(int)enumGmkeyArray] = gmkeyPushEnum; out_Keycnf.Dic_KeyCnf[nPlayer] = keycnfPad; } goto gt_EndMethod; // // gt_EndMethod: pg_Method.EndMethod(log_Reports_Load); log_Reports_Load.EndLogging(pg_Method); return; }
//──────────────────────────────────────── /// <summary> /// 指定の番号の変数について、担当者が複数いたとき、どの担当者が優先されるかを調べます。 /// </summary> /// <param name="typeName">例:[I]</param> /// <param name="numberStr">例:970</param> /// <param name="humanNames">例:「太郎 | 二郎 | 三郎」</param> /// <param name="log_Reports">エラー処理オブジェクト</param> /// <returns>担当者名</returns> public string SearchHuman( string typeName, string sNumber, string humanNames, Log_Reports log_Reports) { Log_Method pg_Method = new Log_MethodImpl(); pg_Method.BeginMethod(Info_Operating.Name_Library, this, "SearchHuman", log_Reports); // // // // // 現在、最も大きな値の「優先番号」。 int highPriority = int.MinValue; // 現在、最も優先されている担当者の名前。 string highHumanName = ""; int nVariable; if (!int.TryParse(sNumber, out nVariable)) { // エラー if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー1008!", pg_Method); r.Message = "入力数値[" + sNumber + "]を、int型整数に変換できませんでした。"; log_Reports.EndCreateReport(); } return(""); } // 指定の担当者名をリスト化します。 List <string> humanNameList = new List <string>(); { string[] humanNameArray = humanNames.Split('|'); foreach (string humanName in humanNameArray) { humanNameList.Add(humanName.Trim()); } } // 各担当者について foreach (GloballistconfigHuman human in this.humanDictionary.Values) { // 指定された担当者名か否か。 if (humanNameList.Contains(human.Name)) { // 指定された担当者名なら // 各変数の型について foreach (GloballistconfigVariable variable in human.Dictionary_Variable.Values) { // 指定の変数の型と一致するかどうか。 if (variable.Name_Type == typeName) { // 指定の変数の型と一致した場合 // 番号別優先順位設定について ConfigurationTo_IntegerRanges sToO = new ConfigurationTo_IntegerRanges(); foreach (GloballistconfigNumber numberObj in variable.Dictionary_Number.Values) { IntegerRanges o_Ranges2; StringBuilder sInfoMsg = new StringBuilder(); string sErrorMsg; if (sToO.ConfigurationTo(numberObj.Text_Range, out o_Ranges2, ref sInfoMsg, out sErrorMsg)) { // 正常時 // 各番号について List <int> numbers = new List <int>(); o_Ranges2.ToNumbers(ref numbers); foreach (int number in numbers) { if (nVariable == number) { // 条件に含む番号なら // 優先順位を比較します。 int numberRef; Int_HumaninputImpl.TryParse( numberObj.Priority, out numberRef, EnumOperationIfErrorvalue.Error, null, log_Reports ); if (!log_Reports.Successful) { // エラー goto gt_EndMethod; } if (log_Reports.Successful) { // 正常時 if (highPriority < numberRef) { // 優先順位が高ければ highPriority = numberRef; highHumanName = human.Name; } } } else { // 条件に含まない番号なら } } } if (0 < sInfoMsg.Length) { // 情報・警告 if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Warning); r.Message = sInfoMsg.ToString(); sInfoMsg.Length = 0; log_Reports.EndCreateReport(); } } if ("" != sErrorMsg) { // エラー if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.Message = sErrorMsg; log_Reports.EndCreateReport(); } goto gt_EndMethod; } } } else { // 指定とは異なる変数の型の場合 } }//foreach 各変数の型について } } // // // // gt_EndMethod: pg_Method.EndMethod(log_Reports); return(highHumanName); }