using UnityEngine; using System.Collections; using System.Collections.Generic; public enum GameMode { GameMode_Normal = 0, } public enum LevelWinCondition { LevelWinCondition_LastField_Or_HaveNoEnemy = 0, LevelWinCondition_LastField = 1, LevelWinCondition_HaveNoEnemy = 2, } //自动转场类型 public enum AutoInterludeType { AutoInterlude_None = 0, //什么都不做 AutoInterlude_SetToNextField = 1, //相机瞬切到下一个战场,玩家和敌人从战场左右两边进入 AutoInterlude_RunToNextField = 2, //相机跟踪玩家,玩家自动跑到下一个战场等待战斗开始 AutoInterlude_MoveCameraToNextField_Normal = 3, //相机移动(平移)到下一个战场,玩家和敌人从战场左右两边进入 AutoInterlude_MoveCameraToNextField_Jump = 4, //相机移动(跳跃)到下一个战场,玩家和敌人从战场左右两边进入 AutoInterlude_CameraAnimationToNextField = 5, //自动过渡到动画起始点,播放指定相机动画,并自动过渡到战场相机,玩家和敌人从战场左右两边进入 } /// /// 战斗胜利条件 /// public enum BattleWinCondition { BattleWinCondition_All_Die = 0, //所有敌人死亡 BattleWinCondition_Life_Less = 1, //敌人血量低于 BattleWinCondition_Timeout = 2, //时间到 } /// /// 战斗失败的条件 /// public enum BattleLoseCondition { BattleLoseCondition_All_Die = 0, //所有英雄死亡 BattleLoseCondition_Life_Less = 1, //敌人血量低于 BattleLoseCondition_Timeout = 2, //时间到 } public class AutoInterludeInfo { public AutoInterludeType type; JSONObject parameters; public int GetN (int idx = 0) { if (parameters == null) return 0; if (parameters.IsArray && parameters.Count > idx + 1 && parameters [idx].IsNumber) return (int)parameters [idx].n; if (parameters.isContainer && parameters.list.Count > idx + 1 && parameters.list [idx].IsNumber) return (int)parameters.list [idx].n; return 0; } public int GetN (string paramName) { if (parameters == null || !parameters.isContainer || !parameters.HasField (paramName) || !parameters [paramName].IsNumber) return 0; return (int)parameters [paramName].n; } public string GetStr (int idx = 0) { if (parameters == null) return string.Empty; if (parameters.IsArray && parameters.Count > idx + 1 && parameters [idx].IsString) return parameters [idx].str; if (parameters.isContainer && parameters.list.Count > idx + 1 && parameters.list [idx].IsString) return parameters.list [idx].str; return string.Empty; } public string GetStr (string paramName) { if (parameters == null || !parameters.isContainer || !parameters.HasField (paramName) || !parameters [paramName].IsString) return string.Empty; return parameters [paramName].str; } public float GetFloat (string paramName) { if (parameters == null || !parameters.isContainer || !parameters.HasField (paramName) || !parameters [paramName].IsString) return 0; return parameters [paramName].ParseF (); } public Vector3 GetVector3 (int idx = 0) { if (parameters == null) return Vector3.zero; if (parameters.IsArray && parameters.Count > idx + 1 && parameters [idx].IsArray) return JSONObject.ParseVector3FromJson (parameters [idx]); if (parameters.isContainer && parameters.list.Count > idx + 1 && parameters.list [idx].IsArray) return JSONObject.ParseVector3FromJson (parameters.list [idx]); return Vector3.zero; } public Vector3 GetVector3 (string paramName) { if (parameters == null || !parameters.isContainer || !parameters.HasField (paramName) || !parameters [paramName].IsArray) return Vector3.zero; return JSONObject.ParseVector3FromJson (parameters [paramName]); } public Vector2 GetVector2 (int idx = 0) { if (parameters == null) return Vector2.zero; if (parameters.IsArray && parameters.Count > idx + 1 && parameters [idx].IsArray) return JSONObject.ParseVector2FromJson (parameters [idx]); if (parameters.isContainer && parameters.list.Count > idx + 1 && parameters.list [idx].IsArray) return JSONObject.ParseVector2FromJson (parameters.list [idx]); return Vector2.zero; } public AutoInterludeInfo (AutoInterludeType interludeType) { type = interludeType; } } public class MapItemData { public int id; public string name; public string levelname; public string description; public string bgmusic; public LevelItem[] battles; //战斗信息 public int cameraGroup = -1; public GameMode gameMode; public MapItemData(int mapId,LevelItem[] levelItems) { Dictionary dic = ConfigMgr.Instance.getLine(mapId, Config.MapCfgName); if (dic != null) { this.id = mapId; this.name = dic["Name"]; this.levelname = dic["LevelName"]; if (dic.ContainsKey("BgmMusic")) bgmusic = dic["BgmMusic"]; else bgmusic = ""; if (dic.ContainsKey("Description")) description = dic["Description"]; else description = string.Empty; battles = levelItems; gameMode = GameMode.GameMode_Normal; } else { DebugHelper.LogError(string.Format("{0} map配置不存在", mapId)); } } }