var skin : GUISkin;
var showChat = false;private var inputField = "";private var display = true;private var entries = ArrayList();private var scrollPosition : Vector2;var userName : String ;var chatobject : Transform;private var window = Rect(50, 100, 200, 300);class ChatEntry{ var sender = ""; var text = ""; var mine = true;}function Update () { var go = GameObject.Find("Network"); userName = go.GetComponent("NetworkConnection").playerName;}function CloseChatWindow (){ showChat = false; inputField = ""; entries = new ArrayList();}function FocusControl (){ // We can't select it immediately because the control might not have been drawn yet. // Thus it is not known to the system! yield; yield; yield; GUI.FocusControl("Chat input field");}function OnGUI (){ GUI.skin = skin; //if (GUILayout.Button(showChat ? "Hide Chat" : "Display Chat")) if (GUI.Button(new Rect(Screen.width-100, Screen.height-30, 90, 20), showChat ? "Hide Chat" : "Display Chat")) { // Focus first element if (showChat) { CloseChatWindow (); } else { showChat = true; FocusControl(); } } if (showChat) window = GUI.Window (1, window, GlobalChatWindow, "Chat");}function GlobalChatWindow (id : int) { var closeButtonStyle = GUI.skin.GetStyle("close_button"); if (GUI.Button(Rect (4, 4, closeButtonStyle.normal.background.width, closeButtonStyle.normal.background.height), "", "close_button")) { CloseChatWindow(); } // Begin a scroll view. All rects are calculated automatically - // it will use up any available screen space and make sure contents flow correctly. // This is kept small with the last two parameters to force scrollbars to appear. scrollPosition = GUILayout.BeginScrollView (scrollPosition); for (var entry : ChatEntry in entries) { GUILayout.BeginHorizontal(); if (!entry.mine) { GUILayout.FlexibleSpace (); GUILayout.Label (entry.text, "chat_rightaligned"); } else { GUILayout.Label (entry.text, "chat_leftaligned"); GUILayout.FlexibleSpace (); } GUILayout.EndHorizontal(); GUILayout.Space(3); } // End the scrollview we began above. GUILayout.EndScrollView (); if (Event.current.type == EventType.keyDown && Event.current.character == "\n" && inputField.Length > 0) { //@TODO: This should be dependent on who actually sent the message //var mine = entries.Count % 2 == 0; ApplyGlobalChatText(userName+": "+""+inputField , 1); networkView.RPC("ApplyGlobalChatText", RPCMode.Others, userName+": " + inputField , 0); inputField = ""; } GUI.SetNextControlName("Chat input field"); inputField = GUILayout.TextField(inputField); GUI.DragWindow();}@RPCfunction ApplyGlobalChatText (str : String, mine : int){ var entry = new ChatEntry(); entry.sender = "Not implemented"; entry.text = str; if (mine == 1) entry.mine = true; else entry.mine = false; entries.Add(entry); if (entries.Count > 50) entries.RemoveAt(0); scrollPosition.y = 1000000; }