public static Dictionary <ShootingStarlightable, KyokumenWrapper> KomabetuMasusToMovebetuSky( List_OneAndMulti <Finger, SySet <SyElement> > sMs, SkyConst src_Sky, Playerside pside) { Dictionary <ShootingStarlightable, KyokumenWrapper> result = new Dictionary <ShootingStarlightable, KyokumenWrapper>(); sMs.Foreach_Entry((Finger key, SySet <SyElement> value, ref bool toBreak) => { RO_Star_Koma koma = Util_Koma.AsKoma(src_Sky.StarlightIndexOf(key).Now); foreach (SyElement dstMasu in value.Elements) { ShootingStarlightable move = Util_Sky.New( //key, new RO_Star_Koma(pside, koma.Masu, koma.Haiyaku), new RO_Star_Koma(pside, dstMasu, koma.Haiyaku),//FIXME:配役は適当。 PieceType.None ); result.Add(move, new KyokumenWrapper(Util_Sasu.Sasu(src_Sky, key, dstMasu, pside))); } }); return(result); }
/// <summary> /// 取った駒を差替えます。 /// /// 棋譜読取時用です。マウス操作時は、流れが異なるので使えません。 /// </summary> public void AppendChildB_Swap( PieceType tottaSyurui, SkyConst src_Sky, string hint ) { if (this.CountTesumi(this.CurNode) < 1) { // ルートしか無いなら goto gt_EndMethod; } if (null == src_Sky) { throw new Exception("ノードを追加しようとしましたが、指定されたnewSkyがヌルです。"); } Playerside genTebanside = ((KifuNode)this.CurNode).Tebanside; // 現在のノードを削除します。そのとき、もともとのキー を覚えておきます。 ShootingStarlightable motoKey = (ShootingStarlightable)this.PopCurrentNode().Key; // もともとのキーの、取った駒の種類だけを差替えます。 RO_ShootingStarlight sasikaeKey = Util_Sky.New(motoKey.LongTimeAgo, motoKey.Now, tottaSyurui);//motoKey.Finger, // キーを差替えたノード Node <ShootingStarlightable, KyokumenWrapper> sasikaeNode = new KifuNodeImpl(sasikaeKey, new KyokumenWrapper(src_Sky), genTebanside); System.Diagnostics.Debug.Assert(!this.CurNode.ContainsKey_NextNodes(Util_Sky.ToSfenMoveText(sasikaeNode.Key))); // さきほど カレントノードを削除したので、 // 今、カレントノードは、1つ前のノードになっています。 // ここに、差替えたノードを追加します。 this.CurNode.Add_NextNode(Util_Sky.ToSfenMoveText(sasikaeNode.Key), sasikaeNode); sasikaeNode.PreviousNode = this.CurNode; this.CurNode = sasikaeNode; Logger.Trace("リンクトリストの、最終ノードは差し替えられた hint=[" + hint + "] item=[" + Util_Sky.ToSfenMoveText(sasikaeKey) + "]"); // memberName=[" + memberName + "] sourceFilePath=[" + sourceFilePath + "] sourceLineNumber=[" + sourceLineNumber + "] gt_EndMethod: ; }