public Ship(ShipSerializable serializable, Database database) { Id = new ItemId <Ship>(serializable.Id, serializable.FileName); ShipCategory = serializable.ShipCategory; Name = serializable.Name; Faction = database.GetFactionId(serializable.Faction); SizeClass = serializable.SizeClass; IconImage = serializable.IconImage; IconScale = new NumericValue <float>(serializable.IconScale, 0.1f, 100f); ModelImage = serializable.ModelImage; ModelScale = new NumericValue <float>(serializable.ModelScale, 0.1f, 100f); EnginePosition = serializable.EnginePosition; EngineColor = Helpers.ColorFromString(serializable.EngineColor); EngineSize = new NumericValue <float>(serializable.EngineSize, 0f, 1f); Engines = serializable.Engines?.Select(item => new Engine(item, database)).ToArray(); EnergyResistance = new NumericValue <float>(serializable.EnergyResistance, -100f, 100f); KineticResistance = new NumericValue <float>(serializable.KineticResistance, -100f, 100f); HeatResistance = new NumericValue <float>(serializable.HeatResistance, -100f, 100f); Regeneration = serializable.Regeneration; BaseWeightModifier = new NumericValue <float>(serializable.BaseWeightModifier, -0.9f, 1000f); BuiltinDevices = serializable.BuiltinDevices?.Select(id => new Wrapper <Device> { Item = database.GetDeviceId(id) }).ToArray(); Layout = new Layout(serializable.Layout); Barrels = serializable.Barrels?.Select(item => new Barrel(item, database)).ToArray(); OnDataDeserialized(serializable, database); }
private Ship(ShipSerializable serializable, Database.Loader loader) { Id = new ItemId <Ship>(serializable.Id); loader.AddShip(serializable.Id, this); ShipCategory = serializable.ShipCategory; Name = serializable.Name; Faction = loader.GetFaction(new ItemId <Faction>(serializable.Faction)); SizeClass = serializable.SizeClass; IconImage = new SpriteId(serializable.IconImage, SpriteId.Type.ShipIcon); IconScale = UnityEngine.Mathf.Clamp(serializable.IconScale, 0.1f, 100f); ModelImage = new SpriteId(serializable.ModelImage, SpriteId.Type.Ship); ModelScale = UnityEngine.Mathf.Clamp(serializable.ModelScale, 0.1f, 100f); _enginePosition = serializable.EnginePosition; EngineColor = new ColorData(serializable.EngineColor); _engineSize = UnityEngine.Mathf.Clamp(serializable.EngineSize, 0f, 1f); Engines = new ImmutableCollection <Engine>(serializable.Engines?.Select(item => Engine.Create(item, loader))); EnergyResistance = UnityEngine.Mathf.Clamp(serializable.EnergyResistance, -100f, 100f); KineticResistance = UnityEngine.Mathf.Clamp(serializable.KineticResistance, -100f, 100f); HeatResistance = UnityEngine.Mathf.Clamp(serializable.HeatResistance, -100f, 100f); Regeneration = serializable.Regeneration; BaseWeightModifier = UnityEngine.Mathf.Clamp(serializable.BaseWeightModifier, -0.9f, 1000f); BuiltinDevices = new ImmutableCollection <Device>(serializable.BuiltinDevices?.Select(item => loader.GetDevice(new ItemId <Device>(item), true))); Layout = new Layout(serializable.Layout); Barrels = new ImmutableCollection <Barrel>(serializable.Barrels?.Select(item => Barrel.Create(item, loader))); OnDataDeserialized(serializable, loader); }
public ShipSerializable Serialize() { var serializable = new ShipSerializable(); serializable.Id = ItemId.Id; serializable.FileName = ItemId.Name; serializable.ItemType = (int)ItemType.Ship; serializable.ShipCategory = ShipCategory; serializable.Name = Name; serializable.Faction = Faction.Id; serializable.SizeClass = SizeClass; serializable.IconImage = IconImage.ToString(); serializable.IconScale = IconScale.Value; serializable.ModelImage = ModelImage.ToString(); serializable.ModelScale = ModelScale.Value; serializable.EnginePosition = EnginePosition; serializable.EngineColor = Utils.ColorUtils.ColorToString(EngineColor); serializable.EngineSize = EngineSize.Value; serializable.EnergyResistance = EnergyResistance.Value; serializable.KineticResistance = KineticResistance.Value; serializable.HeatResistance = HeatResistance.Value; serializable.Regeneration = Regeneration; serializable.BaseWeightModifier = BaseWeightModifier.Value; serializable.BuiltinDevices = BuiltinDevices?.Select(item => item.Item.Id).ToArray(); serializable.Layout = Layout.Data; serializable.Barrels = Barrels?.Select(item => item.Serialize()).ToArray(); return(serializable); }
public void Save(ShipSerializable serializable) { serializable.ShipCategory = ShipCategory; serializable.Name = Name; serializable.Faction = Faction.Value; serializable.SizeClass = SizeClass; serializable.IconImage = IconImage; serializable.IconScale = IconScale.Value; serializable.ModelImage = ModelImage; serializable.ModelScale = ModelScale.Value; serializable.EnginePosition = EnginePosition; serializable.EngineColor = Helpers.ColorToString(EngineColor); serializable.EngineSize = EngineSize.Value; if (Engines == null || Engines.Length == 0) { serializable.Engines = null; } else { serializable.Engines = Engines.Select(item => item.Serialize()).ToArray(); } serializable.EnergyResistance = EnergyResistance.Value; serializable.KineticResistance = KineticResistance.Value; serializable.HeatResistance = HeatResistance.Value; serializable.Regeneration = Regeneration; serializable.BaseWeightModifier = BaseWeightModifier.Value; if (BuiltinDevices == null || BuiltinDevices.Length == 0) { serializable.BuiltinDevices = null; } else { serializable.BuiltinDevices = BuiltinDevices.Select(wrapper => wrapper.Item.Value).ToArray(); } serializable.Layout = Layout.Data; if (Barrels == null || Barrels.Length == 0) { serializable.Barrels = null; } else { serializable.Barrels = Barrels.Select(item => item.Serialize()).ToArray(); } OnDataSerialized(ref serializable); }
public static Ship Create(ShipSerializable serializable, Database.Loader loader) { return(new Ship(serializable, loader)); }
partial void OnDataDeserialized(ShipSerializable serializable, Database.Loader loader);
partial void OnDataSerialized(ref ShipSerializable serializable);
partial void OnDataDeserialized(ShipSerializable serializable, Database database);
public static ShipData Deserialize(ShipSerializable serializable, Database database) { return(new ShipData(serializable, database)); }