![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Допустим, делаю фермоподобную игру.
Уже на не первом проекте замечаю рост неподдерживаемой условной логики в общем для всех мороковок, животных и строений контроллере. Собственно, понятно, что: - базовая модель "карта фермы" содержит дочерние модельких мелких объектов (2-5 типов) (ничего не делает, только помогает в получении всякой информации и рассылает события) - главный контроллер а) забирает данные от сервера, наполняет и меняет соответствующим образом "карту фермы" б) принимает данные от кликов по объектам карты и меняет соответствующим образом модель и ее мелкие объекты с) считает время созревания/протухания/сбора каждого объекта, изменяя в нужный момент модель - вьюшка слушает модель, передает события действий пользователя контроллёру А вот что не понятно: как избавить контроллер от слежения за всеми типами всех объектов? - перенести логику в модель? не получится: а) Например при заходе к другу действия от пользователя надо обрабатывать по другому б) В зависимости, от выбранного инструмента нужно по-разному реагировать на действия пользователя с) Ну логику для разных типов мы разделим, зато загадим мелкую модель жуткой логикой для разных ситуаций - запихать во вьюху? а) приведет к дикому копипасту, т.к. одни и те же дейтсвия можно делать с помощью разных частей интерфейса б) опять же, загадим вьюху условной логикой для разных ситуаций. А выделить в ней классы-состояния при высоком уровне копипаста (см.пункт а) - нереально. - наделать по контроллеру на модельку? идея нравится, но вот как это сделать?, ведь требования такие: а) контроллер должен считать и помнить что он насчитал для своей модельки; б) решать какие действия доступны для его модельки; с) приводить вьюшку в соответствие с возможными действиями (заставлять всякие значки "скликни меня" рисовать) но при этом он должен быть отвязан от модели, т.к.: а) нужны разные контроллеры на одну и ту же модель для разных состояний игры - надо по-разному обрабатывать действия пользователя б) нужен механизм для смены контроллеров всех моделек при смене глобального состояния с) кто-то должен знать какой контроллер должен быть назначен модели - кто? Будь это моделька или вьюшка - проблем достаточно и в том и в другом случае. Есть какие-нибудь идеи? Последний раз редактировалось expl; 25.03.2011 в 01:22. |
![]() |
Часовой пояс GMT +4, время: 11:53. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|