/// <summary> /// 変換「各(自駒が動ける升)」→「各(自駒が動ける手)」 /// </summary> /// <param name="komaBETUSusumeruMasus"></param> /// <returns></returns> public static Maps_OneAndMulti <Finger, ShootingStarlightable> KomaBETUSusumeruMasusToKomaBETUAllMoves( List_OneAndMulti <Finger, SySet <SyElement> > komaBETUSusumeruMasus, Node <ShootingStarlightable, KyokumenWrapper> siteiNode_genzai ) { Maps_OneAndMulti <Finger, ShootingStarlightable> komabetuAllMove = new Maps_OneAndMulti <Finger, ShootingStarlightable>(); komaBETUSusumeruMasus.Foreach_Entry((Finger figKoma, SySet <SyElement> susumuMasuSet, ref bool toBreak) => { RO_Star_Koma srcKoma = Util_Koma.AsKoma(siteiNode_genzai.Value.ToKyokumenConst.StarlightIndexOf(figKoma).Now); foreach (SyElement susumuMasu in susumuMasuSet.Elements) { // 移動先の駒 RO_Star_Koma dstKoma = new RO_Star_Koma( srcKoma.Pside, Masu_Honshogi.Items_All[Util_Masu.AsMasuNumber(susumuMasu)], srcKoma.Haiyaku//TODO:ここで、駒の種類が「成り」に上書きされているバージョンも考えたい ); ShootingStarlightable move = new RO_ShootingStarlight( //figKoma,//駒 srcKoma, // 移動元 dstKoma, // 移動先 PieceType.None //取った駒不明 ); komabetuAllMove.AddOverwrite(figKoma, move); // これが通称【水際のいんちきプログラム】なんだぜ☆ // 必要により、【成り】の指し手を追加します。 Converter04.AddKomaBETUAllNariMoves( komabetuAllMove, figKoma, srcKoma, dstKoma ); } }); //Converter04.AssertNariMove(komabetuAllMove, "#KomabetuMasus_ToKomabetuAllMove");//ここはOK return(komabetuAllMove); }