public static void HandleEnumCharacters(EnumCharacters enumCharacters, CharacterSession session)
        {
            // ORM seems to have problems with session.GameAccount.Id...
            var gameAccount = session.GameAccount;
            var charList    = DB.Character.Where <Character>(c => c.GameAccountId == gameAccount.Id);

            var enumCharactersResult = new EnumCharactersResult();

            charList.ForEach(c =>
            {
                enumCharactersResult.Characters.Add(new CharacterListEntry
                {
                    Guid = new SmartGuid {
                        Type = GuidType.Player, MapId = (ushort)c.Map, CreationBits = c.Guid
                    },
                    Name            = c.Name,
                    ListPosition    = c.ListPosition,
                    RaceID          = c.Race,
                    ClassID         = c.Class,
                    SexID           = c.Sex,
                    SkinID          = c.Skin,
                    FaceID          = c.Face,
                    HairStyle       = c.HairStyle,
                    HairColor       = c.HairColor,
                    FacialHairStyle = c.FacialHairStyle,
                    ExperienceLevel = c.Level,
                    ZoneID          = (int)c.Zone,
                    MapID           = (int)c.Map,
                    PreloadPos      = new Vector3 {
                        X = c.X, Y = c.Y, Z = c.Z
                    },
                    GuildGUID = new SmartGuid {
                        Type = GuidType.Guild, CreationBits = c.GuildGuid
                    },
                    Flags                = c.CharacterFlags,
                    Flags2               = c.CustomizeFlags,
                    Flags3               = c.Flags3,
                    FirstLogin           = c.FirstLogin == 1,
                    PetCreatureDisplayID = c.PetCreatureDisplayId,
                    PetExperienceLevel   = c.PetLevel,
                    PetCreatureFamilyID  = c.PetCreatureFamily,
                });
            });

            session.Send(enumCharactersResult);
        }
示例#2
0
        public static async void HandleEnumCharacters(EnumCharacters enumCharacters, CharacterSession session)
        {
            var charList = DB.Character.Where <Character>(c => c.GameAccountId == session.GameAccount.Id);

            var enumCharactersResult = new EnumCharactersResult();

            charList.ForEach(c =>
            {
                var character = new CharacterListEntry
                {
                    Guid = new CharacterGuid {
                        CreationBits = c.Guid, RealmId = (ushort)c.RealmId
                    },
                    Name            = c.Name,
                    ListPosition    = c.ListPosition,
                    RaceID          = c.Race,
                    ClassID         = c.Class,
                    SexID           = c.Sex,
                    SkinID          = c.Skin,
                    FaceID          = c.Face,
                    HairStyle       = c.HairStyle,
                    HairColor       = c.HairColor,
                    FacialHairStyle = c.FacialHairStyle,
                    ExperienceLevel = c.ExperienceLevel,
                    ZoneID          = (int)c.Zone,
                    MapID           = (int)c.Map,
                    PreloadPos      = new Vector3 {
                        X = c.X, Y = c.Y, Z = c.Z
                    },
                    GuildGUID = new GuildGuid {
                        CreationBits = c.GuildGuid
                    },
                    Flags                = c.CharacterFlags,
                    Flags2               = c.CustomizeFlags,
                    Flags3               = c.Flags3,
                    FirstLogin           = c.FirstLogin == 1,
                    PetCreatureDisplayID = c.PetCreatureDisplayId,
                    PetExperienceLevel   = c.PetLevel,
                    PetCreatureFamilyID  = c.PetCreatureFamily,
                };

                if (c.CharacterItems != null)
                {
                    for (var i = 0; i < character.InventoryItems.Length; i++)
                    {
                        foreach (var ci in c.CharacterItems)
                        {
                            Item item;

                            if ((int)ci.Slot == i && ClientDB.Items.TryGetValue(ci.ItemId, out item) && ci.Equipped)
                            {
                                character.InventoryItems[i].DisplayID = (uint)item.DisplayId;
                                character.InventoryItems[i].InvType   = (byte)item.Slot;

                                break;
                            }
                        }
                    }
                }

                enumCharactersResult.Characters.Add(character);
            });

            await session.Send(enumCharactersResult);
        }