private void GetFashionModelAvatars(ServerAccount serverAccount, Guid sessionId, Action <List <object> > returnFunc) { // Get the local avatar assets AvatarManagerServiceAPI.GetAvatarForUser(serverAccount, delegate(XmlDocument localAvatarXml) { List <object> responseData = new List <object>(); XmlElement avatarNode = (XmlElement)localAvatarXml.SelectSingleNode("//Avatar"); XmlAttribute localAvatarAttrib = localAvatarXml.CreateAttribute("LocalAvatar"); localAvatarAttrib.InnerText = "true"; avatarNode.Attributes.Append(localAvatarAttrib); ReplaceItemIdsWithDna(avatarNode); AddFacebookData ( avatarNode, new FacebookFriendInfo ( serverAccount.AccountId, serverAccount.FacebookAccountId, serverAccount.Nickname, "", "" ) ); responseData.Add(avatarNode.OuterXml); FashionMinigameServiceAPI.GetHiredFriendsForJob(serverAccount, Jobs.Model, delegate(ICollection <long> hiredFriendIds) { ProcessHiredFriends(serverAccount, returnFunc, responseData, hiredFriendIds); }); }); }
public void GetAvatar(Guid sessionId, ZoneId zoneId, ServerAccount serverAccount, AvatarId defaultAvatarId, System.Action <bool> getAvatarFinishedCallback) { Action <XmlDocument> getAvatarCallback = delegate(XmlDocument xmlResponse) { XmlNode avatarXmlNode = xmlResponse.SelectSingleNode("Avatars/Avatar"); //if no avatars were found for this account, create one! if (avatarXmlNode == null) { CreateNewAvatarForAccount(sessionId, zoneId, serverAccount, defaultAvatarId, getAvatarFinishedCallback); } //otherwise, just grab the first avatar out of the avatar returned list else { GetAvatarServiceResponse(avatarXmlNode, serverAccount.Nickname, sessionId, zoneId, getAvatarFinishedCallback); } }; AvatarManagerServiceAPI.GetAvatarForUser(serverAccount, getAvatarCallback); }
private void GetAllHiredAvatars(Message message, Guid sessionId) { ServerAccount localUserServerAccount = mServerStateMachine.SessionManager.GetServerAccountFromSessionId(sessionId); AvatarManagerServiceAPI.GetAvatarForUser(localUserServerAccount, delegate(XmlDocument localAvatarXml) { FashionMinigameServiceAPI.GetAllHiredFriends(localUserServerAccount, delegate(XmlDocument hiredFriendsXml) { Dictionary <long, Jobs> friendFbIds = Functionals.Reduce <Dictionary <long, Jobs> > ( delegate(Dictionary <long, Jobs> accumulator, object friendIdNode) { XmlNode friendNode = (XmlNode)friendIdNode; foreach (string idText in friendNode.InnerText.Split(',')) { accumulator.Add(long.Parse(idText), (Jobs)Enum.Parse(typeof(Jobs), friendNode.SelectSingleNode("@KeyName").InnerText)); } return(accumulator); }, hiredFriendsXml.SelectNodes("//DataKey") ); List <object> resultData = new List <object>(); XmlNode localAvatarNode = localAvatarXml.SelectSingleNode("//Avatar"); XmlAttribute fbidAttrib = localAvatarXml.CreateAttribute("FBID"); fbidAttrib.InnerText = localUserServerAccount.FacebookAccountId.ToString(); localAvatarNode.Attributes.Append(fbidAttrib); XmlAttribute firstnameAttrib = localAvatarXml.CreateAttribute("FirstName"); firstnameAttrib.InnerText = localUserServerAccount.Nickname; localAvatarNode.Attributes.Append(firstnameAttrib); XmlAttribute lastnameAttrib = localAvatarXml.CreateAttribute("LastName"); lastnameAttrib.InnerText = ""; localAvatarNode.Attributes.Append(lastnameAttrib); resultData.Add(localAvatarXml.OuterXml); ProcessHiredFriends ( localUserServerAccount, delegate(List <object> messageData) { friendFbIds.Add(localUserServerAccount.FacebookAccountId, Jobs.Model); Message responseMessage = new Message(); List <object> responseData = new List <object>(); responseData.Insert(0, message.Data[0]); // callbackId // Build asset lists for all the avatars and add minigame data foreach (XmlDocument avatarXml in MessageUtil.GetXmlDocumentsFromMessageData(messageData)) { XmlNode avatarNode = avatarXml.SelectSingleNode("//Avatar"); ReplaceItemIdsWithDna((XmlElement)avatarNode); // The job name will be the DataKey the FBID was stored under XmlAttribute avatarJobAttrib = avatarXml.CreateAttribute("job"); long fbid = long.Parse(avatarNode.SelectSingleNode("@FBID").InnerText); Jobs friendJob; if (friendFbIds.TryGetValue(fbid, out friendJob)) { avatarJobAttrib.InnerText = friendJob.ToString(); } else if (fbid == 0) // Unknown user { } else { string errorMessage = "Unable to find job info for FBID: " + fbid; mLogger.Error(errorMessage); avatarJobAttrib.InnerText = errorMessage; } avatarNode.Attributes.Append(avatarJobAttrib); responseData.Add(avatarNode.OuterXml); } responseMessage.FashionGameModelAssetMessage(responseData); SendMessageToClient(responseMessage, sessionId); }, resultData, friendFbIds.Keys ); }); }); }