/// <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); }
/// <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); }