You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
7.2 KiB
230 lines
7.2 KiB
|
|
using AX.MessageSystem; |
|
using SuperScrollView; |
|
using System; |
|
using System.Collections; |
|
using System.Collections.Generic; |
|
using System.IO; |
|
using UnityEngine; |
|
using UnityEngine.UI; |
|
|
|
public class SuggestPanel : UIView |
|
{ |
|
public GameObject InputFiledObject; |
|
public LoopListView2 SuggestListView; |
|
public Button CloseButton; |
|
public Button TextButton; |
|
public GameObject AudioButton; |
|
public InputField InputField; |
|
private ClickEventListener listener; |
|
//录音机 |
|
private AudioRecorder recorder; |
|
private string fileName; |
|
private TimeSpan time; |
|
private DateTime startTime; |
|
|
|
public override UIViewType ViewType |
|
{ |
|
get |
|
{ |
|
return UIViewType.Normal; |
|
} |
|
} |
|
|
|
private void Awake() |
|
{ |
|
TextButton.onClick.AddListener(TextButtonClick); |
|
recorder = gameObject.AddComponent<AudioRecorder>(); |
|
recorder.Stopped += OnRecorderStopped; |
|
CloseButton.onClick.AddListener(Hide); |
|
listener = ClickEventListener.Get(AudioButton); |
|
listener.SetPointerDownHandler(AudioButtonClickDown); |
|
listener.SetPointerUpHandler(AudioButtonClickUp); |
|
//作战建议初始化 |
|
SuggestListView.InitListView(ChatManager.Instance.SuggestChatMsg.Count, OnGetSuggestItemByIndex); |
|
} |
|
/// <summary> |
|
/// 语音按钮弹起 |
|
/// </summary> |
|
/// <param name="obj"></param> |
|
private void AudioButtonClickUp(GameObject obj) |
|
{ |
|
recorder.StopRecorder(); |
|
} |
|
/// <summary> |
|
/// 语音按钮按下 |
|
/// </summary> |
|
/// <param name="obj"></param> |
|
private void AudioButtonClickDown(GameObject obj) |
|
{ |
|
|
|
if (recorder.Ready) |
|
{ |
|
startTime = DateTime.Now; |
|
recorder.StartRecorder(); |
|
} |
|
else |
|
{ |
|
LoadPromptWin.Instance.LoadTextPromptWindow("没有可用设备", 1f); |
|
} |
|
} |
|
/// <summary> |
|
/// 保存音频事件 |
|
/// </summary> |
|
/// <param name="segment"></param> |
|
private void OnRecorderStopped(ArraySegment<byte> segment) |
|
{ |
|
fileName = string.Format("{0}.opus", Guid.NewGuid().ToString("N")); |
|
string userPath = ChatManager.Instance.UserPath; |
|
if (!Directory.Exists(userPath)) |
|
{ |
|
Directory.CreateDirectory(userPath); |
|
} |
|
string filePath = Path.Combine(userPath, fileName); |
|
using (var filestream = new FileStream(filePath, FileMode.CreateNew)) |
|
{ |
|
filestream.Write(segment.Array, segment.Offset, segment.Count); |
|
} |
|
time = DateTime.Now - startTime; |
|
ChatManager.Instance.SendSuggestAudioMessage(fileName, time); |
|
// 输入框获得焦点 |
|
InputField.ActivateInputField(); |
|
} |
|
|
|
//添加本地语音 |
|
public void AddLocalAudioData() |
|
{ |
|
ChatAudioMessage msg = new ChatAudioMessage() |
|
{ |
|
BattleId = 0, |
|
Channel = new ChatChannel(), |
|
ChatGroup = ChatType.SuggestChat, |
|
CreateTime = DateTime.Now, |
|
FileName = fileName, |
|
ID = 0, |
|
ReceiverId = ChatManager.Instance.FindSuggestReceiverId(), |
|
SenderId = CurrentUserInfo.mySelf.Id, |
|
ReplayFrameCount = InputManager.frameCount |
|
}; |
|
ChatManager.Instance.AddSuggestMsg(msg); |
|
//刷新UI |
|
RefreshSuggestMsg(); |
|
} |
|
private void TextButtonClick() |
|
{ |
|
string str = InputField.text; |
|
InputField.text = null; |
|
if (!string.IsNullOrEmpty(str)) |
|
{ |
|
ChatManager.Instance.SendSuggestTextMessage(str); |
|
} |
|
// 输入框获得焦点 |
|
InputField.ActivateInputField(); |
|
|
|
} |
|
//添加本地信息 |
|
public void AddLocalTextData(string str) |
|
{ |
|
ChatTextMessage msg = new ChatTextMessage() |
|
{ |
|
BattleId = 0, |
|
Channel = new ChatChannel(), |
|
ChatGroup = ChatType.SuggestChat, |
|
CreateTime = DateTime.Now, |
|
Data = str, |
|
ID = 0, |
|
ReceiverId = ChatManager.Instance.FindSuggestReceiverId(), |
|
SenderId = CurrentUserInfo.mySelf.Id, |
|
ReplayFrameCount = InputManager.frameCount |
|
}; |
|
ChatManager.Instance.AddSuggestMsg(msg); |
|
//刷新UI |
|
RefreshSuggestMsg(); |
|
} |
|
public void RefreshSuggestMsg() |
|
{ |
|
SuggestListView.SetListItemCount(ChatManager.Instance.GetSuggestMsgCount(), false); |
|
SuggestListView.MovePanelToItemIndex(ChatManager.Instance.GetSuggestMsgCount(), 0); |
|
} |
|
public void ShowInput() |
|
{ |
|
base.Show(); |
|
//TODO 显示参谋界面 |
|
InputFiledObject.SetActive(true); |
|
SuggestListView.GetComponent<RectTransform>().sizeDelta = new Vector2(406f, 315f); |
|
SuggestListView.ResetListView(); |
|
} |
|
public void ShowNoInput() |
|
{ |
|
base.Show(); |
|
//TODO 显示指挥界面 |
|
InputFiledObject.SetActive(false); |
|
SuggestListView.GetComponent<RectTransform>().sizeDelta = new Vector2(406f, 365f); |
|
SuggestListView.ResetListView(); |
|
} |
|
// |
|
private void OnEnable() |
|
{ |
|
//Show(); |
|
MessageDispatcher.AddListener(MessageName.RefreshSuggestChatMsgs.ToString(), RefreshSuggestChatMsgs); |
|
//MessageDispatcher.AddListener(MessageName.ShowSuggestPanel.ToString(), ShowSuggestPanel); |
|
} |
|
private void OnDisable() |
|
{ |
|
MessageDispatcher.RemoveListener(MessageName.RefreshSuggestChatMsgs.ToString(), RefreshSuggestChatMsgs); |
|
//MessageDispatcher.AddListener(MessageName.ShowSuggestPanel.ToString(), ShowSuggestPanel); |
|
} |
|
/// <summary> |
|
/// 显示面板 |
|
/// </summary> |
|
/// <param name="obj"></param> |
|
//private void ShowSuggestPanel(IMessage obj) |
|
//{ |
|
// bool b = (bool)obj.Data; |
|
// gameObject.SetActive(b); |
|
//} |
|
private void RefreshSuggestChatMsgs(IMessage obj) |
|
{ |
|
RefreshSuggestMsg(); |
|
} |
|
public override void Refresh() |
|
{ |
|
base.Refresh(); |
|
SuggestListView.SetListItemCount(ChatManager.Instance.GetSuggestMsgCount(), false); |
|
} |
|
/// <summary> |
|
/// 获取 |
|
/// </summary> |
|
/// <param name="listView"></param> |
|
/// <param name="index"></param> |
|
/// <returns></returns> |
|
private LoopListViewItem2 OnGetSuggestItemByIndex(LoopListView2 listView, int index) |
|
{ |
|
//获取要填充的数据 |
|
ChatMessage itemData = ChatManager.Instance.GetSuggestMsgByIndex(index); |
|
LoopListViewItem2 item = null; |
|
if (itemData is ChatTextMessage) |
|
{ |
|
item = listView.NewListViewItem("SuggestTextItem"); |
|
SuggestTextItem itemScript = item.GetComponent<SuggestTextItem>(); |
|
if (item.IsInitHandlerCalled == false) |
|
{ |
|
item.IsInitHandlerCalled = true; |
|
itemScript.Init(); |
|
} |
|
itemScript.SetData(itemData as ChatTextMessage, index); |
|
} |
|
else if (itemData is ChatAudioMessage) |
|
{ |
|
item = listView.NewListViewItem("ChatAudioItem"); |
|
ChatAudioItem itemScript = item.GetComponent<ChatAudioItem>(); |
|
if (item.IsInitHandlerCalled == false) |
|
{ |
|
item.IsInitHandlerCalled = true; |
|
itemScript.Init(); |
|
} |
|
itemScript.SetData(itemData as ChatAudioMessage, index); |
|
} |
|
return item; |
|
} |
|
}
|
|
|