Показать сообщение отдельно
Старый 30.09.2013, 20:36
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 15  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Цитата:
Сообщение от elder_Nosferatu Посмотреть сообщение
@Tails
Судя по Вашему примеру с дробовиком, Вы вообще отвергаете мой 2-рой вариант реализации выстрела (модель заявляет о начале выстрела и ожидает известия от контроллера, что вид закончил отображение выстрела). По моему этот вариант дает возможность синхронизировать поведение модели с отображением этого поведения, Но все же меня просто бесит то, что модель ждет разрешения на продолжение деятельности от вида. К тому же такой подход сильно прибавляет в коде: модель расказала виду, он некоторое время это отображает и докладывает контроллеру о завершении, а ток уже командует модели "давай, расказывай дальше". Каждый набор последовательных действий порождает целый вихрь из евентов... Даже если бы это был ТРУ-МВЦ, я бы не стал так делать - просто заворот мозгов!
Конечно вас это бесит, потому-что это вообще "чёрт знает что", как вы до такого только додумались.. Зачем модель должна что-то там синхронизировать с вью? Модель работает сама по себе, она ничего абсолютно не должна знать про то, кто её, как и где нарисует.

Цитата:
Сообщение от elder_Nosferatu Посмотреть сообщение
Но все же меня не покидает мысль о том, что может возникнуть ситуация, когда последнее слово будет за видом...
Такой ситуаций не может быть в принципе.
В правильном MVC - в игру можно играть вообще без визуализатора. Визуализатор - это лишь порт вывода данных игры игроку. Красивый и разноцветный, со свистелками и перделками - но никак не влияющий на игровой процесс. Визуализатор живёт своей жизнью, он рисует модель игры так, как ему хочется.

В визуализатор может помещаться слушатель пользовательского ввода, который будет регестрировать клики мышкой, ввод с клавиатуры и прочие действия игрока. Затем, слушатель их минимально обрабатывает - (нажата кнопка включения двигателя, нажата кнопка стрельбы) Эти данные считываются контроллером и уже он принимает какие-то конкретные действия. Слушатель помещается во вью только потому, что от-туда ближе всего доступ к устройствам ввода.

Цитата:
Сообщение от Akopalipsis Посмотреть сообщение
Кому?

Добавлено через 12 минут
AlexCooper Вы не сочтите мой короткий вопрос - "Кому", за дурной тон. Просто мне уже раз обьясниле, что если контроллер подписан на модель это не mvc..
Не совсем так. Модель - потому и диспетчер, что её события могут понадобиться кому угодно. Вполне возможна ситуация, когда некоторый контроллер будет подписан на какие-то события модели. Например, второстипенный под-контроллер, может активироваться по наступлению какого-то события в игровом мире - "случилось извержение вулкана - запускается спаунер огненных мобов.", игрок погиб - оживает главный контроллер, завершает игру, открывает меню.

Если более обширный пример - то система игровых триггеров. Игровой триггер - это некоторое действие (контроллер) который активируется по наступлению некоторого события в игре (подписан на модель)
__________________
Дети не должны знать о своих родителях


Последний раз редактировалось Tails; 30.09.2013 в 21:04.