Пример #1
0
        internal SavedGameInfo(string title, IkonBaseObject previewData, FileInfo fileInfo)
        {
            this.Title       = title;
            this.PreviewData = previewData;

            this.FileInfo = fileInfo;
        }
Пример #2
0
        public object Deserialize(IkonBaseObject data, LoadSession session)
        {
            if (this.deserializationMethod == null)
            {
                throw new InvalidOperationException("No deserialization method defined for " + data.Tag);
            }

            return(this.deserializationMethod(data, session));
        }
Пример #3
0
 public static AConstructionSite Load(IkonBaseObject rawData, LoadSession session)
 {
     if (rawData.Tag.Equals(Colony.Tag))
     {
         return(session.Load <Colony>(rawData));
     }
     else
     {
         return(session.Load <StellarisAdmin>(rawData));
     }
 }
Пример #4
0
        public void NewSave(string title, IkonBaseObject previewData)
        {
            string fileName = SaveNamePrefix + this.nextSaveNumber + "." + SaveNameExtension;

            var saveFile = new FileInfo(this.saveFolderPath + fileName);

            saveFile.Directory.Create();

            save(saveFile, title, previewData);

            this.nextSaveNumber++;
        }
Пример #5
0
        internal IkonReference SaveReference(object originalValue, IkonBaseObject serializedValue, string namePrefix)
        {
            if (!this.nextReference.ContainsKey(namePrefix))
            {
                this.nextReference[namePrefix] = 0;
            }

            var referenceName = namePrefix + this.nextReference[namePrefix].ToString();

            this.referencedData[originalValue] = serializedValue;
            this.nextReference[namePrefix]++;
            serializedValue.ReferenceNames.Add(referenceName);

            return(new IkonReference(referenceName));
        }
Пример #6
0
        public static IEnumerable <Tuple <PointF, Color> > StarsOf(IkonBaseObject previewData)
        {
            var starData = previewData.To <IkonComposite>()[StarsKey].To <IkonArray>();

            foreach (var item in starData.Select(x => x.To <IkonComposite>()))
            {
                var colorData = item[ColorKey].To <int[]>();
                yield return(new Tuple <PointF, Color>(
                                 new PointF(
                                     item["x"].To <float>(),
                                     -item["y"].To <float>()
                                     ),
                                 Color.FromArgb(colorData[0], colorData[1], colorData[2])
                                 ));
            }
        }
Пример #7
0
        public void NewSave(string title, IkonBaseObject previewData)
        {
            if (previewData == null)
            {
                throw new ArgumentNullException(nameof(previewData));
            }

            string fileName = SaveNamePrefix + this.nextSaveNumber + "." + SaveNameExtension;

            var saveFile = new FileInfo(this.saveFolderPath + fileName);

            saveFile.Directory.Create();

            save(saveFile, title, previewData);

            this.nextSaveNumber++;
        }
Пример #8
0
        public void OverwriteSave(SavedGameInfo savedGameData, string title, IkonBaseObject previewData)
        {
            if (savedGameData == null)
            {
                throw new ArgumentNullException(nameof(savedGameData));
            }
            if (title == null)
            {
                throw new ArgumentNullException(nameof(title));
            }
            if (previewData == null)
            {
                throw new ArgumentNullException(nameof(previewData));
            }

            save(savedGameData.FileInfo, title, previewData);
        }
Пример #9
0
        private void save(FileInfo saveFile, string title, IkonBaseObject previewData)
        {
            using (var output = new StreamWriter(saveFile.Create()))
            {
                var version     = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
                var versionData = new IkonArray();
                versionData.Add(new IkonInteger(version.Major));
                versionData.Add(new IkonInteger(version.Minor));
                versionData.Add(new IkonInteger(version.Revision));
                versionData.Add(new IkonInteger(version.Build));

                var writer = new IkadnWriter(output);
                versionData.Compose(writer);
                new IkonText(title).Compose(writer);
                previewData.Compose(writer);
                gameController.Save().Compose(writer);
            }
        }
Пример #10
0
        public object Deserialize(IkonBaseObject rawData, LoadSession session)
        {
            var loadedValue = this.constructor();
            var saveData    = rawData.To <IkonComposite>();

            foreach (var property in this.properties.Where(x => x.Attribute.DoSave))
            {
                if (saveData.Keys.Contains(property.Name))
                {
                    property.Deserialize(loadedValue, saveData[property.Name].To <IkonBaseObject>(), session);
                }
                else
                {
                    property.SetNull(loadedValue);
                }
            }

            return(loadedValue);
        }
Пример #11
0
        public T Load <T>(IkonBaseObject data)
        {
            if (deserialized.ContainsKey(data))
            {
                return((T)deserialized[data]);
            }

            if (this.Deindexer.HasType(typeof(T)))
            {
                return(this.Deindexer.Get <T>(data.To <int>()));
            }

            var expert = this.expertGetter(typeof(T));
            var result = expert.Deserialize(data, this);

            if (postLoadActions.ContainsKey(typeof(T)))
            {
                postLoadActions[typeof(T)](result);
            }
            this.deserialized[data] = result;

            return((T)result);
        }
Пример #12
0
        public T Load <T>(IkonBaseObject data)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            if (deserialized.ContainsKey(data))
            {
                return((T)deserialized[data]);
            }

            if (this.Deindexer.HasType(typeof(T)))
            {
                return(this.Deindexer.Get <T>(data.To <string>()));
            }

            var expert = this.expertGetter(typeof(T));
            var result = expert.Deserialize(data, this);

            this.deserialized[data] = result;

            return((T)result);
        }
Пример #13
0
 public object Deserialize(IkonBaseObject data, LoadSession session)
 {
     return(this.deserializeChildrenInvoker(this, data, session));
 }
Пример #14
0
 public static int TurnOf(IkonBaseObject previewData)
 {
     return(previewData.To <IkonComposite>()[TurnKey].To <int>());
 }
Пример #15
0
 public static bool IsAutosave(IkonBaseObject previewData)
 {
     return(previewData.To <IkonComposite>().Keys.Contains(AutosaveKey));
 }
Пример #16
0
 public void OverwriteSave(SavedGameInfo savedGameData, string title, IkonBaseObject previewData)
 {
     save(savedGameData.FileInfo, title, previewData);
 }
Пример #17
0
 public void Deserialize(object parentObject, IkonBaseObject rawData, LoadSession session)
 {
     this.deserializer(parentObject, rawData, session);
 }