MapTemplateData.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. 
  2. using DeepCore;
  3. using DeepCore.Geometry;
  4. using DeepCore.IO;
  5. using System;
  6. namespace DeepMMO.Server.AreaManager
  7. {
  8. public class MapTemplateData : ISerializable
  9. {
  10. static MapTemplateData()
  11. {
  12. Parser.RegistParser(new SceneNextLinkParser());
  13. }
  14. /**<summary>场景ID<summary/> */
  15. public int id;
  16. /**<summary>场景名称<summary/> */
  17. public string name;
  18. /**<summary>战斗地图ID<summary/> */
  19. public int zone_template_id;
  20. /**<summary>重置时间<summary/> */
  21. public string reset_time;
  22. /**<summary>复活地图ID<summary/> */
  23. public int revival_map_id;
  24. /**<summary>场景小地图<summary/> */
  25. public string small_map;
  26. /**<summary>场景连接<summary/> */
  27. public ArrayList<SceneNextLink> connect;
  28. /**<summary>人数软上限<summary/> */
  29. public int full_players;
  30. /**<summary>人数硬上限<summary/> */
  31. public int max_players;
  32. /**<summary>开放策略<summary/> */
  33. public int open_rule;
  34. /**<summary>开放日<summary/> */
  35. public string open_time;
  36. /**<summary>结束后倒计时时间<summary/> */
  37. public int countdown_time_sec;
  38. /**<summary>是否为公共地图<summary/> */
  39. public bool is_public;
  40. /// <summary>
  41. /// 是否允许主动切线.
  42. /// </summary>
  43. public int is_changeline;
  44. public override string ToString()
  45. {
  46. return string.Format("{0}({1})", name, id);
  47. }
  48. }
  49. public class SceneNextLink : ISerializable
  50. {
  51. public string from_flag_name;
  52. public Vector3 from_flag_pos;
  53. public int to_map_id;
  54. public string to_flag_name;
  55. public Vector3 to_flag_pos;
  56. public override string ToString()
  57. {
  58. return $"from_flag_name={from_flag_name} to_map_id={to_map_id} to_flag_name={to_flag_name}";
  59. }
  60. }
  61. public class SceneNextLinkParser : ListParser<SceneNextLink>
  62. {
  63. public SceneNextLinkParser() : base(';') { }
  64. // flagName, sceneID, flagName ; flagName, sceneID, flagName
  65. public override SceneNextLink StringToElement(string text)
  66. {
  67. try
  68. {
  69. var kvc = text.Split(',');
  70. var ret = new SceneNextLink();
  71. ret.from_flag_name = kvc[0];
  72. ret.to_map_id = int.Parse(kvc[1]);
  73. ret.to_flag_name = kvc[2];
  74. return ret;
  75. }
  76. catch (Exception err)
  77. {
  78. throw new Exception("Parse SceneNextLink Error : " + text + " : " + err.Message, err);
  79. }
  80. }
  81. }
  82. }