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;
}
}