Esempio n. 1
0
    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;
        }
    }