Показать сообщение отдельно
Старый 27.06.2021, 23:05
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 1  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
По умолчанию MVC - вопрос по иерархии

Добрый вечер!

Как известно, я выбрал подход MVC для своей игры и пока не жалуюсь. Но за те два года, что я занимаюсь, я писал исключительно то, что называется core gameplay, т.е. взаимодействия с NPC: общение, сражения и т.п. и не заморачивался менюшками и прочими рюшками.

Сейчас пришло время добавить главное меню, журналы персонажей и квестов и что ещё полагается для интерфейса. И я напрочь забыл, как это делать с т.з. правильной иерархии.

Что я имею сегодня. Класс Main запускает контроллер, который выглядит вот так:
Код AS3:
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);	// Подписываемся на выбор меню
}
То есть сразу после запуска приложения игрок сразу попадает в режим сражения: выбирает действия, получает обратную связь.

Я сверстал верхнее горизонтальное меню, где разместил кнопку главного меню. Если среди опций есть такие, которые влияют на Модель (например, опция "завершить игру"), значит её нужно слушать не в игровом контроллере, а в более высоком по иерархии объекте, который имеет власть над последним.

Напомните, пожалуйста, как это правильно сделать. Спасибо.
__________________
Не сломано - не чини!