/**************************************** * Function GetPlayerPriority(GameObject player) * Returns a value that indicates the enemies priority of the target; * Parameters * GameOject player * a player object previously analized by the BFGI Manager; * Return * float priority * the modifier to the priority of the player. In this instance, it changes the distance in which the enemy considers the player, making it more or less likely to pursue; * Obs * The enemies are more likely to pursue curious players. The same is true for careless, outgoing compassionate and nervous players. * Solitary players are less likely to help other players. Same is true for detached players. * ****************************************/ private float GetPlayerPriority(GameObject player) { // [0.1] [-0.1] //Openness = curious vs cautious //Conscientiouness = organized vs careless //Extraversion = outgoing vs solitary //Agreeableness = compassionate vs detached //Neuroticism = nervous vs confident float ret = 1; int playerO = BFGIManager.GetInstance().GetPlayerOCEAN(player, "O") - 6; int playerC = BFGIManager.GetInstance().GetPlayerOCEAN(player, "C") - 6; int playerE = BFGIManager.GetInstance().GetPlayerOCEAN(player, "E") - 6; int playerA = BFGIManager.GetInstance().GetPlayerOCEAN(player, "A") - 6; int playerN = BFGIManager.GetInstance().GetPlayerOCEAN(player, "N") - 6; ret += playerO * 0.025f; //playerO = [-0.1 .. 0.1] etc... ret -= playerC * 0.025f; ret += playerE * 0.025f; ret += playerA * 0.025f; ret += playerN * 0.025f; return(ret); }
private void UpdatePlayers() { List <PlayerBehaviourManager.Player> playerEmpathyList = PlayerBehaviourManager.GetInstance().GetPlayers(); if (players.Count == 0) { List <BFGIManager.Player> playerBFGIList = BFGIManager.GetInstance().GetPlayers(); List <PlayerTypeManager.Player> playerTypeList = PlayerTypeManager.GetInstance().GetPlayers(); foreach (PlayerBehaviourManager.Player p in playerEmpathyList) { Player novoPlayer = new Player(p.playerID); novoPlayer.playerObj = p.playerObj; novoPlayer.playerEmpathies = p.empathies; players.Add(novoPlayer); } foreach (BFGIManager.Player p in playerBFGIList) { foreach (Player a in players) { if (p.playerID == a.playerID) { a.O = p.O; a.C = p.C; a.E = p.E; a.A = p.A; a.N = p.N; } } } foreach (PlayerTypeManager.Player p in playerTypeList) { foreach (Player a in players) { if (p.playerID == a.playerID) { a.agression = p.agression; a.rescuer = p.rescuer; a.greed = p.greed; } } } } else { foreach (Player player in players) { foreach (PlayerBehaviourManager.Player p in playerEmpathyList) { if (player.playerID == p.playerID) { player.playerEmpathies = p.empathies; } } } } }
/****************************************** * * public void NewPlayer() * Creates a new player with the current playerID value, * signals the other managers to insert a new player on their player list, * sets the BFGI questionnaire back to 1; * * Parameters * * Return * * ***************************************/ public void NewPlayer() { GameObject newPlayer = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); newPlayer.name = "Player_" + newPlayerId; newPlayer.GetComponent <PlayerMovementScript>().playerID = newPlayerId; newPlayer.GetComponent <MeshRenderer>().material.color = new Color32((byte)Random.Range(0, 255), (byte)Random.Range(0, 255), (byte)Random.Range(0, 255), 255); newPlayer.tag = GameManagerScript.Tags.Player.ToString(); players.Add(newPlayer); BFGIManager.GetInstance().NewPlayer(newPlayer, newPlayerId); PlayerBehaviourManager.GetInstance().NewPlayer(newPlayer, newPlayerId); newPlayerId++; BFGIManager.GetInstance().LoadSituation(1); }
/****************************************** * * public void NewPlayer(int playerID) * Creates a new player with a specified playerID value, * signals the other managers to insert a new player on their player list, * sets the BFGI questionnaire back to 1; * * Parameters * int playerID - The number ID for the new player. * Return * * ***************************************/ private void NewPlayer(int playerID) { GameObject newPlayer = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); newPlayer.name = "Player_" + playerID; newPlayer.GetComponent <PlayerMovementScript>().playerID = playerID; newPlayer.GetComponent <MeshRenderer>().material.color = new Color32((byte)Random.Range(0, 255), (byte)Random.Range(0, 255), (byte)Random.Range(0, 255), 255); newPlayer.tag = GameManagerScript.Tags.Player.ToString(); players.Add(newPlayer); BFGIManager.GetInstance().NewPlayer(newPlayer, playerID); PlayerBehaviourManager.GetInstance().NewPlayer(newPlayer, playerID); PlayerTypeManager.GetInstance().NewPlayer(newPlayer, playerID); UIManagerScript.GetInstance().StartDisplayOnScreen(newPlayer, "PlayerName_" + newPlayer.name, null); }
/****************************************** * * public void PlayerTypeOver() * Moves the game to the next stage; * * Parameters * * Return * * ***************************************/ public void PlayerTypeOver() { currentStage++; print(currentStage.ToString()); BFGIManager.GetInstance().LoadSituation(1); }
private void OnGUI() { foreach (PlayerMsg display in players) { if (display.player == null) { continue; } if (!display.player.activeInHierarchy) { continue; } float width, height; width = height = 200; Vector3 pos = Camera.main.WorldToScreenPoint(display.player.transform.position); string displayMSG = display.msg; Rect displayRECT = new Rect(pos.x, Screen.height - pos.y, width, height); if (displayMSG.Contains("PlayerName_")) { //print("contains"); displayMSG = displayMSG.Substring("PlayerName_".Length); //print(display.player.GetComponent<SpriteRenderer>().sprite.texture.height); displayRECT.y -= charSizeOffset.y; displayRECT.x -= charSizeOffset.x; } if (displayMSG.Contains("Situation")) { displayRECT.x += situationOffset.x; displayRECT.y += situationOffset.y; displayRECT.width += situationRECT.x; displayRECT.height += situationRECT.y; } GUI.Label(displayRECT, displayMSG); } if (true)//GameManagerScript.GetInstance().currentStage == GameManagerScript.GameStage.MainGame) { List <string> ptText = PlayerTypeManager.GetInstance().Display(); List <string> bfgiText = BFGIManager.GetInstance().Display(); List <string> pbText = PlayerBehaviourManager.GetInstance().Display(); Rect leftUI = new Rect(Screen.width * 0.05f, Screen.height * 0.05f, Screen.width * 0.20f, Screen.height * 0.9f); if (GameManagerScript.GetInstance().GetNumPlayers() > 2) { Rect rightUI = new Rect(Screen.width * 0.75f, Screen.height * 0.05f, Screen.width * 0.20f, Screen.height * 0.9f); string leftText = ptText[0] + bfgiText[0] + pbText[0]; string rightText = ptText[1] + bfgiText[1] + pbText[1]; GUI.Box(leftUI, leftText); GUI.Box(rightUI, rightText); } else { string leftText = ptText[0] + bfgiText[0] + pbText[0]; GUI.Box(leftUI, leftText); } } }
/****************************************** * * private void Start() * Start the lists used in the class * * Parameters * * Return * * * ***************************************/ private void Start() { bgManager = this; players = new List <Player>(); avgPlayer = new AveragePlayer(); }