Exemplo n.º 1
0
        /// <summary>
        /// Returns a move with the given actions.
        /// </summary>
        public static Move CreateMove(
            string name        = "yeti",
            string description = "amon",
            int maxUses        = 5,
            MoveSuccessCalculatorFactory successCalculatorFactory = null,
            params IAction[] moveActions)
        {
            if (successCalculatorFactory is null)
            {
                successCalculatorFactory = () => new AlwaysMoveSuccessCalculator();
            }

            var builder = new MoveBuilder()
                          .Name(name)
                          .Describe(description)
                          .WithMaxUses(maxUses)
                          .WithSuccessCalculatorFactory(successCalculatorFactory);

            foreach (var action in moveActions)
            {
                builder = builder.WithAction(action);
            }

            return(builder.Build());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Sets the built move's success calculator factory.
        /// </summary>
        /// <param name="accuracy">The built move's success calculator factory.</param>
        public MoveBuilder WithSuccessCalculatorFactory(MoveSuccessCalculatorFactory successCalculatorFactory)
        {
            if (successCalculatorFactory is null)
            {
                throw new ArgumentNullException(nameof(successCalculatorFactory));
            }

            _move.SuccessCalculatorFactory = successCalculatorFactory;
            _hasSuccessCalculatorFactory   = true;
            return(this);
        }