MailRuChamps / raic-2020

GNU General Public License v3.0
26 stars 27 forks source link

golang: юниты упорно не желают создаваться. Баг? #84

Closed prospero78 closed 3 years ago

prospero78 commented 3 years ago

Ниже примерный код, вызывается каждый тик. Результат отсутствует

if player.Player.Resource() > 20 && len(poolbuilder.PoolBuilder.Builders()) <= 10 {
        log.Printf("TBaseBuilder.GetAct(): build unit.builder base=%v:%v unit=%v:%v\n",
            sf.base.Position.X, sf.base.Position.Y, x,y)
        act = &model.EntityAction{
            BuildAction: &model.BuildAction{
                EntityType: model.EntityTypeBuilderUnit,
                Position: model.Vec2Int32{
                    X: x,
                    Y: y,
                },
            },
        }
        return act
    }
return nil

В условие точно цикл заходит, точно возвращает не nil. Но реакции localRunner ноль.

Перебрал три десятка вариантов для позиции создания юнита от жёсткого смещения до откровенного беспардонного рандома. Ничего не выходит. С клавиатуры получается управлять, создавать юнита за противника.

Arukim commented 3 years ago

А какие все же x,y используются? Я бы предложил попробовать изменить код так, чтобы приказ отдавался относительно базы.

Position: model.Vec2Int32{ X: sf.base.Position.X, Y: sf.base.Position.Y-1, }

prospero78 commented 3 years ago

На самом деле именно так и делал (один из опробованных вариантов).

kuviman commented 3 years ago

Для создания юнитов есть много требований - место, расстояние (1), ресурсы, еда