using System; using System.Collections.Generic; using ET; namespace GFGGame { public class LeagueDataManager : SingletonBase { public int Type = 2;// 1:已经加入军团 2:未加入军团 public int MaxFinishType { get { return GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueSkillMaxType); } } public int MaxFinishLayer { get { return GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueSkillMaxLayer); } } public LeagueData LeagueData;//联盟信息 public int HallLevel { get { return (int)GetNumeriValue(LeagueNumericType.HallLevel); } } public int HotelLevel { get { return (int)GetNumeriValue(LeagueNumericType.HotelLevel); } } public int StoreLevel { get { return (int)GetNumeriValue(LeagueNumericType.StoreLevel); } } public Dictionary LeagueNumber = new Dictionary();//联盟数值,LeagueNumericType public Dictionary ListDatas = new Dictionary();//联盟列表 public Dictionary ListApplyDatas = new Dictionary();//联盟申请列表 public List ListLogDatas = new List();//日志数据 public Dictionary ListAnswerDatas = new Dictionary();//答题数据 public void Clear() { Type = 2; ListDatas.Clear(); LeagueData = null; ListApplyDatas.Clear(); ListLogDatas.Clear(); } public void SetNumeric(int type, long value) { LeagueNumber[type] = value; } public long GetNumeriValue(int type) { if (LeagueNumber.TryGetValue(type, out long value)) { return value; } return 0; } public string GetMemberTitle(int pos) { string title = ""; switch (pos) { case LeaguePos.Owner: title = "社长"; break; case LeaguePos.SubOwner: title = "副社长"; break; case LeaguePos.Flower: title = "御史"; break; case LeaguePos.Member: title = "成员"; break; } return title; } public int GetMyPos() { if (LeagueDataManager.Instance.LeagueData.LeagueMemberDatas.TryGetValue(RoleDataManager.roleId, out LeagueMemberData memberData)) { return memberData.Pos; } return LeaguePos.Member; } // //判断一个玩家是否是会长副会长 // public bool CheckPlayerIsLeader() // { // } /// /// 根据祈福类型获取祈福次数 /// /// public int GetPrayTimesByType(int prayType) { int curCount = 0; switch (prayType) { case LeaguePrayType.First: curCount = RoleDataManager.LeagueType1PrayTimes; break; case LeaguePrayType.Second: curCount = RoleDataManager.LeagueType2PrayTimes; break; case LeaguePrayType.Third: curCount = RoleDataManager.LeagueType3PrayTimes; break; } return curCount; } public int GetAllSkillScore(int scoreType) { int score = 0; foreach (int key in SkillDataManager.Instance.LeagueSkillScoreDatas.Keys) { score += SkillDataManager.Instance.LeagueSkillScoreDatas[key][scoreType]; } return score; } public int GetSkillScoreByType(int skillType, int scoreType) { int score = 0; if (!SkillDataManager.Instance.LeagueSkillScoreDatas.ContainsKey(skillType)) return score; return SkillDataManager.Instance.LeagueSkillScoreDatas[skillType][scoreType]; } //检测一个技能是否激活 public bool CheckIsSkillActive(int skillType, int skillId) { if (!SkillDataManager.Instance.LeagueSkillDatas.ContainsKey(skillType)) return false; return SkillDataManager.Instance.LeagueSkillDatas[skillType].IndexOf(skillId) >= 0; } //根据技能类型获取该类型进度 public double GetSkillProgressByType(int skillType) { LeagueSkillCountCfg skillCountCfg = LeagueSkillCountCfgArray.Instance.GetCfg(skillType); // int maxFinishType = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueSkillMaxType); if (skillCountCfg.type - MaxFinishType <= 0) return 100; if (skillCountCfg.type - MaxFinishType > 1) return 0; // int layer = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueSkillMaxLayer); if (MaxFinishLayer == 0) return 0; List firstSkillCfgs = LeagueSkillCfgArray.Instance.GetCfgsBytypeAndlayer(skillType, 1); int startId = firstSkillCfgs[0].id; List curSkillCfgs = LeagueSkillCfgArray.Instance.GetCfgsBytypeAndlayer(skillType, MaxFinishLayer + 1); int curId = curSkillCfgs[0].id; for (int i = 0; i < curSkillCfgs.Count; i++) { if (SkillDataManager.Instance.LeagueSkillDatas[skillType].IndexOf(curSkillCfgs[i].id) < 0) { curId = curSkillCfgs[i].id; break; } } float count = curId - startId; float maxCount = skillCountCfg.skillCount; return Math.Round(count / maxCount * 100, 1); ; } } }