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); }
/* * 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. }
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>(); */ }
private void DequeueMovements(string character) { if (character == "Human") { handler = humanHandler; } else if (character == "Agent") { handler = agentHandler; } else { return; } handler.DoExternalActions(); }
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>(); } }
/* 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; } }