Beispiel #1
0
        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);
                });
            });
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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
                    );
                });
            });
        }