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);
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 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);
Beispiel #8
0
 public static Component Create(ComponentSerializable serializable, Database.Loader loader)
 {
     return(new Component(serializable, loader));
 }
Beispiel #9
0
 partial void OnDataDeserialized(ComponentSerializable serializable, Database.Loader loader);
Beispiel #10
0
 public static ComponentData Deserialize(ComponentSerializable serializable, Database database)
 {
     return(new ComponentData(serializable, database));
 }
Beispiel #11
0
 partial void OnDataSerialized(ref ComponentSerializable serializable)
 {
     serializable.AmmunitionId = Ammunition.IsNull ? AmmunitionObsolete.Value : Ammunition.Value;
 }