mmorpg2d/Assets/Script/invitePlayer.cs
2025-06-07 23:53:54 +05:30

152 lines
4.3 KiB
C#

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 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);
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
{
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);
HidePanel();
}
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);
}
else
{
inPartyUI.SetActive(true);
inPartyOwnerNameTxt.text = $"{ownerName}'s Party";
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);
}
}