Exemplo n.º 1
0
        private void UndoInteraction(ISpaceField spaceField)
        {
            var field = fields[spaceField.X, spaceField.Y];

            if (field.HasAgent)
            {
                foreach (var agent in field.Agents.ToArray())
                {
                    var interaction = agent.Interaction;

                    if (interaction.ActionResult != InteractionResult.Collision)
                    {
                        field.IsDestroyed        = true;
                        interaction.ActionResult = InteractionResult.Collision;
                        field.RemoveAnchors();
                        //Console.WriteLine($"Rem {spaceField.X}, {spaceField.Y}");
                        UndoInteraction(interaction.From);
                        var sourceField = fields[interaction.From.X, interaction.From.Y];
                        //Console.WriteLine($"Set {interaction.From.X}, {interaction.From.Y}");
                        sourceField.AddAnchor(agent.Anchor);
                        agent.Anchor.Field = sourceField;
                    }
                }
            }
        }
Exemplo n.º 2
0
        public override void Paint(Graphics graphics)
        {
            var agent = Simulation.Agents.FirstOrDefault();

            if (agent != null)
            {
                ISpaceField field = agent.Interaction.From ?? agent.Anchor.Field;
                float       size  = ViewRadius * 2 + 1;
                graphics.FillRectangle(Brush, field.X - ViewRadius, field.Y - ViewRadius, size, size);
            }
        }
Exemplo n.º 3
0
 protected SpaceField <TAgent> this[ISpaceField f] => fields[f.X, f.Y];
Exemplo n.º 4
0
 public void MoveAgentAnchor(AgentSpaceAnchor <TAgent> anchor, ISpaceField field)
 {
     this[anchor.Field].RemoveAnchor(anchor);
     fields[field.X, field.Y].AddAnchor(anchor);
     anchor.Field = field;
 }
Exemplo n.º 5
0
 public AgentSpaceAnchor(TAgent agent, ISpaceField field) : base(field)
 {
     Agent = agent;
 }
Exemplo n.º 6
0
 public SpaceAnchor(ISpaceField field)
 {
     Field = field;
 }