Beispiel #1
0
 public TileStatus()
 {
     this.type = TileType.Unknown;
     this.quality = Quality.Unknown;
     this.Result = null;
     this.Found = null;
     this.TileEstimate = null;
 }
Beispiel #2
0
 public void Set(Detected detected)
 {
     Found = new Detected(detected.Type, detected.Quality);
     if (TileEstimate != null)
     {
         List<Detected> list = new List<Detected>();
         foreach (Detected d in TileEstimate.Estimates)
         {
             if (Detected.isSpecialType(d.Type))
             {
                 list.Add(d);
             }
         }
         TileEstimate.Add(list);
         if (TileEstimate.Estimates.Count == 0)
         {
             TileEstimate = null;
         }
     }
     if (Found.Type != TileType.Nothing)
         type = Found.Type;
 }
Beispiel #3
0
 public void Reset()
 {
     this.Result = null;
     this.Found = null;
     this.TileEstimate = null;
     this.specialTypes = null;
 }
Beispiel #4
0
 public void RemoveSpecial(TileType tileType)
 {
     if (specialTypes != null)
     {
         specialTypes.Remove(tileType);
     }
     if (TileEstimate != null)
     {
         TileEstimate.Estimates.Remove(new Detected(tileType, Quality.Unknown));
         if (TileEstimate.Estimates.Count == 0)
         {
             TileEstimate = null;
         }
     }
 }
Beispiel #5
0
 public void AddSpecial(TileType tileType)
 {
     if (specialTypes == null)
     {
         specialTypes = new HashSet<TileType>();
     }
     specialTypes.Add(tileType);
     if (TileEstimate != null)
     {
         TileEstimate.Estimates.Remove(new Detected(tileType, Quality.Unknown));
         if (TileEstimate.Estimates.Count == 0)
         {
             TileEstimate = null;
         }
     }
 }
Beispiel #6
0
        /**
         * Add a list of detected ores to the tile.
         * # It checks if nothing has been detected so the tile can be marked empty.
         * # If the tile already has an ore set which matches any of the detected ores the quality is updated
         * # If the tile already has some results the results are merged.
         * # Otherwise the list is set.
         */
        public int Add(List<Detected> detected)
        {
            foreach (Detected d in detected)
            {
                if (d.Type == TileType.Nothing)
                {
                    // Nothing has been detected. Mark the tile as empty.
                    Set(d);
                    return 0;
                }
                else if (Found != null)
                {
                    // The detected ore matches what's already there
                    if (Found.Matches(d))
                    {
                        // Update the quality
                        if (Quality == Quality.Unknown && d.Quality != Quality.Unknown)
                            Found.Quality = d.Quality;
                        return 1;
                    }
                }
            }

            // We already have something set for this tile but none of the detected ores matched it.
            // This should not happen so we just bail out here.
            if (Found != null)
                return 0;

            if (TileEstimate == null)
                TileEstimate = new TileEstimate();

            TileEstimate.Add(detected);
            if (TileEstimate.Estimates.Count == 0)
                return 0;
            else
                return 1;
        }