Я пытаюсь создать гибкую систему одевания моего персонажа в игре. Прямо сейчас у меня есть базовый класс, из которого будут расширяться все классы детской одежды, и дополнительные интерфейсы, позволяющие указать, какие части тела они на самом деле одевают, в уравнение. Вот мой код:
Код: Выделить всё
public class Clothing
{
public EClothingBind[] Types;
public int ID;
public int Priority;
public bool HidesUnderlying;
public AnimatedSpriteMap Graphic;
public Color Blend = Color.White;
public virtual void Update(GameTime gameTime)
{
Graphic.Update(gameTime);
}
public virtual void Draw(Vector2 position)
{
Graphic.Tint = Blend;
Graphic.Draw(position);
}
}
public interface IClothingHead { ... }
public interface IClothingChest { ... }
public interface IClothingLegs { ... }
public interface IClothingFeet { ... }
Сейчас это работает не очень хорошо, поскольку дизайн на самом деле не ограничивает то, что может реализовать мои интерфейсы IClothing. Есть ли способ ограничить реализацию интерфейса определенными типами? Я не хочу превращать свои интерфейсы в классы, потому что мне бы хотелось, чтобы предмет одежды, скажем, халат, закрывал все тело (реализуя все четыре). Я немного не понимаю, как лучше всего это сделать, и любой вклад очень ценен. Спасибо.
Подробнее здесь:
https://stackoverflow.com/questions/845 ... -character