using DeepCore; using DeepCore.Geometry; using DeepCore.IO; using System; namespace DeepMMO.Server.AreaManager { public class MapTemplateData : ISerializable { static MapTemplateData() { Parser.RegistParser(new SceneNextLinkParser()); } /**场景ID */ public int id; /**场景名称 */ public string name; /**战斗地图ID */ public int zone_template_id; /**重置时间 */ public string reset_time; /**复活地图ID */ public int revival_map_id; /**场景小地图 */ public string small_map; /**场景连接 */ public ArrayList connect; /**人数软上限 */ public int full_players; /**人数硬上限 */ public int max_players; /**开放策略 */ public int open_rule; /**开放日 */ public string open_time; /**结束后倒计时时间 */ public int countdown_time_sec; /**是否为公共地图 */ public bool is_public; /// /// 是否允许主动切线. /// public int is_changeline; public override string ToString() { return string.Format("{0}({1})", name, id); } } public class SceneNextLink : ISerializable { public string from_flag_name; public Vector3 from_flag_pos; public int to_map_id; public string to_flag_name; public Vector3 to_flag_pos; public override string ToString() { return $"from_flag_name={from_flag_name} to_map_id={to_map_id} to_flag_name={to_flag_name}"; } } public class SceneNextLinkParser : ListParser { public SceneNextLinkParser() : base(';') { } // flagName, sceneID, flagName ; flagName, sceneID, flagName public override SceneNextLink StringToElement(string text) { try { var kvc = text.Split(','); var ret = new SceneNextLink(); ret.from_flag_name = kvc[0]; ret.to_map_id = int.Parse(kvc[1]); ret.to_flag_name = kvc[2]; return ret; } catch (Exception err) { throw new Exception("Parse SceneNextLink Error : " + text + " : " + err.Message, err); } } } }