Exemplo n.º 1
0
        public StoreSaveState Load(ResourceRegistry resourceRegistry, FactoryRegistry factoryRegistry, ModifierRegistry modiferRegistry)
        {
            string         path    = string.Format(@"{0}{1}", directoryPath, FILE_NAME);
            StoreSaveState storage = null;

            try
            {
                using (FileStream fileStream = new FileStream(path, FileMode.Open))
                {
                    using (StreamReader reader = new StreamReader(fileStream))
                    {
                        storage = JsonConvert.DeserializeObject <StoreSaveState>(reader.ReadToEnd());
                    }
                }
            }
            catch (FileNotFoundException)
            {
                throw new FileNotFoundException(string.Format("An existing save file could not be found to load at: {0}", path));
            }

            ResourceCheckpoint checkpoint = new ResourceCheckpoint(storage.ResourceCheckpoint.CheckpointTimeUTC,
                                                                   storage.ResourceCheckpoint.ResourceAmounts,
                                                                   resourceRegistry);

            FactoryManager  factoryManager  = new FactoryManager(storage.FactoryManager.FactoryAmounts, factoryRegistry);
            ModifierManager modifierManager = new ModifierManager(storage.ModiferManager.ModifierDurations, modiferRegistry);

            return(new StoreSaveState()
            {
                ResourceCheckpoint = checkpoint, FactoryManager = factoryManager, ModiferManager = modifierManager
            });
        }
Exemplo n.º 2
0
        public void Save(StoreSaveState saveState)
        {
            string path = string.Format(@"{0}{1}", directoryPath, FILE_NAME);

            using (FileStream fileStream = new FileStream(path, FileMode.Create))
            {
                using (StreamWriter writer = new StreamWriter(fileStream))
                {
                    writer.Write(JsonConvert.SerializeObject(saveState, Formatting.Indented));
                }
            }
        }