/// <summary> /// ************************************************************************************************************************ /// 局面に合わせて、駒ボタンのx,y位置を変更します /// ************************************************************************************************************************ /// </summary> /// <param name="btnKoma">駒</param> public static void Redraw_KomaLocation( Finger figKoma, MainGui_Csharp mainGui ) { RO_Star koma = Util_Starlightable.AsKoma(mainGui.Model_Manual.GuiSkyConst.StarlightIndexOf(figKoma).Now); Shape_BtnKoma btnKoma = Conv_Koma_InGui.FingerToKomaBtn(figKoma, mainGui); // マスと駒の隙間(パディング) int padX = 2; int padY = 2; int suji; int dan; Util_MasuNum.TryMasuToSuji(koma.Masu, out suji); Util_MasuNum.TryMasuToDan(koma.Masu, out dan); switch (Conv_SyElement.ToOkiba(koma.Masu)) { case Okiba.ShogiBan: btnKoma.SetBounds(new Rectangle( mainGui.Shape_PnlTaikyoku.Shogiban.SujiToX(suji) + padX, mainGui.Shape_PnlTaikyoku.Shogiban.DanToY(dan) + padY, btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.Sente_Komadai: btnKoma.SetBounds(new Rectangle( mainGui.Shape_PnlTaikyoku.KomadaiArr[0].SujiToX(suji) + padX, mainGui.Shape_PnlTaikyoku.KomadaiArr[0].DanToY(dan) + padY, btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.Gote_Komadai: btnKoma.SetBounds(new Rectangle( mainGui.Shape_PnlTaikyoku.KomadaiArr[1].SujiToX(suji) + padX, mainGui.Shape_PnlTaikyoku.KomadaiArr[1].DanToY(dan) + padY, btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.KomaBukuro: btnKoma.SetBounds(new Rectangle( mainGui.Shape_PnlTaikyoku.KomadaiArr[2].SujiToX(suji) + padX, mainGui.Shape_PnlTaikyoku.KomadaiArr[2].DanToY(dan) + padY, btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; } }
/// <summary> /// シングルトン。 /// </summary> /// <returns></returns> public static Event_CsharpVsImpl GetInstance() { if (null == Event_CsharpVsImpl.instance) { Event_CsharpVsImpl ins = new Event_CsharpVsImpl(); Event_CsharpVsImpl.instance = ins; // // [将棋エンジン起動ボタン_学習]ボタンのイベント。 // ins.delegate_BtnShogiEngineKidoL = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; // ここに処理を書く }; // // [将棋エンジン起動ボタン_直観]ボタンのイベント。 // ins.delegate_BtnShogiEngineKidoF = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; MainGui_Csharp shogiGui = (MainGui_Csharp)obj_shogiGui2; Uc_Form1Mainable ui_PnlMain = ((Form1_Shogi)shogiGui.OwnerForm).Uc_Form1Main; ui_PnlMain.MainGui.Start_ShogiEngine(ui_PnlMain.SetteiXmlFile.ShogiEngineFilePath); }; // // [将棋エンジン起動ボタン_思考]ボタンのイベント。 // ins.delegate_BtnShogiEngineKidoT = ( object obj_shogiGui2 , object userWidget2 // UerWidget , object btnKoma_Selected2 ) => { Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2; // ここに処理を書く MainGui_Csharp shogiGui = (MainGui_Csharp)obj_shogiGui2; Uc_Form1Mainable ui_PnlMain = ((Form1_Shogi)shogiGui.OwnerForm).Uc_Form1Main; ui_PnlMain.MainGui.Do_ComputerSente(); }; } return(Event_CsharpVsImpl.instance); }
/// <summary> /// 移動直後の駒を取得。 /// </summary> /// <returns>移動直後の駒。なければヌル</returns> public Shape_BtnKoma Btn_MovedKoma() { Shape_BtnKoma btn = null; if (Fingers.Error_1 != this.MovedKoma) { btn = this.BtnKomaDoors[(int)this.MovedKoma]; } return(btn); }
/// <summary> /// 局面に合わせて、駒ボタンのx,y位置を変更します /// </summary> /// <param name="btnKoma">駒</param> public static void Redraw_KomaLocation( Finger figKoma, NarabeRoomViewModel shogiGui ) { RO_Star_Koma koma = Util_Koma.AsKoma(shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(figKoma).Now); Shape_BtnKoma btnKoma = Util_InGui.FingerToKomaBtn(figKoma, shogiGui); int suji; int dan; Util_MasuNum.MasuToSuji(koma.Masu, out suji); Util_MasuNum.MasuToDan(koma.Masu, out dan); switch (Util_Masu.GetOkiba(koma.Masu)) { case Okiba.ShogiBan: btnKoma.SetBounds(new Rectangle( shogiGui.Shape_PnlTaikyoku.Shogiban.SujiToX(suji), shogiGui.Shape_PnlTaikyoku.Shogiban.DanToY(dan), btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.Sente_Komadai: btnKoma.SetBounds(new Rectangle( shogiGui.Shape_PnlTaikyoku.KomadaiArr[0].SujiToX(suji), shogiGui.Shape_PnlTaikyoku.KomadaiArr[0].DanToY(dan), btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.Gote_Komadai: btnKoma.SetBounds(new Rectangle( shogiGui.Shape_PnlTaikyoku.KomadaiArr[1].SujiToX(suji), shogiGui.Shape_PnlTaikyoku.KomadaiArr[1].DanToY(dan), btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.KomaBukuro: btnKoma.SetBounds(new Rectangle( shogiGui.Shape_PnlTaikyoku.KomadaiArr[2].SujiToX(suji), shogiGui.Shape_PnlTaikyoku.KomadaiArr[2].DanToY(dan), btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; } }
/// <summary> /// つまんでいる駒。 /// </summary> /// <returns>つまんでいる駒。なければヌル</returns> public Shape_BtnKoma Btn_TumandeiruKoma(object obj_shogiGui) { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui; Shape_BtnKoma found = null; if (-1 != shogiGui.Shape_PnlTaikyoku.FigTumandeiruKoma) { found = this.BtnKomaDoors[shogiGui.Shape_PnlTaikyoku.FigTumandeiruKoma]; } return(found); }
/// <summary> /// つまんでいる駒。 /// </summary> /// <returns>つまんでいる駒。なければヌル</returns> public Shape_BtnKoma Btn_TumandeiruKoma(object obj_shogiGui) { MainGui_Csharp shogiGui = (MainGui_Csharp)obj_shogiGui; Shape_BtnKoma found = null; if (-1 != shogiGui.FigTumandeiruKoma) { found = this.Btn40Komas[shogiGui.FigTumandeiruKoma]; } return(found); }
/// <summary> /// ************************************************************************************************************************ /// 駒のハンドル(*1)を元に、ボタンを返します。 /// ************************************************************************************************************************ /// /// *1…将棋の駒1つ1つに付けられた番号です。 /// /// </summary> /// <param name="hKoma"></param> /// <param name="shape_PnlTaikyoku"></param> /// <returns>なければヌル</returns> public static Shape_BtnKoma FingerToKomaBtn(Finger koma, MainGui_Csharp shogiGui) { Shape_BtnKoma found = null; int hKoma = (int)koma; if (0 <= hKoma && hKoma < shogiGui.Shape_PnlTaikyoku.Btn40Komas.Length) { found = shogiGui.Shape_PnlTaikyoku.Btn40Komas[hKoma]; } return(found); }
/// <summary> /// 駒のハンドル(*1)を元に、ボタンを返します。 /// /// *1…将棋の駒1つ1つに付けられた番号です。 /// /// </summary> /// <param name="hKoma"></param> /// <param name="shape_PnlTaikyoku"></param> /// <returns>なければヌル</returns> public static Shape_BtnKoma FingerToKomaBtn(Finger koma, NarabeRoomViewModel shogiGui) { Shape_BtnKoma found = null; int hKoma = (int)koma; if (0 <= hKoma && hKoma < shogiGui.Shape_PnlTaikyoku.BtnKomaDoors.Length) { found = shogiGui.Shape_PnlTaikyoku.BtnKomaDoors[hKoma]; } return(found); }
/// <summary> /// FIXME: 使ってない? /// /// ************************************************************************************************************************ /// 駒のハンドル(*1)を元に、ボタンを返します。 /// ************************************************************************************************************************ /// /// *1…将棋の駒1つ1つに付けられた番号です。 /// /// </summary> /// <param name="hKomas"></param> /// <param name="shape_PnlTaikyoku"></param> /// <returns></returns> public static List <Shape_BtnKoma> HKomasToBtns(List <int> hKomas, MainGui_Csharp shogiGui) { List <Shape_BtnKoma> btns = new List <Shape_BtnKoma>(); foreach (int handle in hKomas) { Shape_BtnKoma btn = shogiGui.Shape_PnlTaikyoku.Btn40Komas[handle]; if (null != btn) { btns.Add(btn); } } return(btns); }
/// <summary> /// 駒のハンドル(*1)を元に、ボタンを返します。 /// /// *1…将棋の駒1つ1つに付けられた番号です。 /// /// </summary> /// <param name="hKomas"></param> /// <param name="shape_PnlTaikyoku"></param> /// <returns></returns> public static List <Shape_BtnKoma> HKomasToBtns(List <int> hKomas, NarabeRoomViewModel shogiGui) { List <Shape_BtnKoma> btns = new List <Shape_BtnKoma>(); foreach (int handle in hKomas) { Shape_BtnKoma btn = shogiGui.Shape_PnlTaikyoku.BtnKomaDoors[handle]; if (null != btn) { btns.Add(btn); } } return(btns); }
/// <summary> /// ************************************************************************************************************************ /// [巻戻し]ボタン /// ************************************************************************************************************************ /// </summary> public static bool Makimodosi_Gui( MainGui_Csharp shogiGui, Finger movedKoma, Finger foodKoma, string fugoJStr, string backedInputText) { //------------------------------ // チェンジターン //------------------------------ shogiGui.ChangedTurn();//[巻戻し]ボタンを押したあと //------------------------------ // 符号表示 //------------------------------ shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJStr); Shape_BtnKoma btn_movedKoma = Conv_Koma_InGui.FingerToKomaBtn(movedKoma, shogiGui); Shape_BtnKoma btn_foodKoma = Conv_Koma_InGui.FingerToKomaBtn(foodKoma, shogiGui);//取られた駒 //------------------------------------------------------------ // 駒・再描画 //------------------------------------------------------------ if ( null != btn_movedKoma //動かした駒 || null != btn_foodKoma //取ったときに下にあった駒(巻戻しのときは、これは無し) ) { shogiGui.RepaintRequest.SetFlag_RecalculateRequested();// 駒の再描画要求 } // 巻き戻したので、符号が入ります。 { shogiGui.RepaintRequest.NyuryokuText = $"{fugoJStr} {backedInputText}";// 入力欄 shogiGui.RepaintRequest.SyuturyokuRequest = RepaintRequestGedanTxt.Kifu; } shogiGui.RepaintRequest.SetFlag_RefreshRequest(); return(true); }
/// <summary> /// ************************************************************************************************************************ /// [巻戻し]ボタン /// ************************************************************************************************************************ /// </summary> public static bool Makimodosi_Gui( NarabeRoomViewModel shogiGui, Finger movedKoma, Finger foodKoma, string fugoJStr, string backedInputText) { //------------------------------ // チェンジターン //------------------------------ shogiGui.ChangeTurn();//[巻戻し]ボタンを押したあと //------------------------------ // 符号表示 //------------------------------ shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJStr); Shape_BtnKoma btn_movedKoma = Util_InGui.FingerToKomaBtn(movedKoma, shogiGui); Shape_BtnKoma btn_foodKoma = Util_InGui.FingerToKomaBtn(foodKoma, shogiGui);//取られた駒 //------------------------------------------------------------ // 駒・再描画 //------------------------------------------------------------ if ( null != btn_movedKoma //動かした駒 || null != btn_foodKoma //取ったときに下にあった駒(巻戻しのときは、これは無し) ) { shogiGui.ResponseData.RedrawStarlights();// 駒の再描画要求 } // 巻き戻したので、符号が入ります。 { shogiGui.ResponseData.InputTextString = fugoJStr + " " + backedInputText;// 入力欄 shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; } shogiGui.ResponseData.ToRedraw(); return(true); }
public static void Komamove1a_49Gui( out PieceType toSyurui, out Starlight dst, Shape_BtnKoma btnKoma_Selected, Shape_BtnMasu btnMasu, NarabeRoomViewModel shogiGui ) { // 駒の種類 if (shogiGui.Shape_PnlTaikyoku.Naru) { // 成ります toSyurui = KomaSyurui14Array.NariCaseHandle[(int)Haiyaku184Array.Syurui(Util_Koma.AsKoma(shogiGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now).Haiyaku)]; shogiGui.Shape_PnlTaikyoku.SetNaruFlag(false); } else { // そのまま toSyurui = Haiyaku184Array.Syurui(Util_Koma.AsKoma(shogiGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now).Haiyaku); } // 置く駒 { dst = new RO_MotionlessStarlight( //btnKoma_Selected.Finger, new RO_Star_Koma( Util_Koma.AsKoma(shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(btnKoma_Selected.Finger).Now).Pside, btnMasu.Zahyo, toSyurui ) ); } //------------------------------------------------------------ // 「取った駒種類_巻戻し用」をクリアーします。 //------------------------------------------------------------ shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma = null; }
public static void Komamove1a_49Gui( out PieceType toSyurui, out IMoveHalf dst, Shape_BtnKoma btnKoma_Selected, Shape_BtnMasu btnMasu, MainGui_Csharp mainGui ) { // 駒の種類 if (mainGui.Naru) { // 成ります toSyurui = Util_Komasyurui14.NariCaseHandle[(int)Util_Komahaiyaku184.Syurui(Util_Starlightable.AsKoma(mainGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now).Haiyaku)]; mainGui.SetNaruFlag(false); } else { // そのまま toSyurui = Util_Komahaiyaku184.Syurui(Util_Starlightable.AsKoma(mainGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now).Haiyaku); } // 置く駒 { dst = new RO_Starlight( //btnKoma_Selected.Finger, new RO_Star( Util_Starlightable.AsKoma(mainGui.Model_Manual.GuiSkyConst.StarlightIndexOf(btnKoma_Selected.Finger).Now).Pside, btnMasu.Zahyo, toSyurui ) ); } //------------------------------------------------------------ // 「取った駒種類_巻戻し用」をクリアーします。 //------------------------------------------------------------ mainGui.Shape_PnlTaikyoku.MousePos_FoodKoma = null; }
/// <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); }
/// <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); }
public virtual void Step3_SetEvent(object obj_shogiGui) { NarabeRoomViewModel shogiGui1 = (NarabeRoomViewModel)obj_shogiGui; //---------- // [成る]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnNaru"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; shogiGui.Shape_PnlTaikyoku.SetNaruFlag(true); this.After_NaruNaranai( shogiGui , btnKoma_Selected ); }; } //---------- // [成らない]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnNaranai"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; shogiGui.Shape_PnlTaikyoku.SetNaruFlag(false); this.After_NaruNaranai( shogiGui , btnKoma_Selected ); }; } //---------- // [クリアー]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnClear"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Util_Lua_KifuNarabe.ShogiGui = shogiGui; Util_Lua_KifuNarabe.Perform("click_clearButton"); }; } //---------- // [再生]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnPlay"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Util_Lua_KifuNarabe.ShogiGui = shogiGui; Util_Lua_KifuNarabe.Perform("click_playButton"); }; } //---------- // [コマ送り]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnForward"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; string restText = Util_InGui.ReadLine_FromTextbox(); Util_InServer.Komaokuri_Srv(ref restText, shogiGui); Util_InGui.Komaokuri_Gui(restText, shogiGui); Util_Menace.Menace(shogiGui);// メナス }; } //---------- // [巻戻し]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnBackward"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; Finger movedKoma; Finger foodKoma;//取られた駒 string fugoJStr; if (!Util_InServer.Makimodosi_Srv(out movedKoma, out foodKoma, out fugoJStr, shogiGui)) { goto gt_EndBlock; } Util_InGui.Makimodosi_Gui(shogiGui, movedKoma, foodKoma, fugoJStr, Util_InGui.ReadLine_FromTextbox()); Util_Menace.Menace(shogiGui);//メナス gt_EndBlock: ; }; } //---------- // ログ出せボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnLogdase"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; ui_PnlMain.ShogiGui.Logdase(); }; } //---------- // [壁置く]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnKabeOku"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; // [壁置く]←→[駒動かす]切替 switch (widget.Text) { case "壁置く": widget.Text = "駒動かす"; break; default: widget.Text = "壁置く"; break; } shogiGui.ResponseData.ToRedraw(); }; } //---------- // [出力切替]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnSyuturyokuKirikae"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; switch (shogiGui.Shape_PnlTaikyoku.SyuturyokuKirikae) { case SyuturyokuKirikae.Japanese: shogiGui.Shape_PnlTaikyoku.SetSyuturyokuKirikae(SyuturyokuKirikae.Sfen); break; case SyuturyokuKirikae.Sfen: shogiGui.Shape_PnlTaikyoku.SetSyuturyokuKirikae(SyuturyokuKirikae.Html); break; case SyuturyokuKirikae.Html: shogiGui.Shape_PnlTaikyoku.SetSyuturyokuKirikae(SyuturyokuKirikae.Japanese); break; } shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; }; } //---------- // [▲]~[打]符号ボタン //---------- { 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 = shogiGui1.Shape_PnlTaikyoku.GetWidget(buttonName); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; shogiGui.ResponseData.SetAppendInputTextString(shogiGui.Shape_PnlTaikyoku.GetWidget(buttonName).Fugo); }; } } //---------- // [全消]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnFugo_Zenkesi"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; shogiGui.ResponseData.InputTextString = ""; }; } //---------- // [ここから採譜]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnFugo_KokokaraSaifu"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; ui_PnlMain.ShogiGui.GameViewModel.Kifu.SetStartpos_KokokaraSaifu(Util_InServer.CurPside(ui_PnlMain.ShogiGui)); shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; }; } //---------- // 初期配置ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnSyokihaichi"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; WidgetsLoader_KifuNarabe.Perform_SyokiHaichi(ui_PnlMain); }; } //---------- // [向き]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnMuki"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; Shape_BtnKoma movedKoma = shogiGui.Shape_PnlTaikyoku.Btn_MovedKoma(); RO_Star_Koma koma; Finger figKoma = Fingers.Error_1; if (null != movedKoma) { //>>>>> 移動直後の駒があるとき koma = Util_Koma.AsKoma(ui_PnlMain.ShogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(movedKoma.Finger).Now); figKoma = movedKoma.Finger; } else if (null != btnKoma_Selected) { //>>>>> 選択されている駒があるとき koma = Util_Koma.AsKoma(ui_PnlMain.ShogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(btnKoma_Selected.Koma).Now); figKoma = btnKoma_Selected.Koma; } else { koma = null; } if (null != koma) { switch (koma.Pside) { case Playerside.P1: { SkyBuffer buffer_Sky = new SkyBuffer(ui_PnlMain.ShogiGui.GameViewModel.GuiSkyConst); buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight( //figKoma, new RO_Star_Koma(Playerside.P2, koma.Masu, Haiyaku184Array.Syurui(koma.Haiyaku)) )); KifuNode modifyNode = new KifuNodeImpl( ui_PnlMain.ShogiGui.GameViewModel.Kifu.CurNode.Key, //現在の局面を流用 new KyokumenWrapper(new SkyConst(buffer_Sky)), ((KifuNode)ui_PnlMain.ShogiGui.GameViewModel.Kifu.CurNode).Tebanside ); // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // ここで局面データを変更します。 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Util_InServer.SetCurNode_Srv(ui_PnlMain.ShogiGui, modifyNode); ui_PnlMain.ShogiGui.ResponseData.ToRedraw(); } break; case Playerside.P2: { SkyBuffer buffer_Sky = new SkyBuffer(ui_PnlMain.ShogiGui.GameViewModel.GuiSkyConst); buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight( //figKoma, new RO_Star_Koma(Playerside.P1, koma.Masu, Haiyaku184Array.Syurui(koma.Haiyaku)) )); KifuNode modifyNode = new KifuNodeImpl( ui_PnlMain.ShogiGui.GameViewModel.Kifu.CurNode.Key, //現在の局面を流用 new KyokumenWrapper(new SkyConst(buffer_Sky)), ((KifuNode)ui_PnlMain.ShogiGui.GameViewModel.Kifu.CurNode).Tebanside ); // ここで局面データを変更します。 Util_InServer.SetCurNode_Srv(ui_PnlMain.ShogiGui, modifyNode); ui_PnlMain.ShogiGui.ResponseData.ToRedraw(); } break; } } }; } }
private void After_NaruNaranai( NarabeRoomViewModel shogiGui , Shape_BtnKoma btnTumandeiruKoma ) { // 駒を動かします。 { // GuiからServerへ渡す情報 PieceType syurui; Starlight dst; Util_InGui.Komamove1a_49Gui(out syurui, out dst, btnTumandeiruKoma, shogiGui.Shape_PnlTaikyoku.NaruBtnMasu, shogiGui); // ServerからGuiへ渡す情報 bool torareruKomaAri; RO_Star_Koma koma_Food_after; Util_InServer.Komamove1a_50Srv(out torareruKomaAri, out koma_Food_after, dst, btnTumandeiruKoma.Koma, Util_Koma.AsKoma(dst.Now), shogiGui); Util_InGui.Komamove1a_51Gui(torareruKomaAri, koma_Food_after, shogiGui); } { //---------- // 移動済表示 //---------- shogiGui.Shape_PnlTaikyoku.SetHMovedKoma(btnTumandeiruKoma.Finger); //------------------------------ // 棋譜に符号を追加(マウスボタンが放されたとき)TODO:まだ早い。駒が成るかもしれない。 //------------------------------ // 棋譜 ShootingStarlightable move = new RO_ShootingStarlight( //btnTumandeiruKoma.Finger, shogiGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now, shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(btnTumandeiruKoma.Finger).Now, shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma != null ? shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma.Syurui : PieceType.None );// 選択している駒の元の場所と、移動先 { StartposImporter.Assert_HirateHonsyogi(new SkyBuffer(shogiGui.GameViewModel.GuiSkyConst), "newNode作成前"); KifuNode newNode = new KifuNodeImpl( move, new KyokumenWrapper(shogiGui.GameViewModel.GuiSkyConst), KifuNodeImpl.GetReverseTebanside(((KifuNode)shogiGui.GameViewModel.Kifu.CurNode).Tebanside) ); StartposImporter.Assert_HirateHonsyogi(new SkyBuffer(newNode.Value.ToKyokumenConst), "newNode作成後"); //「成る/成らない」ボタンを押したときです。 ((KifuNode)KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu)).AppendChildA_New(newNode); // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // ここで棋譜の変更をします。 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Util_InServer.SetCurNode_Srv(shogiGui, newNode); shogiGui.ResponseData.ToRedraw(); } //------------------------------ // 符号表示 //------------------------------ RO_Star_Koma koma = Util_Koma.AsKoma(move.LongTimeAgo); FugoJ fugoJ; fugoJ = JFugoCreator15Array.ItemMethods[(int)Haiyaku184Array.Syurui(koma.Haiyaku)](move, new KyokumenWrapper(shogiGui.GameViewModel.GuiSkyConst));//「▲2二角成」なら、馬(dst)ではなくて角(src)。 shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJ.ToText_UseDou( KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu) )); //------------------------------ // チェンジターン //------------------------------ if (!shogiGui.Shape_PnlTaikyoku.Requested_NaruDialogToShow) { //System.C onsole.WriteLine("マウス左ボタンを押したのでチェンジターンします。"); shogiGui.ChangeTurn(); } } shogiGui.ResponseData.RedrawStarlights();// 駒の再描画要求 //System.C onsole.WriteLine("つまんでいる駒を放します。(6)"); shogiGui.Shape_PnlTaikyoku.SetFigTumandeiruKoma(-1);//駒を放した扱いです。 shogiGui.Shape_PnlTaikyoku.SetNaruMasu(null); shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; shogiGui.ResponseData.ToRedraw(); ShootingStarlightable last; { Node <ShootingStarlightable, KyokumenWrapper> kifuElement = KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu); last = (ShootingStarlightable)kifuElement.Key; } shogiGui.ChangeTurn();//マウス左ボタンを押したのでチェンジターンします。 shogiGui.Shape_PnlTaikyoku.Request_NaruDialogToShow(false); shogiGui.Shape_PnlTaikyoku.GetWidget("BtnNaru").Visible = false; shogiGui.Shape_PnlTaikyoku.GetWidget("BtnNaranai").Visible = false; shogiGui.SetScene(SceneName.SceneB_1TumamitaiKoma); }
public override void Step() { // 入っているマウス操作イベントのうち、マウスムーブは 1つに 集約 します。 bool bMouseMove_SceneB_1TumamitaiKoma = false; // 入っているマウス操作イベントは、全部捨てていきます。 MouseEventState[] queue = this.MouseEventQueue.ToArray(); this.MouseEventQueue.Clear(); foreach (MouseEventState eventState in queue) { switch (this.shogiGui.Scene) { case SceneName.SceneB_1TumamitaiKoma: { #region つまみたい駒 switch (eventState.Name2) { case MouseEventStateName.Arive: { #region アライブ //------------------------------ // メナス //------------------------------ Util_Menace.Menace(this.shogiGui); #endregion } break; case MouseEventStateName.MouseMove: { #region マウスムーブ if (bMouseMove_SceneB_1TumamitaiKoma) { continue; } bMouseMove_SceneB_1TumamitaiKoma = true; SkyConst src_Sky = shogiGui.GameViewModel.GuiSkyConst; Point mouse = eventState.MouseLocation; //---------- // 将棋盤:升目 //---------- foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if ("Masu" == widget.Type && Okiba.ShogiBan == widget.Okiba) { Shape_BtnMasuImpl cell = (Shape_BtnMasuImpl)widget.Object; cell.LightByMouse(mouse.X, mouse.Y); if (cell.Light) { shogiGui.ResponseData.ToRedraw(); } break; } } //---------- // 駒置き、駒袋:升目 //---------- foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if ("Masu" == widget.Type && widget.Okiba.HasFlag(Okiba.Sente_Komadai | Okiba.Gote_Komadai | Okiba.KomaBukuro)) { Shape_BtnMasuImpl cell = (Shape_BtnMasuImpl)widget.Object; cell.LightByMouse(mouse.X, mouse.Y); if (cell.Light) { shogiGui.ResponseData.ToRedraw(); } } } //---------- // 駒 //---------- foreach (Shape_BtnKomaImpl btnKoma in shogiGui.Shape_PnlTaikyoku.BtnKomaDoors) { btnKoma.LightByMouse(mouse.X, mouse.Y); if (btnKoma.Light) { shogiGui.ResponseData.ToRedraw(); RO_Star_Koma koma = Util_Koma.AsKoma(src_Sky.StarlightIndexOf(btnKoma.Koma).Now); if (Okiba.ShogiBan == Util_Masu.Masu_ToOkiba(koma.Masu)) { // マウスオーバーした駒の利き TimedB.Check_MouseoverKomaKiki(shogiGui, btnKoma.Koma); break; } } } foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if (widget.IsLight_OnFlowB_1TumamitaiKoma) { widget.LightByMouse(mouse.X, mouse.Y); if (widget.Light) { shogiGui.ResponseData.ToRedraw(); } } } #endregion } break; case MouseEventStateName.MouseLeftButtonDown: { #region マウス左ボタンダウン SceneName nextPhaseB = SceneName.Ignore; SkyConst src_Sky = shogiGui.GameViewModel.GuiSkyConst; //---------- // 駒 //---------- foreach (Shape_BtnKomaImpl btnKoma in shogiGui.Shape_PnlTaikyoku.BtnKomaDoors) { if (btnKoma.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { //>>>>>>>>>> 駒にヒットしました。 if (null != shogiGui.Shape_PnlTaikyoku.Btn_TumandeiruKoma(shogiGui)) { //>>>>>>>>>> 既に選択されている駒があります。→★成ろうとしたときの、取られる相手の駒かも。 goto gt_Next1; } // 既に選択されている駒には無効 if (shogiGui.Shape_PnlTaikyoku.FigTumandeiruKoma == (int)btnKoma.Koma) { goto gt_Next1; } if (btnKoma.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) //>>>>> 駒をつまみました。 { // 駒をつまみます。 shogiGui.Shape_PnlTaikyoku.SetFigTumandeiruKoma((int)btnKoma.Koma); shogiGui.Shape_PnlTaikyoku.SelectFirstTouch = true; nextPhaseB = SceneName.SceneB_2OkuKoma; shogiGui.Shape_PnlTaikyoku.SetMouseStarlightOrNull2( src_Sky.StarlightIndexOf(btnKoma.Koma) //TODO:改造 ); shogiGui.Shape_PnlTaikyoku.SetHMovedKoma(Fingers.Error_1); shogiGui.ResponseData.ToRedraw(); } } gt_Next1: ; } //---------- // 既に選択されている駒 //---------- Shape_BtnKoma btnKoma_Selected = shogiGui.Shape_PnlTaikyoku.Btn_TumandeiruKoma(shogiGui); //---------- // 各種ボタン //---------- { foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if (widget.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { if (null != widget.Delegate_MouseHitEvent) { widget.Delegate_MouseHitEvent( shogiGui , btnKoma_Selected ); } } } } shogiGui.SetScene(nextPhaseB); //------------------------------ // このメインパネルの反応 //------------------------------ shogiGui.Response("MouseOperation"); #endregion } break; case MouseEventStateName.MouseLeftButtonUp: { #region マウス左ボタンアップ SkyConst src_Sky = shogiGui.GameViewModel.GuiSkyConst; //---------- // 将棋盤:升目 //---------- foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if ("Masu" == widget.Type && Okiba.ShogiBan == widget.Okiba) { Shape_BtnMasuImpl cell = (Shape_BtnMasuImpl)widget.Object; if (cell.DeselectByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { shogiGui.ResponseData.ToRedraw(); } } } //---------- // 駒置き、駒袋:升目 //---------- foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if ("Masu" == widget.Type && widget.Okiba.HasFlag(Okiba.Sente_Komadai | Okiba.Gote_Komadai | Okiba.KomaBukuro)) { Shape_BtnMasuImpl cell = (Shape_BtnMasuImpl)widget.Object; if (cell.DeselectByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { shogiGui.ResponseData.ToRedraw(); } } } //---------- // 駒 //---------- foreach (Shape_BtnKomaImpl btnKoma in shogiGui.Shape_PnlTaikyoku.BtnKomaDoors) { if (btnKoma.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { //>>>>> つまんでいる駒から、指を放しました shogiGui.Shape_PnlTaikyoku.SetFigTumandeiruKoma(-1); RO_Star_Koma koma1 = Util_Koma.AsKoma(src_Sky.StarlightIndexOf((int)btnKoma.Koma).Now); if (Okiba.ShogiBan == Util_Masu.GetOkiba(koma1.Masu)) { //---------- // 移動済表示 //---------- shogiGui.Shape_PnlTaikyoku.SetHMovedKoma(btnKoma.Koma); //------------------------------ // 棋譜に符号を追加(マウスボタンが放されたとき)TODO:まだ早い。駒が成るかもしれない。 //------------------------------ // 棋譜 Starlight dstStarlight = shogiGui.Shape_PnlTaikyoku.MouseStarlightOrNull2; System.Diagnostics.Debug.Assert(null != dstStarlight, "mouseStarlightがヌル"); Starlight srcStarlight = src_Sky.StarlightIndexOf(btnKoma.Koma); System.Diagnostics.Debug.Assert(null != srcStarlight, "komaStarlightがヌル"); ShootingStarlightable move = new RO_ShootingStarlight( //btnKoma.Koma, dstStarlight.Now, srcStarlight.Now, shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma != null ? shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma.Syurui : PieceType.None ); // 選択している駒の元の場所と、移動先 // TODO: 一手[巻戻し]のときは追加したくない Node <ShootingStarlightable, KyokumenWrapper> newNode = new KifuNodeImpl(move, new KyokumenWrapper(new SkyConst(src_Sky)), KifuNodeImpl.GetReverseTebanside(((KifuNode)shogiGui.GameViewModel.Kifu.CurNode).Tebanside) ); //マウスの左ボタンを放したときです。 ((KifuNode)KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu)).AppendChildA_New(newNode); Util_InServer.SetCurNode_Srv(shogiGui, newNode); shogiGui.ResponseData.ToRedraw(); //------------------------------ // 符号表示 //------------------------------ FugoJ fugoJ; RO_Star_Koma koma2 = Util_Koma.AsKoma(move.LongTimeAgo); fugoJ = JFugoCreator15Array.ItemMethods[(int)Haiyaku184Array.Syurui(koma2.Haiyaku)](move, new KyokumenWrapper(src_Sky)); //「▲2二角成」なら、馬(dst)ではなくて角(src)。 shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJ.ToText_UseDou( KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu) )); //------------------------------ // チェンジターン //------------------------------ if (!shogiGui.Shape_PnlTaikyoku.Requested_NaruDialogToShow) { shogiGui.ChangeTurn(); //マウス左ボタンを放したのでチェンジターンします。 } shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; shogiGui.ResponseData.ToRedraw(); } } } //------------------------------------------------------------ // 選択解除か否か //------------------------------------------------------------ { foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if (widget.DeselectByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y, shogiGui)) { shogiGui.ResponseData.ToRedraw(); } } } //------------------------------ // このメインパネルの反応 //------------------------------ shogiGui.Response("MouseOperation"); #endregion } break; } #endregion } break; case SceneName.SceneB_2OkuKoma: { #region 置く駒 switch (eventState.Name2) { case MouseEventStateName.MouseLeftButtonUp: { #region マウス左ボタンアップ Node <ShootingStarlightable, KyokumenWrapper> siteiNode = KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu); SkyConst src_Sky = shogiGui.GameViewModel.GuiSkyConst; //---------- // 駒 //---------- foreach (Shape_BtnKomaImpl btnKoma in shogiGui.Shape_PnlTaikyoku.BtnKomaDoors) { if (btnKoma.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { //>>>>> マウスが重なっていました if (shogiGui.Shape_PnlTaikyoku.SelectFirstTouch) { // クリックのマウスアップ shogiGui.Shape_PnlTaikyoku.SelectFirstTouch = false; } else { RO_Star_Koma koma = Util_Koma.AsKoma(src_Sky.StarlightIndexOf(btnKoma.Koma).Now); if (Okiba.ShogiBan == Util_Masu.GetOkiba(koma.Masu)) { //>>>>> 将棋盤の上に置いてあった駒から、指を放しました //System.C onsole.WriteLine("つまんでいる駒を放します。(4)"); shogiGui.Shape_PnlTaikyoku.SetFigTumandeiruKoma(-1); //---------- // 移動済表示 //---------- shogiGui.Shape_PnlTaikyoku.SetHMovedKoma(btnKoma.Koma); //------------------------------ // 棋譜に符号を追加(マウスボタンが放されたとき)TODO:まだ早い。駒が成るかもしれない。 //------------------------------ ShootingStarlightable move = new RO_ShootingStarlight( //btnKoma.Koma, shogiGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now, src_Sky.StarlightIndexOf(btnKoma.Koma).Now, shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma != null ? shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma.Syurui : PieceType.None ); // 選択している駒の元の場所と、移動先 ShootingStarlightable last; { last = siteiNode.Key; } //ShootingStarlightable previousMove = last; //符号の追加が行われる前に退避 Node <ShootingStarlightable, KyokumenWrapper> newNode = new KifuNodeImpl( move, new KyokumenWrapper(new SkyConst(src_Sky)), KifuNodeImpl.GetReverseTebanside(((KifuNode)shogiGui.GameViewModel.Kifu.CurNode).Tebanside) ); //マウスの左ボタンを放したときです。 ((KifuNode)KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu)).AppendChildA_New(newNode); Util_InServer.SetCurNode_Srv(shogiGui, newNode); shogiGui.ResponseData.ToRedraw(); // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // ここでツリーの内容は変わっている。 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ //------------------------------ // 符号表示 //------------------------------ RO_Star_Koma koma2 = Util_Koma.AsKoma(move.LongTimeAgo); FugoJ fugoJ; fugoJ = JFugoCreator15Array.ItemMethods[(int)Haiyaku184Array.Syurui(koma2.Haiyaku)](move, new KyokumenWrapper(src_Sky)); //「▲2二角成」なら、馬(dst)ではなくて角(src)。 shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJ.ToText_UseDou( KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu) )); //------------------------------ // チェンジターン //------------------------------ if (!shogiGui.Shape_PnlTaikyoku.Requested_NaruDialogToShow) { //System.C onsole.WriteLine("マウス左ボタンを放したのでチェンジターンします。"); shogiGui.ChangeTurn(); //マウス左ボタンを放したのでチェンジターンします。 } shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; shogiGui.ResponseData.ToRedraw(); } } } } //------------------------------ // このメインパネルの反応 //------------------------------ shogiGui.Response("MouseOperation"); #endregion } break; case MouseEventStateName.MouseLeftButtonDown: { #region マウス左ボタンダウン SceneName nextPhaseB = SceneName.Ignore; //System.C onsole.WriteLine("B2マウスダウン"); //---------- // つまんでいる駒 //---------- Shape_BtnKoma btnTumandeiruKoma = shogiGui.Shape_PnlTaikyoku.Btn_TumandeiruKoma(shogiGui); if (null == btnTumandeiruKoma) { //System.C onsole.WriteLine("つまんでいる駒なし"); goto gt_nextBlock; } //>>>>> 選択されている駒があるとき Starlight tumandeiruLight = shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf((int)btnTumandeiruKoma.Finger); //---------- // 指したい先 //---------- Shape_BtnMasuImpl btnSasitaiMasu = null; //---------- // 将棋盤:升目 <移動先など> //---------- foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if ("Masu" == widget.Type && Okiba.ShogiBan == widget.Okiba) { if (widget.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) //>>>>> 指したいマスはここです。 { btnSasitaiMasu = (Shape_BtnMasuImpl)widget.Object; break; } } } //---------- // 駒置き、駒袋:升目 //---------- foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if ("Masu" == widget.Type && widget.Okiba.HasFlag(Okiba.Sente_Komadai | Okiba.Gote_Komadai | Okiba.KomaBukuro)) { Shape_BtnMasuImpl btnSasitaiMasu2 = (Shape_BtnMasuImpl)widget.Object; if (btnSasitaiMasu2.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) //>>>>> 升目をクリックしたとき { bool match = false; shogiGui.GameViewModel.GuiSkyConst.Foreach_Starlights((Finger finger, Starlight ml, ref bool toBreak) => { RO_Star_Koma koma = Util_Koma.AsKoma(ml.Now); if (koma.Masu == btnSasitaiMasu2.Zahyo) { //>>>>> そこに駒が置いてあった。 #if DEBUG // MessageBox.Show("駒が置いてあった","デバッグ中"); #endif match = true; toBreak = true; } }); if (!match) { btnSasitaiMasu = btnSasitaiMasu2; goto gt_EndKomaoki; } } } } gt_EndKomaoki: ; if (null == btnSasitaiMasu) { // 指したいマスなし goto gt_nextBlock; } //指したいマスが選択されたとき // TODO:合法手かどうか判定したい。 if (Okiba.ShogiBan == Util_Masu.Masu_ToOkiba(btnSasitaiMasu.Zahyo)) //>>>>> 将棋盤:升目 <移動先など> { //------------------------------ // 成る/成らない //------------------------------ // // 盤上の、不成の駒で、 / 相手陣に入るものか、相手陣から出てくる駒 ※先手・後手区別なし // RO_Star_Koma koma = Util_Koma.AsKoma(tumandeiruLight.Now); if ( Okiba.ShogiBan == Util_Masu.Masu_ToOkiba(koma.Masu) && Util_Sky.IsNareruKoma(tumandeiruLight) && ( Util_Masu.InAitejin(btnSasitaiMasu.Zahyo, Util_InServer.CurPside(shogiGui)) || Util_Sky.InAitejin(tumandeiruLight) ) ) { // 成るか/成らないか ダイアログボックスを表示します。 shogiGui.Shape_PnlTaikyoku.Request_NaruDialogToShow(true); } if (shogiGui.Shape_PnlTaikyoku.Requested_NaruDialogToShow) { // 成る/成らないボタン表示 shogiGui.Shape_PnlTaikyoku.GetWidget("BtnNaru").Visible = true; shogiGui.Shape_PnlTaikyoku.GetWidget("BtnNaranai").Visible = true; shogiGui.Shape_PnlTaikyoku.SetNaruMasu(btnSasitaiMasu); nextPhaseB = SceneName.SceneB_3ErabuNaruNaranai; } else { shogiGui.Shape_PnlTaikyoku.GetWidget("BtnNaru").Visible = false; shogiGui.Shape_PnlTaikyoku.GetWidget("BtnNaranai").Visible = false; // 駒を動かします。 { // GuiからServerへ渡す情報 PieceType syurui; Starlight dst; Util_InGui.Komamove1a_49Gui(out syurui, out dst, btnTumandeiruKoma, btnSasitaiMasu, shogiGui); // ServerからGuiへ渡す情報 bool torareruKomaAri; RO_Star_Koma koma_Food_after; Util_InServer.Komamove1a_50Srv(out torareruKomaAri, out koma_Food_after, dst, btnTumandeiruKoma.Koma, Util_Koma.AsKoma(dst.Now), shogiGui); Util_InGui.Komamove1a_51Gui(torareruKomaAri, koma_Food_after, shogiGui); } nextPhaseB = SceneName.SceneB_1TumamitaiKoma; } shogiGui.ResponseData.ToRedraw(); } else if ((Okiba.Sente_Komadai | Okiba.Gote_Komadai).HasFlag( Util_Masu.GetOkiba(btnSasitaiMasu.Zahyo))) //>>>>> 駒置き:升目 { //System.C onsole.WriteLine("駒台上"); RO_Star_Koma koma = Util_Koma.AsKoma(shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(btnTumandeiruKoma.Koma).Now); SkyBuffer buffer_Sky = new SkyBuffer(shogiGui.GameViewModel.GuiSkyConst); buffer_Sky.AddOverwriteStarlight(btnTumandeiruKoma.Koma, new RO_MotionlessStarlight( //btnTumandeiruKoma.Koma, new RO_Star_Koma(Converter04.Okiba_ToPside(Util_Masu.GetOkiba(btnSasitaiMasu.Zahyo)),// 先手の駒置きに駒を置けば、先手の向きに揃えます。 btnSasitaiMasu.Zahyo, KomaSyurui14Array.NarazuCaseHandle(Haiyaku184Array.Syurui(koma.Haiyaku))) )); shogiGui.GameViewModel.SetGuiSky(new SkyConst(buffer_Sky)); nextPhaseB = SceneName.SceneB_1TumamitaiKoma; shogiGui.ResponseData.RedrawStarlights(); // 駒の再描画要求 shogiGui.ResponseData.ToRedraw(); } gt_nextBlock: //---------- // 既に選択されている駒 //---------- Shape_BtnKoma btnKoma_Selected = shogiGui.Shape_PnlTaikyoku.Btn_TumandeiruKoma(shogiGui); //---------- // 初期配置ボタン //---------- { foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if (widget.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { if (null != widget.Delegate_MouseHitEvent) { widget.Delegate_MouseHitEvent( shogiGui , btnKoma_Selected ); } } } } shogiGui.SetScene(nextPhaseB); //------------------------------ // このメインパネルの反応 //------------------------------ shogiGui.Response("MouseOperation"); #endregion } break; case MouseEventStateName.MouseRightButtonDown: { #region マウス右ボタンダウン // 各駒の、移動済フラグを解除 //System.C onsole.WriteLine("つまんでいる駒を放します。(5)"); shogiGui.Shape_PnlTaikyoku.SetFigTumandeiruKoma(-1); shogiGui.Shape_PnlTaikyoku.SelectFirstTouch = false; //------------------------------ // 状態を戻します。 //------------------------------ shogiGui.SetScene(SceneName.SceneB_1TumamitaiKoma); //------------------------------ // このメインパネルの反応 //------------------------------ shogiGui.Response("MouseOperation"); #endregion } break; } #endregion } break; case SceneName.SceneB_3ErabuNaruNaranai: { #region 成る成らない switch (eventState.Name2) { case MouseEventStateName.MouseLeftButtonDown: { #region マウス左ボタンダウン SceneName nextPhaseB = SceneName.Ignore; //GuiSky この関数の途中で変更される。ローカル変数に入れているものは古くなる。 //---------- // 既に選択されている駒 //---------- Shape_BtnKoma btnKoma_Selected = shogiGui.Shape_PnlTaikyoku.Btn_TumandeiruKoma(shogiGui); string[] buttonNames = new string[] { "BtnNaru", // [成る]ボタン "BtnNaranai" // [成らない]ボタン }; foreach (string buttonName in buttonNames) { UserWidget widget = shogiGui.Shape_PnlTaikyoku.GetWidget(buttonName); if (widget.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { if (null != widget.Delegate_MouseHitEvent) { widget.Delegate_MouseHitEvent( shogiGui , btnKoma_Selected ); } } } // //---------- // 既に選択されている駒 //---------- //Shape_BtnKomaImpl btnKoma_Selected = shogiGui.Shape_PnlTaikyoku.Btn_TumandeiruKoma(shogiGui); //---------- // 初期配置ボタン //---------- { foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { if (widget.HitByMouse(eventState.MouseLocation.X, eventState.MouseLocation.Y)) { if (null != widget.Delegate_MouseHitEvent) { widget.Delegate_MouseHitEvent( shogiGui , btnKoma_Selected ); } } } } shogiGui.SetScene(nextPhaseB); //------------------------------ // このメインパネルの反応 //------------------------------ shogiGui.Response("MouseOperation"); #endregion } break; } #endregion } break; } } //gt_EndMethod1: // ; }