Beispiel #1
0
    void levelInitialise(bool isFirstLevelEverLoaded)
    {
        string sceneName = SceneManager.GetActiveScene().name;

        if (sceneName == "level1" || sceneName == "level2")
        {
            stoneSpawnPointsFolder = GameObject.Find("StoneSpawnPoints").transform;
            spawnInitialStones();

            keyPotSpawnPointsFolder = GameObject.Find("KeyPotSpawnPoints").transform;
            spawnKeyPot();

            isCurrentSceneShop = false;
        }
        else
        {
            isCurrentSceneShop = true;
        }


        if (!isFirstLevelEverLoaded)
        {
            StartCoroutine(AllPlayerManager.activatePlayers());
        }
    }
Beispiel #2
0
    public static IEnumerator givePlayerToObserve(Player p)
    {
        yield return(new WaitForSeconds(2f));


        AllPlayerManager.givePlayerToObserve(p.netId);
    }
Beispiel #3
0
    public void CmdExitShop()
    {
        RpcDeactivateFinishedPlayer();
        AllPlayerManager.playerFinished(netId);

        if (AllPlayerManager.isPlayersToEndReached())  //???
        {
            StartCoroutine(ServerGM.finishLevel());
        }
    }
Beispiel #4
0
    public void CmdExitLevel()
    {
        RpcKeyUsed();
        RpcDeactivateFinishedPlayer();

        AllPlayerManager.playerFinished(netId);

        if (AllPlayerManager.isPlayersToEndReached())  //end level
        {
            StartCoroutine(ServerGM.finishLevel());
        }
        else
        {
            StartCoroutine(ServerGM.givePlayerToObserve(this));
        }
    }
 /// <summary>
 /// 获取玩家列表,强制重置玩家ID
 /// </summary>
 /// <returns>成功返回ture</returns>
 private bool GetPlayers()
 {
     players = EditorGUILayout.ObjectField("All Players", players, typeof(AllPlayerManager), false) as AllPlayerManager;
     if (players == null)
     {
         return(false);
     }
     playerInfoList = players.playerInfoList;
     if (playerInfoList == null || playerInfoList.Count <= 0)
     {
         EditorGUILayout.HelpBox("Waring : playerInfoList Is Empty", MessageType.Warning);
         return(false);
     }
     for (int i = 0; i < playerInfoList.Count; i++)
     {
         playerInfoList[i].id = i;
     }
     return(true);
 }
Beispiel #6
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();
        }
    }
Beispiel #7
0
    public static IEnumerator finishLevel()
    {
        yield return(new WaitForSeconds(1f));//make a little pause between player finishing and displaying results


        if (isCurrentSceneShop == false)
        {
            string sceneName         = SceneManager.GetActiveScene().name;
            int    totalTeamPrize    = 0;
            int    perPlaceGoldStep  = 0;
            int    goldForUnfinished = 0;
            if (sceneName == "level1")
            {
                totalTeamPrize    = 400;
                perPlaceGoldStep  = 10;
                goldForUnfinished = 5;
            }
            else if (sceneName == "level2")
            {
                totalTeamPrize    = 500;
                perPlaceGoldStep  = 50;
                goldForUnfinished = 25;
            }

            //calculate scores
            PlayerResult result = AllPlayerManager.calculateResults(totalTeamPrize, perPlaceGoldStep, goldForUnfinished);
            //deactivate remaining players
            AllPlayerManager.finishRemainingPlayers();

            allGMInst.RpcDisplayLevelResults(result.allPlaces, result.allPlayerNetIds, result.allGoldWon);

            instanceSelf.InvokeRepeating("reduceTimeUntilNextLevel", 1, 1f);
        }
        else
        {
            serverChangeScene();
        }
    }
Beispiel #8
0
 void CmdAddPlayerOnServer(NetworkInstanceId netId)
 {
     AllPlayerManager.addPlayer(NetworkServer.FindLocalObject(netId).GetComponent <Player>());
 }
Beispiel #9
0
 void CmdAskPlayerFrameUpdate()
 {
     AllPlayerManager.updatePlayerFrame();
 }
 /// <summary>
 /// 配置单例
 /// </summary>
 public void SetupInstance()
 {
     instance = this;
 }