Esempio n. 1
0
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalGameObject        = originalStateObjectBuffer[action[k_GameIndex]];

            var newState      = m_StateDataContext.CopyStateData(originalState);
            var newGameBuffer = newState.GameBuffer;
            {
                var @Game = newGameBuffer[originalGameObject.GameIndex];
                @Game.@MoveCount += 1;
                newGameBuffer[originalGameObject.GameIndex] = @Game;
            }
            {
                new CustomSwapEffect().ApplyCustomActionEffectsToState(originalState, action, newState);
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
Esempio n. 2
0
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalItemObject        = originalStateObjectBuffer[action[k_ItemIndex]];
            var originalCharacterObject   = originalStateObjectBuffer[action[k_CharacterIndex]];

            var newState           = m_StateDataContext.CopyStateData(originalState);
            var newCarriableBuffer = newState.CarriableBuffer;
            var newCarrierBuffer   = newState.CarrierBuffer;
            {
                var @Carriable = newCarriableBuffer[originalItemObject.CarriableIndex];
                @Carriable.@CarriedBy = originalState.GetTraitBasedObjectId(originalCharacterObject);
                newCarriableBuffer[originalItemObject.CarriableIndex] = @Carriable;
            }
            {
                var @Carrier = newCarrierBuffer[originalCharacterObject.CarrierIndex];
                @Carrier.@Carried = originalState.GetTraitBasedObjectId(originalItemObject);
                newCarrierBuffer[originalCharacterObject.CarrierIndex] = @Carrier;
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalNPCObject         = originalStateObjectBuffer[action[k_NPCIndex]];
            var originalWayPointObject    = originalStateObjectBuffer[action[k_WayPointIndex]];

            var newState          = m_StateDataContext.CopyStateData(originalState);
            var newLocationBuffer = newState.LocationBuffer;
            {
                var @Location = newLocationBuffer[originalNPCObject.LocationIndex];
                @Location.Position = newLocationBuffer[originalWayPointObject.LocationIndex].Position;
                newLocationBuffer[originalNPCObject.LocationIndex] = @Location;
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
Esempio n. 4
0
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalNPCObject         = originalStateObjectBuffer[action[k_NPCIndex]];

            var newState         = m_StateDataContext.CopyStateData(originalState);
            var newBaggageBuffer = newState.BaggageBuffer;

            {
                var @Baggage = newBaggageBuffer[originalNPCObject.BaggageIndex];
                @Baggage.@HasItem = true;
                newBaggageBuffer[originalNPCObject.BaggageIndex] = @Baggage;
            }


            newState.RemoveTraitBasedObjectAtIndex(action[k_ItemIndex]);

            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
Esempio n. 5
0
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalAgentObject       = originalStateObjectBuffer[action[k_AgentIndex]];
            var originalCollectibleObject = originalStateObjectBuffer[action[k_CollectibleIndex]];

            var newState             = m_StateDataContext.CopyStateData(originalState);
            var newAgentBuffer       = newState.AgentBuffer;
            var newCollectibleBuffer = newState.CollectibleBuffer;
            {
                var @Agent = newAgentBuffer[originalAgentObject.AgentIndex];
                @Agent.Health += newCollectibleBuffer[originalCollectibleObject.CollectibleIndex].Amount;
                newAgentBuffer[originalAgentObject.AgentIndex] = @Agent;
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalMoverObject       = originalStateObjectBuffer[action[k_MoverIndex]];
            var originalDestinationObject = originalStateObjectBuffer[action[k_DestinationIndex]];

            var newState          = m_StateDataContext.CopyStateData(originalState);
            var newLocationBuffer = newState.LocationBuffer;
            var newRobotBuffer    = newState.RobotBuffer;
            {
                var @Location = newLocationBuffer[originalMoverObject.LocationIndex];
                @Location.Position = newLocationBuffer[originalDestinationObject.LocationIndex].Position;
                newLocationBuffer[originalMoverObject.LocationIndex] = @Location;
            }
            {
                var @Robot = newRobotBuffer[originalMoverObject.RobotIndex];
                @Robot.@Battery -= 10;
                newRobotBuffer[originalMoverObject.RobotIndex] = @Robot;
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalRobotObject       = originalStateObjectBuffer[action[k_RobotIndex]];

            var newState             = m_StateDataContext.CopyStateData(originalState);
            var newCleanlinessBuffer = newState.CleanlinessBuffer;

            {
                var @Cleanliness = newCleanlinessBuffer[originalRobotObject.CleanlinessIndex];
                @Cleanliness.@DirtCount -= 1;
                newCleanlinessBuffer[originalRobotObject.CleanlinessIndex] = @Cleanliness;
            }


            newState.RemoveTraitBasedObjectAtIndex(action[k_DirtIndex]);

            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
Esempio n. 8
0
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;

            var newState = m_StateDataContext.CopyStateData(originalState);


            newState.RemoveTraitBasedObjectAtIndex(action[k_DirtIndex]);

            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
Esempio n. 9
0
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalCharacterObject   = originalStateObjectBuffer[action[k_CharacterIndex]];
            var originalToObject          = originalStateObjectBuffer[action[k_ToIndex]];
            var originalFromObject        = originalStateObjectBuffer[action[k_FromIndex]];

            var newState           = m_StateDataContext.CopyStateData(originalState);
            var newCharacterBuffer = newState.CharacterBuffer;
            var newWaypointBuffer  = newState.WaypointBuffer;
            {
                var @Character = newCharacterBuffer[originalCharacterObject.CharacterIndex];
                @Character.@Waypoint = originalState.GetTraitBasedObjectId(originalToObject);
                newCharacterBuffer[originalCharacterObject.CharacterIndex] = @Character;
            }
            {
                var @Waypoint = newWaypointBuffer[originalToObject.WaypointIndex];
                @Waypoint.@Occupied = true;
                newWaypointBuffer[originalToObject.WaypointIndex] = @Waypoint;
            }
            {
                var @Waypoint = newWaypointBuffer[originalFromObject.WaypointIndex];
                @Waypoint.@Occupied = false;
                newWaypointBuffer[originalFromObject.WaypointIndex] = @Waypoint;
            }
            {
                var @Waypoint = newWaypointBuffer[originalToObject.WaypointIndex];
                @Waypoint.@Visited += 1;
                newWaypointBuffer[originalToObject.WaypointIndex] = @Waypoint;
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
Esempio n. 10
0
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalCoverObject       = originalStateObjectBuffer[action[k_CoverIndex]];
            var originalAgentObject       = originalStateObjectBuffer[action[k_AgentIndex]];

            var newState          = m_StateDataContext.CopyStateData(originalState);
            var newCoverBuffer    = newState.CoverBuffer;
            var newLocationBuffer = newState.LocationBuffer;
            var newAgentBuffer    = newState.AgentBuffer;
            {
                var @Cover = newCoverBuffer[originalCoverObject.CoverIndex];
                @Cover.@SpotTaken = true;
                newCoverBuffer[originalCoverObject.CoverIndex] = @Cover;
            }
            {
                var @Location = newLocationBuffer[originalAgentObject.LocationIndex];
                @Location.Position = newLocationBuffer[originalCoverObject.LocationIndex].Position;
                newLocationBuffer[originalAgentObject.LocationIndex] = @Location;
            }
            {
                var @Agent = newAgentBuffer[originalAgentObject.AgentIndex];
                @Agent.@Safe = true;
                newAgentBuffer[originalAgentObject.AgentIndex] = @Agent;
            }
            {
                var @Agent = newAgentBuffer[originalAgentObject.AgentIndex];
                @Agent.@Timeline += 1;
                newAgentBuffer[originalAgentObject.AgentIndex] = @Agent;
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
Esempio n. 11
0
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalAgentObject       = originalStateObjectBuffer[action[k_AgentIndex]];
            var originalItemObject        = originalStateObjectBuffer[action[k_ItemIndex]];

            var newState          = m_StateDataContext.CopyStateData(originalState);
            var newAgentBuffer    = newState.AgentBuffer;
            var newLocationBuffer = newState.LocationBuffer;
            var newItemBuffer     = newState.ItemBuffer;
            {
                var @Agent = newAgentBuffer[originalAgentObject.AgentIndex];
                @Agent.@HasWeapon = true;
                newAgentBuffer[originalAgentObject.AgentIndex] = @Agent;
            }
            {
                var @Location = newLocationBuffer[originalAgentObject.LocationIndex];
                @Location.Position = newLocationBuffer[originalItemObject.LocationIndex].Position;
                newLocationBuffer[originalAgentObject.LocationIndex] = @Location;
            }
            {
                var @Item = newItemBuffer[originalItemObject.ItemIndex];
                @Item.@CarriedBy = originalState.GetTraitBasedObjectId(originalAgentObject);
                newItemBuffer[originalItemObject.ItemIndex] = @Item;
            }
            {
                var @Agent = newAgentBuffer[originalAgentObject.AgentIndex];
                @Agent.@Timeline += 1;
                newAgentBuffer[originalAgentObject.AgentIndex] = @Agent;
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
        StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey)
        {
            var originalState             = m_StateDataContext.GetStateData(originalStateEntityKey);
            var originalStateObjectBuffer = originalState.TraitBasedObjects;
            var originalGameStateObject   = originalStateObjectBuffer[action[k_GameStateIndex]];
            var originalNPCObject         = originalStateObjectBuffer[action[k_NPCIndex]];
            var originalGateObject        = originalStateObjectBuffer[action[k_GateIndex]];

            var newState            = m_StateDataContext.CopyStateData(originalState);
            var newGateSwitchBuffer = newState.GateSwitchBuffer;
            var newBaggageBuffer    = newState.BaggageBuffer;
            {
                var @GateSwitch = newGateSwitchBuffer[originalGameStateObject.GateSwitchIndex];
                @GateSwitch.@OpenCount += 1;
                newGateSwitchBuffer[originalGameStateObject.GateSwitchIndex] = @GateSwitch;
            }
            {
                var @Baggage = newBaggageBuffer[originalNPCObject.BaggageIndex];
                @Baggage.@HasItem = false;
                newBaggageBuffer[originalNPCObject.BaggageIndex] = @Baggage;
            }
            {
                var @Baggage = newBaggageBuffer[originalGateObject.BaggageIndex];
                @Baggage.@HasItem = true;
                newBaggageBuffer[originalGateObject.BaggageIndex] = @Baggage;
            }



            var reward = Reward(originalState, action, newState);
            var StateTransitionInfo = new StateTransitionInfo {
                Probability = 1f, TransitionUtilityValue = reward
            };
            var resultingStateKey = m_StateDataContext.GetStateDataKey(newState);

            return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo));
        }
            public void Execute(int index)
            {
                // Read data from input
                var stateKey  = UnexpandedStates[index];
                var stateData = StateDataContext.GetStateData(stateKey);

                // Make modifications to copy of state
                var newStateData = StateDataContext.CopyStateData(stateData);

                newStateData += ValueToAdd;
                var newStateKey = StateDataContext.RegisterState(newStateData);

                var reward = ValueToAdd;

                // Register action. Output transition info (state, action, result, resulting state key).
                CreatedStateInfo.Enqueue(new StateTransitionInfoPair <int, int, StateTransitionInfo>(stateKey, ValueToAdd, newStateKey, new StateTransitionInfo {
                    Probability = 1f, TransitionUtilityValue = reward
                }));
            }