예제 #1
0
        public void PerformAction(IDiceBag diceBag, IInitiativeAction action)
        {
            if (action == null)
            {
                throw new ArgumentNullException("action");
            }
            if (diceBag == null)
            {
                throw new ArgumentNullException("diceBag");
            }

            if (CurrentInitiative <= 0)
            {
                throw new InvalidOperationException("You may not perform an action with 0 initiative.");
            }
            if (action.InitiativeCost.Cost > CurrentInitiative && action.InitiativeCost.IsCostRequired)
            {
                throw new InvalidOperationException("You must have enough initiative remaining to call PerformAction() when the cost is required.");
            }

            if (CurrentInitiative >= action.InitiativeCost.Cost)
            {
                CurrentInitiative -= action.InitiativeCost.Cost;
            }
            else
            {
                CurrentInitiative = 0;
            }

            action.Do(diceBag, Participant);
        }
예제 #2
0
파일: DicePool.cs 프로젝트: thesau31/Sau
        public DicePool(IDiceBag diceBag, int numberOfDice)
        {
            if (numberOfDice <= 0)
            {
                throw new ArgumentOutOfRangeException("numberOfDice", "[numberOfDice] must be greater than 0 to create a DicePool.");
            }

            _diceBag      = diceBag ?? throw new ArgumentNullException("diceBag");
            _numberOfDice = numberOfDice;
        }
예제 #3
0
        public int RollInitiative(IDiceBag diceBag)
        {
            if (diceBag == null)
            {
                throw new ArgumentNullException("diceBag");
            }

            return
                (Participant.Attributes[AttributeType.Intuition] +
                 Participant.Attributes[AttributeType.Reaction] +
                 new DicePool(diceBag, Participant.InitiativeDicePool).Roll().Total);
        }
예제 #4
0
    // Start is called before the first frame update
    void Start()
    {
        //dice = new SixDice(diceObject);
        diceCount = 5;
        dices     = new IDice[diceCount];

        for (var i = 0; i < dices.Count(); i++)
        {
            (dices as IDice[])[i] = new SixDice(diceObject);
        }


        diceBag = new NewYearDiceBag(dices as IDice[]);
    }
예제 #5
0
        public void Setup(IDiceBag diceBag, IEnumerable <ICharacter> participants)
        {
            if (diceBag == null)
            {
                throw new ArgumentNullException("diceBag");
            }
            if (participants == null)
            {
                throw new ArgumentNullException("participants");
            }

            InitiativeOrder = participants.Select(x =>
                                                  new InitiativePassSlot()
            {
                Participant = x,
                HasActed    = false
            }).ToList();

            InitiativeOrder.ForEach(x => x.CurrentInitiative = x.RollInitiative(diceBag));

            InitiativeOrder.Sort();
        }
예제 #6
0
파일: Action.cs 프로젝트: thesau31/Sau
        public ActionResult Do(IDiceBag bag, ICharacter source)
        {
            if (bag == null)
            {
                throw new ArgumentNullException("bag");
            }
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            var times = 0;

            AttributesUsed.ForEach(x => times += source.Attributes[x]);
            SkillsUsed.ForEach(x => times     += source.Skills[x]);

            var pool    = new DicePool(bag, times);
            var results = (Limit == LimitType.None)
                ? pool.Roll()
                : pool.Roll(source.Attributes.LimitValue(Limit));
            var rollNotation = buildNotation(source);

            return(new ActionResult(rollNotation, results));
        }
예제 #7
0
 public CombatService(ICombatTurnService combatTurnService, IDiceBag diceBag, List <ICharacter> participants)
 {
     _combatTurnService = combatTurnService ?? throw new ArgumentNullException("combatTurnService");
     _diceBag           = diceBag ?? throw new ArgumentNullException("diceBag");
 }
예제 #8
0
 public CombatTurnService(IDiceBag diceBag)
 {
     _diceBag = diceBag ?? throw new ArgumentNullException("diceBag");
 }
예제 #9
0
 public void Setup(IDiceBag diceBag, IEnumerable <ICharacter> participants)
 {
     WasSetupCalled = true;
 }
예제 #10
0
 public InitiativePassFactory(IDiceBag diceBag, List <ICharacter> participants)
 {
     _diceBag      = diceBag ?? throw new ArgumentNullException("diceBag");
     _participants = participants ?? throw new ArgumentNullException("participants");
 }