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