/// <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); }
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); }
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 ) ) ); } }
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])); } }
public HireFriendClosure(LevelGui thisRef, IGuiFrame friendListing, Jobs job, FacebookFriendInfo friendInfo) { mThisRef = thisRef; mJob = job; mFriendInfo = friendInfo; }