示例#1
0
        /// <summary>
        /// Formats facebook data into an avatar XML node
        /// </summary>
        private void AddFacebookData(XmlNode avatarNode, FacebookFriendInfo facebookFriend)
        {
            if (facebookFriend == null)
            {
                mLogger.Warn("Attempted to access facebook data for an unknown facebook friend. Defaulting to the 'unknown avatar' info.");
                facebookFriend = new FacebookFriendInfo(new AccountId(0u), 0L, "Unfriended", "", "");
            }
            if (avatarNode == null)
            {
                throw new ArgumentNullException("avatarNode");
            }

            XmlAttribute firstNameAttrib = avatarNode.OwnerDocument.CreateAttribute("FirstName");

            firstNameAttrib.InnerText = facebookFriend.FirstName;
            avatarNode.Attributes.Append(firstNameAttrib);

            XmlAttribute lastNameAttrib = avatarNode.OwnerDocument.CreateAttribute("LastName");

            lastNameAttrib.InnerText = facebookFriend.LastName;
            avatarNode.Attributes.Append(lastNameAttrib);

            XmlAttribute fbidNameAttrib = avatarNode.OwnerDocument.CreateAttribute("FBID");

            fbidNameAttrib.InnerText = facebookFriend.FbAccountId.ToString();
            avatarNode.Attributes.Append(fbidNameAttrib);

            XmlAttribute imageNameAttrib = avatarNode.OwnerDocument.CreateAttribute("ImageUrl");

            imageNameAttrib.InnerText = facebookFriend.ImageUrl;
            avatarNode.Attributes.Append(imageNameAttrib);
        }
示例#2
0
        private XmlNode FacebookFriendToXml(XmlNode parentNode, FacebookFriendInfo facebookFriend)
        {
            XmlNode result = parentNode.OwnerDocument.CreateElement("FacebookFriend");

            XmlAttribute firstNameAttrib = result.OwnerDocument.CreateAttribute("FirstName");

            firstNameAttrib.InnerText = facebookFriend.FirstName;
            result.Attributes.Append(firstNameAttrib);

            XmlAttribute lastNameAttrib = result.OwnerDocument.CreateAttribute("LastName");

            lastNameAttrib.InnerText = facebookFriend.LastName;
            result.Attributes.Append(lastNameAttrib);

            XmlAttribute fbidAttrib = parentNode.OwnerDocument.CreateAttribute("FBID");

            fbidAttrib.InnerText = facebookFriend.FbAccountId.ToString();
            result.Attributes.Append(fbidAttrib);

            XmlAttribute imageNameAttrib = result.OwnerDocument.CreateAttribute("ImageUrl");

            imageNameAttrib.InnerText = facebookFriend.ImageUrl;
            result.Attributes.Append(imageNameAttrib);

            parentNode.AppendChild(result);
            return(result);
        }
示例#3
0
        private void GetHiredNpcs(Message message, FashionLevel level, Hangout.Shared.Action onComplete)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            // Expecting the XML for a single avatar in each item in message.Data
            Dictionary <Jobs, List <XmlNode> > avatarsPerJob = new Dictionary <Jobs, List <XmlNode> >();

            foreach (XmlDocument doc in MessageUtil.GetXmlDocumentsFromMessage(message))
            {
                XmlNode avatarNode = doc.SelectSingleNode("//Avatar");

                if (avatarNode == null)
                {
                    throw new Exception("Unable to find avatar node in messageData: " + doc.OuterXml);
                }

                XmlNode jobNode = avatarNode.SelectSingleNode("@job");
                if (jobNode == null)
                {
                    throw new Exception("Unable to find job attribute on XmlNode: " + avatarNode.OuterXml);
                }

                Jobs           job = (Jobs)Enum.Parse(typeof(Jobs), jobNode.InnerText);
                List <XmlNode> avatarsList;
                if (!avatarsPerJob.TryGetValue(job, out avatarsList))
                {
                    avatarsList = new List <XmlNode>();
                    avatarsPerJob.Add(job, avatarsList);
                }
                avatarsList.Add(avatarNode);
                AccountId accountId;
                if (avatarNode.Attributes["AccountId"].InnerText != "")
                {
                    accountId = new AccountId(XmlUtility.GetUintAttribute(avatarNode, "AccountId"));
                }
                else
                {
                    accountId = new AccountId(0u);
                }

                long   fbAccountId = XmlUtility.GetLongAttribute(avatarNode, "FBID");
                string firstName   = XmlUtility.GetStringAttribute(avatarNode, "FirstName");
                string lastName    = XmlUtility.GetStringAttribute(avatarNode, "LastName");
                if (XmlUtility.XmlNodeHasAttribute(avatarNode, "ImageUrl"))
                {
                    string             imageUrl           = XmlUtility.GetStringAttribute(avatarNode, "ImageUrl");
                    FacebookFriendInfo facebookFriendInfo = new FacebookFriendInfo(accountId, fbAccountId, firstName, lastName, imageUrl);
                    mHiredFacebookFriendInfos.Add(facebookFriendInfo);
                }
            }

            foreach (KeyValuePair <Jobs, List <XmlNode> > avatarListing in avatarsPerJob)
            {
                mActiveTasks.Add
                (
                    mScheduler.StartCoroutine
                    (
                        BuildNpcs
                        (
                            avatarListing.Key,
                            level,
                            avatarListing.Value,
                            onComplete
                        )
                    )
                );
            }
        }
示例#4
0
        private Pair <FacebookFriendInfo, FacebookFriendInfo> GetTopPerformers()
        {
            List <FacebookFriendInfo> hiredFacebookFriends = GameFacade.Instance.RetrieveMediator <FashionNpcMediator>().HiredFacebookFriendInfos;

            //Small hack to remove yourself from the list of hired friends.
            FacebookFriendInfo usersFacebookInfo = null;

            foreach (FacebookFriendInfo friendInfo in hiredFacebookFriends)
            {
                if (friendInfo.FbAccountId == GameFacade.Instance.RetrieveProxy <ConnectionProxy>().FacebookAccountId)
                {
                    usersFacebookInfo = friendInfo;
                    break;
                }
            }
            if (usersFacebookInfo != null)
            {
                hiredFacebookFriends.Remove(usersFacebookInfo);
            }

            List <FacebookFriendInfo> nonHangoutFriends = new List <FacebookFriendInfo>();
            List <FacebookFriendInfo> hangoutFriends    = new List <FacebookFriendInfo>();

            foreach (FacebookFriendInfo facebookInfo in hiredFacebookFriends)
            {
                if (facebookInfo.AccountId.Value == 0)
                {
                    nonHangoutFriends.Add(facebookInfo);
                }
                else
                {
                    hangoutFriends.Add(facebookInfo);
                }
            }

            if (nonHangoutFriends.Count <= 2)
            {
                if (nonHangoutFriends.Count == 0)
                {
                    if (hangoutFriends.Count > 1)
                    {
                        int firstPerformerIndex  = UnityEngine.Random.Range(0, hangoutFriends.Count);
                        int secondPerformerIndex = UnityEngine.Random.Range(0, hangoutFriends.Count);
                        while (firstPerformerIndex == secondPerformerIndex)
                        {
                            secondPerformerIndex = UnityEngine.Random.Range(0, hangoutFriends.Count);
                        }
                        return(new Pair <FacebookFriendInfo, FacebookFriendInfo>(hangoutFriends[firstPerformerIndex], hangoutFriends[secondPerformerIndex]));
                    }
                    if (hangoutFriends.Count == 1)
                    {
                        return(new Pair <FacebookFriendInfo, FacebookFriendInfo>(hangoutFriends[0], null));
                    }
                    else
                    {
                        return(new Pair <FacebookFriendInfo, FacebookFriendInfo>(null, null));
                    }
                }
                if (nonHangoutFriends.Count == 1)
                {
                    FacebookFriendInfo firstPerformer = nonHangoutFriends[0];
                    if (hangoutFriends.Count >= 1)
                    {
                        int secondPerformerIndex = UnityEngine.Random.Range(0, hangoutFriends.Count);
                        return(new Pair <FacebookFriendInfo, FacebookFriendInfo>(firstPerformer, hangoutFriends[secondPerformerIndex]));
                    }
                    else
                    {
                        return(new Pair <FacebookFriendInfo, FacebookFriendInfo>(firstPerformer, null));
                    }
                }
                else
                {
                    return(new Pair <FacebookFriendInfo, FacebookFriendInfo>(nonHangoutFriends[0], nonHangoutFriends[1]));
                }
            }
            else
            {
                int firstPerformerIndex  = UnityEngine.Random.Range(0, nonHangoutFriends.Count);
                int secondPerformerIndex = UnityEngine.Random.Range(0, nonHangoutFriends.Count);
                while (firstPerformerIndex == secondPerformerIndex)
                {
                    secondPerformerIndex = UnityEngine.Random.Range(0, nonHangoutFriends.Count);
                }
                return(new Pair <FacebookFriendInfo, FacebookFriendInfo>(nonHangoutFriends[firstPerformerIndex], nonHangoutFriends[secondPerformerIndex]));
            }
        }
示例#5
0
 public HireFriendClosure(LevelGui thisRef, IGuiFrame friendListing, Jobs job, FacebookFriendInfo friendInfo)
 {
     mThisRef    = thisRef;
     mJob        = job;
     mFriendInfo = friendInfo;
 }