Пример #1
0
        private ICharacter GetNextCharacter(IPacket packet)
        {
            ICharacter character = new Character()
                                   .WithName(packet.ReadBreakString())
                                   .WithID(packet.ReadInt());

            var stats = new CharacterStats()
                        .WithNewStat(CharacterStat.Level, packet.ReadChar());

            var renderProperties = new CharacterRenderProperties()
                                   .WithGender(packet.ReadChar())
                                   .WithHairStyle(packet.ReadChar())
                                   .WithHairColor(packet.ReadChar())
                                   .WithRace(packet.ReadChar());

            character = character.WithAdminLevel((AdminLevel)packet.ReadChar());

            renderProperties = renderProperties
                               .WithBootsGraphic(packet.ReadShort())
                               .WithArmorGraphic(packet.ReadShort())
                               .WithHatGraphic(packet.ReadShort())
                               .WithShieldGraphic(packet.ReadShort())
                               .WithWeaponGraphic(packet.ReadShort());

            return(character
                   .WithRenderProperties(renderProperties)
                   .WithStats(stats));
        }
        public ICharacter CreateCharacter(IPacket packet)
        {
            var name = packet.ReadBreakString();

            name = char.ToUpper(name[0]) + name.Substring(1);

            var id    = packet.ReadShort();
            var mapID = packet.ReadShort();
            var xLoc  = packet.ReadShort();
            var yLoc  = packet.ReadShort();

            var direction = (EODirection)packet.ReadChar();

            packet.ReadChar(); //value is always 6? Unknown use
            var guildTag = packet.ReadString(3);

            var level     = packet.ReadChar();
            var gender    = packet.ReadChar();
            var hairStyle = packet.ReadChar();
            var hairColor = packet.ReadChar();
            var race      = packet.ReadChar();

            var maxHP = packet.ReadShort();
            var hp    = packet.ReadShort();
            var maxTP = packet.ReadShort();
            var tp    = packet.ReadShort();

            var boots = packet.ReadShort();

            packet.Seek(6, SeekOrigin.Current); //0s
            var armor = packet.ReadShort();

            packet.Seek(2, SeekOrigin.Current); //0
            var hat    = packet.ReadShort();
            var shield = packet.ReadShort();
            var weapon = packet.ReadShort();

            var sitState = (SitState)packet.ReadChar();
            var hidden   = packet.ReadChar() != 0;

            var stats = new CharacterStats()
                        .WithNewStat(CharacterStat.Level, level)
                        .WithNewStat(CharacterStat.HP, hp)
                        .WithNewStat(CharacterStat.MaxHP, maxHP)
                        .WithNewStat(CharacterStat.TP, tp)
                        .WithNewStat(CharacterStat.MaxTP, maxTP);

            var renderProps = new CharacterRenderProperties()
                              .WithDirection(direction)
                              .WithGender(gender)
                              .WithHairStyle(hairStyle)
                              .WithHairColor(hairColor)
                              .WithRace(race)
                              .WithBootsGraphic(boots)
                              .WithArmorGraphic(armor)
                              .WithHatGraphic(hat)
                              .WithShieldGraphic(shield)
                              .WithWeaponGraphic(weapon)
                              .WithSitState(sitState)
                              .WithIsHidden(hidden)
                              .WithMapX(xLoc)
                              .WithMapY(yLoc);

            return(new Character()
                   .WithName(name)
                   .WithID(id)
                   .WithMapID(mapID)
                   .WithGuildTag(guildTag)
                   .WithStats(stats)
                   .WithRenderProperties(renderProps));
        }