/// <summary> /// 棋譜ツリーのカレントを変更します。 /// </summary> /// <param name="kifu_mutable"></param> /// <param name="nextMoveStr"></param> /// <param name="edit_childNode_Ref"></param> public static void After3_ChangeCurrent( KifuTree kifu_mutable, string nextMoveStr, Node <IMove, KyokumenWrapper> edit_childNode_Ref ) { if (!((KifuNode)kifu_mutable.CurNode).HasTuginoitte(nextMoveStr)) { //---------------------------------------- // 次ノード追加(なければ) //---------------------------------------- kifu_mutable.GetSennititeCounter().CountUp_New(Conv_Sky.ToKyokumenHash(edit_childNode_Ref.Value.KyokumenConst), "After3_ChangeCurrent(次の一手なし)"); ((KifuNode)kifu_mutable.CurNode).PutTuginoitte_New(edit_childNode_Ref);//次ノートを追加します。 } else { //---------------------------------------- // 次ノード上書き(あれば) //---------------------------------------- kifu_mutable.GetSennititeCounter().CountUp_New(Conv_Sky.ToKyokumenHash(edit_childNode_Ref.Value.KyokumenConst), "After3_ChangeCurrent(次の一手あり)"); ((KifuNode)kifu_mutable.CurNode).PutTuginoitte_Override(edit_childNode_Ref);//次ノートを上書きします。 } Node <IMove, KyokumenWrapper> temp = kifu_mutable.CurNode; kifu_mutable.SetCurNode(edit_childNode_Ref);//次ノードを、これからのカレントとします。 edit_childNode_Ref.SetParentNode(temp); }
/// <summary> /// 新しいノードを、次ノードとして追加します。 /// そして、追加した新しいノードを、カレント・ノードとします。 /// </summary> /// <param name="nextNode_and_nextCurrent"></param> public static void AppendChild_And_ChangeCurrentToChild( KifuTree kifuRef, KifuNode nextNode_and_nextCurrent, string hint ) { string moveStr = ConvMoveStrSfen.ToMoveStrSfen(nextNode_and_nextCurrent.Key); if (!((KifuNode)kifuRef.CurNode).HasTuginoitte(moveStr)) { //---------------------------------------- // 次ノート追加 //---------------------------------------- kifuRef.GetSennititeCounter().CountUp_New(Conv_Sky.ToKyokumenHash(nextNode_and_nextCurrent.Value.KyokumenConst), $"{hint}/AppendChild_And_ChangeCurrentToChild"); ((KifuNode)kifuRef.CurNode).PutTuginoitte_New(nextNode_and_nextCurrent); } kifuRef.SetCurNode(nextNode_and_nextCurrent);//次ノードを、これからのカレントとします。 Debug.Assert(kifuRef.CurNode != null, "カレントノードがヌル。"); }