protected override void DrawGUI(int windowId) { if (!IsLoggedIn) { return; // attempt draw nothing if not logged in } if (isFetching) { GUI.Label(new Rect(this.bounds.width / 2f - 256, this.bounds.height / 2f - 32, 512, 64), "Fetching friends...", "StatusNormal"); return; } if (friends == null) { GUI.Label(new Rect(this.bounds.width / 2f - 256, this.bounds.height / 2f - 32, 512, 64), "Error loading friends...", "StatusError"); return; } float heightSoFar = 0; Rect currentRect = new Rect(interColumnSeprators, heightSoFar, playerIDColumnWidth, divideHeight); if (currentSection == Section.Normal) { GUI.Box(new Rect(0, 0, contentBounds.width, divideHeight), new GUIContent(""), "DefaultSeparationBar"); GUI.Label(currentRect, "PLAYERID", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + playerIDColumnWidth; GUI.Label(currentRect, "NAME", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + messageColumnWidth; GUI.Label(currentRect, "LEVEL", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + levelColumnWidth; currentRect.x = interColumnSeprators; currentRect.y += divideHeight; currentRect.height = sectionHeight; ScrollViewContentHeight = Mathf.Max(contentBounds.height, friendsDict.Count * (entryBounds.height + entrySpacing)); foreach (KeyValuePair <string, Roar.DomainObjects.Friend> f in friendsDict) { currentRect.width = playerIDColumnWidth; GUI.Label(currentRect, string.Format(playerIdFormatString, f.Value.player_id), playerIdFormat); currentRect.x += interColumnSeprators + playerIDColumnWidth; currentRect.width = playerNameColumnWidth; GUI.Label(currentRect, string.Format(nameFormatString, f.Value.name), nameFormat); currentRect.x += interColumnSeprators + playerNameColumnWidth; currentRect.width = levelColumnWidth; GUI.Label(currentRect, string.Format(levelFormatString, f.Value.level), levelFormat); currentRect.x += levelColumnWidth + interColumnSeprators; if (GUI.Button(currentRect, "Delete", "DefaultButton")) { networkActionInProgress = true; friends.RemoveFriend(f.Value.player_id, DefaultRoar.Instance.PlayerId(), OnRoarFriendsRemove); } currentRect.x = interColumnSeprators; currentRect.y += sectionHeight; } currentRect.width = contentBounds.width; GUI.Label(currentRect, statusString, "DefaultSmallStatusText"); GUI.Box(new Rect(0, contentBounds.height - footerSpacing, contentBounds.width, footerSpacing), new GUIContent(""), "DefaultFooterStyle"); currentRect.x = interColumnSeprators; currentRect.y = contentBounds.height - footerSpacing / 2 - buttonHeight / 2; currentRect.width = buttonWidth; currentRect.height = buttonHeight; if (GUI.Button(currentRect, "Invite Friend", "DefaultButton")) { statusString = ""; currentSection = Section.SendingInvite; drawSubheading = true; subheaderName = "Invite Friends"; } currentRect.x += buttonWidth + interColumnSeprators; if (GUI.Button(currentRect, "Check Invites", "DefaultButton")) { statusString = ""; currentSection = Section.AcceptInvites; FetchAcceptable(); drawSubheading = true; subheaderName = "Pending Invites"; } } if (currentSection == Section.AcceptInvites) { GUI.Box(new Rect(0, 0, contentBounds.width, divideHeight), new GUIContent(""), "DefaultSeparationBar"); GUI.Label(currentRect, "PLAYERID", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + playerIDColumnWidth; GUI.Label(currentRect, "NAME", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + messageColumnWidth; GUI.Label(currentRect, "LEVEL", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + levelColumnWidth; currentRect.x = interColumnSeprators; currentRect.y += divideHeight; currentRect.height = sectionHeight; ScrollViewContentHeight = Mathf.Max(contentBounds.height, friendsDict.Count * (entryBounds.height + entrySpacing)); if (friendsInviteList != null) { foreach (Roar.DomainObjects.FriendInvite f in friendsInviteList) { currentRect.width = playerIDColumnWidth; GUI.Label(currentRect, f.player_id, playerIdFormat); currentRect.x += interColumnSeprators + playerIDColumnWidth; currentRect.width = playerNameColumnWidth; GUI.Label(currentRect, f.player_name, nameFormat); currentRect.x += interColumnSeprators + playerNameColumnWidth; currentRect.width = messageColumnWidth; GUI.Label(currentRect, f.message, levelFormat); currentRect.x += interColumnSeprators + messageColumnWidth; currentRect.width = buttonWidth; currentRect.height = buttonHeight; if (GUI.Button(currentRect, "Accept", buttonFormat)) { inviteManipulated = f; networkActionInProgress = true; friends.AcceptFriendInvite(f.player_id, f.invite_id, OnRoarFriendsAccept); } currentRect.x += interColumnSeprators + buttonWidth; if (GUI.Button(currentRect, "Decline", buttonFormat)) { inviteManipulated = f; friends.DeclineFriendInvite(f.invite_id, OnRoarFriendsDeclineInvite); } currentRect.y += sectionHeight; } } currentRect.width = contentBounds.width; GUI.Label(currentRect, statusString, "DefaultSmallStatusText"); GUI.Box(new Rect(0, contentBounds.height - footerSpacing, contentBounds.width, footerSpacing), new GUIContent(""), "DefaultFooterStyle"); currentRect.x = interColumnSeprators; currentRect.y = contentBounds.height - footerSpacing / 2 - buttonHeight / 2; currentRect.width = buttonWidth; currentRect.height = buttonHeight; if (GUI.Button(currentRect, "Back", "DefaultButton")) { Fetch(); statusString = ""; currentSection = Section.Normal; drawSubheading = false; subheaderName = "Invite Friends"; } } if (currentSection == Section.SendingInvite) { currentRect.y += verticalSeparators; currentRect.width = contentBounds.width; currentRect.height = divideHeight; currentRect.x = interColumnSeprators; GUI.Label(currentRect, statusString, "DefaultSmallStatusText"); currentRect.y += divideHeight; currentRect.x = interColumnSeprators; currentRect.width = labelWidth; currentRect.height = labelHeight; GUI.Label(currentRect, "To: (PlayerID)"); currentRect.x += labelWidth + interColumnSeprators; currentRect.width = contentBounds.width - currentRect.x - interColumnSeprators - selectButtonWidth; currentRect.height = textBoxHeight; playerIdToSendTo = GUI.TextField(currentRect, playerIdToSendTo, "DefaultTextArea"); currentRect.x += contentBounds.width - currentRect.x - interColumnSeprators - selectButtonWidth; currentRect.width = selectButtonWidth; if (GUI.Button(currentRect, "?", "DefaultButton")) { Debug.Log("going"); System.Action <string> act = (pid) => { playerIdToSendTo = pid; }; GameObject.Find("/PlayerSelectionWidget").SendMessage("setCallbackAndEnable", act); } currentRect.y += labelHeight + verticalSeparators; currentRect.x = interColumnSeprators; currentRect.width = labelWidth; currentRect.height = labelHeight; GUI.Label(currentRect, "Message: ", "DefaultLabel"); currentRect.x += labelWidth + interColumnSeprators; currentRect.width = contentBounds.width - currentRect.x - interColumnSeprators; currentRect.height = messageBoxHeight; messageToSend = GUI.TextArea(currentRect, messageToSend, "DefaultBigMessageBox"); currentRect.y += messageBoxHeight + verticalSeparators; currentRect.x = interColumnSeprators; currentRect.width = buttonWidth; currentRect.height = buttonHeight; if (GUI.Button(currentRect, "Send", "DefaultButton")) { friends.InviteFriend(playerIdToSendTo, DefaultRoar.Instance.PlayerId(), OnRoarFriendsSendInvite); } currentRect.x += buttonWidth + interColumnSeprators; if (GUI.Button(currentRect, "Back", "DefaultButton")) { statusString = ""; drawSubheading = false; currentSection = Section.Normal; } currentRect.x = interColumnSeprators; currentRect.y += buttonHeight + verticalSeparators; } }
protected override void DrawGUI(int windowId) { if (!IsLoggedIn) return; // attempt draw nothing if not logged in if (isFetching) { GUI.Label(new Rect(this.bounds.width/2f - 256,this.bounds.height/2f - 32,512,64), "Fetching friends...", "StatusNormal"); return; } if( friends==null) { GUI.Label(new Rect(this.bounds.width/2f - 256,this.bounds.height/2f - 32,512,64), "Error loading friends...", "StatusError"); return; } float heightSoFar = 0; Rect currentRect = new Rect(interColumnSeprators, heightSoFar, playerIDColumnWidth, divideHeight); if(currentSection == Section.Normal) { GUI.Box(new Rect(0, 0, contentBounds.width, divideHeight), new GUIContent(""), "DefaultSeparationBar"); GUI.Label ( currentRect, "PLAYERID", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + playerIDColumnWidth; GUI.Label ( currentRect, "NAME", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + messageColumnWidth; GUI.Label ( currentRect, "LEVEL", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + levelColumnWidth; currentRect.x = interColumnSeprators; currentRect.y += divideHeight; currentRect.height = sectionHeight; ScrollViewContentHeight = Mathf.Max (contentBounds.height, friendsDict.Count * (entryBounds.height + entrySpacing)); foreach (KeyValuePair<string,Roar.DomainObjects.Friend> f in friendsDict) { currentRect.width = playerIDColumnWidth; GUI.Label(currentRect, string.Format( playerIdFormatString, f.Value.player_id ), playerIdFormat ); currentRect.x += interColumnSeprators + playerIDColumnWidth; currentRect.width = playerNameColumnWidth; GUI.Label(currentRect, string.Format( nameFormatString, f.Value.name ), nameFormat ); currentRect.x += interColumnSeprators + playerNameColumnWidth; currentRect.width = levelColumnWidth; GUI.Label(currentRect, string.Format( levelFormatString, f.Value.level ), levelFormat ); currentRect.x += levelColumnWidth + interColumnSeprators; if(GUI.Button(currentRect, "Delete", "DefaultButton")) { networkActionInProgress = true; friends.RemoveFriend(f.Value.player_id, DefaultRoar.Instance.PlayerId(), OnRoarFriendsRemove); } currentRect.x = interColumnSeprators; currentRect.y += sectionHeight; } currentRect.width = contentBounds.width; GUI.Label(currentRect, statusString, "DefaultSmallStatusText"); GUI.Box(new Rect(0, contentBounds.height - footerSpacing, contentBounds.width, footerSpacing), new GUIContent(""), "DefaultFooterStyle"); currentRect.x = interColumnSeprators; currentRect.y = contentBounds.height - footerSpacing/2 - buttonHeight/2; currentRect.width = buttonWidth; currentRect.height = buttonHeight; if(GUI.Button(currentRect, "Invite Friend", "DefaultButton")) { statusString = ""; currentSection = Section.SendingInvite; drawSubheading = true; subheaderName = "Invite Friends"; } currentRect.x += buttonWidth+interColumnSeprators; if(GUI.Button(currentRect, "Check Invites", "DefaultButton")) { statusString = ""; currentSection = Section.AcceptInvites; FetchAcceptable(); drawSubheading = true; subheaderName = "Pending Invites"; } } if(currentSection == Section.AcceptInvites) { GUI.Box(new Rect(0, 0, contentBounds.width, divideHeight), new GUIContent(""), "DefaultSeparationBar"); GUI.Label ( currentRect, "PLAYERID", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + playerIDColumnWidth; GUI.Label ( currentRect, "NAME", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + messageColumnWidth; GUI.Label ( currentRect, "LEVEL", "DefaultSeparationBarText"); currentRect.x += interColumnSeprators + levelColumnWidth; currentRect.x = interColumnSeprators; currentRect.y += divideHeight; currentRect.height = sectionHeight; ScrollViewContentHeight = Mathf.Max (contentBounds.height, friendsDict.Count * (entryBounds.height + entrySpacing)); if(friendsInviteList != null) foreach (Roar.DomainObjects.FriendInvite f in friendsInviteList) { currentRect.width = playerIDColumnWidth; GUI.Label(currentRect, f.player_id, playerIdFormat ); currentRect.x += interColumnSeprators + playerIDColumnWidth; currentRect.width = playerNameColumnWidth; GUI.Label(currentRect, f.player_name, nameFormat ); currentRect.x += interColumnSeprators + playerNameColumnWidth; currentRect.width = messageColumnWidth; GUI.Label(currentRect, f.message, levelFormat ); currentRect.x += interColumnSeprators+messageColumnWidth; currentRect.width = buttonWidth; currentRect.height = buttonHeight; if(GUI.Button(currentRect, "Accept", buttonFormat)) { inviteManipulated = f; networkActionInProgress = true; friends.AcceptFriendInvite(f.player_id, f.invite_id, OnRoarFriendsAccept ); } currentRect.x += interColumnSeprators + buttonWidth; if(GUI.Button(currentRect, "Decline", buttonFormat)) { inviteManipulated = f; friends.DeclineFriendInvite(f.invite_id, OnRoarFriendsDeclineInvite); } currentRect.y += sectionHeight; } currentRect.width = contentBounds.width; GUI.Label(currentRect, statusString, "DefaultSmallStatusText"); GUI.Box(new Rect(0, contentBounds.height - footerSpacing, contentBounds.width, footerSpacing), new GUIContent(""), "DefaultFooterStyle"); currentRect.x = interColumnSeprators; currentRect.y = contentBounds.height - footerSpacing/2 - buttonHeight/2; currentRect.width = buttonWidth; currentRect.height = buttonHeight; if(GUI.Button(currentRect, "Back", "DefaultButton")) { Fetch(); statusString = ""; currentSection = Section.Normal; drawSubheading = false; subheaderName = "Invite Friends"; } } if(currentSection == Section.SendingInvite) { currentRect.y += verticalSeparators; currentRect.width = contentBounds.width; currentRect.height = divideHeight; currentRect.x = interColumnSeprators; GUI.Label(currentRect, statusString, "DefaultSmallStatusText"); currentRect.y += divideHeight; currentRect.x = interColumnSeprators; currentRect.width = labelWidth; currentRect.height = labelHeight; GUI.Label(currentRect,"To: (PlayerID)"); currentRect.x += labelWidth + interColumnSeprators; currentRect.width = contentBounds.width- currentRect.x - interColumnSeprators - selectButtonWidth; currentRect.height = textBoxHeight; playerIdToSendTo = GUI.TextField(currentRect, playerIdToSendTo, "DefaultTextArea"); currentRect.x += contentBounds.width- currentRect.x - interColumnSeprators - selectButtonWidth; currentRect.width = selectButtonWidth; if(GUI.Button(currentRect, "?", "DefaultButton")) { Debug.Log("going"); System.Action<string> act = (pid) => { playerIdToSendTo = pid; }; GameObject.Find("/PlayerSelectionWidget").SendMessage("setCallbackAndEnable", act); } currentRect.y += labelHeight+verticalSeparators; currentRect.x = interColumnSeprators; currentRect.width = labelWidth; currentRect.height = labelHeight; GUI.Label(currentRect, "Message: ", "DefaultLabel"); currentRect.x += labelWidth + interColumnSeprators; currentRect.width = contentBounds.width -currentRect.x - interColumnSeprators; currentRect.height = messageBoxHeight; messageToSend = GUI.TextArea(currentRect, messageToSend, "DefaultBigMessageBox"); currentRect.y += messageBoxHeight+verticalSeparators; currentRect.x = interColumnSeprators; currentRect.width = buttonWidth; currentRect.height = buttonHeight; if(GUI.Button(currentRect, "Send", "DefaultButton")) { friends.InviteFriend(playerIdToSendTo, DefaultRoar.Instance.PlayerId(), OnRoarFriendsSendInvite); } currentRect.x += buttonWidth + interColumnSeprators; if(GUI.Button(currentRect, "Back", "DefaultButton")) { statusString = ""; drawSubheading = false; currentSection = Section.Normal; } currentRect.x = interColumnSeprators; currentRect.y+= buttonHeight+verticalSeparators; } }