示例#1
0
        /// <summary>
        ///     Creates a new character
        /// </summary>
        /// <exception cref="CharacterException"></exception>
        public Character Create(byte slot, CharacterGender gender, byte hair, byte face, byte shirt, byte pants)
        {
            if (Count >= 3)
            {
                throw new CharacterException("Character limit reached");
            }

            if (_characters.ContainsKey(slot))
            {
                throw new CharacterException($"Slot {slot} is already in use");
            }

            var defaultItems = GameServer.Instance.ResourceCache.GetDefaultItems();

            if (defaultItems.Get(gender, CostumeSlot.Hair, hair) == null)
            {
                throw new CharacterException($"Hair variation {hair} does not exist");
            }

            if (defaultItems.Get(gender, CostumeSlot.Face, face) == null)
            {
                throw new CharacterException($"Face variation {face} does not exist");
            }

            if (defaultItems.Get(gender, CostumeSlot.Shirt, shirt) == null)
            {
                throw new CharacterException($"Shirt variation {shirt} does not exist");
            }

            if (defaultItems.Get(gender, CostumeSlot.Pants, pants) == null)
            {
                throw new CharacterException($"Pants variation {pants} does not exist");
            }

            var @char = new Character(this, slot, gender, hair, face, shirt, pants);

            _characters.Add(slot, @char);

            var charStyle = new CharacterStyle(@char.Gender, @char.Hair.Variation, @char.Face.Variation,
                                               @char.Shirt.Variation, @char.Pants.Variation, @char.Slot);

            Player.Session.SendAsync(new CSuccessCreateCharacterAckMessage(@char.Slot, charStyle));

            return(@char);
        }
示例#2
0
        /// <summary>
        ///     Returns the character on the given slot.
        ///     Returns null if the character does not exist
        /// </summary>
        //public CharacterGender GetCharacterGender()
        //{
        //    //using (_sync.Lock())
        //    {
        //        return CurrentCharacter.Gender;
        //    }
        //}

        /// <summary>
        ///     Creates a new character
        /// </summary>
        /// <exception cref="CharacterException"></exception>
        public Character Create(byte slot, CharacterGender gender)
        {
            if (Count >= 3)
            {
                throw new CharacterException("Character limit reached");
            }

            if (_characters.ContainsKey(slot))
            {
                throw new CharacterException($"Slot {slot} is already in use");
            }

            var @char = new Character(this, slot, gender);

            _characters.TryAdd(slot, @char);

            var charStyle = new CharacterStyle(@char.Gender, @char.Slot);

            Player.Session.SendAsync(new CSuccessCreateCharacterAckMessage(@char.Slot, charStyle));

            return(@char);
        }