Пример #1
0
    /****************************************
    * 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);
    }
Пример #2
0
    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;
                    }
                }
            }
        }
    }
Пример #3
0
    /******************************************
     *
     * 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);
    }
Пример #4
0
    /******************************************
     *
     * 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);
    }
Пример #5
0
 /******************************************
  *
  * public void PlayerTypeOver()
  *		Moves the game to the next stage;
  *
  * Parameters
  *
  * Return
  *
  * ***************************************/
 public void PlayerTypeOver()
 {
     currentStage++;
     print(currentStage.ToString());
     BFGIManager.GetInstance().LoadSituation(1);
 }
Пример #6
0
    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);
            }
        }
    }
Пример #7
0
 /******************************************
  *
  * private void Start()
  *		Start the lists used in the class
  *
  * Parameters
  *
  * Return
  *
  *
  * ***************************************/
 private void Start()
 {
     bgManager = this;
     players   = new List <Player>();
     avgPlayer = new AveragePlayer();
 }