MapData.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. public enum GameMode
  5. {
  6. GameMode_Normal = 0,
  7. }
  8. public enum LevelWinCondition
  9. {
  10. LevelWinCondition_LastField_Or_HaveNoEnemy = 0,
  11. LevelWinCondition_LastField = 1,
  12. LevelWinCondition_HaveNoEnemy = 2,
  13. }
  14. //自动转场类型
  15. public enum AutoInterludeType
  16. {
  17. AutoInterlude_None = 0, //什么都不做
  18. AutoInterlude_SetToNextField = 1, //相机瞬切到下一个战场,玩家和敌人从战场左右两边进入
  19. AutoInterlude_RunToNextField = 2, //相机跟踪玩家,玩家自动跑到下一个战场等待战斗开始
  20. AutoInterlude_MoveCameraToNextField_Normal = 3, //相机移动(平移)到下一个战场,玩家和敌人从战场左右两边进入
  21. AutoInterlude_MoveCameraToNextField_Jump = 4, //相机移动(跳跃)到下一个战场,玩家和敌人从战场左右两边进入
  22. AutoInterlude_CameraAnimationToNextField = 5, //自动过渡到动画起始点,播放指定相机动画,并自动过渡到战场相机,玩家和敌人从战场左右两边进入
  23. }
  24. /// <summary>
  25. /// 战斗胜利条件
  26. /// </summary>
  27. public enum BattleWinCondition
  28. {
  29. BattleWinCondition_All_Die = 0, //所有敌人死亡
  30. BattleWinCondition_Life_Less = 1, //敌人血量低于
  31. BattleWinCondition_Timeout = 2, //时间到
  32. }
  33. /// <summary>
  34. /// 战斗失败的条件
  35. /// </summary>
  36. public enum BattleLoseCondition
  37. {
  38. BattleLoseCondition_All_Die = 0, //所有英雄死亡
  39. BattleLoseCondition_Life_Less = 1, //敌人血量低于
  40. BattleLoseCondition_Timeout = 2, //时间到
  41. }
  42. public class AutoInterludeInfo
  43. {
  44. public AutoInterludeType type;
  45. JSONObject parameters;
  46. public int GetN (int idx = 0)
  47. {
  48. if (parameters == null)
  49. return 0;
  50. if (parameters.IsArray && parameters.Count > idx + 1 && parameters [idx].IsNumber)
  51. return (int)parameters [idx].n;
  52. if (parameters.isContainer && parameters.list.Count > idx + 1 && parameters.list [idx].IsNumber)
  53. return (int)parameters.list [idx].n;
  54. return 0;
  55. }
  56. public int GetN (string paramName)
  57. {
  58. if (parameters == null || !parameters.isContainer || !parameters.HasField (paramName) || !parameters [paramName].IsNumber)
  59. return 0;
  60. return (int)parameters [paramName].n;
  61. }
  62. public string GetStr (int idx = 0)
  63. {
  64. if (parameters == null)
  65. return string.Empty;
  66. if (parameters.IsArray && parameters.Count > idx + 1 && parameters [idx].IsString)
  67. return parameters [idx].str;
  68. if (parameters.isContainer && parameters.list.Count > idx + 1 && parameters.list [idx].IsString)
  69. return parameters.list [idx].str;
  70. return string.Empty;
  71. }
  72. public string GetStr (string paramName)
  73. {
  74. if (parameters == null || !parameters.isContainer || !parameters.HasField (paramName) || !parameters [paramName].IsString)
  75. return string.Empty;
  76. return parameters [paramName].str;
  77. }
  78. public float GetFloat (string paramName)
  79. {
  80. if (parameters == null || !parameters.isContainer || !parameters.HasField (paramName) || !parameters [paramName].IsString)
  81. return 0;
  82. return parameters [paramName].ParseF ();
  83. }
  84. public Vector3 GetVector3 (int idx = 0)
  85. {
  86. if (parameters == null)
  87. return Vector3.zero;
  88. if (parameters.IsArray && parameters.Count > idx + 1 && parameters [idx].IsArray)
  89. return JSONObject.ParseVector3FromJson (parameters [idx]);
  90. if (parameters.isContainer && parameters.list.Count > idx + 1 && parameters.list [idx].IsArray)
  91. return JSONObject.ParseVector3FromJson (parameters.list [idx]);
  92. return Vector3.zero;
  93. }
  94. public Vector3 GetVector3 (string paramName)
  95. {
  96. if (parameters == null || !parameters.isContainer || !parameters.HasField (paramName) || !parameters [paramName].IsArray)
  97. return Vector3.zero;
  98. return JSONObject.ParseVector3FromJson (parameters [paramName]);
  99. }
  100. public Vector2 GetVector2 (int idx = 0)
  101. {
  102. if (parameters == null)
  103. return Vector2.zero;
  104. if (parameters.IsArray && parameters.Count > idx + 1 && parameters [idx].IsArray)
  105. return JSONObject.ParseVector2FromJson (parameters [idx]);
  106. if (parameters.isContainer && parameters.list.Count > idx + 1 && parameters.list [idx].IsArray)
  107. return JSONObject.ParseVector2FromJson (parameters.list [idx]);
  108. return Vector2.zero;
  109. }
  110. public AutoInterludeInfo (AutoInterludeType interludeType)
  111. {
  112. type = interludeType;
  113. }
  114. }
  115. public class MapItemData
  116. {
  117. public int id;
  118. public string name;
  119. public string levelname;
  120. public string description;
  121. public string bgmusic;
  122. public LevelItem[] battles; //战斗信息
  123. public int cameraGroup = -1;
  124. public GameMode gameMode;
  125. public MapItemData(int mapId,LevelItem[] levelItems)
  126. {
  127. Dictionary<string, string> dic = ConfigMgr.Instance.getLine(mapId, Config.MapCfgName);
  128. if (dic != null)
  129. {
  130. this.id = mapId;
  131. this.name = dic["Name"];
  132. this.levelname = dic["LevelName"];
  133. if (dic.ContainsKey("BgmMusic"))
  134. bgmusic = dic["BgmMusic"];
  135. else
  136. bgmusic = "";
  137. if (dic.ContainsKey("Description"))
  138. description = dic["Description"];
  139. else
  140. description = string.Empty;
  141. battles = levelItems;
  142. gameMode = GameMode.GameMode_Normal;
  143. }
  144. else
  145. {
  146. DebugHelper.LogError(string.Format("{0} map配置不存在", mapId));
  147. }
  148. }
  149. }