private void Update()
 {
     if (ManNetwork.inst.MyPlayer != null)
     {
         foreach (NetPlayer obj in playersToSubscribe)
         {
             PlayerAdded(obj);
             OnPlayerJoined?.Invoke(obj);
         }
         gameObject.SetActive(false);
         playersToSubscribe.Clear();
     }
 }
Esempio n. 2
0
    private void Client_OnEventAction(EventData photonEvent)
    {
        int actorNr = 0;

        if (photonEvent.Parameters.ContainsKey(ParameterCode.ActorNr))
        {
            actorNr = (int)photonEvent[ParameterCode.ActorNr];
        }

        Player player = null;

        if (actorNr > 0)
        {
            client.CurrentRoom.Players.TryGetValue(actorNr, out player);
        }

        switch (photonEvent.Code)
        {
        case EventCode.Join:
            OnPlayerJoined?.Invoke(player.ID);
            break;

        case EventCode.Leave:
            OnPlayerLeft?.Invoke(actorNr);
            break;
        }

        if (photonEvent.Parameters.ContainsKey(ParameterCode.CustomEventContent))
        {
            object data = photonEvent[ParameterCode.CustomEventContent];
            if (data is byte[] dataBuffer)
            {
                LastReceivedMessageSize = dataBuffer.Length;
            }
            OnEventData?.Invoke(photonEvent.Code, player.ID, data);
            HandleDataEvents(photonEvent.Code, player, data);
        }
    }
Esempio n. 3
0
    private void JoinPlayer(InputAction.CallbackContext context)
    {
        if (!CanPlayerJoin)
        {
            return;
        }

        InputDevice device = context.control.device;


        if (IsDeviceUsable(device, this.playerControls))
        {
            players.Add((currentPlayerIndex), SpawnPlayer(currentPlayerIndex, device));
            OnPlayerJoined?.Invoke(currentPlayerIndex);
            //InputUser newUser = new InputUser();
            //newUser = InputUser.PerformPairingWithDevice(device, newUser);
            //currentPlayerIndex++;
            //Debug.Log(InputUser.GetUnpairedInputDevices());
        }
        else
        {
            Debug.Log($"{device} is not a usable device.");
        }
    }
Esempio n. 4
0
 private void InvokeOnPlayerJoined(Player player)
 {
     OnPlayerJoined?.Invoke(player);
 }
Esempio n. 5
0
        private static void OnUiManagerInit()
        {
            var field0 = NetworkManager.field_Internal_Static_NetworkManager_0.field_Internal_VRCEventDelegate_1_Player_0;
            var field1 = NetworkManager.field_Internal_Static_NetworkManager_0.field_Internal_VRCEventDelegate_1_Player_1;

            field0.field_Private_HashSet_1_UnityAction_1_T_0.Add(new Action <Player>((player) => { if (player != null)
                                                                                                   {
                                                                                                       OnPlayerJoined?.DelegateSafeInvoke(player);
                                                                                                   }
                                                                                     }));
            field1.field_Private_HashSet_1_UnityAction_1_T_0.Add(new Action <Player>((player) => { if (player != null)
                                                                                                   {
                                                                                                       OnPlayerLeft?.DelegateSafeInvoke(player);
                                                                                                   }
                                                                                     }));

            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(APIUser).GetMethod("LocalAddFriend"), null, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnFriend), BindingFlags.NonPublic | BindingFlags.Static)));
            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(APIUser).GetMethod("UnfriendUser"), null, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnUnfriend), BindingFlags.NonPublic | BindingFlags.Static)));
            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(RoomManager).GetMethod("Method_Public_Static_Boolean_ApiWorld_ApiWorldInstance_String_Int32_0"), null, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnInstanceChange), BindingFlags.NonPublic | BindingFlags.Static)));
            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(NetworkManager).GetMethod("OnMasterClientSwitched"), new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnMasterChange), BindingFlags.NonPublic | BindingFlags.Static)));
            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(NetworkManager).GetMethod("OnLeftRoom"), new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnRoomLeave), BindingFlags.NonPublic | BindingFlags.Static)));
            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(NetworkManager).GetMethod("OnJoinedRoom"), new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnRoomJoin), BindingFlags.NonPublic | BindingFlags.Static)));
            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(VRCAvatarManager).GetMethods().First(mb => mb.Name.StartsWith("Method_Private_Boolean_GameObject_String_Single_String_")), null, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnAvatarChange), BindingFlags.NonPublic | BindingFlags.Static)));
            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(VRCPlayer).GetMethods().First(mb => mb.Name.StartsWith("Awake")), null, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnPlayerAwake), BindingFlags.NonPublic | BindingFlags.Static)));
            foreach (MethodInfo method in typeof(ModerationManager).GetMethods().Where(mb => mb.Name.StartsWith("Method_Private_ApiPlayerModeration_String_String_ModerationType_")))
            {
                VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(method, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnPlayerModerationSend1), BindingFlags.NonPublic | BindingFlags.Static)));
            }
            foreach (MethodInfo method in typeof(ModerationManager).GetMethods().Where(mb => mb.Name.StartsWith("Method_Private_Void_String_ModerationType_Action_1_ApiPlayerModeration_Action_1_String_")))
            {
                VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(method, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnPlayerModerationSend2), BindingFlags.NonPublic | BindingFlags.Static)));
            }
            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(ModerationManager).GetMethod("Method_Private_Void_String_ModerationType_0"), new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnPlayerModerationRemove), BindingFlags.NonPublic | BindingFlags.Static)));


            foreach (MethodInfo method in typeof(AvatarLoadingBar).GetMethods().Where(mb => mb.Name.Contains("Method_Public_Void_Single_Int64_")))
            {
                VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(method, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnAvatarDownloadProgress), BindingFlags.NonPublic | BindingFlags.Static)));
            }

            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(typeof(FriendsListManager).GetMethod("Method_Private_Void_String_0"), new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnUnfriend), BindingFlags.NonPublic | BindingFlags.Static)));

            MethodInfo onSetupFlagsReceivedMethod = typeof(VRCPlayer).GetMethods().First(mi => mi.ReturnType.IsEnum && mi.GetParameters().Length == 1 && mi.GetParameters()[0].ParameterType == typeof(Il2CppSystem.Collections.Hashtable) && XrefUtils.CheckStrings(mi, "Failed to read showSocialRank for {0}"));

            VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(onSetupFlagsReceivedMethod, null, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnSetupFlagsReceive), BindingFlags.NonPublic | BindingFlags.Static)));

            foreach (MethodInfo socialRankChangeMethod in typeof(ProfileWingMenu).GetMethods().Where(method => method.Name.StartsWith("Method_Private_Void_Boolean_")))
            {
                VRChatUtilityKitMod.Instance.HarmonyInstance.Patch(socialRankChangeMethod, null, new HarmonyMethod(typeof(NetworkEvents).GetMethod(nameof(OnShowSocialRankChange), BindingFlags.NonPublic | BindingFlags.Static)));
            }
        }
Esempio n. 6
0
        public void Bind(Host host)
        {
            _host = host;
            _host.AddHandler((short)LobbyMessages.RoomCreated, (m, c) => {
                if (RoomCreated != null)
                {
                    var ds        = DataStorage.CreateForRead(m.Body);
                    var roomToken = new Token();
                    roomToken.ReadFromDs(ds);

                    RoomCreated.Invoke(roomToken);
                }
            });
            _host.AddHandler((short)LobbyMessages.PlayerLeaved, (m, c) => {
                if (OnPlayerLeaved != null)
                {
                    var ds          = DataStorage.CreateForRead(m.Body);
                    var playerToken = new Token();
                    playerToken.ReadFromDs(ds);
                    OnPlayerLeaved.Invoke(playerToken);
                }
            });
            _host.AddHandler((short)LobbyMessages.SuccesfullyLeaved, (m, c) => {
                if (OnLeave != null)
                {
                    OnLeave.Invoke();
                }
            });
            _host.AddHandler((short)LobbyMessages.PlayerJoined, (m, c) => {
                if (OnPlayerJoined != null)
                {
                    var ds          = DataStorage.CreateForRead(m.Body);
                    var playerToken = new Token();
                    playerToken.ReadFromDs(ds);
                    OnPlayerJoined.Invoke(playerToken);
                }
            });
            _host.AddHandler((short)LobbyMessages.SuccesfullyJoined, (m, c) => {
                if (OnJoin != null)
                {
                    OnJoin.Invoke();
                }
            });
            _host.AddHandler((short)LobbyMessages.GameStarted, (m, c) => {
                if (OnGameStarted != null)
                {
                    var ds     = DataStorage.CreateForRead(m.Body);
                    _roomToken = new Token();
                    _roomToken.ReadFromDs(ds);
                    OnGameStarted.Invoke();
                }
            });
            _host.AddHandler((short)LobbyMessages.GetRoomsResponse, (m, c) => {
                if (OnRoomInfoRecieved != null)
                {
                    var roomTokens = new List <Token>();
                    roomTokens.FillDeserialize(m.Body);
                    OnRoomInfoRecieved.Invoke(roomTokens);
                }
            });
        }
Esempio n. 7
0
 internal void PlayerJoined(PlayerJoined packet, NetPeer peer)
 {
     OnPlayerJoined?.Invoke(peer, packet);
 }
Esempio n. 8
0
 public void RegisterPlayer(PlayerInfo playerInfo)
 {
     OnPlayerJoined?.Invoke(playerInfo);
 }