Pull to refresh

Comments 9

Что то тут не так. По описанию это больше на mixins похоже, а не на фабрики. И ИМХО сомнительно не использовать наследование и конструктор. В таком подходе смешалось инстансырование объекта и его декларация.
Очень похоже на идею entity-framework'ов для игровых движков. Но тут все как-то красивее и чище. Не совсем ясно, кто здесь будет обрабатывать части игровых объектов (update у физического объекта или ИИ, например), но если также, как в entity-движках, все очень аккуратно укладывается в общую структуру (простую из-за использования js). Обязательно попробую применить подобный подход.
Интересный подход, может давайте теперь еще и туториал «создаем свою стратегию на яваскрипте с использованием фабрик»?
Очень простой и удобный способ собирать нужные обьекты с задаными свойствами.
Но что будет если добавить реальные «примеси», те что-то меняющее поведение обьекта, через перекрытие методов других компонент?
Например выполняться до/после/вместо use.
В примере с реплейсом порядок портотипов уже играет роль, а озвучивалось обратное.
Можете написать короткий простой пример? Не совсем понял вопрос.
По поводу реплейса — тут имелось другое (опять же, если я правильно понял). Один объект можно использовать через стандартный интерфейс (в нашем случае use()) только для одной цели. Пушка — будет стрелять, машина — ехать, портал — телепортировать. Если на один объект наложить два свойства — действительно одно, перекроет другое. Но с точки зрения игры это логично, ведь не может же предмет выполнить сразу два действия
Вот другой пример:
Для гравитационной пушки, одного метода use мало. Ей нужен ещё один метод, для переключения режима стрельбы (к себе / от себя). Но физически управление привязывается только к одной кнопке клавиатуры. Поэтому для нее я заводил еще один метод turn — который пришлось привязывать к другой кнопке клавиатуры. Ограничение в один метод — это так же ограничение кнопок на джойстике.

Если необходимо выполнить действие до / после / вместо тогда изначально надо писать обертку и уже её подменять на use. Например пачка из трех разных действий на один use:
combo =
left
right
weapon

Используем use = combo; вместо того, чтобы отдельно делать use = left и т.д.

Спасибо за доклад и статью, интересный подход.
Sign up to leave a comment.