网上演练贵港万达广场(人员密集)
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

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;
}
}