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