Example #1
0
    void GenericAction()
    {
        Func <MoveSequence, int> getMovableCount = (seq) => {
            int count = 0;

            for (int i = 0; i < seq.SequenceCount; ++i)
            {
                var single = seq[i];
                count += single.Count;
            }

            return(count);
        };

        SwitchActionTeam();
        buildedData.Rebuild(board);

        var currentTeams = from Pieces p in board.GetPieces()
                           where p.Team == actionTeam
                           select p;

        int movableCount = 0;

        foreach (var p in board.GetPieces())
        {
            if (p?.Team == actionTeam)
            {
                var seq = p.QueryMovable(MoveType.StandardMove);
                seq.Build(board, MoveType.StandardMove);
                movableCount += getMovableCount(seq);

                seq = p.QueryMovable(MoveType.Attack);
                seq.Build(board, MoveType.Attack);
                movableCount += getMovableCount(seq);

                if (p is Pawn k)
                {
                    seq           = k.QueryEnpassant(board);
                    movableCount += getMovableCount(seq);
                }
            }
        }

        if (movableCount == 0)
        {
            if (buildedData.IsChecked(actionTeam))
            {
                GameoverEvent?.Invoke(this, GameoverType.Checkmate);
            }
            else
            {
                GameoverEvent?.Invoke(this, GameoverType.Stalemate);
            }
        }
    }
Example #2
0
    void HandleGameover(object sender, EventArgs args)
    {
        GameoverEvent e    = args as GameoverEvent;
        string        text = "";

        if (e.playerDefeated && e.aiDefeated)
        {
            Application.LoadLevel("Defeat");
        }
        else if (e.aiDefeated)
        {
            Application.LoadLevel("Win");
        }
        else if (e.playerDefeated)
        {
            Application.LoadLevel("Defeat");
        }

        /*
         * bCombatMenu.DisplayGameover(text, !e.playerDefeated);
         * EventProxyManager.FireEvent(this, new EventDoneEvent());*/
    }