123 lines
4.2 KiB
C#
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);
|
|
}
|
|
}
|