using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MonobitEngine;
public class ChatScript01 : MonobitEngine.MonoBehaviour
{
/** ルーム名. */
private string roomName = "";
/** チャット発言文. */
private string chatWord = "";
/** チャット発言ログ. */
List<string> chatLog = new List<string>();
/**
* RPC 受信関数.
*/
[MunRPC]
void RecvChat(string senderName, string senderWord)
{
chatLog.Add(senderName + " : " + senderWord);
if (chatLog.Count > 10)
{
chatLog.RemoveAt(0);
}
}
/**
* GUI制御.
*/
void OnGUI()
{
// 自動接続スクリプトのボタンと被らないようにする
GUILayout.Space(24);
// MUNサーバに接続している場合
if (MonobitNetwork.isConnect)
{
// ルームに入室している場合
if (MonobitNetwork.inRoom)
{
// ルーム内のプレイヤー一覧の表示
GUILayout.BeginHorizontal();
GUILayout.Label("PlayerList : ");
foreach (MonobitPlayer player in MonobitNetwork.playerList)
{
GUILayout.Label(player.name + " ");
}
GUILayout.EndHorizontal();
// チャット発言文の入力
GUILayout.BeginHorizontal();
GUILayout.Label("Message : ");
chatWord = GUILayout.TextField(chatWord, GUILayout.Width(400));
GUILayout.EndHorizontal();
// チャット発言文を送信する
if (GUILayout.Button("Send", GUILayout.Width(100)))
{
monobitView.RPC("RecvChat",
MonobitTargets.All,
MonobitNetwork.playerName,
chatWord);
chatWord = "";
}
// チャットログを表示する
string msg = "";
for (int i = 0; i < 10; ++i)
{
msg += ((i < chatLog.Count) ? chatLog[i] : "") + "\r\n";
}
GUILayout.TextArea(msg);
}
}
// MUNサーバに接続していない場合
else
{
// プレイヤー名の入力
GUILayout.BeginHorizontal();
GUILayout.Label("PlayerName : ");
MonobitNetwork.playerName = GUILayout.TextField(
(MonobitNetwork.playerName == null) ?
"" :
MonobitNetwork.playerName, GUILayout.Width(200));
GUILayout.EndHorizontal();
}
}
}