public override AddressStateMap Execute(Address from, Address to, AddressStateMap states) { var result = new BattleResult(); if (states.TryGetValue(to, out object value)) { var previousResult = (BattleResult)value; result.UsedWeapons = previousResult.UsedWeapons; result.Targets = previousResult.Targets; } result.UsedWeapons.Add(Weapon); result.Targets.Add(Target); return((AddressStateMap)states.SetItem(to, result)); }
public override AddressStateMap Execute(IActionContext context) { var result = new BattleResult(); AddressStateMap previousStates = context.PreviousStates; Address to = context.To; if (previousStates.TryGetValue(to, out object value)) { var previousResult = (BattleResult)value; result.UsedWeapons = previousResult.UsedWeapons; result.Targets = previousResult.Targets; } result.UsedWeapons.Add(Weapon); result.Targets.Add(Target); return((AddressStateMap)previousStates.SetItem(to, result)); }
public override IAccountStateDelta Execute(IActionContext context) { IImmutableSet <string> usedWeapons = ImmutableHashSet <string> .Empty; IImmutableSet <string> targets = ImmutableHashSet <string> .Empty; IAccountStateDelta previousStates = context.PreviousStates; object value = previousStates.GetState(TargetAddress); if (!ReferenceEquals(value, null)) { var previousResult = BattleResult.FromBencodex((Bencodex.Types.Dictionary)value); usedWeapons = previousResult.UsedWeapons; targets = previousResult.Targets; } usedWeapons = usedWeapons.Add(Weapon); targets = targets.Add(Target); var result = new BattleResult(usedWeapons, targets); return(previousStates.SetState(TargetAddress, result.ToBencodex())); }