using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 游戏数据管理 /// public class GameDateManager { // /// 单键 /// private static GameDateManager m_Instance; /// /// 单键 /// public static GameDateManager Instance { get { if (m_Instance == null) { m_Instance = new GameDateManager(); } return m_Instance; } } /// /// 游戏开始时间 /// private float _gameStartTime = 0; /// /// 游戏时间 /// public void SetGameTime(float runTime) { _gameStartTime = runTime; } /// /// 获取游戏时间 /// /// public float GetGameTime() { return _gameStartTime; } /// /// 玩家死亡人数 /// public int PlayerDeathNumber { get; set; } /// /// 玩家受击次数 /// public int PlayerBehitCount { get; set; } /// /// 指定玩家 /// public bool HaveAppointPlayer { get; set; } /// /// 对战信息 /// public VSHeroInfo VsInfo { get; set; } /// /// 指定玩家 /// public List appointPlayers = new List(); public bool isMultiRoom = false; /// /// 检测是否有指定玩家 /// /// public void CheckHaveAppointPlayers(List heros) { for (int i = 0; i < heros.Count; i++) { if (heros[i] == null) { continue; } if (appointPlayers.Contains(int.Parse(heros[i].typeId))) { HaveAppointPlayer = true; return; } } HaveAppointPlayer = false; } /// /// 玩家总连击次数 /// public int PlayerComboCount { get; set; } /// /// 玩家使用必杀技的次数 /// public int PlayerUseSkillCount { get; set; } public BattleDefine.EBattleSceneType lastBattleType = BattleDefine.EBattleSceneType.EBattleType_Default; public bool IsNotBattleScene() { if(lastBattleType == BattleDefine.EBattleSceneType.EBattleType_Safe) { return true; } else if (lastBattleType == BattleDefine.EBattleSceneType.EBattleType_YanJiuSuo) { return true; } else if (lastBattleType == BattleDefine.EBattleSceneType.EBattleType_HuanLingShi) { return true; } return false; } /// /// 清理 /// public void Clear() { _gameStartTime = 0; PlayerDeathNumber = 0; PlayerBehitCount = 0; PlayerComboCount = 0; PlayerUseSkillCount = 0; GateStar = 3; } /// /// 前往关卡 /// public bool gotoGate = false; /// /// 大陆 ID /// public int LandID { get; set; } /// /// 关卡章节 /// public int ZoneID { get; set; } /// /// 即将前往的 关卡 ID /// public int GateID { get; set; } /// /// 前往下一张地图之前的ID /// public int OldGateID { get; set; } /// /// 角色地图 出生点(场景切换器) /// public int CreateMapSwitchPoint { get; set; } /// /// 是否 传送门 返回传送点 /// public bool IsBackDoor { get; set; } /// /// 回城 /// public bool isBackTicket { get; set; } /// /// 死亡回城 /// public bool isBackDie = false; public int CreateMapId { get; set; } /// /// 返回 回城点的位置 /// public Vector3 CreatePosition { get; set; } /// /// 世界BOSS ID /// public int WordBossID { get; set; } /// /// 关卡难度 /// public int GateDifficulty { get; set; } /// /// 关卡星级 /// public int GateStar = 3; /// /// 当前无尽任务进度序号 /// public int EndlessIndex = 1; /// /// 关卡数据 /// public UIVO_Gate.SelectGateVo GateVO = null; /// /// 当前选中的英雄龙骨资源名称 /// public string HeroDragonBonesName { get; set; } /// /// 通关条件是否OK /// /// 通关条件类型 /// 1.通关耗时不超过n秒, 参数: n秒 /// 2.无人阵亡下通关, 参数: 无 /// 3.唤灵师血量高于n%, 参数: n /// 4.装备指定言灵,参数: 言灵TypeId /// 5.至少装备n个指定x属性的言灵,参数: 数量n,元素类型s(见言灵表weaktype) /// 6.开启关卡内所有宝箱, 参数: 无 default(0) /// 参数 /// public bool GameGateOK(sm_gate_passCondition condition) { int conditionType = condition.conditionType; List iParas = condition.GetParas(); int val1 = 0; int val2 = 0; if (iParas.Count >= 2) { val1 = iParas[0]; val2 = iParas[1]; } else if (iParas.Count >= 1) { val1 = iParas[0]; } switch (conditionType) { case 1:// 通关耗时不超过n秒, 参数: n秒 { if (GetGameTime() <= val1) { return true; } } break; case 2:// 无人阵亡下通关, 参数: 无 { if (PlayerDeathNumber <= val1) { return true; } } break; case 3:// 唤灵师血量高于n%, 参数: n Role role = RoleManager.Instance.GetPlayer(); int hpVal = 100; if (role != null) { hpVal = role.mData.HP_Final * 100 / role.mData.MaxHP_Final; } if (hpVal >= val1) { return true; } break; case 4:// 装备指定言灵,参数: 言灵TypeId { return UserProxy.Instance.player.heroTeamConfig.CurTeam.IsWearingXYanling(val1); } break; case 5:// 至少装备n个指定x属性的言灵,参数: 数量n,元素类型s(见言灵表weaktype) { return UserProxy.Instance.player.heroTeamConfig.CurTeam.IsWearingN_XProperty_Yanling(val1, val2); } break; case 6:// 开启关卡内所有宝箱, 参数: 无 default(0) { return SceneCmptManager.Instance.IsAllTreasureBoxFinish(); } break; } return false; } }