Exemplo n.º 1
0
        public static byte[] Serialize(object obj)
        {
            var cfg = (Config)obj;

            using (var m = new MemoryStream())
                using (var w = new BinaryWriter(m))
                {
                    // write map
                    byte[] map_data = Map.Serialize(cfg.map);
                    w.Write(map_data.Length);
                    w.Write(map_data);

                    // write money
                    w.Write(cfg.money);

                    // write turn time
                    w.Write(cfg.turnTime);

                    // write army infos
                    w.Write(cfg.armyInfos.Length);
                    foreach (var info in cfg.armyInfos)
                    {
                        w.Write((byte)info.color);
                        //w.Write((byte)info.type);
                        w.Write((byte)info.group);
                        w.Write(info.name);
                    }

                    // write playMode
                    w.Write((byte)cfg.playMode);

                    // write playMode config
                    switch (cfg.playMode)
                    {
                    case PlayMode.CAMPAIGN: break;

                    case PlayMode.SKIRMISH:
                    {
                        byte[] data = SkirmishConfig.Serialize(cfg.playModeConfig);
                        w.Write(data.Length);
                        w.Write(data);
                        break;
                    }

                    case PlayMode.ONLINE:
                    {
                        byte[] data = OnlineConfig.Serialize(cfg.playModeConfig);
                        w.Write(data.Length);
                        w.Write(data);
                        break;
                    }

                    case PlayMode.LAN:
                    {
                        byte[] data = LANConfig.Serialize(cfg.playModeConfig);
                        w.Write(data.Length);
                        w.Write(data);
                        break;
                    }
                    }

                    // write AI config
                    w.Write(cfg.aiConfig != null);
                    if (cfg.aiConfig != null)
                    {
                        byte[] data = AIConfig.Serialize(cfg.aiConfig);
                        w.Write(data.Length);
                        w.Write(data);
                    }

                    return(m.ToArray());
                }
        }