コード例 #1
0
        public override AbstractFractionController CreateController(Fraction f, Cannon cannon)
        {
            if (HasFinished)
            {
                if (PlayerWon)
                {
                    return(new EndGameAutoPlayerController(this, cannon, f));
                }
                else
                {
                    return(new EndGameAutoComputerController(this, cannon, f));
                }
            }

            switch (f.Type)
            {
            case FractionType.PlayerFraction:
            case FractionType.ComputerFraction:
                return(cannon.CreateKIController(this, f));

            case FractionType.NeutralFraction:
                return(cannon.CreateNeutralController(this, f));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }