Example #1
0
 public override void AddAgent(Contracts.Agents.AgentBase agent)
 {
     if (_queue.Count == 0)
     {
         _currentServedTime = 0;
     }
     _queue.Add(agent);
 }
Example #2
0
 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);
     }
 }
Example #3
0
        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));
        }