Beispiel #1
0
        private void AddUnitEnemy(Unit unit)
        {
            var data = new IntelUnit(unit);

            if (GameConstants.IsWorker(unit.UnitType))
            {
                if (WorkersEnemy.ContainsKey(unit.Tag))
                {
                    WorkersEnemy[unit.Tag].DataSource = unit;
                }
                else
                {
                    WorkersEnemy.Add(unit.Tag, data);
                    Handler.Handle(Case.WorkerAddedEnemy, data);
                }
            }
            else if (IsBuilding(unit.UnitType))
            {
                if (StructureEnemy.ContainsKey(unit.Tag))
                {
                    StructureEnemy[unit.Tag].DataSource = unit;
                }
                else
                {
                    StructureEnemy.Add(unit.Tag, data);
                    Handler.Handle(Case.StructureAddedEnemy, data);
                }
            }
            else     // must be unit
            {
                if (UnitsEnemy.ContainsKey(unit.Tag))
                {
                    UnitsEnemy[unit.Tag].DataSource = unit;
                }
                else
                {
                    UnitsEnemy.Add(unit.Tag, data);
                    Handler.Handle(Case.UnitAddedEnemy, data);
                }
            }
            if (data.DisplayType == DisplayType.Hidden)
            {
                Handler.Handle(Case.AddedHiddenEnemy, data);
            }
        }
Beispiel #2
0
        // Method required because snapshots change ID when visible...
        private void UpdateSnapshotNeutral(Dictionary <ulong, IntelUnit> dictionary, Unit unit)
        {
            if (dictionary.ContainsKey(unit.Tag))
            {
                dictionary[unit.Tag].DataSource = unit;
                return;
            }

            IntelUnit data = dictionary.Where(p => p.Value.Pos.X == unit.Pos.X && p.Value.Pos.Y == unit.Pos.Y).Select(p => p.Value).FirstOrDefault();

            if (data == null)
            {
                throw new System.ArgumentNullException($"Could not find neutral unit ({unit.UnitType} at X:{unit.Pos.X} Y:{unit.Pos.Y})");
            }

            dictionary.Remove(data.Tag);
            data.DataSource = unit;
            dictionary.Add(data.Tag, data);
        }
Beispiel #3
0
 /// <summary>
 /// Notify listeners and add/update stored allied units.
 /// </summary>
 /// <param name="unit">Unit where Alliance == Self</param>
 private void AddUnitSelf(Unit unit)
 {
     if (GameConstants.IsWorker(unit.UnitType))
     {
         if (WorkersSelf.ContainsKey(unit.Tag))
         {
             WorkersSelf[unit.Tag].DataSource = unit;
         }
         else
         {
             var data = new IntelUnit(unit);
             WorkersSelf.Add(unit.Tag, data);
             Handler.Handle(Case.WorkerAddedSelf, data);
         }
     }
     else if (IsBuilding(unit.UnitType))
     {
         if (StructuresSelf.ContainsKey(unit.Tag))
         {
             StructuresSelf[unit.Tag].DataSource = unit;
         }
         else
         {
             var data = new IntelUnit(unit);
             StructuresSelf.Add(unit.Tag, data);
             Handler.Handle(Case.StructureAddedSelf, data);
         }
     }
     else     // must be unit
     {
         if (UnitsSelf.ContainsKey(unit.Tag))
         {
             UnitsSelf[unit.Tag].DataSource = unit;
         }
         else
         {
             var data = new IntelUnit(unit);
             UnitsSelf.Add(unit.Tag, data);
             Handler.Handle(Case.UnitAddedSelf, data);
         }
     }
 }