public override void Step3_SetEvent(object obj_shogiGui) { MainGui_Csharp shogibanGui1 = (MainGui_Csharp)obj_shogiGui; //---------- // 将棋エンジン起動ボタン_学習 //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnShogiEngineKidoL"); widget.Delegate_MouseHitEvent = Event_CsharpVsImpl.GetInstance().Delegate_BtnShogiEngineKidoL; } //---------- // 将棋エンジン起動ボタン_CP起動 //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnShogiEngineKidoF"); widget.Delegate_MouseHitEvent = Event_CsharpVsImpl.GetInstance().Delegate_BtnComputerBoot; } //---------- // 将棋エンジン起動ボタン_CP先 //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnShogiEngineKidoT"); widget.Delegate_MouseHitEvent = Event_CsharpVsImpl.GetInstance().Delegate_BtnComputerSente; } }
/// <summary> /// 成る/成らない /// </summary> /// <param name="mainGui"></param> /// <param name="btnTumandeiruKoma"></param> /// <param name="logTag"></param> private void After_NaruNaranai_ButtonPushed( MainGui_Csharp mainGui , Shape_BtnKoma btnTumandeiruKoma ) { // 駒を動かします。 { // GuiからServerへ渡す情報 PieceType syurui; IMoveHalf dst; Util_Function_Csharp.Komamove1a_49Gui(out syurui, out dst, btnTumandeiruKoma, mainGui.Shape_PnlTaikyoku.NaruBtnMasu, mainGui); // ServerからGuiへ渡す情報 bool torareruKomaAri; RO_Star koma_Food_after; Util_Functions_Server.Komamove1a_50Srv(out torareruKomaAri, out koma_Food_after, dst, btnTumandeiruKoma.Koma, Util_Starlightable.AsKoma(dst.Now), mainGui.Model_Manual); Util_Function_Csharp.Komamove1a_51Gui(torareruKomaAri, koma_Food_after, mainGui); } { //---------- // 移動済表示 //---------- mainGui.Shape_PnlTaikyoku.SetHMovedKoma(btnTumandeiruKoma.Finger); //------------------------------ // 棋譜に符号を追加(マウスボタンが放されたとき)TODO:まだ早い。駒が成るかもしれない。 //------------------------------ // 棋譜 IMove move = new RO_Starbeam( //btnTumandeiruKoma.Finger, mainGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now, mainGui.Model_Manual.GuiSkyConst.StarlightIndexOf(btnTumandeiruKoma.Finger).Now, mainGui.Shape_PnlTaikyoku.MousePos_FoodKoma != null ? mainGui.Shape_PnlTaikyoku.MousePos_FoodKoma.Komasyurui : PieceType.None );// 選択している駒の元の場所と、移動先 KifuNode newNode; { // // 成ったので、指し手データ差替え。 // StartposImporter.Assert_HirateHonsyogi(new SkyBuffer(mainGui.Model_Manual.GuiSkyConst), "newNode作成前"); newNode = new KifuNodeImpl( move, new KyokumenWrapper(SkyConst.NewInstance_ReversePside( // 先後を反転させます。 mainGui.Model_Manual.GuiSkyConst, mainGui.Model_Manual.GuiSkyConst.Temezumi + 1 //1手進める )) ); StartposImporter.Assert_HirateHonsyogi(new SkyBuffer(newNode.Value.KyokumenConst), "newNode作成後"); //「成る/成らない」ボタンを押したときです。 { //---------------------------------------- // 次ノード追加 //---------------------------------------- mainGui.Link_Server.Model_Taikyoku.Kifu.GetSennititeCounter().CountUp_New(Conv_Sky.ToKyokumenHash(newNode.Value.KyokumenConst), "After_NaruNaranai"); ((KifuNode)mainGui.Link_Server.Model_Taikyoku.Kifu.CurNode).PutTuginoitte_New(newNode); } // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // ここで棋譜の変更をします。 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ string jsaFugoStr; Util_Functions_Server.SetCurNode_Srv( mainGui.Link_Server.Model_Taikyoku, mainGui.Model_Manual, newNode, out jsaFugoStr); mainGui.RepaintRequest.SetFlag_RefreshRequest(); //------------------------------ // 符号表示 //------------------------------ // 成る/成らないボタンを押したとき。 mainGui.Shape_PnlTaikyoku.SetFugo(jsaFugoStr); } //------------------------------ // チェンジターン //------------------------------ if (!mainGui.Shape_PnlTaikyoku.Requested_NaruDialogToShow) { //Logger.Trace("マウス左ボタンを押したのでチェンジターンします。"); mainGui.ChangedTurn(); } } mainGui.RepaintRequest.SetFlag_RecalculateRequested();// 駒の再描画要求 //Logger.Trace("つまんでいる駒を放します。(6)"); mainGui.SetFigTumandeiruKoma(-1);//駒を放した扱いです。 mainGui.Shape_PnlTaikyoku.SetNaruMasu(null); mainGui.RepaintRequest.SyuturyokuRequest = RepaintRequestGedanTxt.Kifu; mainGui.RepaintRequest.SetFlag_RefreshRequest(); IMove last; { Node <IMove, KyokumenWrapper> kifuElement = mainGui.Link_Server.Model_Taikyoku.Kifu.CurNode; last = (IMove)kifuElement.Key; } mainGui.ChangedTurn();//マウス左ボタンを押したのでチェンジターンします。 mainGui.Shape_PnlTaikyoku.Request_NaruDialogToShow(false); mainGui.GetWidget("BtnNaru").Visible = false; mainGui.GetWidget("BtnNaranai").Visible = false; mainGui.SetScene(SceneName.SceneB_1TumamitaiKoma); }
/// <summary> /// イベントの設定。 /// </summary> /// <param name="obj_shogiGui"></param> public virtual void Step3_SetEvent(object obj_shogiGui) { MainGui_Csharp shogibanGui1 = (MainGui_Csharp)obj_shogiGui; //---------- // [成る]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnNaru"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnNaru; } //---------- // [成らない]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnNaranai"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnNaranai; } //---------- // [クリアー]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnClear"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnClear; } //---------- // [再生]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnPlay"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnPlay; } //---------- // [コマ送り]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnForward"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnForward; } //---------- // [巻戻し]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnBackward"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnBackward; } //---------- // ログ出せボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnLogdase"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnLogdase; } //---------- // [壁置く]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnKabeOku"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnKabeOku; } //---------- // [出力切替]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnSyuturyokuKirikae"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnSyuturyokuKirikae; } //---------- // [▲]~[打]符号ボタン //---------- { string[] buttonNames = new string[] { "BtnFugo_Sente" // [▲]~[打]符号ボタン , "BtnFugo_Gote" , "BtnFugo_1" , "BtnFugo_2" , "BtnFugo_3" , "BtnFugo_4" , "BtnFugo_5" , "BtnFugo_6" , "BtnFugo_7" , "BtnFugo_8" , "BtnFugo_9" , "BtnFugo_Dou" , "BtnFugo_Fu" , "BtnFugo_Hisya" , "BtnFugo_Kaku" , "BtnFugo_Kyo" , "BtnFugo_Kei" , "BtnFugo_Gin" , "BtnFugo_Kin" , "BtnFugo_Oh" , "BtnFugo_Gyoku" , "BtnFugo_Tokin" , "BtnFugo_Narikyo" , "BtnFugo_Narikei" , "BtnFugo_Narigin" , "BtnFugo_Ryu" , "BtnFugo_Uma" , "BtnFugo_Yoru" , "BtnFugo_Hiku" , "BtnFugo_Agaru" , "BtnFugo_Migi" , "BtnFugo_Hidari" , "BtnFugo_Sugu" , "BtnFugo_Nari" , "BtnFugo_Funari" , "BtnFugo_Da" }; foreach (string buttonName in buttonNames) { UserWidget widget = shogibanGui1.GetWidget(buttonName); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnKakusyuFugo; } } //---------- // [全消]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnFugo_Zenkesi"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnZenkesi; } //---------- // [ここから採譜]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnFugo_KokokaraSaifu"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnKokokaraSaifu; } //---------- // 初期配置ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnSyokihaichi"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnSyokihaichi; } //---------- // [向き]ボタン //---------- { UserWidget widget = shogibanGui1.GetWidget("BtnMuki"); widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnMuki; } }
/// <summary> /// シングルトン。 /// </summary> /// <returns></returns> public static Event_CsharpImpl GetInstance() { if (null == Event_CsharpImpl.instance) { Event_CsharpImpl ins = new Event_CsharpImpl(); Event_CsharpImpl.instance = ins; // // [成る]ボタンのイベント。 // ins.delegate_BtnNaru = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; shogibanGui2.SetNaruFlag(true); ins.After_NaruNaranai_ButtonPushed( shogibanGui2 , btnKoma_Selected ); }; // // [成らない]ボタンのイベント。 // ins.delegate_BtnNaranai = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; shogibanGui2.SetNaruFlag(false); ins.After_NaruNaranai_ButtonPushed( shogibanGui2 , btnKoma_Selected ); }; // // [クリアー]ボタンのイベント。 // ins.delegate_BtnClear = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; Util_Lua_Csharp.ShogiGui = shogibanGui2; Util_Lua_Csharp.Perform("click_clearButton"); }; // // [再生]ボタンのイベント。 // ins.delegate_BtnPlay = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; Util_Lua_Csharp.ShogiGui = shogibanGui2; Util_Lua_Csharp.Perform("click_playButton"); }; // // [コマ送り]ボタンのイベント。 // ins.delegate_BtnForward = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp mainGui3 = (MainGui_Csharp)obj_shogiGui2; string restText = Util_Function_Csharp.ReadLine_FromTextbox(); Util_Functions_Server.Komaokuri_Srv( ref restText, mainGui3.Link_Server.Model_Taikyoku, mainGui3.Model_Manual); Util_Function_Csharp.Komaokuri_Gui(restText, mainGui3); Util_Menace.Menace(mainGui3);// メナス }; // // [巻き戻し]ボタンのイベント。 // ins.delegate_BtnBackward = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; Finger movedKoma; Finger foodKoma;//取られた駒 string fugoJStr; if (!Util_Functions_Server.Makimodosi_Srv(out movedKoma, out foodKoma, out fugoJStr, shogibanGui2.Link_Server.Model_Taikyoku)) { goto gt_EndBlock; } Util_Function_Csharp.Makimodosi_Gui(shogibanGui2, movedKoma, foodKoma, fugoJStr, Util_Function_Csharp.ReadLine_FromTextbox()); Util_Menace.Menace(shogibanGui2);//メナス gt_EndBlock: ; }; // // [ログ出せ]ボタンのイベント。 // ins.delegate_BtnLogdase = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; shogibanGui2.Logdase(); }; // // [壁置く]ボタンのイベント。 // ins.delegate_BtnKabeOku = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; UserWidget widget = shogibanGui2.GetWidget("BtnKabeOku"); // [壁置く]←→[駒動かす]切替 switch (widget.Text) { case "壁置く": widget.Text = "駒動かす"; break; default: widget.Text = "壁置く"; break; } shogibanGui2.RepaintRequest.SetFlag_RefreshRequest(); }; // // [出力切替]ボタンのイベント。 // ins.delegate_BtnSyuturyokuKirikae = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; switch (shogibanGui2.SyuturyokuKirikae) { case SyuturyokuKirikae.Japanese: shogibanGui2.SetSyuturyokuKirikae(SyuturyokuKirikae.Sfen); break; case SyuturyokuKirikae.Sfen: shogibanGui2.SetSyuturyokuKirikae(SyuturyokuKirikae.Html); break; case SyuturyokuKirikae.Html: shogibanGui2.SetSyuturyokuKirikae(SyuturyokuKirikae.Japanese); break; } shogibanGui2.RepaintRequest.SyuturyokuRequest = RepaintRequestGedanTxt.Kifu; }; // // [各種符号]ボタンのイベント。 // ins.delegate_BtnKakusyuFugo = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; UserWidget userWidget = (UserWidget)userWidget2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; UserWidget widget = shogibanGui2.GetWidget(userWidget.Name); shogibanGui2.RepaintRequest.SetNyuryokuTextTail(widget.Fugo); }; // // [全消]ボタンのイベント。 // ins.delegate_BtnZenkesi = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; shogibanGui2.RepaintRequest.NyuryokuText = ""; }; // // [ここから採譜]ボタンのイベント。 // ins.delegate_BtnKokokaraSaifu = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; UtilKifuTree282.SetStartpos_KokokaraSaifu(shogibanGui2.Link_Server.Model_Taikyoku.Kifu, shogibanGui2.Link_Server.Model_Taikyoku.Kifu.CurNode.Value.KyokumenConst.KaisiPside); shogibanGui2.RepaintRequest.SyuturyokuRequest = RepaintRequestGedanTxt.Kifu; }; // // [初期配置]ボタンのイベント。 // ins.delegate_BtnSyokihaichi = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogibanGui2 = (MainGui_Csharp)obj_shogiGui2; Util_Function_Csharp.Perform_SyokiHaichi(shogibanGui2); }; // // [向き]ボタンのイベント。 // ins.delegate_BtnMuki = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp mainGui3 = (MainGui_Csharp)obj_shogiGui2; Shape_BtnKoma movedKoma = mainGui3.Shape_PnlTaikyoku.Btn_MovedKoma(); RO_Star koma; Finger figKoma = Fingers.Error_1; if (null != movedKoma) { //>>>>> 移動直後の駒があるとき koma = Util_Starlightable.AsKoma(mainGui3.Model_Manual.GuiSkyConst.StarlightIndexOf(movedKoma.Finger).Now); figKoma = movedKoma.Finger; } else if (null != btnKoma_Selected) { //>>>>> 選択されている駒があるとき koma = Util_Starlightable.AsKoma(mainGui3.Model_Manual.GuiSkyConst.StarlightIndexOf(btnKoma_Selected.Koma).Now); figKoma = btnKoma_Selected.Koma; } else { koma = null; } if (null != koma) { KifuNode modifyNode = new KifuNodeImpl( mainGui3.Link_Server.Model_Taikyoku.Kifu.CurNode.Key,//現在の局面を流用 new KyokumenWrapper( SkyConst.NewInstance_OverwriteOrAdd_Light( mainGui3.Model_Manual.GuiSkyConst, -1,//そのまま figKoma, new RO_Starlight( new RO_Star( Conv_Playerside.Reverse(koma.Pside),//向きを逆さにします。 koma.Masu, koma.Komasyurui ) ) ) ) ); // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // ここで局面データを変更します。 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ string jsaFugoStr; Util_Functions_Server.SetCurNode_Srv( mainGui3.Link_Server.Model_Taikyoku, mainGui3.Model_Manual, modifyNode, out jsaFugoStr); mainGui3.RepaintRequest.SetFlag_RefreshRequest(); } }; } return(Event_CsharpImpl.instance); }