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); }
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; }
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); }
// 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[]); }
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(); }
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)); }
public CombatService(ICombatTurnService combatTurnService, IDiceBag diceBag, List <ICharacter> participants) { _combatTurnService = combatTurnService ?? throw new ArgumentNullException("combatTurnService"); _diceBag = diceBag ?? throw new ArgumentNullException("diceBag"); }
public CombatTurnService(IDiceBag diceBag) { _diceBag = diceBag ?? throw new ArgumentNullException("diceBag"); }
public void Setup(IDiceBag diceBag, IEnumerable <ICharacter> participants) { WasSetupCalled = true; }
public InitiativePassFactory(IDiceBag diceBag, List <ICharacter> participants) { _diceBag = diceBag ?? throw new ArgumentNullException("diceBag"); _participants = participants ?? throw new ArgumentNullException("participants"); }