public override void OnServerOnlineSceneLoaded()
 {
     base.OnServerOnlineSceneLoaded();
     RegisterGamerulePrefabs();
     if (gameRule != null)
     {
         gameRule.OnStartServer();
         if (IsClient)
         {
             gameRule.InitialClientObjects(Client);
         }
     }
     canUpdateGameRule = true;
 }
    public override void OnStartServer()
    {
        base.OnStartServer();
        if (gameRule != null)
        {
            gameRule.OnStartServer(this);
        }

        updateScoreTime  = 0f;
        updateMatchTime  = 0f;
        RemainsMatchTime = 0f;
        IsMatchEnded     = false;
        MatchEndedAt     = 0f;
        // If online scene == offline scene or online scene is empty assume that it can update game rule immediately
        canUpdateGameRule = (string.IsNullOrEmpty(onlineScene) || offlineScene.Equals(onlineScene));
    }
Esempio n. 3
0
    public override void OnOnlineSceneChanged()
    {
        if (isLog)
        {
            Debug.Log("OnOnlineSceneChanged");
        }
        // Reset last game/match data
        ResetGame();
        // Get game rule to initial client objects
        var customProperties = PhotonNetwork.room.CustomProperties;
        var gameRuleName     = (string)customProperties[CUSTOM_ROOM_GAME_RULE];
        BaseNetworkGameRule foundGameRule;

        if (BaseNetworkGameInstance.GameRules.TryGetValue(gameRuleName, out foundGameRule))
        {
            gameRule = foundGameRule;
            gameRule.InitialClientObjects();
            if (PhotonNetwork.isMasterClient && !startUpdateGameRule)
            {
                startUpdateGameRule = true;
                gameRule.OnStartServer(this);
            }
        }
    }