コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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()));
        }