Итак, у меня есть класс игрока с базовыми действиями. Во время игры он открывает новые способности. Я не знаю, как хранить новые действия в классе игрока. Если быть точным - я знаю как, но мой метод слишком грязный и я хочу почистить код. Также я хочу добавить врагам некоторые из этих способностей. Другими словами, каждая игровая сущность (за исключением стен, возможно: D) должна иметь коллекцию, в которую я могу добавлять методы, расширяющие функциональность сущности. Как мне это сделать? Извините, если мой вопрос слишком абстрактен
Как создать класс игровых сущностей для игры, который будет динамически расширяться новыми методами?
Ответы (1)
Создайте словарь действий:
public Dictionary<string,Action> NameActionDic = new Dictionary<string,Action>();
Затем вы можете заполнить его следующим образом:
player.NameActionDic["jump"] = ()=>{ player.velocity.Y -= 5; };
И используйте так:
if (KeyboardButtonPressed(Keys.ArrowUp)) // this is just an example
player.NameActionDic["jump"]();
Просто поместите код заполнения где-нибудь на окраине (отдельный метод void
, возможно, конструктор игрока), или он будет мешать вашей возможности редактирования и продолжения, потому что это лямбда-выражение.
person
user1306322
schedule
27.01.2013
О, кажется, это то, что я ищу! Благодарю вас!
- person edwing; 27.01.2013
EntityCanDo = Functionality.Jump | Functionality.Run
или список действий? - person Cyral   schedule 27.01.2013