Exemple #1
0
    public static IEnumerator activatePlayers()
    {
        //connection.isReady is set to false after ServerChangeScene, but then to true in OnConnection
        //so, it is true after 2 sec (rpc works again). + 2 sec is a nice pause before players are spawned
        yield return(new WaitForSeconds(2f));

        GameObject[] allPlayerSpawnPoints = GameObject.FindGameObjectsWithTag("playerSpawnPoint");
        int          ind = -1;

        allFinishedPlayers.AddRange(allDeadPlayers);//here all players out there
        allActivePlayers   = allFinishedPlayers;
        allFinishedPlayers = new List <Player>();
        allDeadPlayers     = new List <Player>();

        foreach (Player p in allActivePlayers)
        {
            ind = (ind + 1) % allPlayerSpawnPoints.Length;
            p.RpcActivatePlayer(allPlayerSpawnPoints[ind].transform.position);
        }


        //reset player numbers
        playersActive      = allActivePlayers.Count;
        playersFinished    = 0;
        playersToNextLevel = getPlayersToNextLevel(ServerGM.isSceneShop(), playersActive);
        ag.RpcUpdatePlayerCountFrame(playersActive, playersFinished, playersToNextLevel);
    }
Exemple #2
0
 private void Awake()
 {
     if (SGMinstanse == null)
     {
         SGMinstanse = this;
     }
 }
Exemple #3
0
    public void RpcTakeDamageFromSpikes(int damageAmount)
    {
        if (isLocalPlayer)
        {
            transform.GetComponent <Rigidbody2D>().AddForce(new Vector2(0, 300));
        }

        if (!IsInvoking("blinkPlayer"))
        {
            InvokeRepeating("blinkPlayer", 0, 0.2f);
        }
        reduceHealth(damageAmount);
        if (currHealth <= 0)
        {
            deactivateDeadPlayer();
            loseItemsAndGold();

            isDamageable = true;
            stopBlinkingPlayer();
            if (isServer)
            {
                ServerGM.handlePlayerDied(this);
            }
        }
    }
Exemple #4
0
 void Start()
 {
     if (isServer)
     {
         gmInst = GameObject.Find("GM").GetComponent <ServerGM>();
     }
 }
Exemple #5
0
 private static ServerGM getInstance()
 {
     if (instanceSelf == null)
     {
         instanceSelf = GameObject.Find("GM").GetComponent <ServerGM>();
         return(instanceSelf);
     }
     return(instanceSelf);
 }
Exemple #6
0
    public void CmdExitShop()
    {
        RpcDeactivateFinishedPlayer();
        AllPlayerManager.playerFinished(netId);

        if (AllPlayerManager.isPlayersToEndReached())  //???
        {
            StartCoroutine(ServerGM.finishLevel());
        }
    }
Exemple #7
0
    public void RpcTakeDamage(int damageAmount)
    {
        reduceHealth(damageAmount);
        if (currHealth <= 0)
        {
            deactivateDeadPlayer();
            loseItemsAndGold();

            if (isServer)
            {
                ServerGM.handlePlayerDied(this);
            }
        }
    }
Exemple #8
0
    void Start()
    {
        if (!isServer)  //start is called when NetworkeIdentity object ServerGM is activated, i.e. when player spawns
        {
            SceneManager.sceneLoaded -= OnLevelFinishedLoading;
            Destroy(this);
        }
        allGMInst    = GameObject.Find("allGM").GetComponent <allGM>();
        rg           = new System.Random(((int)(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond) % 1000));
        instanceSelf = this;

        SceneManager.sceneLoaded += OnLevelFinishedLoading;//first time not called! (as it goes before start)
        levelInitialise(true);
    }
Exemple #9
0
    public void CmdExitLevel()
    {
        RpcKeyUsed();
        RpcDeactivateFinishedPlayer();

        AllPlayerManager.playerFinished(netId);

        if (AllPlayerManager.isPlayersToEndReached())  //end level
        {
            StartCoroutine(ServerGM.finishLevel());
        }
        else
        {
            StartCoroutine(ServerGM.givePlayerToObserve(this));
        }
    }
Exemple #10
0
    public static void handlePlayerDied(Player p)
    {
        AllPlayerManager.playerDied(p.netId);//update arrays; update player counts;

        allGMInst.RpcUpdatePlayerCountFrame(AllPlayerManager.playersActive, AllPlayerManager.playersFinished, AllPlayerManager.playersToNextLevel);
        if (AllPlayerManager.playersFinished + AllPlayerManager.playersActive > 0)
        {
            if (AllPlayerManager.isPlayersToEndReached())  //end level
            {
                instanceSelf.StartCoroutine(ServerGM.finishLevel());
            }
            else
            {
                instanceSelf.StartCoroutine(ServerGM.givePlayerToObserve(p));
            }
        }
        else  //game over
        {
            allGMInst.RpcFinishGame();
        }
    }