using System; using System.Collections.Generic; using ET; namespace GFGGame { public class LastQuestionResult { public static int SomeBodyRight = 1;//1:有人答对题目 public static int NobodyRight = 2;// 2:无人答对 public static int Ending = 3;// 3:答题结束 } public class LeagueJoinType { public static int Join = 1;//1:已经加入军团 public static int UnJoin = 2;//1:未加入军团 } public class LeagueDataManager : SingletonBase { public int Type = 2;// 1:已经加入军团 2:未加入军团 public int MaxFinishType { get { return GetSkillCurType(); } } public int CurLayer { get { return Math.Max(GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueSkillMaxLayer), 1); } } 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 LeagueLastAnswerRoleData LastAnswerRoleData = new LeagueLastAnswerRoleData();//上题回答数据 public Dictionary ListAnsweringDatas = new Dictionary();//当前答题玩家数据,roleId,答题数量。 public Dictionary> ListAnswerRankDatas = new Dictionary>();//答题排行榜数据,int:type//1:周排行 2:上周排行 public void Clear() { Type = LeagueJoinType.UnJoin; ListDatas.Clear(); LeagueData = null; ListApplyDatas.Clear(); ListLogDatas.Clear(); ListAnsweringDatas.Clear(); LeagueNumber.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 == null) { return LeaguePos.Member; } if (LeagueDataManager.Instance.LeagueData.LeagueMemberDatas.TryGetValue(RoleDataManager.roleId, out LeagueMemberData memberData)) { return memberData.Pos; } return LeaguePos.Member; } public string GetMyLeagueName() { if (LeagueDataManager.Instance.LeagueData == null) { return ""; } return LeagueDataManager.Instance.LeagueData.Name; } // //判断一个玩家是否是会长副会长 // 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 OtherRoleInfoData GetMemberRoleInfo(long roleId) { LeagueData.LeagueMemberDatas.TryGetValue(roleId, out LeagueMemberData value); if (value == null) return null; return value.RoleInfo; } //输入属性类型,获取联盟技能该属性加成总值 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; if (!SkillDataManager.Instance.LeagueSkillScoreDatas[skillType].ContainsKey(scoreType)) 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; } private int GetSkillCurType() { LeagueSkillCountCfg[] skillCountCfgs = LeagueSkillCountCfgArray.Instance.dataArray; for (int i = 0; i < skillCountCfgs.Length; i++) { if (GetSkillProgressByType(skillCountCfgs[i].type) < 100) return skillCountCfgs[i].type - 1; } return skillCountCfgs[skillCountCfgs.Length - 1].type; } //根据技能类型获取该类型进度 public double GetSkillProgressByType(int skillType) { LeagueSkillCountCfg skillCountCfg = LeagueSkillCountCfgArray.Instance.GetCfg(skillType); // if (skillCountCfg.type - CurType < 0) return 100; // if (skillCountCfg.type - CurType > 0) return 0; float count = !SkillDataManager.Instance.LeagueSkillDatas.ContainsKey(skillType) ? 0 : SkillDataManager.Instance.LeagueSkillDatas[skillType].Count; float maxCount = skillCountCfg.skillCount; return Math.Round(count / maxCount * 100, 2); ; } //获取联盟礼包领取数据 public List GetGiftGetDatas() { List getDatas = new List(); for (int i = 0; i < LeagueWelfareCfgArray.Instance.dataArray.Length; i++) { LeagueWelfareCfg welfareCfg = LeagueWelfareCfgArray.Instance.dataArray[i]; bool isBuy = false; bool isGet = false; switch (welfareCfg.type) { case LeagueWelfareType.Day: isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareDay) == 1; isGet = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueWelfareDay) == 1; break; case LeagueWelfareType.Week: isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareWeek) == 1; isGet = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueWelfareWeek) == 1; break; case LeagueWelfareType.SuperWeek: isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareSuperWeek) == 1; isGet = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueWelfareSuperWeek) == 1; break; case LeagueWelfareType.SuperDay: isBuy = GetNumeriValue(LeagueNumericType.LeagueWelfareSuperDay) == 1; isGet = GameGlobal.myNumericComponent.GetAsInt(NumericType.LeagueWelfareSuperDay) == 1; break; } // ET.Log.Debug("isBuy:" + isBuy); if (isBuy) { LeagueGiftGetData giftGetData = new LeagueGiftGetData(); giftGetData.Type = welfareCfg.type; giftGetData.IsGet = isGet; giftGetData.GiftCfg = welfareCfg; getDatas.Add(giftGetData); } } return getDatas; } public List GetGiftBuyDatas() { List giftBuyDatas = new List(); for (int i = 0; i < LeagueWelfareCfgArray.Instance.dataArray.Length; i++) { LeagueWelfareCfg welfareCfg = LeagueWelfareCfgArray.Instance.dataArray[i]; int buyCount = 0; long endTime = 0; switch (welfareCfg.type) { case LeagueWelfareType.Day: buyCount = (int)GetNumeriValue(LeagueNumericType.LeagueWelfareDay); break; case LeagueWelfareType.Week: buyCount = (int)GetNumeriValue(LeagueNumericType.LeagueWelfareWeek); endTime = GetNumeriValue(LeagueNumericType.LeagueWelfareWeekEndTime); break; case LeagueWelfareType.SuperWeek: buyCount = (int)GetNumeriValue(LeagueNumericType.LeagueWelfareSuperWeek); endTime = GetNumeriValue(LeagueNumericType.LeagueWelfareSuperWeekEndTime); break; case LeagueWelfareType.SuperDay: buyCount = (int)GetNumeriValue(LeagueNumericType.LeagueWelfareSuperDay); break; } LeagueGiftBuyData giftBuyData = new LeagueGiftBuyData(); giftBuyData.Type = welfareCfg.type; giftBuyData.BuyCount = buyCount; giftBuyData.EndTime = endTime; giftBuyData.GiftCfg = welfareCfg; giftBuyDatas.Add(giftBuyData); } return giftBuyDatas; } } }