Ejemplo n.º 1
0
        private void DrawMartian(Martian m, Graphics g)
        {
            Rectangle rect = GetObjectRect(m);

            g.FillEllipse(m_martianBrush, rect);
            g.DrawEllipse(m_borderPen, rect);
        }
Ejemplo n.º 2
0
        public void UpdateWorldState(TelemetryMessage telemetry)
        {
            m_lastUpdate = telemetry.time_stamp;
            m_rover.UpdateState(telemetry.position, telemetry.direction, telemetry.speed, telemetry.move_state, telemetry.turn_state);
            foreach (ObstacleMessage obstacle in telemetry.obstacles)
            {
                switch (obstacle.type)
                {
                case ObstacleType.Boulder:
                    Boulder b = new Boulder(obstacle.position, obstacle.radius);
                    if (!m_boulders.ContainsKey(b))
                    {
                        m_boulders.Add(b, telemetry.time_stamp);
                        OnBoulderFound(b);
                        m_tree.AddObject(b);
                    }
                    else
                    {
                        m_boulders[b] = telemetry.time_stamp;
                        OnBoulderSeen(b);
                    }
                    break;

                case ObstacleType.Crater:
                    Crater c = new Crater(obstacle.position, obstacle.radius);
                    if (!m_craters.ContainsKey(c))
                    {
                        m_craters.Add(c, telemetry.time_stamp);
                        OnCraterFound(c);
                        m_tree.AddObject(c);
                    }
                    else
                    {
                        m_craters[c] = telemetry.time_stamp;
                        OnCraterSeen(c);
                    }
                    break;

                case ObstacleType.Home:
                    if (m_home == null)
                    {
                        m_home = new Home(obstacle.position, obstacle.radius);
                        OnHomeFound(m_home);
                    }
                    else
                    {
                        OnHomeSeen(m_home);
                    }
                    break;
                }
            }
            m_martians.Clear();
            foreach (MartianMessage m in telemetry.martians)
            {
                Martian martian = new Martian(m.position, m.direction, m.speed);
                m_martians.Add(martian);
                OnMartianSeen(martian);
            }
            OnWorldChanged();
        }
Ejemplo n.º 3
0
 private void OnMartianSeen(Martian m)
 {
     OnObjectSeen(m);
     if (MartianSeen != null)
     {
         MartianSeen(this, m);
     }
 }