public override void AddAgent(Contracts.Agents.AgentBase agent) { if (_queue.Count == 0) { _currentServedTime = 0; } _queue.Add(agent); }
public override void AddAgent(Contracts.Agents.AgentBase agent) { if (agent is VehicleAgentBase) { _vehicle = (VehicleAgentBase)agent; _input_time_ms = (int)(TimeSpan.FromMinutes(1).TotalMilliseconds / _vehicle.InputFactor); _canInput = true; } else { _queue.Add(agent); } }
public override bool TryGetDirection(Contracts.Agents.AgentBase agent, out Point direction) { //if (_directions.ContainsKey(agent.Id)) //{ // direction = _directions[agent.Id]; // return true; //} direction = _queue.Count == 0 ? _servicePoint : _queue.Last().Position; //Point position = agent.Position; Random rand = new Random((int)agent.Id); switch (_direction) { case PriorityDirection.Top: direction.Offset(rand.Next(-1, 2), -1); break; case PriorityDirection.TopRight: direction.Offset(rand.Next(0, 2), rand.Next(-1, 1)); break; case PriorityDirection.Right: direction.Offset(1, rand.Next(-1, 2)); break; case PriorityDirection.BottomRight: direction.Offset(rand.Next(0, 2), rand.Next(0, 2)); break; case PriorityDirection.Bottom: direction.Offset(rand.Next(-1, 2), 1); break; case PriorityDirection.BottomLeft: direction.Offset(rand.Next(-1, 1), rand.Next(0, 2)); break; case PriorityDirection.Left: direction.Offset(-1, rand.Next(-1, 2)); break; case PriorityDirection.TopLeft: direction.Offset(rand.Next(-1, 1), rand.Next(-1, 1)); break; } var cell = _map[0].GetCell(direction.X, direction.Y); return(direction == agent.Position || (!cell.HasAgent && cell.CurrentValue != 0x00)); }