Цитата:
Сообщение от elder_Nosferatu
@Tails
Судя по Вашему примеру с дробовиком, Вы вообще отвергаете мой 2-рой вариант реализации выстрела (модель заявляет о начале выстрела и ожидает известия от контроллера, что вид закончил отображение выстрела). По моему этот вариант дает возможность синхронизировать поведение модели с отображением этого поведения, Но все же меня просто бесит то, что модель ждет разрешения на продолжение деятельности от вида. К тому же такой подход сильно прибавляет в коде: модель расказала виду, он некоторое время это отображает и докладывает контроллеру о завершении, а ток уже командует модели "давай, расказывай дальше". Каждый набор последовательных действий порождает целый вихрь из евентов... Даже если бы это был ТРУ-МВЦ, я бы не стал так делать - просто заворот мозгов!
|
Конечно вас это бесит, потому-что это вообще "чёрт знает что", как вы до такого только додумались.. Зачем модель должна что-то там синхронизировать с вью? Модель работает сама по себе, она ничего абсолютно не должна знать про то, кто её, как и где нарисует.
Цитата:
Сообщение от elder_Nosferatu
Но все же меня не покидает мысль о том, что может возникнуть ситуация, когда последнее слово будет за видом...
|
Такой ситуаций не может быть в принципе.
В правильном MVC - в игру можно играть вообще без визуализатора. Визуализатор - это лишь порт вывода данных игры игроку. Красивый и разноцветный, со свистелками и перделками - но никак не влияющий на игровой процесс. Визуализатор живёт своей жизнью, он рисует модель игры так, как ему хочется.
В визуализатор может помещаться слушатель пользовательского ввода, который будет регестрировать клики мышкой, ввод с клавиатуры и прочие действия игрока. Затем, слушатель их минимально обрабатывает - (нажата кнопка включения двигателя, нажата кнопка стрельбы) Эти данные считываются контроллером и уже он принимает какие-то конкретные действия. Слушатель помещается во вью только потому, что от-туда ближе всего доступ к устройствам ввода.
Цитата:
Сообщение от Akopalipsis
Кому?
Добавлено через 12 минут
AlexCooper Вы не сочтите мой короткий вопрос - "Кому", за дурной тон. Просто мне уже раз обьясниле, что если контроллер подписан на модель это не mvc..
|
Не совсем так. Модель - потому и диспетчер, что её события могут понадобиться кому угодно. Вполне возможна ситуация, когда некоторый контроллер будет подписан на какие-то события модели. Например, второстипенный под-контроллер, может активироваться по наступлению какого-то события в игровом мире - "случилось извержение вулкана - запускается спаунер огненных мобов.", игрок погиб - оживает главный контроллер, завершает игру, открывает меню.
Если более обширный пример - то система игровых триггеров. Игровой триггер - это некоторое действие (контроллер) который активируется по наступлению некоторого события в игре (подписан на модель)