public Component(ComponentSerializable serializable, Database database) { Id = new ItemId <Component>(serializable.Id, serializable.FileName); Name = serializable.Name; Description = serializable.Description; DisplayCategory = serializable.DisplayCategory; Availability = serializable.Availability; Stats = database.GetComponentStatsId(serializable.ComponentStatsId); if (Stats.IsNull) { throw new DatabaseException(this.GetType().Name + ".Stats cannot be null"); } Faction = database.GetFactionId(serializable.Faction); Level = new NumericValue <int>(serializable.Level, 0, 1000); Icon = serializable.Icon; Color = Helpers.ColorFromString(serializable.Color); Layout = new Layout(serializable.Layout); CellType = serializable.CellType; Device = database.GetDeviceId(serializable.DeviceId); Weapon = database.GetWeaponId(serializable.WeaponId); Ammunition = database.GetAmmunitionId(serializable.AmmunitionId); AmmunitionObsolete = database.GetAmmunitionObsoleteId(serializable.AmmunitionId); WeaponSlotType = serializable.WeaponSlotType; DroneBay = database.GetDroneBayId(serializable.DroneBayId); Drone = database.GetShipBuildId(serializable.DroneId); Restrictions = new ComponentRestrictions(serializable.Restrictions, database); PossibleModifications = serializable.PossibleModifications?.Select(id => new Wrapper <ComponentMod> { Item = database.GetComponentModId(id) }).ToArray(); OnDataDeserialized(serializable, database); }
public void Save(ComponentSerializable serializable) { serializable.Name = Name; serializable.Description = Description; serializable.DisplayCategory = DisplayCategory; serializable.Availability = Availability; serializable.ComponentStatsId = Stats.Value; serializable.Faction = Faction.Value; serializable.Level = Level.Value; serializable.Icon = Icon; serializable.Color = Helpers.ColorToString(Color); serializable.Layout = Layout.Data; serializable.CellType = CellType; serializable.DeviceId = Device.Value; serializable.WeaponId = Weapon.Value; serializable.AmmunitionId = Ammunition.Value; serializable.AmmunitionId = AmmunitionObsolete.Value; serializable.WeaponSlotType = WeaponSlotType; serializable.DroneBayId = DroneBay.Value; serializable.DroneId = Drone.Value; serializable.Restrictions = Restrictions.Serialize(); if (PossibleModifications == null || PossibleModifications.Length == 0) { serializable.PossibleModifications = null; } else { serializable.PossibleModifications = PossibleModifications.Select(wrapper => wrapper.Item.Value).ToArray(); } OnDataSerialized(ref serializable); }
public ComponentSerializable Serialize() { var serializable = new ComponentSerializable(); serializable.Id = ItemId.Id; serializable.FileName = ItemId.Name; serializable.ItemType = (int)ItemType.Component; serializable.Name = Name; serializable.Description = Description; serializable.DisplayCategory = DisplayCategory; serializable.Availability = Availability; serializable.ComponentStatsId = ComponentStatsId.Id; serializable.Faction = Faction.Id; serializable.Level = Level.Value; serializable.Icon = Icon.ToString(); serializable.Color = Utils.ColorUtils.ColorToString(Color); serializable.Layout = Layout.Data; serializable.CellType = CellType; serializable.DeviceId = DeviceId.Id; serializable.WeaponId = WeaponId.Id; serializable.AmmunitionId = AmmunitionId.Id; serializable.AmmunitionObsoleteId = AmmunitionObsoleteId.Id; serializable.WeaponSlotType = WeaponSlotType; serializable.DroneBayId = DroneBayId.Id; serializable.DroneId = DroneId.Id; serializable.PossibleModifications = PossibleModifications?.Select(item => item.Item.Id).ToArray(); return(serializable); }
private Component(ComponentSerializable serializable, Database.Loader loader) { Id = new ItemId <Component>(serializable.Id); loader.AddComponent(serializable.Id, this); Name = serializable.Name; Description = serializable.Description; DisplayCategory = serializable.DisplayCategory; Availability = serializable.Availability; Stats = loader.GetComponentStats(new ItemId <ComponentStats>(serializable.ComponentStatsId)); if (Stats == null) { throw new DatabaseException(this.GetType().Name + ".Stats cannot be null - " + serializable.ComponentStatsId); } Faction = loader.GetFaction(new ItemId <Faction>(serializable.Faction)); Level = UnityEngine.Mathf.Clamp(serializable.Level, 0, 1000); Icon = new SpriteId(serializable.Icon, SpriteId.Type.Component); Color = new ColorData(serializable.Color); Layout = new Layout(serializable.Layout); _cellType = serializable.CellType; Device = loader.GetDevice(new ItemId <Device>(serializable.DeviceId)); Weapon = loader.GetWeapon(new ItemId <Weapon>(serializable.WeaponId)); Ammunition = loader.GetAmmunition(new ItemId <Ammunition>(serializable.AmmunitionId)); AmmunitionObsolete = loader.GetAmmunitionObsolete(new ItemId <AmmunitionObsolete>(serializable.AmmunitionId)); _weaponSlotType = serializable.WeaponSlotType; DroneBay = loader.GetDroneBay(new ItemId <DroneBay>(serializable.DroneBayId)); Drone = loader.GetShipBuild(new ItemId <ShipBuild>(serializable.DroneId)); Restrictions = ComponentRestrictions.Create(serializable.Restrictions, loader); PossibleModifications = new ImmutableCollection <ComponentMod>(serializable.PossibleModifications?.Select(item => loader.GetComponentMod(new ItemId <ComponentMod>(item), true))); OnDataDeserialized(serializable, loader); }
private ComponentData(ComponentSerializable serializable, Database database) { ItemId = new ItemId <ComponentData>(serializable.Id, serializable.FileName); Name = serializable.Name; Description = serializable.Description; DisplayCategory = serializable.DisplayCategory; Availability = serializable.Availability; ComponentStatsId = database.GetComponentStatsId(serializable.ComponentStatsId); Faction = database.GetFactionId(serializable.Faction); Level = new NumericValue <int>(serializable.Level, 0, 500); Icon = new SpriteId(serializable.Icon); Color = Utils.ColorUtils.ColorFromString(serializable.Color); Layout = new Layout(serializable.Layout); CellType = serializable.CellType; DeviceId = database.GetDeviceId(serializable.DeviceId); WeaponId = database.GetWeaponId(serializable.WeaponId); AmmunitionId = database.GetAmmunitionId(serializable.AmmunitionId); AmmunitionObsoleteId = database.GetAmmunitionObsoleteId(serializable.AmmunitionObsoleteId); WeaponSlotType = serializable.WeaponSlotType; DroneBayId = database.GetDroneBayId(serializable.DroneBayId); DroneId = database.GetShipBuildId(serializable.DroneId); PossibleModifications = serializable.PossibleModifications?.Select(item => new Wrapper <ComponentModData> { Item = database.GetComponentModId(item) }).ToArray(); }
partial void OnDataSerialized(ref ComponentSerializable serializable);
partial void OnDataDeserialized(ComponentSerializable serializable, Database database);
public static Component Create(ComponentSerializable serializable, Database.Loader loader) { return(new Component(serializable, loader)); }
partial void OnDataDeserialized(ComponentSerializable serializable, Database.Loader loader);
public static ComponentData Deserialize(ComponentSerializable serializable, Database database) { return(new ComponentData(serializable, database)); }
partial void OnDataSerialized(ref ComponentSerializable serializable) { serializable.AmmunitionId = Ammunition.IsNull ? AmmunitionObsolete.Value : Ammunition.Value; }