Example #1
0
 public void CheckAssignmentAvailability()
 {
     if (!handlerAssigned && Guardian != null && masterHandler != null && CheckPlayerForHandler(Guardian))
     {
         THH_ChatHandler handler = GetHandler();
         Debug.Log($"<color=green>[THH_ChatHandler]</color>: Taking ownership of handler '{handler.name}'...");
         Networking.SetOwner(Networking.LocalPlayer, handler.gameObject);
     }
 }
Example #2
0
    public void GWS_OnPlayerLeft(VRCPlayerApi player)
    {
        lastLeaver = player;
        if (Networking.IsMaster && !isMaster)
        {
            Debug.Log("<color=green>[THH_GWS]</color>: Last master left, you are now master.");
            isMaster = true;
            isHead   = true;

            // NOT GWS:
            Guardian      = null;
            masterHandler = null;

            if (assignedHandler == null)
            {
                assignedHandler = GetHandler();
                masterHandler   = assignedHandler;
                RequestMasterHandler();
            }
            else
            {
                masterHandler = assignedHandler;
                RequestMasterHandler();
            }
        }
        else if (player == Guardian)
        {
            Debug.Log($"<color=green>[THH_GWS]</color>: Your guardian, {player.displayName}({player.playerId}), has left, trying to find a new one...");
            Guardian = FindGuardian();
            if (Guardian == null)
            {
                Debug.LogError("<color=green>[THH_GWS]</color>: Tried to find a guardian, but failed. Something went wrong...");
            }
            else
            {
                OnGuardianAssigned();
            }
        }
        else if (player == Ward)
        {
            Debug.Log($"<color=green>[THH_GWS]</color>: Your ward, {player.displayName}({player.playerId}), has left, trying to find a new one...");
            Ward = FindWard();
            if (Ward == null)
            {
                Debug.Log($"<color=green>[THH_GWS]</color>: Could not find a ward.");
                isTail = true;
            }
            else
            {
                OnWardAssigned();
            }
        }
    }
Example #3
0
 public void ChatRequest(THH_ChatHandler handler)
 {
     if (!transferringOwnership)
     {
         VRCPlayerApi requester = Networking.GetOwner(handler.gameObject);
         transferringOwnership = true;
         Networking.SetOwner(requester, gameObject);
         Debug.Log($"<color=green>[THH_ChatMessenger]</color>: Ownership request of '{requester.displayName}' has been accepted. Transferring ownership.");
     }
     else
     {
         handler.SendCustomNetworkEvent(VRC.Udon.Common.Interfaces.NetworkEventTarget.Owner, nameof(THH_ChatHandler.RequestDenied));
     }
 }
Example #4
0
    public void Start()
    {
        GWS_Start();
        handlers = GetComponentsInChildren <THH_ChatHandler>();

        if (Networking.IsMaster)
        {
            handlerAssigned = true;
            assignedHandler = handlers[0];
            masterHandler   = assignedHandler;
        }
        else
        {
            SendCustomNetworkEvent(VRC.Udon.Common.Interfaces.NetworkEventTarget.Owner, nameof(RequestMasterHandler));
            Debug.Log("<color=green>[THH_ChatManager]</color>: Requesting master handler...");
        }
    }