Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.08.2018, 17:55
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 21  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от Appleman Посмотреть сообщение
У нас есть свойство персонажа, пусть будет тот же интеллект. На него влияют статус-эффекты и снаряжение. Если например, шлем даёт +10%, а зелье - ещё +15%, означает ли это, что, надевая шлем, я должен пересчитывать оригинальное значение? И если у нас закончилось действие зелья, а шлем всё ещё на голове, то это же можно свихнуться с обратным пересчётом из процентов. Ведь база расчёта уже изменится. Или мне придётся иметь одно "эталонное" значение в досье, а другое "оперативное" - в классе, которое я буду постоянно актуализировать?
Простите мне моё самоцитирование, вопрос для меня архиважный. Я капитально начал "тонуть" в свойствах персонажей, их хранении, обновлении и т.п. Придумал решение, гляньте опытным глазом, плиз. На примере всё того же интеллекта (любимое свойство)

Перенёс все поля во внутренний класс Parameters, вместе с сеттерами и геттерами. В Character имеем:
Код AS3:
private var _params: Parameters = new Parameters();
Но поле _intelligence в классе Character остаётся, в нём теперь будет храниться read-only значение интеллекта, но уже со всеми модификаторами. Забрать его можно геттером.

При изменении интеллекта (любым методом класса Character) не избежим вот такой записи, т.к. нет другого способа установки нового значения:
Код AS3:
_params.intelligence += value;
Сеттер в классе Parameters посылает событие об изменении значения (он его и так посылает, чтобы поймать и отразить изменения во Вью), это событие ловит класс Character (опять же он его и сейчас ловит). В приёмнике события ставим:

Код AS3:
_intelligence = _params.intelligence;
// Вызываем методы, проверяющие статусы и экипировку на предмет модификаторов интеллекта
// Их же вызываем при смене статусов или экипировки
Таким образом, больше не парюсь с актуальностью свойств и чётко понимаю, где брать модифицированное, а где - "чистое". Цена решения: фактическое дублирование всех полей и геттеров в и без того распухшем Character.

Что думаете?
__________________
Не сломано - не чини!

Старый 10.08.2018, 23:12
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 22  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Можно сделать оригинальный Parameters со стартовыми значениями полей и активный Parameters, который пересчитывается исходя из стартового + модификаторы. И все это обернуть в какой-нить фасад (тот же Character).

А можно дублировать поля в таком же стиле. Короче вариантов миллион.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
GBee, вот это ты мне удружил! Действительно, просто и гениально сделать 2 зеркальных класса. А я уже приготовился всю грядку напрямую в Character опять возвращать. Спасибо.
__________________
Не сломано - не чини!

Старый 11.08.2018, 01:44
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 24  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
мне кажется все это уже можно было бы свернуть, если не заниматься брутофорс разработкой. Автор, стеньте первым в истории, кто изложит модель игры, правила и т.п. и потом начнем задавать вопросы про код, ну пожалуйста
__________________
местонахождение

Старый 13.08.2018, 09:54
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 25  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
СлаваRa, да надо бы, конечно, по-хорошему. Но диздок у меня весьма объёмный, при этом создавался он отнюдь не для демонстрации, поэтому его нужно сперва "прополоть" и "причесать". Мне представляется свинством выкатывать сюда такие "простыни", это как бы намекало уважаемой аудитории прочитать, что никто делать не нанимался.

Более того, завтра в отпуск улетаю, так что даже поучаствовать в обсуждении не смогу
__________________
Не сломано - не чини!

Старый 14.08.2018, 13:24
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 26  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
можно по диздоку диаграммку зафигачить на draw.io - все должно получиться довольно лаконично и читабельно.
__________________
while(live()) { hope(); }

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:53.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.