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

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

Принятый ответ

способ 1
вешать структуру на таймер с помощью эксплойта (для тех кто не знает структура это число) а потом этим таймером вызывать нужную функцию спустя 0 секунд
плюсы:
простота
минусы:
требует добавлять иф на каждую новую функцию
второй способ
тоже самое что и 1 только на таймер вешается вдобавок название функции и таймер вызывает её экзекутом
вот моя библиотека по 2 способу и карта с примером
в библиотеке в самом верху есть небольшой док по 3 функциям
Загруженные файлы

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