示例#1
0
 private void UpdateVolatileData(VolatileViewData v)
 {
     lock (m_locker)
     {
         foreach (var ship in Ships.Values)
         {
             ship.VolatileShip = null;
         }
         foreach (var s in v.Ships)
         {
             var ship = Ships[s.Id];
             ship.VolatileShip = s;
             if (ship.ControlShip == null)
             {
                 ship.ControlShip = new ControlShipData(s, ship.Class);
             }
         }
         foreach (var m in v.Missiles)
         {
             var control = Missiles[m.Id];
             control.Arrow  = m;
             control.Origin = Ships[control.IdOrigin];
             control.Target = Ships[control.IdTarget];
         }
     }
 }
示例#2
0
 private void UpdateVolatileData(VolatileViewData volatileViewData)
 {
     Time = volatileViewData.Time;
     foreach (var ship in Ships.Values)
     {
         ship.VolatileShip = null;
     }
     foreach (var ship in volatileViewData.Ships)
     {
         Ships[ship.Id].VolatileShip = ship;
     }
     Missiles = volatileViewData.Missiles.ToDictionary(missile => missile.Id);
 }
示例#3
0
        public ClientData GetView(int generation)
        {
            if (Universe == null)
            {
                return(null);
            }
            PermanentViewData p = Universe.Generation == generation ? null : Universe.GetPermanentData();
            VolatileViewData  v = ship == null ? null : Universe.GetVolatileData();
            ControlShipData   c = ship == null ? null : ship.ControlShip;

            return(new ClientData
            {
                Permanent = p,
                Volatile = v,
                Navigation = c,
            });
        }