|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
MVC - вопрос по иерархии
Добрый вечер!
Как известно, я выбрал подход MVC для своей игры и пока не жалуюсь. Но за те два года, что я занимаюсь, я писал исключительно то, что называется core gameplay, т.е. взаимодействия с NPC: общение, сражения и т.п. и не заморачивался менюшками и прочими рюшками. Сейчас пришло время добавить главное меню, журналы персонажей и квестов и что ещё полагается для интерфейса. И я напрочь забыл, как это делать с т.з. правильной иерархии. Что я имею сегодня. Класс Main запускает контроллер, который выглядит вот так: public function Game (host: MainView) : void { _host = host; _model = new GameModel (foregroundCharactes); _view = new GameView (_model, _host); _host.addChild(_view); _model.init(); _view.addEventListener(ViewEventTypes.MENU_SELECT, menuCommandHandler); // Подписываемся на выбор меню } Я сверстал верхнее горизонтальное меню, где разместил кнопку главного меню. Если среди опций есть такие, которые влияют на Модель (например, опция "завершить игру"), значит её нужно слушать не в игровом контроллере, а в более высоком по иерархии объекте, который имеет власть над последним. Напомните, пожалуйста, как это правильно сделать. Спасибо.
__________________
Не сломано - не чини! |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Вспомнил, что этот вопрос уже обсуждался, на всякий случай привожу выжимку из той темы, если кому потребуется:
Цитата:
И вот в этот момент, как написано выше, главный Вью должен создать дочерний MainMenuView, а Модель - дочернюю MainMenuModel. Причём оба должны быть не просто созданы, а записаны в переменную и возвращены в главный контроллер, который передаст их в конструктор создаваемого дочернего контроллера главного меню. Выходит, главный контроллер должен ломиться в главную Модель, а потом и в главный Вью, запускать в них методы создания дочек. Выглядит не кошерно. А если этого не делать, то как последние вообще "узнают" о том, что им вообще нужно что-то создавать?
__________________
Не сломано - не чини! |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Привет! Предлагаю использовать или ознакомиться (и почерпнуть идеи) с уже готовым архитектурным решением:
https://github.com/robotlegs/robotlegs-framework https://www.oreilly.com/library/view...9781449311193/ |
|
|||||
robotlegs - это далеко не самое лучшее с чем нужно знакомится вообще, если только не рассматривать его как антидвижок, в этом ключе он ок!
__________________
местонахождение |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
upd: Вообще, роботлегс всегда считался хорошим фреймворком (если уж говорить без аргументов), если не лучшем из всего того, что было в опенсорсе, ну и уж никак не антидвижком Последний раз редактировалось udaaff; 13.07.2021 в 03:09. |
Часовой пояс GMT +4, время: 06:59. |
|
« Предыдущая тема | Следующая тема » |
|
|