Exemplo n.º 1
0
    private string MovementHandler(ExternalActionHandler actionHandler, string action)
    {
        string ret = "";

        switch (action)
        {
        case "RR":
            ret = actionHandler.AddAction(ActionInformation.AgentState.Turning, 1);
            break;

        case "RL":
            ret = actionHandler.AddAction(ActionInformation.AgentState.Turning, -1);
            break;

        case "MF":
            ret = actionHandler.AddAction(ActionInformation.AgentState.Walking, 1);
            break;

        case "MB":
            ret = actionHandler.AddAction(ActionInformation.AgentState.Walking, -1);
            break;

        //Note that "stop" currently only works for queued movements
        case "stop":
            agentHandler.StopClearAll();
            break;
        }
        return(ret);
    }
Exemplo n.º 2
0
    /*
     * Configure UI elements for turns, get externalHandlers for characters,
     */
    public void SetUpTurns()
    {
        turnsLeft = initialTurns;
        //extraTurnsLeft = extraTurns;
        gameNotOver        = true;
        instructionControl = FindObjectOfType <InstructionControl>();
        timeKeeper         = FindObjectOfType <TimeKeeper>();


        var them = GameObject.FindGameObjectWithTag(character == "Human"?"Agent":"Human");

        if (them)
        {
            theirHandler = them.GetComponent <ExternalActionHandler>();
        }
        var me = GameObject.FindGameObjectWithTag(character);

        if (me)
        {
            myHandler = me.GetComponent <ExternalActionHandler>();
        }
        if (character == "Human")
        {
            movesRemaining   = leadersMovesPerTurn;
            myTurn           = true;
            moveDisplay.text = "Moves Left: " + leadersMovesPerTurn + " Moves Left in Turn";

            // Initially the end-turn button should be disabled so the leader must
            // put in a command during their turn.
            endTurnButton.interactable = false;
          #if UNITY_WEBGL
            if (!TutorialGuide.tutorialMode)
            {
                backgroundImage.material.SetColor("_Color", gameGreen);
                backgroundImage.material.SetColor("_Color2", gameGreen);
            }
          #endif
        }
        else //character=="Agent"
        {
            movesRemaining   = followersMovesPerTurn;
            myTurn           = false;
            moveDisplay.text = "Moves Left: Waiting for partner!";
            if (!TutorialGuide.tutorialMode)
            {
                backgroundImage.material.SetColor("_Color", gamePink);
                backgroundImage.material.SetColor("_Color2", gamePink);
            }
        }
        // (turnsLeft+1)/2 to show half the num turns left correctly w/ int division
        totalTurnsDisplay.text = "Turns Left: " + (turnsLeft + 1) / 2;
        if (TutorialGuide.tutorialMode)
        {
            theirHandler.GiveTurn(); GetTurn();
        }                                                                      // Fix movement for tutorial role.
    }
Exemplo n.º 3
0
    public void GetExternalHandlers()
    {
        var them = GameObject.FindGameObjectWithTag(character == "Human"?"Agent":"Human");

        if (them)
        {
            theirHandler = them.GetComponent <ExternalActionHandler>();
        }

        /* var me = GameObject.FindGameObjectWithTag(character);
         * if (me)
         *  myHandler = me.GetComponent<ExternalActionHandler>();
         */
    }
Exemplo n.º 4
0
 private void DequeueMovements(string character)
 {
     if (character == "Human")
     {
         handler = humanHandler;
     }
     else if (character == "Agent")
     {
         handler = agentHandler;
     }
     else
     {
         return;
     }
     handler.DoExternalActions();
 }
Exemplo n.º 5
0
    private void GetHandlers()
    {
        var ag = GameObject.FindGameObjectWithTag("Agent");

        if (ag)
        {
            agentHandler = ag.GetComponent <ExternalActionHandler>();
        }

        var hum = GameObject.FindGameObjectWithTag("Human");

        if (hum)
        {
            humanHandler = hum.GetComponent <ExternalActionHandler>();
        }
    }
Exemplo n.º 6
0
    /*  Outdated replay function. Runs by constant time intervals.
     *  // Calculate initial time.
     *  int prevTime;
     *  if(!Int32.TryParse(bufList[0][3], out prevTime))
     *      yield return null;
     *
     *  // Iterate through list of moves by moveId.
     *  foreach(var move in bufList.OrderBy(move => move[0], new SemiNumericComparer()))
     *  {
     *          // Displays instructions if move ID matches.
     *          while(instructionList.Any() && instructionList.First()[0] == move[0])
     *          {
     *                  instrControl.DisplayInstruction(instructionList.First()[1]);
     *                  instructionList.RemoveAt(0);
     *          }
     *
     *          int newTime;
     *          if(!Int32.TryParse(move[3], out newTime))
     *                  continue;
     *      int elapsed = newTime - prevTime;
     *      prevTime = newTime;
     *
     *      Tuple<string, string, int> moveArg = Tuple.Create(move[1], move[2], elapsed);
     *      CallMovement(moveArg);
     *  }
     *  humanHandler.DoExternalActions();
     *  agentHandler.DoExternalActions();
     * }
     */

    // Calls the correct movement on the given agent.
    private void QueueMovement(Tuple <string, string> moveArg)
    {
        if (moveArg.Item1 == "Human")
        {
            handler = humanHandler;
        }
        else if (moveArg.Item1 == "Agent")
        {
            handler = agentHandler;
        }
        else
        {
            return;
        }

        switch (moveArg.Item2)
        {
        case "RR":
            handler.AddExternalAction(ActionInformation.AgentState.Turning, 1);
            break;

        case "RL":
            handler.AddExternalAction(ActionInformation.AgentState.Turning, -1);
            break;

        case "MF":
            handler.AddExternalAction(ActionInformation.AgentState.Walking, 1);
            break;

        case "MB":
            handler.AddExternalAction(ActionInformation.AgentState.Walking, -1);
            break;

        default:
            break;
        }
    }