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 subscribes channels.\n\\unsubscribe leaves channels.\n\\msg 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); } }