示例#1
0
        public void Save()
        {
            lock (_ioSync)
            {
                if (!_isDirty)
                {
                    return;
                }
                try
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(FilePath));
                    using (var fs = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.Write))
                    {
                        //using (var gs = new GZipStream(fs, CompressionMode.Compress))
                        {
                            using (var sr = new StreamWriter(fs))
                            {
                                //BlockColumnMeta[,] blocks = (BlockColumnMeta[,])Blocks.Clone();

                                var json = MiMapJsonConvert.SerializeObject(Blocks);
                                sr.Write(json);
                            }
                        }
                    }
                    _isDirty = false;
                }
                catch (Exception ex)
                {
                    Log.Error("Exception saving region meta for " + Position, ex);
                }
            }
        }
示例#2
0
        private static MiMapConfig GetConfig()
        {
            try
            {
                Directory.CreateDirectory(BasePath);

                var configPath = Path.Combine(BasePath, "config.json");
                if (!File.Exists(configPath))
                {
                    // Create config file
                    var newConfig     = new MiMapConfig();
                    var newConfigJson = MiMapJsonConvert.SerializeObject(newConfig, true);
                    File.WriteAllText(configPath, newConfigJson);
                    Log.InfoFormat("Generating Config...");
                    return(ProcessConfig(newConfig));
                }

                var json   = File.ReadAllText(configPath);
                var config = MiMapJsonConvert.DeserializeObject <MiMapConfig>(json);

                Log.InfoFormat("Config Loaded from {0}", configPath);

                return(ProcessConfig(config));
            }
            catch (Exception ex)
            {
                Log.InfoFormat("Exception while loading MiMap Config:\n{0}", ex);
                throw;
            }
        }
示例#3
0
        private void Load()
        {
            lock (_ioSync)
            {
                if (File.Exists(FilePath))
                {
                    try
                    {
                        using (var fs = new FileStream(FilePath, FileMode.Open, FileAccess.ReadWrite))
                        {
                            //using (var gs = new GZipStream(fs, CompressionMode.Decompress))
                            {
                                using (var sr = new StreamReader(fs))
                                {
                                    var json        = sr.ReadToEnd();
                                    var blocksArray = MiMapJsonConvert.DeserializeObject <Dictionary <int, Dictionary <int, BlockColumnMeta> > >(json);

                                    Blocks = blocksArray;
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error("Exception loading region meta for " + Position, ex);
                        //Blocks = new BlockColumnMeta[Size, Size];
                    }
                }
            }
        }
示例#4
0
 internal void ConfigureHttp(IAppBuilder app)
 {
     app.Map("/widgets/config.json", builder =>
     {
         builder.Use(
             (context, next) => context.Response.WriteAsync(MiMapJsonConvert.SerializeObject(Widgets.ToArray())));
     });
 }
示例#5
0
        private void UpdateMeta()
        {
            Meta.LastUpdate = DateTime.UtcNow;
            Meta.Size       = new Size(BlockBounds.Width, BlockBounds.Height);
            Meta.Bounds     = BlockBounds;

            var json = MiMapJsonConvert.SerializeObject(Meta);

            File.WriteAllText(_metaPath, json);
        }
示例#6
0
            public ILayerRenderer Create(MiMapRendererConfig config)
            {
                if (ConfigType == null)
                {
                    return(Activator.CreateInstance(RendererType) as ILayerRenderer);
                }
                else
                {
                    var c = MiMapJsonConvert.DeserializeObject(MiMapJsonConvert.SerializeObject(config), ConfigType);

                    return(Activator.CreateInstance(RendererType, c) as ILayerRenderer);
                }
            }
示例#7
0
        private void InitLevelRunners()
        {
            File.WriteAllText(Path.Combine(Config.TilesDirectory, "levels.json"), MiMapJsonConvert.SerializeObject(Config.Levels));

            foreach (var levelConfig in MiMapManager.Config.Levels)
            {
                var levelMap = MiMapManager.GetLevelMap(levelConfig.LevelId);
                if (levelMap != null)
                {
                    var runner = new LevelRunner(Context.Server, levelMap);
                    _levelRunners.Add(levelConfig.LevelId, runner);
                }
            }
        }
示例#8
0
 public void UpdateBlockColumn(BlockColumnMeta column)
 {
     _updates.Enqueue(MiMapJsonConvert.DeserializeObject <BlockColumnMeta>(MiMapJsonConvert.SerializeObject(column)));
 }
示例#9
0
 public static int GetPacketId(this string rawPacketJson)
 {
     return(MiMapJsonConvert.DeserializeObject <NullPacket>(rawPacketJson).Id);
 }
示例#10
0
 public static string Encode <TPacket>(this TPacket packet) where TPacket : IPacket
 {
     return(MiMapJsonConvert.SerializeObject(packet));
 }
示例#11
0
 public static TPacket Decode <TPacket>(this string rawPacket) where TPacket : class, IPacket
 {
     return(MiMapJsonConvert.DeserializeObject <TPacket>(rawPacket));
 }
示例#12
0
 protected virtual void OnInput(string json)
 {
     Log.WarnFormat("Unhandled Widget Input for type {0} with ID {1}:\n\t{2}", GetType().Name, ElementId, MiMapJsonConvert.SerializeObject(this));
 }