using System; using UnityEngine; using System.Collections; using System.Collections.Generic; /** 玩家仙盟相关信息缓存数据 */ public class PlayerFairyData { public bool HasFairy { get { if (fairy == null) return false; if (fairy.FamilyID == 0) return false; return true; } } public FairyData fairy = null; //自己的公会数据 public FairyMember mine = null; public event Action OnRefreshFairyInfo; public event Action OnRefreshFairyMine; //玩家在公会里的数据 private Dictionary memberDic = new Dictionary(); // 0-成员,1-精英,2-副盟主,3-盟主 public int leaderID; // // 精英 // public List elitePlayerIDList = new List(); // // 副盟主 // public List deputyLeaderPlayerIDList = new List(); public void OnRefreshGuildInfo(HA520_tagMCRoleFamilyInfo vNetData) { if (fairy == null) { fairy = new FairyData(); } fairy.FamilyID = (int)vNetData.FamilyID; fairy.FamilyName = UIHelper.ServerStringTrim(vNetData.FamilyName); fairy.FamilyLV = vNetData.FamilyLV; fairy.FamilyLVExp = (int)vNetData.FamilyLVExp; fairy.JoinReview = vNetData.JoinReview; fairy.JoinLVMin = vNetData.JoinLVMin; fairy.ServerID = (int)vNetData.ServerID; fairy.EmblemID = (int)vNetData.EmblemID; fairy.EmblemWord = vNetData.EmblemWord; fairy.totalFightPower = vNetData.FightPowerEx * Constants.ExpPointValue + vNetData.FightPower; fairy.Broadcast = vNetData.Broadcast; fairy.LeaderID = (int)vNetData.LeaderID; fairy.MemberCount = vNetData.MemberCount; mine = null; memberDic.Clear(); for (int i = 0; i < vNetData.MemberCount; i++) { FairyMember member = new FairyMember(); memberDic[(int)vNetData.MemberList[i].PlayerID] = member; member.PlayerID = (int)vNetData.MemberList[i].PlayerID; member.Name = vNetData.MemberList[i].Name; member.JoinTime = (int)vNetData.MemberList[i].JoinTime; member.FmLV = vNetData.MemberList[i].FmLV; member.LV = vNetData.MemberList[i].LV; member.Job = vNetData.MemberList[i].Job; member.RealmLV = vNetData.MemberList[i].RealmLV; member.Face = (int)vNetData.MemberList[i].Face; member.FacePic = (int)vNetData.MemberList[i].FacePic; member.TitleID = (int)vNetData.MemberList[i].TitleID; member.FightPower = vNetData.MemberList[i].FightPower + vNetData.MemberList[i].FightPowerEx * Constants.ExpPointValue; member.ServerID = (int)vNetData.MemberList[i].ServerID; member.ContribTotal = (int)vNetData.MemberList[i].ContribTotal; member.ContribDay = (int)vNetData.MemberList[i].ContribDay; member.DonateCntTotal = (int)vNetData.MemberList[i].DonateCntTotal; member.DonateCntDay = vNetData.MemberList[i].DonateCntDay; member.OffTime = (int)vNetData.MemberList[i].OffTime; if (member.PlayerID == PlayerDatas.Instance.baseData.PlayerID) { //自己 mine = member; OnRefreshFairyMine?.Invoke(); } // 0-成员,1-精英,2-副盟主,3-盟主 // if (member.FmLV == 1) // { // eliteList.Add(member); // } // else if (member.FamilyLV == 2) // { // deputyLeaderList.Add(member); // } if (member.FmLV == 3) { leaderID = (int)member.PlayerID; } } if (OnRefreshFairyInfo != null) OnRefreshFairyInfo(); } public FairyMember GetMember(int playerid) { FairyMember member = null; memberDic.TryGetValue(playerid, out member); return member; } #region 仙盟权力开启条件 public bool IsCanFunc(LimitFunc funcType) { if (mine != null) { return mine.FmLV >= GuildManager.Instance.guildWorkToLevel[(int)funcType]; } return false; } #endregion public void ClearData() { fairy = null; mine = null; memberDic.Clear(); leaderID = 0; } } //公会数据 public class FairyData { public int Rank; //名次,从1开始 public int FamilyID; public string FamilyName; //家族名称 public int FamilyLV; //家族等级 public int FamilyLVExp; //家族等级经验 public int JoinReview; //成员加入是否需要审核,默认0自动加入 public int JoinLVMin; //限制最低可加入的玩家等级 public int ServerID; //区服ID,创建时以族长的区服ID赋值 public int EmblemID; //徽章ID public string EmblemWord; //徽章文字 public long totalFightPower; public string Broadcast; public int LeaderID; //族长玩家ID public int MemberCount; //查找增加的字段 public string LeaderName; } public class FairyMember { public int PlayerID; public string Name; //size = NameLen public int JoinTime; //加入家族时时间戳 public int FmLV; //家族职位: 0-成员;1-精英;2-副族长;3-族长 public int LV; //等级 public int Job; //职业 public int RealmLV; //境界 public int Face; //基本脸型 public int FacePic; //头像框 public int TitleID; //称号 public long FightPower; //战力,求余亿部分 public int ServerID; //所属区服ID public int ContribTotal; //总贡献度 public int ContribDay; //日贡献度 public int DonateCntTotal; //总捐献次数 public int DonateCntDay; //日捐献次数 public int OffTime; // 0-在线; >0-/离线时间戳 } public class FairyApply { public int PlayerID; public string Name; public int ReqTime; //申请时间戳 public int LV; //等级 public int Job; //职业 public int RealmLV; //境界 public int Face; //基本脸型 public int FacePic; //头像框 public int TitleID; //称号 public long FightPower; public int ServerID; //所属区服ID public int IsOnLine; //是否在线 } //权限ID: 1-收人,2-变更职位,3-发布公告,4-踢人 public enum LimitFunc { CanCall = 1, CanJobTitle, CanNotify, CanKick, }