예제 #1
0
 /******************************************
  *
  * public void HitEnemy(GameObject player, GameObject enemy)
  *		Signals the PBManager that the player hit the enemy, for statistical reference,
  *		removes the enemy from the list, checks if a new scenario should be loaded,
  *		and destryos the enemy GameObject;
  *
  * Parameters
  *		int playerID - The number ID for the new player.
  * Return
  *
  * ***************************************/
 public void HitEnemy(GameObject player, GameObject enemy)
 {
     PlayerBehaviourManager.GetInstance().HitEnemy(player, enemy);
     ScenarioManager.GetInstance().enemies.Remove(enemy);
     ScenarioManager.GetInstance().CheckNewScenario();
     Destroy(enemy);
 }
예제 #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
 internal void GetItem(GameObject player, GameObject itemObj)
 {
     foreach (Item item in items)
     {
         if (item.itemObj == itemObj)
         {
             items.Remove(item);
             PlayerBehaviourManager.GetInstance().GetItem(player, item);
             Destroy(item.itemObj);
             return;
         }
     }
 }
예제 #4
0
 public void DestroyVictim(GameObject victimObj)
 {
     foreach (GameObject vic in victims)
     {
         if (vic == victimObj)
         {
             victims.Remove(vic);
             PlayerBehaviourManager.GetInstance().DestroyVictim(vic);
             Destroy(vic);
             return;
         }
     }
 }
예제 #5
0
 public void SaveVictim(GameObject player, GameObject victimObj)
 {
     foreach (GameObject vic in victims)
     {
         if (vic == victimObj)
         {
             victims.Remove(vic);
             PlayerBehaviourManager.GetInstance().SaveVictim(player, vic);
             Destroy(vic);
             CheckNewScenario();
             return;
         }
     }
 }
예제 #6
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);
    }
예제 #7
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);
    }
예제 #8
0
    /******************************************
     *
     * public virtual void FixedUpdate()
     *		Handles the players movement inputs. Handles player movement speed power up
     *       and stun durations
     *
     * Parameters
     *
     * Return
     *
     * ***************************************/
    public virtual void FixedUpdate()
    {
        if (Time.time - lastStunned < GameManagerScript.GetInstance().playerStunLength)
        {
            return;
        }

        float spdModifier = 1;

        if (Time.time - lastPowerUp < powerUpLength)
        {
            spdModifier *= 1.5f;
        }

        //int playerID = 1;
        if (Input.GetButton("Player" + playerID + "_UP"))
        {
            transform.position = new Vector3(transform.position.x, transform.position.y + spdModifier * maxSpeed, transform.position.z);
            PlayerBehaviourManager.GetInstance().movePlayer(gameObject);
        }
        else if (Input.GetButton("Player" + playerID + "_DOWN"))
        {
            transform.position = new Vector3(transform.position.x, transform.position.y - spdModifier * maxSpeed, transform.position.z);
            PlayerBehaviourManager.GetInstance().movePlayer(gameObject);
        }

        if (Input.GetButton("Player" + playerID + "_RIGHT"))
        {
            transform.position = new Vector3(transform.position.x + spdModifier * maxSpeed, transform.position.y, transform.position.z);
            PlayerBehaviourManager.GetInstance().movePlayer(gameObject);
        }
        else if (Input.GetButton("Player" + playerID + "_LEFT"))
        {
            transform.position = new Vector3(transform.position.x - spdModifier * maxSpeed, transform.position.y, transform.position.z);
            PlayerBehaviourManager.GetInstance().movePlayer(gameObject);
        }
    }
    // Update is called once per frame
    void Update()
    {
        CreatePoints();
        if (Time.time - lastStunned < GameManagerScript.GetInstance().playerStunLength)
        {
            return;
        }


        if (
            animator.GetBool("startAttack") ||
            (animator.GetCurrentAnimatorStateInfo(0).IsName("attackRIGHT") && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1) ||
            (animator.GetCurrentAnimatorStateInfo(0).IsName("attackDOWN") && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1) ||
            (animator.GetCurrentAnimatorStateInfo(0).IsName("attackUP") && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1) ||
            (animator.GetCurrentAnimatorStateInfo(0).IsName("attackLEFT") && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1)
            )
        {
            return;
        }
        animator.ResetTrigger("startAttack");
        if (Input.GetButtonDown("Player" + playerId + "_X"))
        {
            PlayerBehaviourManager.GetInstance().PlayerAttack(gameObject);
            animator.SetTrigger("startAttack");
            return;
        }

        if (Time.time - lastInput > idleCD)
        {
            switch (lastDirection)
            {
            case Direction.NORTH:
            case Direction.NE:
            case Direction.NW:
                animator.SetTrigger("startIdle");
                animator.SetInteger("Direction", (int)Direction.NORTH);
                break;

            case Direction.EAST:
                animator.SetTrigger("startIdle");
                animator.SetInteger("Direction", (int)Direction.EAST);
                break;

            case Direction.SE:
            case Direction.SOUTH:
            case Direction.SW:
                animator.SetTrigger("startIdle");
                animator.SetInteger("Direction", (int)Direction.SOUTH);
                break;

            case Direction.WEST:
                animator.SetTrigger("startIdle");
                animator.SetInteger("Direction", (int)Direction.WEST);
                break;
            }
        }
        else
        {
            switch (lastDirection)
            {
            case Direction.NORTH:
            case Direction.NE:
            case Direction.NW:
                if (!animator.GetCurrentAnimatorStateInfo(0).IsName("walkUP"))
                {
                    animator.SetTrigger("startWalk");
                    animator.SetInteger("Direction", (int)Direction.NORTH);
                }
                break;

            case Direction.EAST:
                if (!animator.GetCurrentAnimatorStateInfo(0).IsName("walkRIGHT"))
                {
                    animator.SetTrigger("startWalk");
                    animator.SetInteger("Direction", (int)Direction.EAST);
                }
                break;

            case Direction.SE:
            case Direction.SOUTH:
            case Direction.SW:
                if (!animator.GetCurrentAnimatorStateInfo(0).IsName("walkDOWN"))
                {
                    animator.SetTrigger("startWalk");
                    animator.SetInteger("Direction", (int)Direction.SOUTH);
                }
                break;

            case Direction.WEST:
                if (!animator.GetCurrentAnimatorStateInfo(0).IsName("walkLEFT"))
                {
                    animator.SetTrigger("startWalk");
                    animator.SetInteger("Direction", (int)Direction.WEST);
                }
                break;
            }
        }
    }
예제 #10
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);
            }
        }
    }
 private void Start()
 {
     pbManager          = this;
     players            = new List <Player>();
     lastScreenShotTime = -ScreenShotCD;
 }