private void UpdatePermanentData(PermanentViewData permanentViewData) { Generation = permanentViewData.Generation; Time = permanentViewData.Time; Constants = permanentViewData.Constants; Nations = permanentViewData.Nations.ToDictionary(data => data.Id); ShipClasses = permanentViewData.ShipClasses.ToDictionary(data => data.Id); MissileClasses = permanentViewData.MissileClasses.ToDictionary(data => data.Id); Stars = permanentViewData.Stars.ToDictionary(data => data.Id); Ships = permanentViewData.Ships.Select(data => new Ship(data)).ToDictionary(ship => ship.Id); ShipClasses.Values.ApplyNations(Nations); MissileClasses.Values.ApplyNations(Nations); Stars.Values.ApplyNations(Nations); Ships.Values.ApplyNations(Nations); foreach (var shipClass in ShipClasses.Values) { foreach (var missileRack in shipClass.Right) { missileRack.MissileClass = MissileClasses[missileRack.IdMissileClass]; } foreach (var missileRack in shipClass.Left) { missileRack.MissileClass = MissileClasses[missileRack.IdMissileClass]; } } foreach (var ship in Ships.Values) { ship.Class = ShipClasses[ship.IdClass]; } }
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, }); }
public static Universe Load(string filename) { string xml = File.ReadAllText(filename, Encoding.Unicode); ServerData view = Xml.DeserializeObject <ServerData>(xml); PermanentViewData p = view.Permanent; Universe u = new Universe { Constants = p.Constants, Generation = p.Generation, Nations = p.Nations.ToDictionary(nation => nation.Id), Stars = p.Stars.ToDictionary(star => star.Id), ShipClasses = p.ShipClasses.ToDictionary(shipClass => shipClass.Id), MissileClasses = p.MissileClasses.ToDictionary(missileClass => missileClass.Id), Ships = p.Ships.Select(data => new ServerShip(data)).ToDictionary(ship => ship.Id), }; u.Initialize(); u.UpdateControlsData(view.Controls); u.UpdateVolatileData(view.Volatile); return(u); }