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]; } } }
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); }
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, }); }