Пример #1
0
 private static void Prefix(PhotonNetworkController __instance)
 {
     try
     {
         if (__instance.currentGameType != null)
         {
             if (MapLoader._lobbyName != null)
             {
                 if (__instance.currentGameType == "")
                 {
                     return;
                 }
                 if (__instance.currentGameType.Contains(MapLoader._lobbyName) == false)
                 {
                     MapLoader.ResetMapProperties();
                 }
             }
         }
         else
         {
             MapLoader.ResetMapProperties();
         }
     } catch
     {
         UnityEngine.Debug.LogError("Error in monkemaploader on joined room prefix");
     }
 }
Пример #2
0
 public static void JoinPrivateLobby(string code, PhotonNetworkController __instance)
 {
     RoomCode = code;
     __instance.currentGameType = "privatetag";
     __instance.customRoomID    = code;
     __instance.isPrivate       = true;
     if (PhotonNetwork.InRoom && PhotonNetwork.CurrentRoom.Name != code)
     {
         PhotonNetworkController.instance.currentGorillaParent.GetComponentInChildren <GorillaScoreboardSpawner>().OnLeftRoom();
         __instance.attemptingToConnect = true;
         foreach (SkinnedMeshRenderer skinnedMeshRenderer2 in __instance.offlineVRRig)
         {
             if (skinnedMeshRenderer2 != null)
             {
                 skinnedMeshRenderer2.enabled = true;
             }
         }
         PhotonNetwork.Disconnect();
     }
     if (!PhotonNetwork.InRoom && !__instance.attemptingToConnect)
     {
         __instance.attemptingToConnect = true;
         __instance.AttemptToConnectToRoom();
         UnityEngine.Debug.Log("attempting to connect");
     }
 }
Пример #3
0
        private static void Prefix(PhotonNetworkController __instance, out string[] __state)
        {
            __state = GorillaComputer.instance.allowedMapsToJoin;

            var newMaps = new string[__state.Length + 1];

            GorillaComputer.instance.allowedMapsToJoin.CopyTo(newMaps, 0);
            newMaps[newMaps.Length - 1] = "MOD_";

            GorillaComputer.instance.allowedMapsToJoin = newMaps;
        }
Пример #4
0
        /// <inheritdoc cref="JoinPrivateLobby(string, bool)"/>
        /// <inheritdoc cref="JoinPrivateLobby(PhotonNetworkController)"/>
        public static void JoinPrivateLobby(string code, PhotonNetworkController __instance, bool casual = false)
        {
            RoomCode = code;
            __instance.customRoomID = code;
            __instance.isPrivate    = true;
            Debug.Log("attempting to connect");
            __instance.AttemptToJoinSpecificRoom(code);

            if (casual)
            {
                PhotonNetworkPatch.setCasualPrivate = true;
            }
            return;
        }
 private static void Prefix(PhotonNetworkController __instance)
 {
     if (__instance.currentGameType != null)
     {
         if (MapLoader._lobbyName != null)
         {
             if (__instance.currentGameType.Contains(MapLoader._lobbyName) == false)
             {
                 MapLoader.ResetMapProperties();
             }
         }
     }
     else
     {
         MapLoader.ResetMapProperties();
     }
 }
Пример #6
0
        /// <inheritdoc cref="JoinModdedLobby(string)"/>
        /// <param name="casual">Whether or not to make the room casual.</param>
        public static void JoinModdedLobby(string map, bool casual = false)
        {
            string gameModeName = "infection_MOD_" + map;
            PhotonNetworkController photonNetworkController = PhotonNetworkController.Instance;

            string queue = casual ? "CASUAL" : "DEFAULT";

            defaultQueue = GorillaComputer.instance.currentQueue;
            GorillaComputer.instance.currentQueue = queue;

            // Setting player prefs is not needed
            // PlayerPrefs.SetString("currentQueue", queue);
            // PlayerPrefs.Save();

            // What does this do?
            FieldInfo field = photonNetworkController.GetType().GetField("pastFirstConnection", BindingFlags.Instance | BindingFlags.NonPublic);

            field.SetValue(photonNetworkController, true);

            // Go to code_MAP for maps while in a private
            if (PhotonNetwork.InRoom && (PhotonNetwork.CurrentRoom.CustomProperties["gameMode"] as string).Contains("private"))
            {
                string customRoomID = photonNetworkController.customRoomID;
                if (!customRoomID.Contains("_MAP"))
                {
                    Debug.Log("JOINING");
                    JoinPrivateLobby(customRoomID + "_MAP", casual);
                    return;
                }
            }

            //photonNetworkController.currentGameType = gameModeName;
            if (joinTrigger == null)
            {
                joinTrigger = new GameObject("UtillaJoinTrigger").AddComponent <GorillaNetworkJoinTrigger>();
                joinTrigger.makeSureThisIsDisabled = Array.Empty <GameObject>();
                joinTrigger.makeSureThisIsEnabled  = Array.Empty <GameObject>();
                joinTrigger.joinScreens            = Array.Empty <GorillaLevelScreen>();
                joinTrigger.leaveScreens           = Array.Empty <GorillaLevelScreen>();
            }
            joinTrigger.gameModeName = gameModeName;
            photonNetworkController.AttemptToJoinPublicRoom(joinTrigger);
        }
Пример #7
0
        public static void JoinModdedLobby(string map)
        {
            string gameModeName = "infection_MOD_" + map;
            PhotonNetworkController photonNetworkController = PhotonNetworkController.instance;

            GorillaComputer.instance.currentQueue = "DEFAULT";
            PlayerPrefs.SetString("currentQueue", "DEFAULT");
            PlayerPrefs.Save();

            if (PhotonNetwork.InRoom && PhotonNetwork.CurrentRoom.CustomProperties["gameMode"].ToString().Contains("privatetag"))
            {
                return;
            }
            if (PhotonNetwork.InRoom && (string)PhotonNetwork.CurrentRoom.CustomProperties["gameMode"] != gameModeName)
            {
                photonNetworkController.currentGameType     = gameModeName;
                photonNetworkController.attemptingToConnect = true;
                SkinnedMeshRenderer[] offlineVRRig = photonNetworkController.offlineVRRig;
                for (int i = 0; i < offlineVRRig.Length; i++)
                {
                    offlineVRRig[i].enabled = true;
                }
                PhotonNetwork.Disconnect();
                return;
            }
            if (!PhotonNetwork.InRoom && !photonNetworkController.attemptingToConnect)
            {
                try
                {
                    photonNetworkController.currentGameType     = gameModeName;
                    photonNetworkController.attemptingToConnect = true;
                    photonNetworkController.AttemptToConnectToRoom();
                    Debug.Log("attempting to connect");
                }
                catch (Exception e) {
                    Debug.Log(e);
                }
            }
        }
Пример #8
0
 /// <inheritdoc cref="JoinPrivateLobby()"/>
 /// <param name="__instance">Instance of PhotonNetworkController to use.</param>
 public static void JoinPrivateLobby(PhotonNetworkController __instance) => JoinPrivateLobby(RoomCode, __instance);
Пример #9
0
        private static bool Prefix(PhotonNetworkController __instance, PhotonNetworkController.ConnectionEvent connectionEvent, ref bool ___joiningWithFriend, ref bool ___pastFirstConnection, ref int[] ___playersInRegion)
        {
            switch (connectionEvent)
            {
            // Attempting to join a room, try and join a random room ignoring used regions
            case PhotonNetworkController.ConnectionEvent.OnDisconnected:
                // These code paths do different things, don't alter them
                if (___joiningWithFriend || !___pastFirstConnection)
                {
                    return(true);
                }

                Debug.Log("attempt to join master and join a random room");

                // Ignore used reigons
                int[] playersInRegion = (int[])___playersInRegion.Clone();
                foreach (int i in usedRegions)
                {
                    playersInRegion[i] = 0;
                }

                // Lemming's code, choose a random region weighted with the players in each region
                float value = UnityEngine.Random.value;
                int   num   = 0;
                for (int i = 0; i < playersInRegion.Length; i++)
                {
                    num += playersInRegion[i];
                }
                float num2 = 0f;
                int   num3 = -1;
                while (num2 < value && num3 < playersInRegion.Length - 1)
                {
                    num3++;
                    num2 += (float)playersInRegion[num3] / (float)num;
                }
                PhotonNetwork.PhotonServerSettings.AppSettings.FixedRegion = __instance.serverRegions[num3];
                Debug.Log("joining past the first room, so we weighted randomly picked " + __instance.serverRegions[num3]);
                // End of lemming's code

                // For some reason the first time this is called it just runs again, so don't ignore the region we just chose
                if (!firstRegion)
                {
                    usedRegions.Add(num3);
                }
                firstRegion = false;

                PhotonNetwork.ConnectUsingSettings();

                return(false);

            // Failed to join a room in the region, try the next one
            case PhotonNetworkController.ConnectionEvent.OnJoinRandomFailed:
                if (usedRegions.Count < __instance.serverRegions.Length)
                {
                    // Not enough server regions used, so we will try again
                    PhotonNetwork.Disconnect();
                    return(false);
                }
                else
                {
                    // Tried all of the regions, make a new room
                    return(true);
                }

            // Successsfully joined room, so reset everything
            case PhotonNetworkController.ConnectionEvent.OnJoinedRoom:
                usedRegions = new List <int>();
                firstRegion = true;
                return(true);

            // Not a case we care about, return
            default:
                return(true);
            }
        }
Пример #10
0
        public void OnGUI()
        {
            if (ShowGui)
            {
                if (GUI.Button(new Rect(20, 20, 160, 20), "SPECTATOR"))
                {
                    ShowHide = !ShowHide;
                }

                if (ShowHide)
                {
                    if (PhotonNetwork.CurrentRoom != null)
                    {
                        if (PhotonNetwork.CurrentRoom.IsVisible)
                        {
                            Spectate = false;
                            GUI.Box(new Rect(20, 50, 170, 170), "KFC'S Spectator Client");
                            GUI.Label(new Rect(50, 90, 170, 20), "IN A PUBLIC");
                            roomCode = GUI.TextArea(new Rect(20, 120, 160, 20), roomCode, 200);

                            if (GUI.Button(new Rect(25, 150, 160f, 30f), "Join Room"))
                            {
                                PhotonNetworkController __instance = PhotonNetworkController.instance;
                                if (PhotonNetwork.InRoom)
                                {
                                    PhotonNetwork.LeaveRoom();
                                }

                                __instance.AttemptToJoinSpecificRoom(roomCode);
                            }

                            GUI.Label(new Rect(20, 190, 170, 20), "Current Room: " + PhotonNetwork.CurrentRoom.Name);
                            return;
                        }
                    }

                    GUI.Box(new Rect(20, 50, 170, 150), "KFC'S Spectator Client");


                    if (GUI.Button(new Rect(25, 80, 160f, 30f), string1))
                    {
                        Spectate = !Spectate;
                    }
                    if (Spectate)
                    {
                        string1 = "Spectator <color=green>ON</color>";
                    }
                    else
                    {
                        string1 = "Spectator <color=red>OFF</color>";
                    }
                    roomCode = GUI.TextArea(new Rect(20, 120, 160, 20), roomCode, 200);

                    if (GUI.Button(new Rect(25, 150, 160f, 30f), "Join Room"))
                    {
                        PhotonNetworkController __instance = PhotonNetworkController.instance;
                        if (PhotonNetwork.InRoom)
                        {
                            PhotonNetwork.LeaveRoom();
                        }

                        __instance.AttemptToJoinSpecificRoom(roomCode);
                    }

                    if (PhotonNetwork.InRoom)
                    {
                        GUI.Box(new Rect(20, 200, 170, 270), "Current Room: " + PhotonNetwork.CurrentRoom.Name);
                    }
                    else
                    {
                        GUI.Box(new Rect(20, 200, 170, 270), "Currently Not in a room");
                    }

                    if (GUI.Button(new Rect(20, 240, 160, 20), string3))
                    {
                        muted = !muted;
                        foreach (VRRig player in GorillaParent.instance.GetComponentsInChildren <VRRig>())
                        {
                            if (player.GetComponent <Player>() != PhotonNetwork.LocalPlayer && player != null)
                            {
                                player.GetComponent <PhotonVoiceView>().SpeakerInUse.gameObject.GetComponent <AudioSource>().enabled = (!muted);
                                if (!muted)
                                {
                                    player.GetComponent <PhotonVoiceView>().SpeakerInUse.RestartPlayback();
                                }
                            }
                        }
                    }

                    if (muted)
                    {
                        string3 = "Mute ALL OTHERS <color=green>ON</color>";
                    }
                    else
                    {
                        string3 = "Mute ALL OTHERS <color=red>OFF</color>";
                    }


                    if (GUI.Button(new Rect(20, 270, 160, 20), string4))
                    {
                        muteSelf = !muteSelf;

                        PhotonVoiceNetwork.Instance.PrimaryRecorder.TransmitEnabled = !muteSelf;
                        PhotonNetworkController.instance.GetComponent <Recorder>().TransmitEnabled = !MyPatcher.muteSelf;
                    }

                    if (muteSelf)
                    {
                        string4 = "Mute SELF <color=green>ON</color>";
                    }
                    else
                    {
                        string4 = "Mute SELF <color=red>OFF</color>";
                    }

                    GUI.Label(new Rect(25, 300, 160, 20), "SensX");
                    sensX = GUI.HorizontalSlider(new Rect(25, 330, 160, 30), sensX, 0.0F, 1.0F);
                    GUI.Label(new Rect(25, 370, 160, 20), "SensY");
                    sensY = GUI.HorizontalSlider(new Rect(25, 400, 160, 30), sensY, 0.0F, 1.0F);


                    if (GUI.Button(new Rect(20, 430, 160, 20), "Load Maps"))
                    {
                        GameObject Canyon = GameObject.Find("NetworkTriggers/Geo Trigger/EnteringCanyonGeo");
                        GameObject Cave   = GameObject.Find("NetworkTriggers/Geo Trigger/EnteringCaveGeo");
                        GameObject Forest = GameObject.Find("NetworkTriggers/Geo Trigger/LeavingCosmetics");

                        Canyon.GetComponent <GorillaGeoHideShowTrigger>().OnBoxTriggered();
                        Forest.GetComponent <GorillaGeoHideShowTrigger>().OnBoxTriggered();
                        Cave.GetComponent <GorillaGeoHideShowTrigger>().OnBoxTriggered();
                        Forest.GetComponent <GorillaGeoHideShowTrigger>().OnBoxTriggered();
                    }
                }
            }
        }