123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using DG.Tweening;
- using Mirror;
- using TMPro;
- public class invitePlayer : NetworkBehaviour
- {
- [Header("UI References")]
- [SerializeField] private GameObject inviteUI, beingInviteUI;
- [SerializeField] private GameObject inPartyUI;
- [SerializeField] private TMP_Text inPartyOwnerNameTxt;
- [SerializeField] private TextMesh charPartyText;
- [SerializeField] private GameObject charPartyUI;
- [SerializeField] private TMP_Text inPartyPlayersTxt;
- [SerializeField] private TMP_Text inviteOwnerNameTxt;
- [SerializeField] private CanvasGroup uiCanvasGroup, bUiCanvasGroup;
- [SerializeField] private RectTransform uiRectTransform, panelRect;
- [Header("Animation Settings")]
- [SerializeField] private float appearDuration = 0.3f;
- [SerializeField] private float disappearDuration = 0.2f;
- [SerializeField] private Ease appearEase = Ease.OutBack;
- [SerializeField] private Ease disappearEase = Ease.InBack;
- [SerializeField] private Vector2 offScreenPosition = new Vector2(1200, -140);
- [SerializeField] private Vector2 onScreenPosition = new Vector2(1300, -140);
- private void Start()
- {
- uiRectTransform.localScale = Vector3.zero;
- uiCanvasGroup.alpha = 0;
- inviteUI.SetActive(false);
- inPartyUI.SetActive(false);
- // charPartyUI.SetActive(false);
- charPartyText.text = "";
- beingInviteUI.SetActive(false);
- onScreenPosition = panelRect.anchoredPosition;
- offScreenPosition = new Vector2(
- +Screen.width, // Use screen width for consistent off-screen positioning
- onScreenPosition.y
- );
-
- panelRect.anchoredPosition = offScreenPosition;
- }
- void Update()
- {
- if (Input.GetKeyDown(KeyCode.L))
- {
- ShowInvite("keyBoard");
- }
- }
- private void OnMouseDown() //clicking on collider
- //ToDo exclude owner
- {
- Debug.Log("OnMouseDown on invitePlayer " + GetComponent<playerNetwork>().playerName);
- ShowInviteUI();
- }
- public void ShowInviteUI()
- {
- inviteUI.SetActive(true);
- uiCanvasGroup.alpha = 0;
- uiRectTransform.localScale = Vector3.zero;
- Sequence showSequence = DOTween.Sequence();
- showSequence.Append(uiRectTransform.DOScale(1, appearDuration).SetEase(appearEase))
- .Join(uiCanvasGroup.DOFade(1, appearDuration))
- .SetUpdate(true);
- Camera.main.DOShakePosition(0.2f, 0.1f, 1, 90f, false);
-
- }
- public void CloseInviteUI()
- {
-
- Sequence hideSequence = DOTween.Sequence();
- hideSequence.Append(uiRectTransform.DOScale(0, disappearDuration).SetEase(disappearEase))
- .Join(uiCanvasGroup.DOFade(0, disappearDuration))
- .OnComplete(() => inviteUI.SetActive(false));
- }
- public void InvitePlayer()
- {
- string thisPlayerName = GetComponent<playerNetwork>().playerName;
- playerNetwork.localPlayer.CmdInvitePlayer(thisPlayerName);
- CloseInviteUI();
- }
- public string InviteOwner = "";
- public void ShowInvite(string ownerName)
- {
- InviteOwner = ownerName;
- inviteOwnerNameTxt.text = "You are being invited to a Party by " + ownerName;
- Debug.Log("ShowPanel called");
- beingInviteUI.SetActive(true);
- panelRect.DOAnchorPos(onScreenPosition, 0.5f)
- .SetEase(Ease.OutBack);
- }
- public void AcceptInvite()
- {
- playerNetwork.localPlayer.CmdAcceptInvite(InviteOwner);
- HidePanel();
- }
- public void DeclineInvite()
- {
- HidePanel();
- }
- public void HidePanel()
- {
- panelRect.DOAnchorPos(offScreenPosition, 0.5f)
- .SetEase(Ease.OutBack)
- .OnComplete(() => beingInviteUI.SetActive(false));
- }
- public void InParty(string ownerName)
- {
- if (ownerName.Length == 0)
- {
- inPartyUI.SetActive(false);
- charPartyText.text = "";
- charPartyUI.SetActive(false);
- }
- else
- {
- inPartyUI.SetActive(true);
- inPartyOwnerNameTxt.text = $"{ownerName}'s Party";
- charPartyText.text = $"in {ownerName}'s party";
- charPartyUI.SetActive(true);
- playerNetwork[] players = FindObjectsOfType<playerNetwork>();
- List<string> playerNames = new List<string>();
- foreach (playerNetwork player in players)
- {
- if (player.myPartyOwner == ownerName)
- {
- playerNames.Add(player.playerName);
- }
- }
- inPartyPlayersTxt.text = string.Join(", ", playerNames);
- }
- }
- public void LeaveParty(){
- playerNetwork.localPlayer.CmdLeaveParty();
- inPartyUI.SetActive(false);
- // charPartyUI.SetActive(false);
- // charPartyText.text = "";
- }
- }
|