Skip to content

AgentPoint

Абстракция "Точка агента" - любая точка в пространстве, в которой или рядом с которой могут находиться/работать/и т.п. агенты.

string Title

Заголовок для UI, описывающий эту точку агента.

string Info

Информация для панели UI, описывающая детали этой точки в нескольких строках.

Queue Agents

Очередь агентов, которые пришли в эту точку в порядке их прихода.

Add()

Add(Agent argAgent)

Добавление агента в очередь, проставление ему свойства занят (IsBusy = true), сброс цели (TargetId = 0), установка, где он находится (LocatedId = ObjectId).

Remove()

Agent Remove()

Удаление агента из очереди, агент становится свободным (IsBusy = false), и находится в движении (LocatedId = 0), но цель еще не назначена (TargetId = 0).

CheckAgentToEnter()

bool CheckAgentToEnter(Agent argAgent)

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

CheckAgentToExit()

bool CheckAgentToExit(Agent argAgent)

Действия, которые можно переопределить в наследнике при проверке находится ли агент в точке, в момент когда он должен уходить. Например, можно показать агента рядом с выходом, чтобы он продолжил свой путь, когда он ушел из здания.

UpdateInfo()

Можно переопределить в нследнике. Предназначено для обновления информации UI об этой точке.

Tick()

Tick(GameTime argGameTime, List argAllAgent)

Вызывается в каждым момент времени, например раз в час игрового времени, для обновления информации в точках. argGameTime - текущие игровое время, argAllAgent - список всех агентов в мире, например среди них можно найти тех которые направлялись к этой точке (argAllAgent.FindAll(x => x.TargetId == ObjectId)). Последовательно вызывает CheckAgentToEnter() если точка открыта (рабочие время WorkingTill точки меньше текущего), и прошедшие проверку добавляются в очередь. Аналогично вызывает CheckAgentToExit() если точку нужно закрывать (рабочие время WorkingTill точки больше текущего). В заключение вызывается UpdateInfo() для обновления информации UI об этой точке.