Example #1
0
        public async Task ExecuteAsync_DoesNotSaveTheResult_IfPresentButResultDoesNotHaveId()
        {
            this.action = new PushAction(this.opQueue.Object, this.store.Object, MobileServiceTableKind.Table, null, this.handler.Object, this.client.Object, this.context.Object, CancellationToken.None);
            var op = new InsertOperation("table", MobileServiceTableKind.Table, "id")
            {
                Item = new JObject()
            };

            await TestResultSave(op, status : null, resultId : null, saved : false);
        }
Example #2
0
 public void Initialize()
 {
     this.store   = new Mock <IMobileServiceLocalStore>(MockBehavior.Strict);
     this.opQueue = new Mock <OperationQueue>(MockBehavior.Strict, this.store.Object);
     this.opQueue.Setup(q => q.UpdateAsync(It.IsAny <MobileServiceTableOperation>())).Returns(Task.FromResult(0));
     this.handler = new Mock <IMobileServiceSyncHandler>(MockBehavior.Strict);
     this.client  = new Mock <MobileServiceClient>();
     this.client.Object.Serializer = new MobileServiceSerializer();
     this.context = new Mock <MobileServiceSyncContext>(this.client.Object);
     this.context.Setup(c => c.GetTable(It.IsAny <string>())).Returns(Task.FromResult(new MobileServiceTable("test", this.client.Object)));
     this.action = new PushAction(this.opQueue.Object, this.store.Object, MobileServiceTableKind.Table, null, this.handler.Object, this.client.Object, this.context.Object, CancellationToken.None);
 }
Example #3
0
        private static NetworkMessage CreatePushMessage(PushAction action, JObject content)
        {
            var message = new NetworkMessage
            {
                MessageType = NetworkMessageType.Push,
                Payload     = JObject.FromObject(new PushInfo
                {
                    Content    = content,
                    PushAction = action
                })
            };

            return(message);
        }
Example #4
0
        private PushAction createPushAction(string question, NodeReference correctAnswer)
        {
            var relevantUtterances = lastRelevantUtterances(question, correctAnswer);
            var orderedUtterances  = (from utterance in relevantUtterances orderby getFowardTargets(utterance).Count select utterance).ToArray();

            if (!orderedUtterances.Any())
            {
                return(null);
            }

            var pushPart   = orderedUtterances.Last();
            var pushAction = new PushAction(pushPart);

            return(pushAction);
        }
Example #5
0
    IEnumerator _PrisonBreak()
    {
        AllDoors = GameObject.FindGameObjectsWithTag("Door");

        foreach (GameObject door in AllDoors)
        {
            PushAction doorPushAction = door.GetComponent <PushAction> ();
            if (doorPushAction != null)
            {
                doorPushAction.Push();
                yield return(new WaitForSeconds(Random.value * 0.2f));
            }
            else
            {
                Debug.Log("No push action found on: " + door.name);
            }
        }
    }
Example #6
0
    public override ActionResult GetActionResult(BoardState aBoardState)
    {
        Debug.Log(this.id + " MoveAction.GetActionResult");
        BoardState  simBoardState  = aBoardState;
        EntityState simEntityState = simBoardState.GetEntityById(this.id);
        Vector2Int  startPos       = simEntityState.pos;
        Vector2Int  endPos         = startPos + this.direction;

        if (!simEntityState.mobData.HasValue)
        {
            Debug.Log(this.id + " MoveAction.GetActionResult is not a mob RETURNING");
            return(new ActionResult(this, null));
        }
        if (!simBoardState.DoesFloorExist(endPos, simEntityState.id))
        {
            Debug.Log(this.id + " MoveAction.GetActionResult couldnt find floor (pre-sweep) RETURNING");
            return(new ActionResult(this, null));
        }
        Dictionary <Vector2Int, BoardCell> affectedBoardSlice = simBoardState.GetBoardCellSlice(endPos, simEntityState.size);
        // getting a list of entities inside the new position
        HashSet <int> affectedEntityIdSet = new HashSet <int>();

        foreach (BoardCell affectedBoardCell in affectedBoardSlice.Values)
        {
            int?affectedEntityId = affectedBoardCell.GetEntityId(simEntityState.isFront);
            if (affectedEntityId.HasValue && affectedEntityId.Value != simEntityState.id)
            {
                affectedEntityIdSet.Add(affectedEntityId.Value);
            }
        }
        ActionResult?       deathActionResult        = null;
        List <ActionResult> requiredActionResultList = new List <ActionResult>();

        // for each entity thats gonna get affected by this action
        foreach (int affectedEntityId in affectedEntityIdSet)
        {
            // flag thats true if all entities i encounter can be moved out of the way somehow
            bool foundValidActionForAffectedEntity = false;
            foreach (EntityActionEnum requiredActionEnum in this.priorityList)
            {
                EntityAction requiredAction;
                // for each possible action that nextEntity can perform
                switch (requiredActionEnum)
                {
                case EntityActionEnum.MOVE:
                    throw new NotImplementedException();

                case EntityActionEnum.FALL:
                    throw new NotImplementedException();

                case EntityActionEnum.DIE:
                    requiredAction = new DieAction(affectedEntityId, simEntityState.id, DeathTypeEnum.BUMP);
                    break;

                case EntityActionEnum.PUSH:
                    Vector2Int pushDirection = new Vector2Int(this.direction.x, 0);
                    requiredAction = new PushAction(affectedEntityId, simEntityState.id, pushDirection);
                    break;

                case EntityActionEnum.TURN:
                    throw new NotImplementedException();

                case EntityActionEnum.WAIT:
                    throw new NotImplementedException();

                default:
                    throw new ArgumentOutOfRangeException();
                }
                // simulate that action and get result
                Debug.Log(this.id + " --- UP STACK to " + affectedEntityId + "---");
                ActionResult requiredActionResult = requiredAction.GetActionResult(simBoardState);
                Debug.Log(this.id + " --- DOWN STACK from " + affectedEntityId + " ---");
                // if nextAction was valid
                if (requiredActionResult.boardState.HasValue)
                {
                    simBoardState = requiredActionResult.boardState.Value;
                    // if the action is one perscribed for me by the thing i encountered
                    if (requiredActionResult.entityAction.id == this.id)
                    {
                        if (requiredActionResult.entityAction.entityActionEnum == EntityActionEnum.DIE)
                        {
                            deathActionResult = requiredActionResult;
                        }
                    }
                    else
                    {
                        Debug.Assert(requiredActionResult.entityAction.id == affectedEntityId);
                        requiredActionResultList.Add(requiredActionResult);
                    }
                    foundValidActionForAffectedEntity = true;
                }
                else
                {
                    Debug.Log(this.id + " MoveAction.GetActionResult failed to do " + requiredAction.GetType() + " on " + affectedEntityId);
                }
            }
            if (!foundValidActionForAffectedEntity)
            {
                Debug.Log(this.id + " MoveAction.GetActionResult exhausted possible actions on " + affectedEntityId + " RETURNING");
                return(new ActionResult(this, null));
            }
            if (deathActionResult.HasValue)
            {
                requiredActionResultList.Clear();
                Debug.Log(this.id + " MoveAction.GetActionResult had only one viable move causing self-death");
                return(deathActionResult.Value);
            }
        }
        // another floor check
        if (!simBoardState.DoesFloorExist(endPos, simEntityState.id))
        {
            Debug.Log(this.id + " MoveAction.GetActionResult couldnt find floor (post-sweep) RETURNING");
            return(new ActionResult(this, null));
        }
        simBoardState = ApplyAction(simBoardState);
        Debug.Log(this.id + " MoveAction.GetActionResult returned a valid result RETURNING");
        return(new ActionResult(this, simBoardState, requiredActionResultList));
    }
Example #7
0
        private static NetworkMessage CreatePushMessage(PushAction action, JObject content)
        {
            var message = new NetworkMessage
            {
                MessageType = NetworkMessageType.Push,
                Payload = JObject.FromObject(new PushInfo
                {
                    Content = content,
                    PushAction = action
                })
            };

            return message;
        }
Example #8
0
 internal void Add(PushAction <TViewModel> action)
 {
     _pushes.Add(action);
 }