Files
JJBB/Assets/Project/Script/GUI/Other/HornInputPanelCtr.cs
2024-08-23 15:49:34 +08:00

230 lines
6.2 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using GCGame;
using GCGame.Table;
public class HornInputPanelCtr : MonoBehaviour {
public Image _TiltleImage;
public List<Sprite> _SpriteList;
public static HornInputPanelCtr Instance;
private void Awake()
{
Instance = this;
_InputText.onValueChanged.AddListener(OnInputChange);
}
private void OnDestroy()
{
Instance = null;
}
//public Text remainWordText; //剩余字数
public InputField _InputText;
public Button emojBtn;
//public GameObject motionPanel;
private List<ChatLinkBase> _ChatLinks = new List<ChatLinkBase>();
public void CloseWindow()
{
UIManager.CloseUI(UIInfo.HornEmojiRoot);
UIManager.CloseUI(UIInfo.HornInputPanel);
}
private int _SubClassType = -1;
public void RecordHornType(int subClassType)
{
_SubClassType = subClassType;
var spIndex = 0;
switch(_SubClassType)
{
case (int)Games.Item.PrizeSubClass.SPEAKER:
spIndex = 0;
break;
case (int)Games.Item.PrizeSubClass.AllSERVERHORN:
spIndex = 1;
break;
case (int)Games.Item.PrizeSubClass.CROSSSERVERHORN:
spIndex = 2;
break;
}
_TiltleImage.overrideSprite = _SpriteList[spIndex];
_TiltleImage.SetNativeSize();
}
public void OnEmojiClick(int emojiID)
{
var chatLink = ChatLinkBase.CreateChatLink(emojiID);
if (_InputText.text.Length + chatLink.StrInput.Length > _InputText.characterLimit)
{
return;
}
else
{
_ChatLinks.Add(chatLink);
chatLink.StartPosInText = _InputText.text.Length;
_InputText.text += chatLink.StrInput;
chatLink.EndPosInText = _InputText.text.Length;
}
}
public void OnInputChange(string newInput)
{
if (newInput.Length == 0)
{
_ChatLinks.Clear();
}
}
private bool hasOpenEmojiUI = false;
public void OnEmojBtnClick()
{
if (!hasOpenEmojiUI)
{
HornEmojiLogic.ShowChatEmoji(_InputText, _ChatLinks);
}else
{
UIManager.CloseUI(UIInfo.HornEmojiRoot);
}
hasOpenEmojiUI = !hasOpenEmojiUI;
}
public void OnSubmitBtnClick()
{
PopHornInfo();
}
public void PopHornInfo()
{
//判断输入的名字
if (string.IsNullOrEmpty(_InputText.text))
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{46207}"));
return;
}
string strCurName = "";
// 过滤掉 0 非法字符
foreach (char curChar in _InputText.text)
{
if ((int)curChar != 0)
{
strCurName += curChar;
}
}
if (string.IsNullOrEmpty(strCurName))
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{46207}"));
return;
}
int curCharNum = 0; // 英文算一个,中文算两个
foreach (char curChar in strCurName)
{
if ((int)curChar >= 128)
{
curCharNum += 2;
}
else if ((int)curChar >= 65 && (int)curChar <= 90)
{
curCharNum += 2;
}
else
{
curCharNum++;
}
// curCharNum += 2;
if (char.IsWhiteSpace(curChar))
{
MessageBoxLogic.OpenOKBox(46227, 1000);
return;
}
}
if (_InputText.text.Contains("*"))
{
MessageBoxLogic.OpenOKBox(1278, 1000);
return;
}
if (_InputText.text.Contains("*"))
{
MessageBoxLogic.OpenOKBox(1278, 1000);
return;
}
if (null == Utils.GetStrFilter(strCurName, (int)Games.GlobeDefine.GameDefine_Globe.STRFILTER_TYPE.STRFILTER_CHAT))
{
//Utils.SendLoudSpeaker(ModifyText(_InputText.text), 1); //发送协议
CG_CHAT packet = (CG_CHAT)PacketDistributed.CreatePacket(MessageID.PACKET_CG_CHAT);
switch(_SubClassType)
{
case (int)Games.Item.PrizeSubClass.SPEAKER:
packet.Chattype = (int)CG_CHAT.CHATTYPE.CHAT_TYPE_LOUDSPEAKER;
break;
case (int)Games.Item.PrizeSubClass.AllSERVERHORN:
packet.Chattype = (int)CG_CHAT.CHATTYPE.CHAT_TYPE_ALLSERSPEAKER;
break;
case (int)Games.Item.PrizeSubClass.CROSSSERVERHORN:
packet.Chattype = (int)CG_CHAT.CHATTYPE.CHAT_TYPE_CROSSSERSPEAKER;
break;
}
packet.Chatinfo = ModifyText(_InputText.text);
packet.LoudSpeakerNum = 1;
packet.SendPacket();
CloseWindow();
}
else
{
// 包含非法字符
MessageBoxLogic.OpenOKBox(1278, 1000);
}
}
string ModifyText(string inputText)
{
string newInputText = inputText;
int replaceIdx = 0;
for (int i = 0; i < _ChatLinks.Count; ++i)
{
if (replaceIdx < 0 || replaceIdx >= newInputText.Length)
{
continue;
}
replaceIdx = newInputText.IndexOf(_ChatLinks[i].StrInput, replaceIdx);
if (replaceIdx < 0 || replaceIdx >= newInputText.Length)
{
continue;
}
newInputText = newInputText.Remove(replaceIdx, _ChatLinks[i].StrInput.Length);
newInputText = newInputText.Insert(replaceIdx, _ChatLinks[i].StrSend);
//newInputText = newInputText.Replace(_ChatLinks[i].StrInput, _ChatLinks[i].StrSend);
}
//newInputText += inputText.Substring(newInputEnd, inputText.Length - newInputEnd);
return Utils.StrFilter_Chat(newInputText); ;
}
private void OnDisable()
{
_InputText.text = "";
hasOpenEmojiUI = false;
_ChatLinks.Clear();
}
}