public Prediction Predict()
        {
            Prediction p = null;

            if (m_nextpredictor != null)
            {
                p = m_nextpredictor.Predict();
            }
            else
            {
                p = new Prediction();
            }
            if (m_nextpredictor.getData().m_rainchance > 30 && p.cloud > CloudLevel.Cloudy && p.smiley < Smiley.ReallySad)
            {
                p.cloud  = CloudLevel.MildRain;
                p.rain   = 1;
                p.advise = "Rain is Certain. Please Take an Umbrella";
                p.smiley = Smiley.Sad;
            }
            else if (m_nextpredictor.getData().m_rainchance > 50 && p.cloud > CloudLevel.Cloudy && p.smiley < Smiley.Angry)
            {
                p.cloud  = CloudLevel.ThunderStorm;
                p.rain   = 2;
                p.advise = "Thunderstorms predicted. Please stay indoors";
                p.smiley = Smiley.ReallySad;
            }
            return(p);
        }
 public CloudPredictor(IPredictors p)
 {
     m_nextpredictor = p;
     m_data          = m_nextpredictor.getData();
 }
 public RainPredictor(IPredictors p)
 {
     m_nextpredictor = p;
     m_data          = m_nextpredictor.getData();
 }