LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

Если список ролей фиксирован, то это enum. Пишем обертку над getObjectById, которая принимает creep, и возвращает тип в зависимости от memory.role

Костылять десяток ролей, вроде ‘guardTower’, ‘guardMineral’, ‘guardSource’, ‘guardCreep’… реализация которых будет отличаться только именем типа?

Да. У них всяко есть базовые общие поля, плюс какие-то екстеншены. Это всё выражается через систему типов

Хочешь перебросить крипа на другую цель — не нужно исправлять и перезаливать код, ты просто меняешь ему айдишник цели в памяти прямо в рантайме

Обертка convertCreep, в которую передаешь крипа и роль из enum-а

Исправление Deleted, :

Если список ролей фиксирован, то это enum. Пишем обертку над getObjectById, которая принимает creep, и возвращает тип в зависимости от memory.role

Костылять десяток ролей, вроде ‘guardTower’, ‘guardMineral’, ‘guardSource’, ‘guardCreep’… реализация которых будет отличаться только именем типа?

Да. У них всяко есть базовые общие поля, плюс какие-то екстеншены. Это всё выражается через систему типов

Исходная версия Deleted, :

Если список ролей фиксирован, то это enum. Пишем обертку над getObjectById, которая принимает creep, и возвращает тип в зависимости от memory.role