private ItemsManager.Context getNextContext()
 {
     int nextContext = -1;
     if (directionClockwise) nextContext = ((int)currentContext + 1) % 4;
     else nextContext = ((int)currentContext - 1 + 4) % 4;
     return (ItemsManager.Context) nextContext;
 }
コード例 #2
0
    private ItemsManager.Context getNextContext()
    {
        int nextContext = -1;

        if (directionClockwise)
        {
            nextContext = ((int)currentContext + 1) % 4;
        }
        else
        {
            nextContext = ((int)currentContext - 1 + 4) % 4;
        }
        return((ItemsManager.Context)nextContext);
    }
コード例 #3
0
    // Update is called once per frame
    void Update()
    {
        switch (state)
        {
        case State.Start:
            startContext   = getContextFromPosition(transform.position);
            currentContext = startContext;
            nextContext    = getNextContext();
            Debug.Log("Start Context: " + startContext);
            Debug.Log("Next Context: " + nextContext);
            state = State.WaitingForItemClicks;
            break;

        case State.WaitingForItemClicks:
            if (itemsManager.haveAllObjectsBeenClicked())
            {
                state = State.Done;
            }
            else if (itemsManager.haveObjectsInContextBeenClicked(currentContext))
            {
                //Open the correct door
                doorManager.setDoorState(doorOrder[doorManager.getDoorIndexFromContextBoundary(currentContext, nextContext)], true);
                state = State.WaitingForNextContext;
            }
            break;

        case State.WaitingForNextContext:
            ItemsManager.Context positionContext = getContextFromPosition(transform.position);
            if (positionContext == nextContext)
            {
                doorManager.setDoorState(doorOrder[doorManager.getDoorIndexFromContextBoundary(currentContext, nextContext)], false);
                currentContext = nextContext;
                nextContext    = getNextContext();
                Debug.Log("Start Context: " + currentContext);
                Debug.Log("Next Context: " + nextContext);
                state = State.WaitingForItemClicks;
            }
            break;

        case State.Done:
            DoorState[] doorStates = doorManager.GetAllDoors();
            foreach (DoorState d in doorStates)
            {
                d.gameObject.GetComponent <MeshRenderer>().material.color = Color.black;
            }
            break;
        }
    }
 // Update is called once per frame
 void Update()
 {
     switch (state)
     {
         case State.Start:
             startContext = getContextFromPosition(transform.position);
             currentContext = startContext;
             nextContext = getNextContext();
             Debug.Log("Start Context: " + startContext);
             Debug.Log("Next Context: " + nextContext);
             state = State.WaitingForItemClicks;
             break;
         case State.WaitingForItemClicks:
             if (itemsManager.haveAllObjectsBeenClicked())
                 state = State.Done;
             else if (itemsManager.haveObjectsInContextBeenClicked(currentContext))
             {
                 //Open the correct door
                 doorManager.setDoorState(doorOrder[doorManager.getDoorIndexFromContextBoundary(currentContext, nextContext)], true);
                 state = State.WaitingForNextContext;
             }
             break;
         case State.WaitingForNextContext:
             ItemsManager.Context positionContext = getContextFromPosition(transform.position);
             if (positionContext == nextContext)
             {
                 doorManager.setDoorState(doorOrder[doorManager.getDoorIndexFromContextBoundary(currentContext, nextContext)], false);
                 currentContext = nextContext;
                 nextContext = getNextContext();
                 Debug.Log("Start Context: " + currentContext);
                 Debug.Log("Next Context: " + nextContext);
                 state = State.WaitingForItemClicks;
             }
             break;
         case State.Done:
             break;
     }
 }
コード例 #5
0
 public string getDoorNameFromContextBoundary(ItemsManager.Context startContext, ItemsManager.Context endContext)
 {
     if (startContext == ItemsManager.Context.Blue && endContext == ItemsManager.Context.Red)
     {
         return("Door_BLU");
     }
     if (startContext == ItemsManager.Context.Red && endContext == ItemsManager.Context.Green)
     {
         return("Door_RED");
     }
     if (startContext == ItemsManager.Context.Green && endContext == ItemsManager.Context.Yellow)
     {
         return("Door_GRN");
     }
     if (startContext == ItemsManager.Context.Yellow && endContext == ItemsManager.Context.Blue)
     {
         return("Door_YLW");
     }
     if (startContext == ItemsManager.Context.Red && endContext == ItemsManager.Context.Blue)
     {
         return("Door_BLU");
     }
     if (startContext == ItemsManager.Context.Green && endContext == ItemsManager.Context.Red)
     {
         return("Door_RED");
     }
     if (startContext == ItemsManager.Context.Yellow && endContext == ItemsManager.Context.Green)
     {
         return("Door_GRN");
     }
     if (startContext == ItemsManager.Context.Blue && endContext == ItemsManager.Context.Yellow)
     {
         return("Door_YLW");
     }
     return("");
 }
コード例 #6
0
 public int getDoorIndexFromContextBoundary(ItemsManager.Context startContext, ItemsManager.Context endContext)
 {
     return(getDoorIndexByObjectName(getDoorNameFromContextBoundary(startContext, endContext)));
 }