コード例 #1
0
            public TechnologySerializable Serialize()
            {
                var serializable = new TechnologySerializable();

                serializable.Ship = Ship.Id;
                return(serializable);
            }
コード例 #2
0
        public static TechnologyData Deserialize(TechnologySerializable serializable, Database database)
        {
            var data = new TechnologyData(serializable, database);

            data.CreateContent(serializable, database);
            return(data);
        }
コード例 #3
0
            public TechnologySerializable Serialize()
            {
                var serializable = new TechnologySerializable();

                serializable.Component = Component.Id;
                serializable.Faction   = Faction.Id;
                return(serializable);
            }
コード例 #4
0
 public Content_Ship(TechnologySerializable serializable, Database database)
 {
     if (serializable == null || database == null)
     {
         return;
     }
     Ship = database.GetShipId(serializable.Ship);
 }
コード例 #5
0
            public TechnologySerializable Serialize()
            {
                var serializable = new TechnologySerializable();

                serializable.Satellite = Satellite.Id;
                serializable.Faction   = Faction.Id;
                return(serializable);
            }
コード例 #6
0
 public Content_Satellite(TechnologySerializable serializable, Database database)
 {
     if (serializable == null || database == null)
     {
         return;
     }
     Satellite = database.GetSatelliteId(serializable.Satellite);
     Faction   = database.GetFactionId(serializable.Faction);
 }
コード例 #7
0
 public Content_Component(TechnologySerializable serializable, Database database)
 {
     if (serializable == null || database == null)
     {
         return;
     }
     Component = database.GetComponentId(serializable.Component);
     Faction   = database.GetFactionId(serializable.Faction);
 }
コード例 #8
0
        public void Load(TechnologySerializable serializable, Database database)
        {
            Ship = database.GetShipId(serializable.ItemId);
            if (Ship.IsNull)
            {
                throw new DatabaseException(this.GetType().Name + ".Ship cannot be null");
            }

            OnDataDeserialized(serializable, database);
        }
コード例 #9
0
 private TechnologyData(TechnologySerializable serializable, Database database)
 {
     ItemId       = new ItemId <TechnologyData>(serializable.Id, serializable.FileName);
     Type         = serializable.Type;
     Price        = new NumericValue <int>(serializable.Price, 0, 1000);
     Hidden       = serializable.Hidden;
     Special      = serializable.Special;
     Dependencies = serializable.Dependencies?.Select(item => new Wrapper <TechnologyData> {
         Item = database.GetTechnologyId(item)
     }).ToArray();
 }
コード例 #10
0
        public Technology_Ship(TechnologySerializable serializable, Database.Loader loader)
            : base(serializable, loader)
        {
            Ship = loader.GetShip(new ItemId <Ship>(serializable.ItemId));
            if (Ship == null)
            {
                throw new DatabaseException(this.GetType().Name + ".Ship cannot be null - " + serializable.ItemId);
            }

            OnDataDeserialized(serializable, loader);
        }
コード例 #11
0
        public void Load(TechnologySerializable serializable, Database database)
        {
            Component = database.GetComponentId(serializable.ItemId);
            if (Component.IsNull)
            {
                throw new DatabaseException(this.GetType().Name + ".Component cannot be null");
            }
            Faction = database.GetFactionId(serializable.Faction);

            OnDataDeserialized(serializable, database);
        }
コード例 #12
0
        public void Load(TechnologySerializable serializable, Database database)
        {
            Satellite = database.GetSatelliteId(serializable.ItemId);
            if (Satellite.IsNull)
            {
                throw new DatabaseException(this.GetType().Name + ".Satellite cannot be null");
            }
            Faction = database.GetFactionId(serializable.Faction);

            OnDataDeserialized(serializable, database);
        }
コード例 #13
0
        public Technology_Satellite(TechnologySerializable serializable, Database.Loader loader)
            : base(serializable, loader)
        {
            Satellite = loader.GetSatellite(new ItemId <Satellite>(serializable.ItemId));
            if (Satellite == null)
            {
                throw new DatabaseException(this.GetType().Name + ".Satellite cannot be null - " + serializable.ItemId);
            }
            Faction = loader.GetFaction(new ItemId <Faction>(serializable.Faction));

            OnDataDeserialized(serializable, loader);
        }
コード例 #14
0
        public Technology_Component(TechnologySerializable serializable, Database.Loader loader)
            : base(serializable, loader)
        {
            Component = loader.GetComponent(new ItemId <Component>(serializable.ItemId));
            if (Component == null)
            {
                throw new DatabaseException(this.GetType().Name + ".Component cannot be null - " + serializable.ItemId);
            }
            Faction = loader.GetFaction(new ItemId <Faction>(serializable.Faction));

            OnDataDeserialized(serializable, loader);
        }
コード例 #15
0
        protected Technology(TechnologySerializable serializable, Database.Loader loader)
        {
            Id = new ItemId <Technology>(serializable.Id);
            loader.AddTechnology(serializable.Id, this);

            Type         = serializable.Type;
            Price        = UnityEngine.Mathf.Clamp(serializable.Price, 0, 10000);
            Hidden       = serializable.Hidden;
            Special      = serializable.Special;
            Dependencies = new ImmutableCollection <Technology>(serializable.Dependencies?.Select(item => loader.GetTechnology(new ItemId <Technology>(item), true)));

            OnDataDeserialized(serializable, loader);
        }
コード例 #16
0
        public Technology(TechnologySerializable serializable, Database database)
        {
            Id = new ItemId <Technology>(serializable);

            Type         = serializable.Type;
            Price        = new NumericValue <int>(serializable.Price, 0, 10000);
            Hidden       = serializable.Hidden;
            Special      = serializable.Special;
            Dependencies = serializable.Dependencies?.Select(id => new Wrapper <Technology> {
                Item = database.GetTechnologyId(id)
            }).ToArray();
            _content = CreateContent(serializable.Type);
            _content.Load(serializable, database);

            OnDataDeserialized(serializable, database);
        }
コード例 #17
0
        public static Technology Create(TechnologySerializable serializable, Database.Loader loader)
        {
            switch (serializable.Type)
            {
            case TechType.Component:
                return(new Technology_Component(serializable, loader));

            case TechType.Ship:
                return(new Technology_Ship(serializable, loader));

            case TechType.Satellite:
                return(new Technology_Satellite(serializable, loader));

            default:
                throw new DatabaseException("Technology: Invalid content type - " + serializable.Type);
            }
        }
コード例 #18
0
 private void CreateContent(TechnologySerializable serializable, Database database)
 {
     if (serializable.Type == TechType.Component)
     {
         Content = new Content_Component(serializable, database);
     }
     else if (serializable.Type == TechType.Satellite)
     {
         Content = new Content_Satellite(serializable, database);
     }
     else if (serializable.Type == TechType.Ship)
     {
         Content = new Content_Ship(serializable, database);
     }
     else
     {
         Content = new Content_Empty();
     }
 }
コード例 #19
0
 public void Save(TechnologySerializable serializable)
 {
     serializable.ItemId  = 0;
     serializable.ItemId  = 0;
     serializable.ItemId  = 0;
     serializable.Faction = 0;
     _content.Save(ref serializable);
     serializable.Type    = Type;
     serializable.Price   = Price.Value;
     serializable.Hidden  = Hidden;
     serializable.Special = Special;
     if (Dependencies == null || Dependencies.Length == 0)
     {
         serializable.Dependencies = null;
     }
     else
     {
         serializable.Dependencies = Dependencies.Select(wrapper => wrapper.Item.Value).ToArray();
     }
     OnDataSerialized(ref serializable);
 }
コード例 #20
0
 partial void OnDataSerialized(ref TechnologySerializable serializable);
コード例 #21
0
 partial void OnDataDeserialized(TechnologySerializable serializable, Database database);
コード例 #22
0
 public void Save(ref TechnologySerializable serializable)
 {
     serializable.ItemId  = Satellite.Value;
     serializable.Faction = Faction.Value;
     OnDataSerialized(ref serializable);
 }
コード例 #23
0
 public void Save(ref TechnologySerializable serializable)
 {
     serializable.ItemId = Ship.Value;
     OnDataSerialized(ref serializable);
 }
コード例 #24
0
 public void Save(ref TechnologySerializable serializable)
 {
 }
コード例 #25
0
 public void Load(TechnologySerializable serializable, Database database)
 {
 }
コード例 #26
0
 partial void OnDataDeserialized(TechnologySerializable serializable, Database.Loader loader);