/// <summary> /// ************************************************************************************************************************ /// 入力欄の表示・出力欄の表示・再描画 /// ************************************************************************************************************************ /// /// このメインパネルに何かして欲しいことがあれば、 /// RequestForMain に要望を入れて、この関数を呼び出してください。 /// /// 同時には処理できない項目もあります。 /// </summary> /// <param name="response"></param> public void Solute_RepaintRequest( Form1_Mutex mutex, MainGui_Csharp mainGui) { Uc_Form2Main form2 = ((Form1_Shogi)this.ParentForm).Form2_Console.Uc_Form2Main; //------------------------------------------------------------ // 駒の座標再計算 //------------------------------------------------------------ if (mainGui.RepaintRequest.Is_StarlightsRecalculateRequested()) { this.MainGui.Model_Manual.GuiSkyConst.Foreach_Starlights((Finger finger, IMoveHalf light, ref bool toBreak) => { Util_Function_Csharp.Redraw_KomaLocation(finger, this.MainGui); }); } mainGui.RepaintRequest.Clear_StarlightsRecalculateRequested(); //------------------------------ // 入力欄の表示 //------------------------------ if (mainGui.RepaintRequest.IsRequested_RepaintNyuryokuText) { // 指定のテキストで上書きします。 form2.SetInputareaText(mainGui.RepaintRequest.NyuryokuText); } else if (mainGui.RepaintRequest.IsRequested_NyuryokuTextTail) { // 指定のテキストを後ろに足します。 form2.AppendInputareaText(mainGui.RepaintRequest.NyuryokuTextTail); mainGui.RepaintRequest.SetNyuryokuTextTail("");//要求の解除 } //------------------------------ // 出力欄(上・下段)の表示 //------------------------------ switch (mainGui.RepaintRequest.SyuturyokuRequest) { case RepaintRequestGedanTxt.Clear: { // 出力欄(上下段)を空っぽにします。 form2.WriteLine_Syuturyoku(""); // ログ //Logger.Trace( ""); //Logger.Trace( ""); } break; case RepaintRequestGedanTxt.Kifu: { // 出力欄(上下段)に、棋譜を出力します。 switch (this.MainGui.SyuturyokuKirikae) { case SyuturyokuKirikae.Japanese: form2.WriteLine_Syuturyoku(Util_KirokuGakari.ToJsaFugoListString(this.MainGui.Link_Server.Model_Taikyoku.Kifu, "Ui_PnlMain.Response")); break; case SyuturyokuKirikae.Sfen: form2.WriteLine_Syuturyoku(Util_KirokuGakari.ToSfen_PositionCommand(this.MainGui.Link_Server.Model_Taikyoku.Kifu)); break; case SyuturyokuKirikae.Html: form2.WriteLine_Syuturyoku(Uc_Form1Main.CreateHtml(this.MainGui)); break; } #if DEBUG // ログ Logger.Trace(form2.GetOutputareaText()); #endif } break; default: // スルー break; } //------------------------------ // 再描画 //------------------------------ if (mainGui.RepaintRequest.IsRefreshRequested()) { this.Refresh(); mainGui.RepaintRequest.ClearRefreshRequest(); } }
/// <summary> /// ************************************************************************************************************************ /// 起動直後の流れです。 /// ************************************************************************************************************************ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Uc_Form1Main_Load(object sender, EventArgs e) { Uc_Form2Main uc_Form2Main = ((Form1_Shogi)this.ParentForm).Form2_Console.Uc_Form2Main; // // 設定XMLファイル // { this.setteiXmlFile = new SetteiXmlFile(this.MainGui.EngineConf.GetResourceBasename("DataSetteiXml")); if (!this.SetteiXmlFile.Exists()) { // ファイルが存在しませんでした。 // 作ります。 this.SetteiXmlFile.Write(); } this.SetteiXmlFile.Read(); // デバッグ this.SetteiXmlFile.DebugWrite(); } //---------- // 棋譜 //---------- // // 先後や駒など、対局に用いられる事柄、物を事前準備しておきます。 // //---------- // 駒の並べ方 //---------- // // 平手に並べます。 // { this.MainGui.Link_Server.Model_Taikyoku.Kifu.Clear(); // 棋譜を空っぽにします。 this.MainGui.Link_Server.Model_Taikyoku.Kifu.SetProperty(Word_KifuTree.PropName_Startpos, "startpos"); //平手の初期局面 Playerside firstPside = Playerside.P1; //Playerside.P2 this.MainGui.Model_Manual.SetGuiSky( Util_SkyWriter.New_Hirate(firstPside) //起動直後 ); //this.ShogiGui.Model_PnlTaikyoku.Kifu.SetProperty(Word_KifuTree.PropName_FirstPside, Playerside.P1); } // 全駒の再描画 this.MainGui.RepaintRequest = new RepaintRequestImpl(); this.MainGui.RepaintRequest.SetFlag_RecalculateRequested(); //---------- // フェーズ //---------- this.MainGui.SetScene(SceneName.SceneB_1TumamitaiKoma); //---------- // 監視 //---------- this.gameEngineTimer1.Start(); //---------- // 将棋エンジンが、コンソールの振りをします。 //---------- // // このメインパネルに、コンソールの振りをさせます。 // 将棋エンジンがあれば、将棋エンジンの入出力を返すように内部を改造してください。 // TextboxListener.SetTextboxListener( uc_Form2Main.ReadText, uc_Form2Main.WriteLine_Syuturyoku); //---------- // 画面の出力欄 //---------- // // 出力欄(上下段)を空っぽにします。 // uc_Form2Main.WriteLine_Syuturyoku(""); this.MainGui.Response("Launch"); // これで、最初に見える画面の準備は終えました。 // あとは、操作者の入力を待ちます。 }