Skip to content

AgentPoint

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

string Title

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

string Info

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

Queue Agents

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

WorkingHours && WorkingFrom && WorkingTill

Vector2 WorkingHours int WorkingFrom (only get) int WorkingTill (only get)

Время работы WorkingHours.x (=WorkingFrom) - от, WorkingHours.y (=WorkingTill) - до.

BaseWorkPayment

List BaseWorkPayment

Список ресурсов, которые агент может получить работая в этой точке в базовых величинах. В качестве именований нужно использовать теже наименования что и в статах персонажа.

IsOpen()

bool IsOpen(int currentTime)

Открыта ли точка агента для посещения в конкретный игровой час (currentTime).

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)

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

GetInfoHandler & GetInfo()

delegate string GetInfoDelegate(int argId) GetInfoDelegate GetInfoHandler string GetInfo()

Указатель на метод, который возвратит информацию для UI об этой точке. Возвращает текст, получает идентификатор точки (argId). Устанавливается объектами уровня Society/World. Для вызова используется вспомогательный метод GetInfo().

UpdateInfo()

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

Tick()

Tick(GameTime argGameTime, List argAllAgent)

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