Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/MultiplayerChat.cs
2026-02-21 16:45:37 +08:00

123 lines
4.2 KiB
C#

using UnityEngine;
public class MultiplayerChat : MonoBehaviour
{
private string inputLine = string.Empty;
private string userIdInput = string.Empty;
private Vector2 scrollPos = Vector2.zero;
private static string WelcomeText = "Welcome to chat.\\help lists commands.";
private static string HelpText = "\n\\subscribe <list of channelnames> subscribes channels.\n\\unsubscribe <list of channelnames> leaves channels.\n\\msg <username> <message> send private message to user.\n\\clear clears the current chat tab. private chats get closed.\n\\help gets this help message.";
public string lastFishName = string.Empty;
public float lastFishWeight;
[HideInInspector]
public MultiplayerManager multiplayerManager;
public void Initialize()
{
multiplayerManager = MultiplayerManager.Instance;
}
public void SendText(string message)
{
message = message.Replace('<', ' ');
multiplayerManager.photonView.RPC("ReceiveOthersText", PhotonTargets.Others, message);
ReceiveMyText(message);
}
public void ReceiveText(string playerName, string message, HUDMultiplayer.MessageType messageType)
{
string text = string.Format("{0}: {1}", playerName, message);
multiplayerManager.hudMultiplayer.ReceiveChatMessage(text, messageType);
}
[PunRPC]
public void ReceiveOthersTextByte(byte[] message, PhotonMessageInfo info)
{
if (!GlobalSettings.Instance || !GlobalSettings.Instance.CheckCrackPhotonPlayer(info.sender))
{
ReceiveText(info.sender.name, Utilities.DecompressText(message), HUDMultiplayer.MessageType.OTHERS_TEXT);
}
}
[PunRPC]
public void ReceiveOthersText(string message, PhotonMessageInfo info)
{
if ((!GlobalSettings.Instance || !GlobalSettings.Instance.CheckCrackPhotonPlayer(info.sender)) && !multiplayerManager.mutedPlayers.Contains(info.sender.name))
{
ReceiveText(info.sender.name, message, HUDMultiplayer.MessageType.OTHERS_TEXT);
}
}
public void ReceiveMyText(string message)
{
ReceiveText(PhotonNetwork.playerName, message, HUDMultiplayer.MessageType.MY_TEXT);
}
public void SendFish(Fish fish)
{
if (!(fish == null))
{
if (multiplayerManager == null || multiplayerManager.photonView == null)
{
Debug.LogError("multiplayerManager == null || multiplayerManager.photonView == null");
return;
}
multiplayerManager.photonView.RPC("ReceiveOthersFish", PhotonTargets.Others, fish.fishName, fish.Weight);
ReceiveMyFish(fish.fishName, fish.Weight);
}
}
public void SendFish(string fishName, float fishWeight)
{
multiplayerManager.photonView.RPC("ReceiveOthersFish", PhotonTargets.Others, fishName, fishWeight);
ReceiveMyFish(fishName, fishWeight);
}
public void ReceiveFish(string playerName, string fishName, float fishWeight, HUDMultiplayer.MessageType messageType)
{
string text = playerName + " " + Utilities.GetTranslation("MULTIPLAYER/CAUGHT") + ": " + Utilities.GetTranslation(fishName) + " " + Utilities.GetTranslation("MULTIPLAYER/WEIGHT") + ": " + UtilitiesUnits.GetWeightString(fishWeight);
multiplayerManager.hudMultiplayer.ReceiveChatMessage(text, messageType);
Debug.Log(text);
}
[PunRPC]
public void ReceiveOthersFish(string fishName, float fishWeight, PhotonMessageInfo info)
{
if ((!GlobalSettings.Instance || !GlobalSettings.Instance.CheckCrackPhotonPlayer(info.sender)) && !multiplayerManager.mutedPlayers.Contains(info.sender.name))
{
if (fishWeight != lastFishWeight || fishName != lastFishName)
{
ReceiveFish(info.sender.name, fishName, fishWeight, HUDMultiplayer.MessageType.OTHERS_FISH);
}
lastFishName = fishName;
lastFishWeight = fishWeight;
if (multiplayerManager.gameController.isTournament)
{
TournamentManager.TournamentFish tournamentFish = new TournamentManager.TournamentFish();
tournamentFish.weight = fishWeight;
}
}
}
public void ReceiveMyFish(string fishName, float fishWeight)
{
ReceiveFish(PhotonNetwork.playerName, fishName, fishWeight, HUDMultiplayer.MessageType.MY_FISH);
}
public void ShowSystemMessage(string message)
{
if ((bool)multiplayerManager && (bool)multiplayerManager.hudMultiplayer)
{
multiplayerManager.hudMultiplayer.ReceiveChatMessage(message, HUDMultiplayer.MessageType.SYSTEM_MESSAGE);
}
Debug.Log(message);
}
}