Есть moving system, сделанная из таймера и структуры. Эта система просто двигает один объект к другому с указанной скоростью.
Условно:
У пяти разных юнитов есть 5 разных снарядов, которые имеют 5 разных эффектов при столкновении, и которые движутся с помощью moving system.
То есть когда снаряд перестает двигаться, то есть достигает цели, структура уничтожается, и в этот момент мне нужно воздействовать на цель снаряда, на сам снаряд и на хозяина снаряда.
Я не хочу захламлять структуру или создавать разные структуры для разных способностей, поэтому я ищу способ при уничтожении структуры moving system запускать разные функции и передавать в них необходимые данные.
Что я делаю: (временно назовем структуру, двигающую объект, структурой A)
Сохраняю необходимые данные в структуру B (включая сам снаряд).
При создании структуры A также передаю ей abilID, хранящий в себе айди пустой способности, которую можно кастовать на юнита.
При уничтожении структуры А (то есть при столкновении снаряда с целью) создаю дамми-юнит, даю ему способность abilID и заставляю дамми кастовать abilID на снаряд.
При касте способности реагирует соответствующий триггер и запускает нужную мне функцию. В этой функции GetSpellTargetUnit() будет моим снарядом. Перебором структуры B я получаю нужные данные и теперь могу делать, что хочу.
Поскольку я могу передавать структуре разные abilID, в результате будут вызываться разные функции.

Так вот. Я уверен на 100%, что это весьма конченный способ. Подскажите, как можно добиться того же результата более легким способом?

способ 1
вешать структуру на таймер с помощью эксплойта (для тех кто не знает структура это число) а потом этим таймером вызывать нужную функцию спустя 0 секунд
плюсы:
простота
минусы:
требует добавлять иф на каждую новую функцию
второй способ
тоже самое что и 1 только на таймер вешается вдобавок название функции и таймер вызывает её экзекутом
вот моя библиотека по 2 способу и карта с примером
в библиотеке в самом верху есть небольшой док по 3 функциям
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
26
ну если метод работает то почему нет?
каким бы конченным он не был, если он работает и не вызывает лагов/багов то все пучком.
я например сделал базу данных снарядов, и в конце вызываю другую функцию в которую передаю все нужные мне данные, например снаряд, кто его выпустил, и в кого он воткнулся. а из не я уже могу делать все что хочу. и по базе данных я нахожу все что мне нужно
28
способ 1
вешать структуру на таймер с помощью эксплойта (для тех кто не знает структура это число) а потом этим таймером вызывать нужную функцию спустя 0 секунд
плюсы:
простота
минусы:
требует добавлять иф на каждую новую функцию
второй способ
тоже самое что и 1 только на таймер вешается вдобавок название функции и таймер вызывает её экзекутом
вот моя библиотека по 2 способу и карта с примером
в библиотеке в самом верху есть небольшой док по 3 функциям
Загруженные файлы
Принятый ответ
30
Реализовывай всё в одной структуре через добавление методов напрямую, модулями или через наследование.
28
через добавление методов напрямую
нарушает принципы ооп
Clamp:
через наследование
в vjass наследование кривое и нету нормального полиморфизма
про модули не понял
30
нарушает принципы ооп
В варкрафте нет ООП, одна видимость. Кроме того, реализация такого добавления методов принципам ООП номинально не противоречит.
в vjass наследование кривое и нету полиморфизма
про модули не понял
Наследование, вернее его эмуляция там нормальная, а полиморфизм при работе с варкрафтом считай и не нужен.
Модули.
29
и нету полиморфизма
)))))) это откуда инфа?
28
Doc, если хочешь чтото возразить то предоставь пруф
если же зашёл чтобы тупо пофлудить то кыш отсюда
тут один из немногих нормальных вопросов в академии
Clamp:
В варкрафте нет ООП, одна видимость. Кроме того, реализация такого добавления методов принципам ООП номинально не противоречит.
это нарушает модульность кода т.к. использование класса требует его редактирования
хотя в вар3 на это всем пофиг как правило
Clamp:
а полиморфизм при работе с варкрафтом считай и не нужен.
просто хотел реализовать шаблон наблюдатель или хотя бы его подобие
хотя можно реализовать и через модули
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.