static async Task MoveDahanAction(TargetSpaceCtx ctx) { int count = 2; while (0 < count) { var costalCtxs = ctx.AllSpaces.Select(ctx.Target).Where(x => x.IsCoastal).ToArray(); var costalWithDahan = costalCtxs.Where(x => x.Dahan.Any).ToArray(); var costal = costalCtxs.Select(x => x.Space).ToArray(); await ctx.SelectActionOption( new SpaceAction($"Move Dahan IN TO " + ctx.Space.Label, ctx => ctx.MoveTokenIn(TokenType.Dahan, 100, Target.Coastal)).FilterOption(costalWithDahan.Length > 0), new SpaceAction($"Move Dahan OUT OF " + ctx.Space.Label, ctx => ctx.MoveTokensOut(1, TokenType.Dahan, 100, Target.Coastal)).Matches(x => x.Dahan.Any) ); count--; } }