История изменений
Исправление 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