Main/Config/PartialConfigs/FamilyEmblemConfig.cs
New file @@ -0,0 +1,27 @@ using System.Collections.Generic; public partial class FamilyEmblemConfig : ConfigBase<int, FamilyEmblemConfig> { private static List<int> defaultEmblemList = new List<int>(); protected override void OnConfigParseCompleted() { if (UnlockFamilyLV == 1) { if (defaultEmblemList.Contains(EmblemID)) return; defaultEmblemList.Add(EmblemID); } } public static int GetRandomEmblem() { if (defaultEmblemList.Count == 0) return -1; // System.Random random = new System.Random(); return defaultEmblemList[random.Next(defaultEmblemList.Count)]; } } Main/Config/PartialConfigs/FamilyEmblemConfig.cs.metacopy from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta copy to Main/Config/PartialConfigs/FamilyEmblemConfig.cs.meta
File was copied from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 6fb2c77abf75d964d82b4b15659602b9 guid: 8ade65428632cd94681e3561a9e78cb5 MonoImporter: externalObjects: {} serializedVersion: 2 Main/Core/GameEngine/Player/PlayerBaseData.cs
@@ -113,6 +113,7 @@ public int mapRealmSelect; //地图境界难度 public int leaveFamilyTime; //离开家族时间 public int leaveGuildInfo; //公会:主动离开次数*100 + 被踢次数*10 + 最后一次是否主动离开的,暂时最多累计记录到9次 public bool IsActive90Off = true; //代表默认激活0.1折 public long treasurePotentialSp @@ -180,6 +181,7 @@ spExtend = _serverInfo.ExAttr8; bubbleId = _serverInfo.ExAttr10; ExAttr11 = _serverInfo.ExAttr11; leaveGuildInfo = (int)_serverInfo.ExAttr12; ExAttr16 = _serverInfo.ExAttr16; ServerGroupId = _serverInfo.ExAttr13; faction = _serverInfo.Faction; Main/Core/GameEngine/Player/PlayerDatas.cs
@@ -514,6 +514,9 @@ case PlayerDataType.CDBPlayerRefresh_SkillReducePerG: baseData.skillReducePerG = (int)value; break; case PlayerDataType.ExAttr12: baseData.leaveGuildInfo = (int)value; break; case PlayerDataType.default9: baseData.mapRealmSelect = (int)value; break; Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs
File was deleted Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs.meta
File was deleted Main/Core/NetworkPackage/DTCFile/ServerPack/HA5_Family/DTCA513_tagMCFamilyActionInfo.cs
@@ -1,11 +1,12 @@ using UnityEngine; using System.Collections; using UnityEngine; using System.Collections; // A5 13 家族行为信息 #tagMCFamilyActionInfo public class DTCA513_tagMCFamilyActionInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA513_tagMCFamilyActionInfo vNetData = vNetPack as HA513_tagMCFamilyActionInfo; GuildManager.Instance.UpdateFamilyAction(vNetData); } } Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs
@@ -8,6 +8,6 @@ { base.Done(vNetPack); HA705_tagSCQueryPlayerCacheResult vNetData = vNetPack as HA705_tagSCQueryPlayerCacheResult; RoleParticularModel.Instance.OnRevRoleEquip(vNetData); OtherPlayerDetailManager.Instance.OnRevRoleEquip(vNetData); } } Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -51,7 +51,6 @@ Register(typeof(H0111_tagOnlineReply), typeof(DTC0111_tagOnlineReply)); Register(typeof(H0608_tagNPCDie), typeof(DTC0608_tagNPCDie)); Register(typeof(H0612_tagClearObjBuff), typeof(DTC0612_tagClearObjBuff)); Register(typeof(HA3A1_tagMCModuleFightPowerInfo), typeof(DTCA3A1_tagMCModuleFightPowerInfo)); Register(typeof(HA110_tagMCCoinToGoldCountInfo), typeof(DTCA110_tagMCCoinToGoldCountInfo)); Register(typeof(HA008_tagGCPlayerRecInfo), typeof(DTCA008_tagGCPlayerRecInfo)); Register(typeof(HAA02_tagSCFirstChargeInfo), typeof(DTCAA02_tagSCFirstChargeInfo)); Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs
File was deleted Main/Main.cs
@@ -49,9 +49,8 @@ // 初始化游戏系统 managers.Add(BattleManager.Instance); managers.Add(VirtualPackManager.Instance); managers.Add(RoleParticularModel.Instance); managers.Add(OtherPlayerDetailManager.Instance); managers.Add(RechargeManager.Instance); managers.Add(RoleParticularModel.Instance); managers.Add(StoreModel.Instance); managers.Add(PhantasmPavilionModel.Instance); managers.Add(GuildManager.Instance); Main/System/Battle/StoryBossBattleWin.cs
@@ -81,7 +81,8 @@ UIManager.Instance.CloseWindow<BattleHUDWin>(); BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField; UIManager.Instance.OpenWindow<MainWin>(0); if (!UIManager.Instance.IsOpened<MainWin>()) UIManager.Instance.OpenWindow<MainWin>(); } private void OnCreateBattleField(string arg1, BattleField field) Main/System/Equip/EquipExchangeCell.cs
@@ -71,7 +71,7 @@ equipImage.SetOrgSprite(equip.config.IconKey); itemName.text = UIHelper.AppendColor(equip.config.ItemColor, equip.config.ItemName, true, 1); qualityName.text = UIHelper.GetQualityNameWithColor(equip.config.ItemColor, Language.Get("equipQualityFormat")); qualityName.text = UIHelper.GetQualityNameWithColor(equip.config.ItemColor, Language.Get("L1039")); itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor); qualityNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor); placeName.text = EquipModel.Instance.GetEquipPlaceName(equip.config.EquipPlace); Main/System/Equip/EquipTipWin.cs
@@ -80,7 +80,7 @@ equipImage.SetOrgSprite(equip.config.IconKey); itemName.text = UIHelper.AppendColor(equip.config.ItemColor, equip.config.ItemName, true, 1); itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor); qualityName.text = UIHelper.GetQualityNameWithColor(equip.config.ItemColor, Language.Get("equipQualityFormat")); qualityName.text = UIHelper.GetQualityNameWithColor(equip.config.ItemColor, Language.Get("L1039")); qualityNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor); placeName.text = EquipModel.Instance.GetEquipPlaceName(equip.config.EquipPlace); lvText.text = Language.Get("EquipExchangeWin7", EquipModel.Instance.GetEquipLV(equip)); @@ -136,7 +136,7 @@ equipImage.SetOrgSprite(itemConfig.IconKey); itemName.text = UIHelper.AppendColor(itemConfig.ItemColor, itemConfig.ItemName, true, 1); itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(itemConfig.ItemColor); qualityName.text = UIHelper.GetQualityNameWithColor(itemConfig.ItemColor, Language.Get("equipQualityFormat")); qualityName.text = UIHelper.GetQualityNameWithColor(itemConfig.ItemColor, Language.Get("L1039")); qualityNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(itemConfig.ItemColor); placeName.text = EquipModel.Instance.GetEquipPlaceName(itemConfig.EquipPlace); lvText.text = Language.Get("EquipExchangeWin7", appointItemConfig.ItemLV); Main/System/Guild/EmblemHelper.cs
File was deleted Main/System/Guild/EmblemHelper.cs.meta
File was deleted Main/System/Guild/GuildCreateWin.cs
New file @@ -0,0 +1,62 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// <summary> /// 创建公会界面 /// </summary> public class GuildCreateWin : UIBase { [SerializeField] GuildEmblemCell emblemCell; [SerializeField] Button changeEmblemBtn; [SerializeField] InputField guildNameText; [SerializeField] Image moneyIcon; [SerializeField] Text moneyText; [SerializeField] Button createBtn; protected override void InitComponent() { changeEmblemBtn.AddListener(() => { UIManager.Instance.OpenWindow<GuildEmblemWin>(1); }); createBtn.AddListener(CreateGuild); } protected override void OnPreOpen() { GuildEmblemModel.Instance.CreateSelectEmblemIdChangeEvent += CreateSelectEmblemEvent; if (GuildEmblemModel.Instance.createEmblemWord == "") GuildEmblemModel.Instance.createEmblemWord = PlayerDatas.Instance.baseData.PlayerName[0].ToString(); if (GuildEmblemModel.Instance.createSelectEmblemId <= 0) GuildEmblemModel.Instance.createSelectEmblemId = FamilyEmblemConfig.GetRandomEmblem(); Display(); } protected override void OnPreClose() { GuildEmblemModel.Instance.CreateSelectEmblemIdChangeEvent -= CreateSelectEmblemEvent; } void Display() { emblemCell.Display(GuildEmblemModel.Instance.createSelectEmblemId, GuildEmblemModel.Instance.createEmblemWord, 1.5f); moneyIcon.SetIconWithMoneyType(GuildManager.Instance.createMoneyType); moneyText.text = UIHelper.ShowUseMoney(GuildManager.Instance.createMoneyType, GuildManager.Instance.createFairyCost); } void CreateGuild() { GuildManager.Instance.CreateGuild(guildNameText.text, GuildEmblemModel.Instance.createSelectEmblemId, GuildEmblemModel.Instance.createEmblemWord); } void CreateSelectEmblemEvent() { Display(); } } Main/System/Guild/GuildCreateWin.cs.metacopy from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta copy to Main/System/Guild/GuildCreateWin.cs.meta
File was copied from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 6fb2c77abf75d964d82b4b15659602b9 guid: dd7026ea67a350847b14f34adc2d9090 MonoImporter: externalObjects: {} serializedVersion: 2 Main/System/Guild/GuildEmblemCell.cs
New file @@ -0,0 +1,53 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //公会徽章 //需增加UIFrame,UIEffectPlayer [RequireComponent(typeof(UIFrame))] [RequireComponent(typeof(UIEffectPlayer))] public class GuildEmblemCell : MonoBehaviour { [SerializeField] ImageEx emblemIcon; [SerializeField] UIFrame frame; [SerializeField] UIEffectPlayer uiEffect; [Header("字 F9E29F 包边 683C00 字号36 Y:-9")] [SerializeField] Text emblemNameText; //字 F9E29F 包边 683C00 字号36 Y-9 public void Display(int emblemID, string emblemName, float _scale = 1f) { FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemID); if (config == null) { return; } // 徽章动态效果按帧处理,如果后续要改成spine特效,则再商议修改 // 目前特效为附加表现 if (GuildEmblemModel.Instance.TryGetEffectID(emblemID, out int effectID)) { if (effectID != 0) { uiEffect.effectId = effectID; uiEffect.Play(); } } if (UIFrameMgr.Inst.ContainsDynamicImage(config.Image)) { frame.ResetFrame(config.Image); frame.enabled = true; } else { if (frame != null) frame.enabled = false; emblemIcon.SetSprite(config.Image); emblemIcon.SetNativeSize(); } emblemIcon.rectTransform.localScale = new Vector3(_scale, _scale, _scale); emblemNameText.text = emblemName; } } Main/System/Guild/GuildEmblemCell.cs.metacopy from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta copy to Main/System/Guild/GuildEmblemCell.cs.meta
File was copied from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 6fb2c77abf75d964d82b4b15659602b9 guid: c2e9e5e7d4929dd42b4e441ae3c75190 MonoImporter: externalObjects: {} serializedVersion: 2 Main/System/Guild/GuildEmblemModel.cs
@@ -13,14 +13,11 @@ public class GuildEmblemModel : GameSystemManager<GuildEmblemModel> { public readonly int MaxItemRowCount = 6; // 一行展示x个徽章 public readonly int FamilyActionsType = 15; // 徽章类型15 public readonly int FuncId = 237; public int defaultFamilyEmblemId; // 默认徽章ID public readonly int FamilyActionsType = 15; // 公会记录徽章类型15 public bool isSendA408Pack = false; private int m_NowChooseEmblemId; public event Action ChooseEmblemIdChangeEvent; //切换徽章 public int nowChooseEmblemId { get { return m_NowChooseEmblemId; } @@ -32,19 +29,46 @@ } public event Action ChooseEmblemIdChangeEvent; //切换标签页 //创建公会时,选择的徽章 int m_CreateSelectEmblemId; public event Action CreateSelectEmblemIdChangeEvent; public int createSelectEmblemId { get { return m_CreateSelectEmblemId; } set { m_CreateSelectEmblemId = value; CreateSelectEmblemIdChangeEvent?.Invoke(); } } public string createEmblemWord = ""; //创建公会时,输入的旗号 Redpoint entranceRedPoint = new Redpoint(10702, MainRedDot.FairyEmbleManageRepoint); //仙盟管理面板入口红点 // 旧的显示列表,用于判断是否有变化, 对比红点显示 public List<int> oldShowActiveList = new List<int>(); // 旧的激活列表,点击新的徽章时会更新,或者关闭的时候更新 public List<int> showList = new List<int>(); public override void Init() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; defaultFamilyEmblemId = int.Parse(FuncConfigConfig.Get("FairyEmblem").Numerical1); GuildManager.Instance.FamilyActionInfoEvent += OnFamilyActionInfoEvent; DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize; } public override void Release() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo; GuildManager.Instance.FamilyActionInfoEvent -= OnFamilyActionInfoEvent; DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize; } public void OnBeforePlayerDataInitialize() { m_NowChooseEmblemId = 0; m_CreateSelectEmblemId = 0; createEmblemWord = ""; oldShowActiveList.Clear(); showList.Clear(); } private void OnRefreshFairyInfo() @@ -59,97 +83,65 @@ // 仅盟主能看到 if (!IsCaptain()) return; // 仙盟2级出现 if (PlayerDatas.Instance.fairyData == null || PlayerDatas.Instance.fairyData.fairy.FamilyLV != 2) return; // 只出现一次 if (GetRedPointShow()) if (!GetRedPointShow()) return; entranceRedPoint.state = RedPointState.Simple; } string localStr = "FairyEmblemEntranceRedPoint_"; // 新旧列表对比显示红点 public bool GetRedPointShow() { return LocalSave.GetBool(localStr + PlayerDatas.Instance.PlayerId); } if (oldShowActiveList.IsNullOrEmpty()) return false; public void SetRedPointShow() { LocalSave.SetBool(localStr + PlayerDatas.Instance.PlayerId, true); } public bool TryGetNowEmblemID(out int nowID) { nowID = 0; int emblemID = (int)PlayerDatas.Instance.fairyData.fairy.EmblemID; if (FamilyEmblemConfig.HasKey(emblemID) && IsUnLock(emblemID)) for (int i = 0; i < showList.Count; i++) { nowID = (int)emblemID; return true; } if (FamilyEmblemConfig.HasKey(defaultFamilyEmblemId)) { nowID = defaultFamilyEmblemId; return true; } nowID = 0; return false; } // 展示指定徽章 表中找不到徽章就显示默认的 public void ShowEmblem(int emblemID, ImageEx imgTitle, float scale = 1.0f) { int nowEmblemID = emblemID; if (!FamilyEmblemConfig.HasKey(nowEmblemID)) { nowEmblemID = defaultFamilyEmblemId; } FamilyEmblemConfig config = FamilyEmblemConfig.Get(nowEmblemID); UIFrame frame = imgTitle.GetComponent<UIFrame>(); if (UIFrameMgr.Inst.ContainsDynamicImage(config.Image)) { if (frame == null) frame = imgTitle.gameObject.AddComponent<UIFrame>(); List<UnityEngine.Sprite> spriteList = UIFrameMgr.Inst.GetDynamicImage(config.Image); if (!spriteList.IsNullOrEmpty()) //已解锁的 if (!oldShowActiveList.Contains(showList[i]) && IsUnLock(showList[i])) { imgTitle.rectTransform.sizeDelta = new Vector2(spriteList[0].rect.width, spriteList[0].rect.height); return true; } imgTitle.raycastTarget = false; frame.ResetFrame(config.Image); frame.enabled = true; } else { if (frame != null) frame.enabled = false; imgTitle.SetSprite(config.Image); imgTitle.SetNativeSize(); } imgTitle.rectTransform.localScale = new Vector3(scale, scale, scale); return false; } public List<int> GetShowList() public List<int> SortShowList() { List<int> showList = new List<int>(); List<int> keys = FamilyEmblemConfig.GetKeys(); for (int i = 0; i < keys.Count; i++) if (showList.IsNullOrEmpty()) { showList.Add(keys[i]); List<int> keys = FamilyEmblemConfig.GetKeys(); for (int i = 0; i < keys.Count; i++) { showList.Add(keys[i]); } } showList.Sort(Cmp); if (oldShowActiveList.IsNullOrEmpty()) { // 初始化时,刷新旧的激活列表 RefreshOldShowActiveList(); } return showList; } // 刷新旧的激活列表,用于对比红点显示 public void RefreshOldShowActiveList() { oldShowActiveList.Clear(); for (int i = 0; i < showList.Count; i++) { //已解锁的 if (IsUnLock(showList[i])) { oldShowActiveList.Add(showList[i]); } } } // 已激活>未激活 private int Cmp(int a, int b) @@ -180,12 +172,10 @@ } return a.CompareTo(b); } } public int GetSortNum(int emblemID) { if (!FamilyEmblemConfig.HasKey(emblemID)) return 0; return FamilyEmblemConfig.Get(emblemID).SortNum; } @@ -200,7 +190,7 @@ return config.UnlockFamilyLV > 0 ? FairyEmblemUnlockMethodType.LV : FairyEmblemUnlockMethodType.Active; } // 指定的徽章解锁了吗 // 徽章是否解锁,未加入公会的也可以调用判断 public bool IsUnLock(int emblemId) { FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemId); @@ -220,8 +210,13 @@ return true; case FairyEmblemUnlockMethodType.LV: int lv = 1; //没有公会的情况 if (PlayerDatas.Instance.fairyData.fairy != null) { lv = PlayerDatas.Instance.fairyData.fairy.FamilyLV; } //所在仙盟等级小于徽章要求等级 未解锁 if (PlayerDatas.Instance.fairyData.fairy.FamilyLV < config.UnlockFamilyLV) if (lv < config.UnlockFamilyLV) return false; return true; @@ -238,13 +233,10 @@ } } public bool IsUsing(int emblemId) void OnFamilyActionInfoEvent(int familyId, int actionType) { if (!TryGetNowEmblemID(out int Id)) { return false; } return emblemId == Id; UpdateRedPoint(); } public bool IsLimitTime(int emblemId, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction familyAction) @@ -272,10 +264,10 @@ public bool IsCaptain() { return (int)PlayerDatas.Instance.fairyData.mine.FmLV == 3; return PlayerDatas.Instance.fairyData.mine.FmLV == 3; } // 尝试从封包中得到指定的徽章时效信息(活动途径获取的徽章,定制徽章) // 获得徽章记录信息信息(活动途径获取的徽章,定制徽章),value1是徽章ID,value2是徽章到期时间 private bool TryGetfamilyAction(int emblemId, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction familyAction) { familyAction = new HA513_tagMCFamilyActionInfo.tagMCFamilyAction(); @@ -297,8 +289,6 @@ public bool TryGetEffectID(int emblemId, out int effectID) { effectID = 0; if (!FamilyEmblemConfig.HasKey(emblemId)) return false; FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemId); if (!EffectConfig.HasKey(config.EffectID)) return false; @@ -308,15 +298,3 @@ } public class EmblemModel { public int emblemID { get; private set; } public int emblemUIEffectID { get; private set; } public EmblemModel(int emblemID, int emblemUIEffectID) { this.emblemID = emblemID; this.emblemUIEffectID = emblemUIEffectID; } } Main/System/Guild/GuildEmblemSelectCell.cs
New file @@ -0,0 +1,57 @@ using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEngine.UI; //公会徽章 选择查看 public class GuildEmblemSelectCell : MonoBehaviour { [SerializeField] GuildEmblemCell emblemIcon; [SerializeField] Image useImg; [SerializeField] Image lockImg; [SerializeField] Image selectImg; [SerializeField] Button selectBtn; [SerializeField] Image redPoint; public void Display(int index) { var id = GuildEmblemModel.Instance.showList[index]; emblemIcon.Display(id, ""); if (PlayerDatas.Instance.fairyData.fairy == null) { useImg.SetActive(false); } else { useImg.SetActive(id == PlayerDatas.Instance.fairyData.fairy.EmblemID); } lockImg.SetActive(!GuildEmblemModel.Instance.IsUnLock(id)); selectImg.SetActive(id == GuildEmblemModel.Instance.nowChooseEmblemId); redPoint.SetActive(IsShowRedpoint(id)); selectBtn.AddListener(() => OnClick(id)); } bool IsShowRedpoint(int emblemID) { if (GuildEmblemModel.Instance.oldShowActiveList.Contains(emblemID)) { return false; } if (!GuildEmblemModel.Instance.IsUnLock(emblemID)) { return false; } return true; } void OnClick(int id) { GuildEmblemModel.Instance.nowChooseEmblemId = id; } } Main/System/Guild/GuildEmblemSelectCell.cs.metacopy from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta copy to Main/System/Guild/GuildEmblemSelectCell.cs.meta
File was copied from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 6fb2c77abf75d964d82b4b15659602b9 guid: 824673e7b90bc33439e9e945e56eacfb MonoImporter: externalObjects: {} serializedVersion: 2 Main/System/Guild/GuildEmblemSelectListCell.cs
New file @@ -0,0 +1,27 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //公会徽章列表 public class GuildEmblemListCell : CellView { [SerializeField] List<GuildEmblemSelectCell> cells; public void Display(int index) { for (int i = 0; i < cells.Count; i++) { if (i + index < GuildEmblemModel.Instance.showList.Count) { cells[i].SetActive(true); cells[i].Display(index + i); } else { cells[i].SetActive(false); } } } } Main/System/Guild/GuildEmblemSelectListCell.cs.metacopy from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta copy to Main/System/Guild/GuildEmblemSelectListCell.cs.meta
File was copied from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 6fb2c77abf75d964d82b4b15659602b9 guid: 2246d0eca2920224aa0a20d7ca0e1767 MonoImporter: externalObjects: {} serializedVersion: 2 Main/System/Guild/GuildEmblemWin.cs
New file @@ -0,0 +1,152 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// <summary> /// 公会徽章界面 :functionOrder 0 代表有公会的情况下打开,1 代表没有公会的情况下创建时打开 /// </summary> public class GuildEmblemWin : UIBase { [SerializeField] GuildEmblemCell guildEmblem; [SerializeField] ScrollerController emblemScroller; [SerializeField] Text emblemInfoText; [SerializeField] Text timeDescText; [SerializeField] InputField flagNameText; [SerializeField] Text nowTimeText; [SerializeField] Button changeBtn; string emblemWord; protected override void InitComponent() { flagNameText.onValueChanged.AddListener(OnFlagNameChange); changeBtn.AddListener(ChangeEmblem); } protected override void OnPreOpen() { GuildEmblemModel.Instance.ChooseEmblemIdChangeEvent += ChooseEmblemEvent; emblemScroller.OnRefreshCell += OnRefreshCell; if (functionOrder == 1) { GuildEmblemModel.Instance.nowChooseEmblemId = GuildEmblemModel.Instance.createSelectEmblemId; emblemWord = GuildEmblemModel.Instance.createEmblemWord; } else { GuildEmblemModel.Instance.nowChooseEmblemId = PlayerDatas.Instance.fairyData.fairy.EmblemID; emblemWord = PlayerDatas.Instance.fairyData.fairy.EmblemWord; } flagNameText.text = emblemWord; GuildEmblemModel.Instance.SortShowList(); CreateEmblemScroller(); Display(); } protected override void OnPreClose() { GuildEmblemModel.Instance.ChooseEmblemIdChangeEvent -= ChooseEmblemEvent; emblemScroller.OnRefreshCell -= OnRefreshCell; } void CreateEmblemScroller() { emblemScroller.Refresh(); for (int i = 0; i < GuildEmblemModel.Instance.showList.Count; i++) { if (i % 5 == 0) { emblemScroller.AddCell(ScrollerDataType.Header, i); } } emblemScroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent<GuildEmblemListCell>(); _cell.Display(cell.index); } void Display() { guildEmblem.Display(GuildEmblemModel.Instance.nowChooseEmblemId, emblemWord, 2f); emblemScroller.m_Scorller.RefreshActiveCellViews(); var config = FamilyEmblemConfig.Get(GuildEmblemModel.Instance.nowChooseEmblemId); emblemInfoText.text = config.Descriptive; if (config.ExpireMinutes == 0) { timeDescText.text = ""; } else { timeDescText.text = Language.Get("Mail12", TimeUtility.SecondsToShortDHMS(config.ExpireMinutes * 60)); } if (functionOrder == 1) { nowTimeText.text = ""; } else { // 公会徽章过期时间 if (GuildEmblemModel.Instance.IsLimitTime(GuildEmblemModel.Instance.nowChooseEmblemId, out var familyAction)) { int time = (int)familyAction.Value2 - TimeUtility.AllSeconds; if (time > 0) nowTimeText.text = Language.Get("GoldRush29", TimeUtility.SecondsToShortDHMS(time)); else nowTimeText.text = ""; } else { nowTimeText.text = ""; } } if (functionOrder == 1) { changeBtn.SetInteractable(GuildEmblemModel.Instance.IsUnLock(GuildEmblemModel.Instance.nowChooseEmblemId)); } else { changeBtn.SetInteractable(GuildEmblemModel.Instance.IsCaptain() && GuildEmblemModel.Instance.IsUnLock(GuildEmblemModel.Instance.nowChooseEmblemId)); } } void OnFlagNameChange(string value) { emblemWord = value; guildEmblem.Display(GuildEmblemModel.Instance.nowChooseEmblemId, emblemWord, 2f); } void ChooseEmblemEvent() { Display(); } void ChangeEmblem() { if (functionOrder == 1) { GuildEmblemModel.Instance.createEmblemWord = emblemWord; GuildEmblemModel.Instance.createSelectEmblemId = GuildEmblemModel.Instance.nowChooseEmblemId; } else { var pack = new CA624_tagCMChangeFamilyEmblem(); pack.EmblemID = (byte)GuildEmblemModel.Instance.nowChooseEmblemId; pack.EmblemWord = emblemWord; GameNetSystem.Instance.SendInfo(pack); } CloseWindow(); } } Main/System/Guild/GuildEmblemWin.cs.metacopy from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta copy to Main/System/Guild/GuildEmblemWin.cs.meta
File was copied from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 6fb2c77abf75d964d82b4b15659602b9 guid: 54febdd3c6a7d1c4cbc460b76e0aa240 MonoImporter: externalObjects: {} serializedVersion: 2 Main/System/Guild/GuildJoinWin.cs
@@ -4,7 +4,7 @@ using UnityEngine.UI; /// <summary> /// 加入公会界面 /// 加入公会界面 :公会查找列表,也是排行榜 /// </summary> public class GuildJoinWin : UIBase { @@ -19,7 +19,7 @@ int lastPage = 0; protected override void InitComponent() { findBtn.AddListener(OnFindBtnClick); findBtn.AddListener(() => OnFindBtnClick()); createGuildBtn.AddListener(OnCreateGuildBtnClick); quicklyJoinGuildBtn.AddListener(OnQuicklyJoinGuildBtnClick); } @@ -27,9 +27,34 @@ { findText.text = ""; //打开界面默认请求,滚动的时候需要处理页数 OnFindBtnClick(); QueryGuild(); GuildManager.Instance.OnRefreshFairyList += OnRefreshGuildList; GuildManager.Instance.MyRequestJoinEvent += MyRequestJoinEvent; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; guildListScroller.OnRefreshCell += RefreshCell; Display(); } protected override void OnPreClose() { GuildManager.Instance.OnRefreshFairyList -= OnRefreshGuildList; GuildManager.Instance.MyRequestJoinEvent -= MyRequestJoinEvent; guildListScroller.OnRefreshCell -= RefreshCell; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo; var win = UIManager.Instance.GetUI<MainWin>(); if (win) win.RestoreFuncBtn(); } void OnRefreshFairyInfo() { //当前界面下有刷新自家的公会数据,说明一定是加入了公会,需主动跳转到公会界面 CloseWindow(); var win = UIManager.Instance.GetUI<MainWin>(); if (win) win.ClickFunc(4); } void Display() @@ -37,10 +62,24 @@ CreateScroller(); } void MyRequestJoinEvent() { guildListScroller.m_Scorller.RefreshActiveCellViews(); } //列表变小的话 重新创建;列表变大的话,只添加 void CreateScroller() { if (GuildManager.Instance.pageIndexList.Count == 0) { noGuildTf.SetActive(true); guildListScroller.SetActive(false); return; } noGuildTf.SetActive(false); guildListScroller.SetActive(true); var startCount = guildListScroller.GetNumberOfCells(); if (startCount > GuildManager.Instance.pageIndexList.Count) { @@ -53,12 +92,6 @@ guildListScroller.Restart(); } protected override void OnPreClose() { GuildManager.Instance.OnRefreshFairyList -= OnRefreshGuildList; } void OnRefreshGuildList() @@ -66,9 +99,36 @@ CreateScroller(); } void RefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent<GuildViewListCell>(); _cell.Display(cell.index); } private void OnFindBtnClick() { lastQuery = findText.text; var nowQuery = findText.text; if (string.IsNullOrEmpty(nowQuery) && string.IsNullOrEmpty(lastQuery)) { SysNotifyMgr.Instance.ShowTip("GuildSys5"); return; } if (nowQuery.Length < 2 && nowQuery.Length > 0) { SysNotifyMgr.Instance.ShowTip("GuildSys7"); return; } lastQuery = nowQuery; lastPage = 0; guildListScroller.Refresh(); GuildManager.Instance.SendFindGuild(lastQuery); } void QueryGuild() { lastQuery = ""; lastPage = 0; guildListScroller.Refresh(); GuildManager.Instance.SendFindGuild(lastQuery); @@ -76,12 +136,17 @@ private void OnCreateGuildBtnClick() { // TODO: 实现创建公会逻辑 UIManager.Instance.OpenWindow<GuildCreateWin>(); } private void OnQuicklyJoinGuildBtnClick() { // TODO: 实现快速加入公会逻辑 if (GuildManager.Instance.pageIndexList.Count == 0) { SysNotifyMgr.Instance.ShowTip("QuickEnterFamilyFail"); return; } GuildManager.Instance.SendApplyGuild(0, 0); } Main/System/Guild/GuildManager.cs
@@ -1,4 +1,4 @@ using System; using System; using System.Collections; using System.Collections.Generic; using System.Text; @@ -10,10 +10,10 @@ { // 申请的公会列表 private List<int> m_FairyRequesteds = new List<int>(); // 公会附加数据,按类型存储 // 公会自定义记录附加数据,按类型存储 // 公会ID, 类型ID, 数据 public Dictionary<int, Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction[]>> familyActions = new Dictionary<int, Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction[]>>(); public event Action<int, int> FamilyActionInfoEvent; public event Action<int, int> FamilyActionInfoEvent; //公会自定义记录, 其他功能从这获取 public override void Init() { @@ -32,6 +32,9 @@ { m_FairyRequesteds.Clear(); familyActions.Clear(); guildChanged = false; applyList.Clear(); PlayerDatas.Instance.fairyData.ClearData(); } @@ -46,40 +49,9 @@ } #region 发包 public void SendKickFairy(uint playerID) { var pak = new CA605_tagCMDeleteFamilyMember(); pak.MemberID = playerID; GameNetSystem.Instance.SendInfo(pak); } //申请/撤销 加入公会 public void SendApplyFairy(uint id, int type) { if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Fairy, true)) { return; } if (PlayerDatas.Instance.fairyData.HasFairy) { ServerTipDetails.DisplayNormalTip(Language.Get("HasFairyTip")); return; } CA602_tagCMRequesJoinFamily rqPack = new CA602_tagCMRequesJoinFamily(); rqPack.Type = (byte)type; rqPack.TagFamilyID = id; GameNetSystem.Instance.SendInfo(rqPack); } #endregion #region 配置 public int createFairyCost { get; @@ -93,6 +65,18 @@ // 权限ID: 1-收人,2-变更职位,3-发布公告,4-踢人 // 职位: 0-成员,1-精英,2-副盟主,3-盟主 public Dictionary<int, int> guildWorkToLevel = new Dictionary<int, int>(); //退出惩罚 public int[] quitGuildPunishTime; public int[] beQuitGuildPunishTime; public int quitGuildPunishMoneyType; public int[] quitGuildPunishMoney; public int[] beQuitGuildPunishMoney; //改名 public int renameFairyNameCD; public int renameFairyNameCost; public int renameFairyNameMoneyType; void ParseConfig() { @@ -110,13 +94,27 @@ config = FuncConfigConfig.Get("FamilyPower"); guildWorkToLevel = ConfigParse.ParseIntDict(config.Numerical1); config = FuncConfigConfig.Get("FamilyLeave"); quitGuildPunishTime = JsonMapper.ToObject<int[]>(config.Numerical1); beQuitGuildPunishTime = JsonMapper.ToObject<int[]>(config.Numerical2); quitGuildPunishMoneyType = int.Parse(config.Numerical3); quitGuildPunishMoney = JsonMapper.ToObject<int[]>(config.Numerical4); beQuitGuildPunishMoney = JsonMapper.ToObject<int[]>(config.Numerical5); config = FuncConfigConfig.Get("FamilyRename"); renameFairyNameCD = int.Parse(config.Numerical2); var arr = ConfigParse.GetMultipleStr<int>(config.Numerical1); renameFairyNameCost = arr[0]; renameFairyNameMoneyType = arr[1]; } #endregion //我的请求加入公会的列表 public event Action MyRequestJoinEvent; public void UpdateFairyRequested(HA501_tagMCNotifyRequestJoinFamilyInfo _package) { m_FairyRequesteds.Clear(); @@ -124,10 +122,11 @@ { m_FairyRequesteds.Add((int)_package.RequestJoinFamilyIDList[i]); } MyRequestJoinEvent?.Invoke(); } public bool FairyRequested(int _fairyId) public bool IsGuildRequested(int _fairyId) { return m_FairyRequesteds.Contains(_fairyId); } @@ -145,7 +144,7 @@ #region 仙盟名限制 #region 创建公会 改名 public bool CheckFairyNameLimit(string _name, out int errorCode) { errorCode = 0; @@ -160,19 +159,30 @@ errorCode = 1; return false; } if (UIHelper.IsNumeric(_name)) { errorCode = 2; return false; } return true; } public void ShowFairyNameErrorTip(int _errorCode) { switch (_errorCode) { case 0: //空 SysNotifyMgr.Instance.ShowTip("FamilyNameChangeNoNull"); break; case 1: SysNotifyMgr.Instance.ShowTip("FamilyNameChangeUnlegal"); // 脏字 SysNotifyMgr.Instance.ShowTip("NameSensitive"); break; case 2: // 不能纯数字 SysNotifyMgr.Instance.ShowTip("NameError3"); break; } } @@ -190,9 +200,90 @@ } int GetJoinCD() { if (PlayerDatas.Instance.baseData.leaveFamilyTime == 0) return 0; var quitType = PlayerDatas.Instance.baseData.leaveGuildInfo % 10; int quitCount = 0; int punishTime = 0; if (quitType == 0) { //被踢 quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 10 % 10; if (beQuitGuildPunishTime.Length != 0) punishTime = beQuitGuildPunishTime[Math.Min(quitCount, beQuitGuildPunishTime.Length - 1)]; } else if (quitType == 1) { //主动退出 quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 100; if (quitGuildPunishTime.Length != 0) punishTime = quitGuildPunishTime[Math.Min(quitCount, quitGuildPunishTime.Length - 1)]; } return TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime - punishTime * 60; } // 创建公会 public void CreateGuild(string name, int emblemID, string emblemWord) { var cdSeconds = GetJoinCD(); if (cdSeconds > 0) { SysNotifyMgr.Instance.ShowTip("GuildSys4", TimeUtility.SecondsToHMSEx(cdSeconds)); return; } if (!UIHelper.CheckMoneyCount(createMoneyType, createFairyCost, 2)) { return; } if (emblemWord.Length > 1) { //预制体输入框限制,不限任意字符都只能输入1个字 return; } int error; //获取name的字节长度,name可能是中文 或者其他占用3个字符的符号 if (!UIHelper.SatisfyNameLength(name, out error)) { // TODO 暂时按中文长度提示, 不同语言可根据情况修改 if (error == 1) { SysNotifyMgr.Instance.ShowTip("NameError2", 7); return; } else if (error == 2) { SysNotifyMgr.Instance.ShowTip("NameError1", 2); return; } } if (!CheckFairyNameLimit(name, out error)) { ShowFairyNameErrorTip(error); return; } var pack = new CA604_tagCMCreateFamily(); pack.Name = name; pack.EmblemID = (ushort)emblemID; pack.EmblemWord = emblemWord; GameNetSystem.Instance.SendInfo(pack); } #endregion #region 仙盟商店开启 @@ -229,7 +320,7 @@ // 公会自定义记录 public void UpdateFamilyAction(HA513_tagMCFamilyActionInfo _package) { @@ -258,7 +349,7 @@ return false; return true; } #region 仙盟列表 @@ -305,6 +396,11 @@ } var pack = new CA620_tagCMViewFamilyPage(); if (!string.IsNullOrEmpty(msg) && UIHelper.IsNumeric(msg)) { msg = DecryptGuildID(msg); } pack.Msg = msg; pack.MsgLen = (byte)msg.Length; pack.PageIndex = (byte)pageIndex; @@ -317,15 +413,15 @@ public static void SetFairyViewData(FairyData data, HA523_tagMCFamilyViewList.tagMCFamilyView view) { data.Rank = view.Rank; data.FamilyID = view.FamilyID; data.FamilyID = (int)view.FamilyID; data.FamilyName = view.FamilyName; data.LeaderID = view.LeaderID; data.LeaderID = (int)view.LeaderID; data.LeaderName = view.LeaderName; data.FamilyLV = view.FamilyLV; data.JoinReview = view.JoinReview; data.JoinLVMin = view.JoinLVMin; data.ServerID = view.ServerID; data.EmblemID = view.EmblemID; data.ServerID = (int)view.ServerID; data.EmblemID = (int)view.EmblemID; data.EmblemWord = view.EmblemWord; data.totalFightPower = view.FightPowerEx * Constants.ExpPointValue + view.FightPower; data.MemberCount = view.MemberCount; @@ -348,16 +444,16 @@ { FairyApply apply = new FairyApply(); apply.Name = vNetData.ReqJoinList[i].Name; apply.PlayerID = vNetData.ReqJoinList[i].PlayerID; apply.ReqTime = vNetData.ReqJoinList[i].ReqTime; apply.PlayerID = (int)vNetData.ReqJoinList[i].PlayerID; apply.ReqTime = (int)vNetData.ReqJoinList[i].ReqTime; apply.LV = vNetData.ReqJoinList[i].LV; apply.Job = vNetData.ReqJoinList[i].Job; apply.RealmLV = vNetData.ReqJoinList[i].RealmLV; apply.Face = vNetData.ReqJoinList[i].Face; apply.FacePic = vNetData.ReqJoinList[i].FacePic; apply.TitleID = vNetData.ReqJoinList[i].TitleID; apply.Face = (int)vNetData.ReqJoinList[i].Face; apply.FacePic = (int)vNetData.ReqJoinList[i].FacePic; apply.TitleID = (int)vNetData.ReqJoinList[i].TitleID; apply.FightPower = vNetData.ReqJoinList[i].FightPower + vNetData.ReqJoinList[i].FightPowerEx * Constants.ExpPointValue; apply.ServerID = vNetData.ReqJoinList[i].ServerID; apply.ServerID = (int)vNetData.ReqJoinList[i].ServerID; apply.IsOnLine = vNetData.ReqJoinList[i].IsOnLine; applyList.Add(apply); } @@ -384,7 +480,167 @@ { return applyList; } //type 0申请/1撤销 加入公会 //id 0 代表一键加入 public void SendApplyGuild(int id, int type) { if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Fairy, true)) { return; } if (PlayerDatas.Instance.fairyData.HasFairy) { SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_85890"); return; } if (type == 0) { var cdSeconds = GetJoinCD(); if (cdSeconds > 0) { SysNotifyMgr.Instance.ShowTip("GuildSys2", TimeUtility.SecondsToHMSEx(cdSeconds)); return; } if (id != 0 && guildsDict.ContainsKey(id)) { if (guildsDict[id].MemberCount >= FamilyConfig.Get(guildsDict[id].FamilyLV).MemberMax) { SysNotifyMgr.Instance.ShowTip("jiazu_lhs_202580"); return; } } } CA602_tagCMRequesJoinFamily rqPack = new CA602_tagCMRequesJoinFamily(); rqPack.Type = (byte)type; rqPack.TagFamilyID = (uint)id; GameNetSystem.Instance.SendInfo(rqPack); } //0 加入,1 申请 2 已申请 public int GetRequestState(FairyData guildInfo) { if (IsGuildRequested(guildInfo.FamilyID)) { return 2; } if (guildInfo.JoinReview != 0) { return 1; } return 0; } #endregion public bool guildChanged = false; //公会数据变化,请求新的公会信息,如在打开公会列表时请求,其他功能根据自身情况请求 public void UpdateGuildDataChangeMark(HA521_tagMCFamilyChange netPack) { if (netPack.Type > 0) { guildChanged = true; } } public void RequestGuildData() { if (guildChanged) { guildChanged = false; var pack = new CA626_tagCMGetFamilyInfo(); GameNetSystem.Instance.SendInfo(pack); } } public void SendKickFairy(uint playerID) { var pak = new CA605_tagCMDeleteFamilyMember(); pak.MemberID = playerID; GameNetSystem.Instance.SendInfo(pak); } #region 加密数字 //1. 将数字补充到10位,不足补0 //2. 将每个位的数字结合索引 映射到映射表中 //3. 将映射后的数字拼接成字符串 //4. 另外一个解密函数,将字符串还原成数字 int[] map = { 5, 2, 9, 1, 8, 3, 7, 0, 6, 4 }; int[] reverseMap; public string EncryptGuildID(int num) { if (num < 0) { Debug.LogError("Invalid number: " + num); return ""; } string str = num.ToString().PadLeft(10, '0'); StringBuilder result = new StringBuilder(); for (int i = 0; i < str.Length; i++) { int digit = int.Parse(str[i].ToString()); int encryptedDigit = map[(digit + i) % 10]; // 结合位置查表 result.Append(encryptedDigit); } return "6" + result.ToString(); } public string DecryptGuildID(string encryptedStr) { if (string.IsNullOrEmpty(encryptedStr) || encryptedStr.Length != 11) { // Debug.LogError("Invalid encrypted string: " + encryptedStr); SysNotifyMgr.Instance.ShowTip("GuildSys6"); return ""; } encryptedStr = encryptedStr.Substring(1); if (reverseMap.IsNullOrEmpty()) { reverseMap = new int[10]; reverseMap = GenerateReverseMap(map); } StringBuilder originalStr = new StringBuilder(); for (int i = 0; i < encryptedStr.Length; i++) { int encryptedDigit = int.Parse(encryptedStr[i].ToString()); int originalDigit = (reverseMap[encryptedDigit] - i + 10) % 10; // 反向查表并调整位置 originalStr.Append(originalDigit); } return originalStr.ToString().TrimStart('0'); // 去除前导零 } int[] GenerateReverseMap(int[] map) { for (int i = 0; i < map.Length; i++) { reverseMap[map[i]] = i; // 反向映射:map[i] -> i } return reverseMap; } #endregion } Main/System/Guild/GuildPreviewWin.cs
New file @@ -0,0 +1,129 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// <summary> /// 查看其他公会界面 /// </summary> public class GuildPreviewWin : UIBase { [SerializeField] GuildEmblemCell guildEmblem; [SerializeField] Text guildMemberCountText; [SerializeField] Text totalFightPowerText; [SerializeField] Text guildLevelText; [SerializeField] Text guildNameText; //加服务器信息 [SerializeField] Text guildNumText; //加公会编号 [SerializeField] Button copyBtn; [SerializeField] Text noticeText; //公告 [SerializeField] AvatarCell leaderAvatar; [SerializeField] OfficialTitleCell leaderTitle; [SerializeField] Text leaderLevelText; [SerializeField] Text guildJobText; [SerializeField] Text leaderNameText; [SerializeField] Text leaderFightPowerText; [SerializeField] Button seePlayerBtn; [SerializeField] Button opearteBtn; [SerializeField] Text opearteBtnText; int guildID; int leaderID; protected override void InitComponent() { opearteBtn.AddListener(() => { var guildInfo = GuildManager.Instance.guildsDict[guildID]; if (guildInfo == null) return; var state = GuildManager.Instance.GetRequestState(guildInfo); GuildManager.Instance.SendApplyGuild(guildID, state == 2 ? 1 : 0); }); copyBtn.AddListener(() => { var guildInfo = GuildManager.Instance.guildsDict[guildID]; if (guildInfo == null) return; UIHelper.CopyToClipboard(guildNumText.text); SysNotifyMgr.Instance.ShowTip("GuildSys8"); }); seePlayerBtn.AddListener(() => { OtherPlayerDetailManager.Instance.ViewPlayerDetail(leaderID); }); } protected override void OnPreOpen() { OtherPlayerDetailManager.Instance.OnRevPackage += OnRevLeaderPackage; guildID = functionOrder; Display(); } protected override void OnPreClose() { OtherPlayerDetailManager.Instance.OnRevPackage -= OnRevLeaderPackage; } void Display() { var guildInfo = GuildManager.Instance.guildsDict[guildID]; if (guildInfo == null) return; leaderID = guildInfo.LeaderID; OtherPlayerDetailManager.Instance.ViewPlayerDetail(leaderID, (int)ViewPlayerType.viewGuildLeader); var config = FamilyConfig.Get(guildInfo.FamilyLV); guildEmblem.Display(guildInfo.EmblemID, guildInfo.EmblemWord, 1.3f); guildMemberCountText.text = guildInfo.MemberCount + "/" + config.MemberMax; totalFightPowerText.text = UIHelper.ReplaceLargeArtNum(guildInfo.totalFightPower); guildLevelText.text = Language.Get("L1094") + guildInfo.FamilyLV; guildNameText.text = guildInfo.FamilyName + Language.Get("L1039", ServerListCenter.Instance.GetServerName(guildInfo.ServerID)); guildNumText.text = GuildManager.Instance.EncryptGuildID(guildInfo.FamilyID); leaderNameText.text = guildInfo.LeaderName; noticeText.text = guildInfo.Broadcast; var state = GuildManager.Instance.GetRequestState(guildInfo); string key = ""; switch (state) { case 1: key = "Guild_17"; break; case 2: key = "Guild_21"; break; default: key = "Guild_22"; break; } opearteBtnText.text = Language.Get(key); } void OnRevLeaderPackage(int viewType, int playerID) { if (viewType != (int)ViewPlayerType.viewGuildLeader) { return; } if (playerID != leaderID) { return; } var leaderInfo = OtherPlayerDetailManager.Instance.GetViewPlayerData(playerID); leaderAvatar.InitUI(AvatarHelper.GetAvatarModel(0, leaderInfo.Face, leaderInfo.FacePic)); leaderTitle.InitUI(leaderInfo.RealmLV, leaderInfo.TitleID); leaderLevelText.text = leaderInfo.LV.ToString(); guildJobText.text = RichTextMsgReplaceConfig.GetRichReplace("FAMILY", 3); leaderFightPowerText.text = UIHelper.ReplaceLargeArtNum(leaderInfo.FightPower); } } Main/System/Guild/GuildPreviewWin.cs.meta
File was renamed from Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 6fb2c77abf75d964d82b4b15659602b9 guid: fd9c288ff11ce574fa551ef39869d5ea MonoImporter: externalObjects: {} serializedVersion: 2 Main/System/Guild/GuildViewListCell.cs
@@ -2,20 +2,21 @@ using UnityEngine.UI; //公会查找列表,也是排行榜 public class GuildViewListCell : CellView { [SerializeField] Image rankImg; [SerializeField] Transform rankTextTf; [SerializeField] Text rankText; [SerializeField] Image guildEmblemImg; [SerializeField] GuildEmblemCell guildEmblem; [SerializeField] Text guildLevelText; [SerializeField] Text guildNameText; [SerializeField] Text leaderNameText; [SerializeField] Text totalFightPowerText; [SerializeField] Text limitText; [SerializeField] Button opearteBtn; [SerializeField] Text opearteBtnText; [SerializeField] Text guildMemberCountText; [SerializeField] Button seeGuildBtn; public void Display(int index) @@ -27,6 +28,7 @@ { rankImg.SetActive(true); rankImg.SetSprite("guildnum" + guildInfo.Rank); rankImg.SetNativeSize(); rankTextTf.SetActive(false); } else @@ -35,12 +37,44 @@ rankTextTf.SetActive(true); rankText.text = guildInfo.Rank.ToString(); } guildEmblem.Display(guildInfo.EmblemID, guildInfo.EmblemWord); guildLevelText.text = Language.Get("L1094") + guildInfo.FamilyLV; guildNameText.text = guildInfo.FamilyName; leaderNameText.text = guildInfo.LeaderName; totalFightPowerText.text = guildInfo.totalFightPower.ToString(); totalFightPowerText.text = UIHelper.ReplaceLargeArtNum(guildInfo.totalFightPower); var config = FamilyConfig.Get(guildInfo.FamilyLV); guildMemberCountText.text = guildInfo.MemberCount + "/" + config.MemberMax; var state = GuildManager.Instance.GetRequestState(guildInfo); string key = ""; switch (state) { case 1: key = "Guild_17"; break; case 2: key = "Guild_21"; break; default: key = "Guild_22"; break; } opearteBtnText.text = Language.Get(key); int familyID = guildInfo.FamilyID; opearteBtn.AddListener(() => { GuildManager.Instance.SendApplyGuild(familyID, state == 2 ? 1 : 0); }); seeGuildBtn.AddListener(() => { UIManager.Instance.OpenWindow<GuildPreviewWin>(guildID); }); } } Main/System/Guild/PlayerFairyData.cs
@@ -7,17 +7,22 @@ /** 玩家仙盟相关信息缓存数据 */ public class PlayerFairyData { private bool hasFairy = false; public bool HasFairy { get { return 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; public event Action OnRefreshFairyMine; //玩家在公会里的数据 private Dictionary<int, FairyMember> memberDic = new Dictionary<int, FairyMember>(); // 0-成员,1-精英,2-副盟主,3-盟主 @@ -33,19 +38,18 @@ { fairy = new FairyData(); } fairy.FamilyID = vNetData.FamilyID; if (fairy.FamilyID != 0) hasFairy = true; fairy.FamilyID = (int)vNetData.FamilyID; fairy.FamilyName = UIHelper.ServerStringTrim(vNetData.FamilyName); fairy.FamilyLV = vNetData.FamilyLV; fairy.FamilyLVExp = vNetData.FamilyLVExp; fairy.FamilyLVExp = (int)vNetData.FamilyLVExp; fairy.JoinReview = vNetData.JoinReview; fairy.JoinLVMin = vNetData.JoinLVMin; fairy.ServerID = vNetData.ServerID; fairy.EmblemID = vNetData.EmblemID; 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 = vNetData.LeaderID; fairy.LeaderID = (int)vNetData.LeaderID; fairy.MemberCount = vNetData.MemberCount; mine = null; @@ -56,28 +60,29 @@ FairyMember member = new FairyMember(); memberDic[(int)vNetData.MemberList[i].PlayerID] = member; member.PlayerID = vNetData.MemberList[i].PlayerID; member.PlayerID = (int)vNetData.MemberList[i].PlayerID; member.Name = vNetData.MemberList[i].Name; member.JoinTime = vNetData.MemberList[i].JoinTime; 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 = vNetData.MemberList[i].Face; member.FacePic = vNetData.MemberList[i].FacePic; member.TitleID = vNetData.MemberList[i].TitleID; 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 = vNetData.MemberList[i].ServerID; member.ContribTotal = vNetData.MemberList[i].ContribTotal; member.ContribDay = vNetData.MemberList[i].ContribDay; member.DonateCntTotal = vNetData.MemberList[i].DonateCntTotal; 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 = vNetData.MemberList[i].OffTime; member.OffTime = (int)vNetData.MemberList[i].OffTime; if (member.PlayerID == PlayerDatas.Instance.baseData.PlayerID) { //自己 mine = member; OnRefreshFairyMine?.Invoke(); } // 0-成员,1-精英,2-副盟主,3-盟主 @@ -118,6 +123,13 @@ } #endregion public void ClearData() { fairy = null; mine = null; memberDic.Clear(); leaderID = 0; } } @@ -125,19 +137,19 @@ //公会数据 public class FairyData { public ushort Rank; //名次,从1开始 public uint FamilyID; public int Rank; //名次,从1开始 public int FamilyID; public string FamilyName; //家族名称 public byte FamilyLV; //家族等级 public uint FamilyLVExp; //家族等级经验 public byte JoinReview; //成员加入是否需要审核,默认0自动加入 public ushort JoinLVMin; //限制最低可加入的玩家等级 public uint ServerID; //区服ID,创建时以族长的区服ID赋值 public uint EmblemID; //徽章ID 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 uint LeaderID; //族长玩家ID public int LeaderID; //族长玩家ID public int MemberCount; //查找增加的字段 @@ -147,39 +159,39 @@ public class FairyMember { public uint PlayerID; public int PlayerID; public string Name; //size = NameLen public uint JoinTime; //加入家族时时间戳 public byte FmLV; //家族职位: 0-成员;1-精英;2-副族长;3-族长 public ushort LV; //等级 public byte Job; //职业 public byte RealmLV; //境界 public uint Face; //基本脸型 public uint FacePic; //头像框 public uint TitleID; //称号 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 uint ServerID; //所属区服ID public uint ContribTotal; //总贡献度 public uint ContribDay; //日贡献度 public uint DonateCntTotal; //总捐献次数 public byte DonateCntDay; //日捐献次数 public uint OffTime; // 0-在线; >0-/离线时间戳 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 uint PlayerID; public int PlayerID; public string Name; public uint ReqTime; //申请时间戳 public ushort LV; //等级 public byte Job; //职业 public byte RealmLV; //境界 public uint Face; //基本脸型 public uint FacePic; //头像框 public uint TitleID; //称号 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 uint ServerID; //所属区服ID public byte IsOnLine; //是否在线 public int ServerID; //所属区服ID public int IsOnLine; //是否在线 } //权限ID: 1-收人,2-变更职位,3-发布公告,4-踢人 Main/System/HappyXB/HeroCallResultWin.cs
@@ -334,7 +334,7 @@ List<string> qualityStrList = new List<string>(); for (int i = 0; i < qualityList.Count; i++) { qualityStrList.Add(UIHelper.AppendColor(qualityList[i], Language.Get("equipQualityFormat", Language.Get("CommonQuality" + qualityList[i])))); qualityStrList.Add(UIHelper.AppendColor(qualityList[i], Language.Get("L1039", Language.Get("CommonQuality" + qualityList[i])))); } callTip.text = Language.Get("HeroCall6", needCount, string.Join(Language.Get("L1130"), qualityStrList.ToArray())); } Main/System/HappyXB/HeroCallWin.cs
@@ -106,7 +106,7 @@ List<string> qualityStrList = new List<string>(); for (int i = 0; i < qualityList.Count; i++) { qualityStrList.Add(UIHelper.AppendColor(qualityList[i], Language.Get("equipQualityFormat", Language.Get("CommonQuality" + qualityList[i])))); qualityStrList.Add(UIHelper.AppendColor(qualityList[i], Language.Get("L1039", Language.Get("CommonQuality" + qualityList[i])))); } callTip.text = Language.Get("HeroCall6", needCount, string.Join(Language.Get("L1130"), qualityStrList.ToArray())); } Main/System/HeroUI/HeroAwakePrivewWin.cs
@@ -61,13 +61,13 @@ else if (type == 2) { var skill = SkillConfig.Get(config.SkillID); awakeStr = Language.Get("equipQualityFormat", skill.SkillName) + skill.Description; awakeStr = Language.Get("L1039", skill.SkillName) + skill.Description; } else { for (int k = 0; k < config.AttrIDList.Length; k++) { awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("equipQualityFormat", config.SkillIName)) +PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}")) + awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("L1039", config.SkillIName)) +PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}")) + (k == config.AttrIDList.Length - 1 ? "" : "\n"); } } Main/System/HeroUI/HeroAwakeSuccessWin.cs
@@ -68,10 +68,10 @@ else { var beforeSkill = SkillConfig.GetSkillConfig(skill.SkillType, skill.SkillLV - 1); beforeSkillText.text = Language.Get("equipQualityFormat", beforeSkill.SkillName) + beforeSkill.Description; beforeSkillText.text = Language.Get("L1039", beforeSkill.SkillName) + beforeSkill.Description; } afterSkillText.text = Language.Get("equipQualityFormat", skill.SkillName) + skill.Description; afterSkillText.text = Language.Get("L1039", skill.SkillName) + skill.Description; } else Main/System/HeroUI/HeroBestWin.cs
@@ -312,7 +312,7 @@ if (nextQualityBreakConfig.AttrIDList[j] == 0) continue; string format = i < breakLevel ? "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}") : "{0}+{1}"; attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("equipQualityFormat", nextQualityBreakConfig.SkillIName)) + attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("L1039", nextQualityBreakConfig.SkillIName)) + PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[j], nextQualityBreakConfig.AttrValueList[j], format)); } @@ -321,7 +321,7 @@ var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID); if (skill != null) { attrStrArr.Add(Language.Get("equipQualityFormat", skill.SkillName) + skill.Description); attrStrArr.Add(Language.Get("L1039", skill.SkillName) + skill.Description); } else { @@ -452,13 +452,13 @@ else if (type == 2) { var skill = SkillConfig.Get(config.SkillID); awakeStr = Language.Get("equipQualityFormat", skill.SkillName) + skill.Description; awakeStr = Language.Get("L1039", skill.SkillName) + skill.Description; } else { for (int k = 0; k < config.AttrIDList.Length; k++) { awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("equipQualityFormat", config.SkillIName)) + awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("L1039", config.SkillIName)) + PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}")) + (k == config.AttrIDList.Length - 1 ? "" : "\n"); } Main/System/HeroUI/HeroLVBreakSuccessWin.cs
@@ -76,13 +76,13 @@ var id = nextQualityBreakConfig.AttrIDList[i]; if (id == 0) continue; attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("equipQualityFormat", nextQualityBreakConfig.SkillIName)) + attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("L1039", nextQualityBreakConfig.SkillIName)) + PlayerPropertyConfig.GetFullDescription(id, nextQualityBreakConfig.AttrValueList[i])); } if (nextQualityBreakConfig.SkillID != 0) { var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID); attrStrArr.Add(Language.Get("equipQualityFormat", skill.SkillName) + skill.Description); attrStrArr.Add(Language.Get("L1039", skill.SkillName) + skill.Description); } potentialText.text = Language.Get("L1100", Language.Get("herocard56"), string.Join(Language.Get("L1112"), attrStrArr)); } Main/System/HeroUI/HeroLVBreakWin.cs
@@ -81,7 +81,7 @@ { continue; } attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("equipQualityFormat", nextQualityBreakConfig.SkillIName)) + attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("L1039", nextQualityBreakConfig.SkillIName)) + PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[i], nextQualityBreakConfig.AttrValueList[i])); } if (nextQualityBreakConfig.SkillID != 0) @@ -89,7 +89,7 @@ var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID); if (skill != null) { attrStrArr.Add(Language.Get("equipQualityFormat", skill.SkillName) + skill.Description); attrStrArr.Add(Language.Get("L1039", skill.SkillName) + skill.Description); } else { Main/System/HeroUI/HeroTrainWin.cs
@@ -513,7 +513,7 @@ if (nextQualityBreakConfig.AttrIDList[j] == 0) continue; string format = i < hero.breakLevel ? "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}") : "{0}+{1}"; attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("equipQualityFormat", nextQualityBreakConfig.SkillIName)) + attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("L1039", nextQualityBreakConfig.SkillIName)) + PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[j], nextQualityBreakConfig.AttrValueList[j], format)); } @@ -522,7 +522,7 @@ var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID); if (skill != null) { attrStrArr.Add(Language.Get("equipQualityFormat", skill.SkillName) + skill.Description); attrStrArr.Add(Language.Get("L1039", skill.SkillName) + skill.Description); } else { @@ -682,13 +682,13 @@ else if (type == 2) { var skill = SkillConfig.Get(config.SkillID); awakeStr = Language.Get("equipQualityFormat", skill.SkillName) + skill.Description; awakeStr = Language.Get("L1039", skill.SkillName) + skill.Description; } else { for (int k = 0; k < config.AttrIDList.Length; k++) { awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("equipQualityFormat", config.SkillIName)) + awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("L1039", config.SkillIName)) + PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}")) + (k == config.AttrIDList.Length - 1 ? "" : "\n"); } Main/System/Main/MainWin.cs
@@ -36,7 +36,6 @@ base.InitComponent(); avatarCell.button.AddListener(() => { }); } public override void Refresh() @@ -71,6 +70,18 @@ tabButtons[3].UpdateButtonState(); } //外部调用点击功能 public void ClickFunc(int functionOrder) { tabButtons[functionOrder].onClick.Invoke(); } //恢复功能按钮状态 public void RestoreFuncBtn() { tabButtons[functionOrder].SelectBtn(); } protected override void SelectBottomTab(int index) { if (index == 3) @@ -98,6 +109,7 @@ OpenSubUIByTabIndex(); } //战斗按钮动画 void ClickAnimation(int index) { if (isFirstOpen || (functionOrder != 0 && index == 0)) @@ -183,6 +195,14 @@ AutoFightModel.Instance.StartFight(); } } else if (index == 4 && !PlayerDatas.Instance.fairyData.HasFairy) { //未加入公会不切换标签,打开申请界面 UIManager.Instance.OpenWindow<GuildJoinWin>(); return; } SelectBottomTab(index); } @@ -211,18 +231,15 @@ battleWin.SetBattleField(BattleManager.Instance.storyBattleField); } currentSubUI = UIManager.Instance.OpenWindow<HomeWin>(); Debug.Log("打开主城界面"); break; case 1: currentSubUI = UIManager.Instance.OpenWindow<AffairBaseWin>(); Debug.Log("打开内政界面"); break; case 2: currentSubUI = UIManager.Instance.OpenWindow<HeroBaseWin>(0); Debug.Log("打开武将界面"); break; // case 3: // // currentSubUI = UIManager.Instance.OpenUI<QuestUI>(); // 挑战界面不跳转 // Debug.Log("打开挑战界面"); // break; case 4: Main/System/RoleParticulars/OtherPlayerDetailManager.cs
New file @@ -0,0 +1,214 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; using System.Linq; //查看其他玩家的简短信息, 该模块处理数据,其他由各自功能模块处理 通过OnRevPackage public class OtherPlayerDetailManager : GameSystemManager<OtherPlayerDetailManager> { public override void Init() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize; } public override void Release() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize; } public void OnBeforePlayerDataInitialize() { viewPlayerType = -1; } public int viewPlayer { get; private set; } // 查询类型:根据类型做不同处理 // 按功能自定义枚举值 EnumHelper的 ViewPlayerType public int viewPlayerType { get; private set; } private Dictionary<int, ViewPlayerData> viewPlayerDataDic = new Dictionary<int, ViewPlayerData>(); // 查看类型,玩家ID public event Action<int, int> OnRevPackage; //尽量不要用第一个参数viewtype做判断,容易出错 // 获取其他玩家本地缓存数据 public ViewPlayerData GetViewPlayerData(int player) { ViewPlayerData viewPlayerData = null; viewPlayerDataDic.TryGetValue(player, out viewPlayerData); return viewPlayerData; } // 向服务端请求其他玩家数据 public void ViewPlayerDetail(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData) { if (_playerId == PlayerDatas.Instance.baseData.PlayerID) { return; } viewPlayerType = viewType; ViewRoleParticulars(_playerId); } // 向服务端请求玩家数据 void ViewRoleParticulars(int playerID) { if (playerID == 0) { return; } viewPlayer = playerID; if (viewPlayerDataDic.ContainsKey(playerID)) { ViewPlayerData viewPlayerData = viewPlayerDataDic[playerID]; if ((DateTime.Now - viewPlayerData.getTime).TotalSeconds < 30) { ShowRoleParticulars(playerID); return; } } //CC002_tagCGViewCrossPlayerInfo c002 = new CC002_tagCGViewCrossPlayerInfo(); CA212_tagCMViewPlayerInfo pak = new CA212_tagCMViewPlayerInfo(); pak.PlayerID = (uint)playerID; GameNetSystem.Instance.SendInfo(pak); } //本服竞技场假查询模拟封包,返回查看机器人数据 打开RoleParticularsWin界面,专用接口其他地方不要调用 public void ViewFairyArenaRobot(int playerID, ViewPlayerData _viewPlayerData) { ViewPlayerData viewPlayerData = null; viewPlayer = playerID; if (!viewPlayerDataDic.TryGetValue(playerID, out viewPlayerData)) { viewPlayerDataDic.Add(playerID, _viewPlayerData); } else { viewPlayerDataDic[playerID] = _viewPlayerData; } viewPlayerType = (int)ViewPlayerType.viewPlayerData; ShowRoleParticulars(playerID); } public void OnRevRoleEquip(HA705_tagSCQueryPlayerCacheResult package) { ViewPlayerData viewPlayerData = null; if (!viewPlayerDataDic.TryGetValue((int)package.PlayerID, out viewPlayerData)) { viewPlayerData = new ViewPlayerData(); viewPlayerData.getTime = DateTime.Now; viewPlayerDataDic.Add((int)package.PlayerID, viewPlayerData); } viewPlayerData.getTime = DateTime.Now; viewPlayerData.PlayerID = (int)package.PlayerID; viewPlayerData.Name = package.PlayerName; viewPlayerData.LV = package.LV; viewPlayerData.Job = package.Job; viewPlayerData.RealmLV = package.RealmLV; viewPlayerData.Face = (int)package.Face; viewPlayerData.FacePic = (int)package.FacePic; viewPlayerData.TitleID = (int)package.TitleID; viewPlayerData.ServerID = (int)package.ServerID; viewPlayerData.FightPower = package.FightPower + package.FightPowerEx * (long)Constants.ExpPointValue; viewPlayerData.FamilyID = (int)package.FamilyID; viewPlayerData.FamilyName = package.FamilyName; viewPlayerData.FamilyEmblemID = (int)package.FamilyEmblemID; if (viewPlayerData.rolePlusData == null) { //第一次初始化 viewPlayerData.rolePlusData = new RolePlusData(); } if (package.PlusDataSize != 0) { viewPlayerData.rolePlusData.AnalysisRolePlusData(package.PlusData); } ShowRoleParticulars((int)package.PlayerID); } //尽量不要用第一个参数viewtype做判断,容易出错,比如同时发送两个不同的viewPlayerType请求的时候 private void ShowRoleParticulars(int playerID) { // if (viewPlayerType == (int)ViewPlayerType.viewPlayerData) // { // if (!WindowCenter.Instance.IsOpen<RoleParticularsWin>()) // { // RoleParticularsWin.viewType = viewPlayerType; // WindowCenter.Instance.Open<RoleParticularsWin>(); // } // } OnRevPackage?.Invoke(viewPlayerType, playerID); viewPlayerType = -1; } public class ViewPlayerData { public int PlayerID; public int LV; public int RealmLV; public string Name; public string FamilyName; public int Job; public int FamilyID; public long FightPower; public int TitleID; public int ServerID; public int FamilyEmblemID; public int Face; //脸型 public int FacePic; //脸型外框 public RolePlusData rolePlusData; public DateTime getTime; } public class RolePlusData { public void AnalysisRolePlusData(string jsonStr) { try { } catch (Exception e) { Debug.Log(e.StackTrace); } } } } Main/System/RoleParticulars/OtherPlayerDetailManager.cs.meta
Main/System/RoleParticulars/RoleParticularModel.cs
File was deleted Main/System/Tip/MarqueeWin.cs
@@ -61,7 +61,8 @@ { base.OnOpen(); // 窗口打开时的逻辑 m_Effect.Play(); if (m_Effect.effectId > 0) m_Effect.Play(); cacheCoroutine = StartCoroutine(Co_StartTween()); } Main/System/Tip/ServerTipDetails.cs
@@ -27,10 +27,10 @@ return; } if (!UIManager.Instance.IsOpened<MarqueeWin>()) { UIManager.Instance.OpenWindow<MarqueeWin>(); } // if (!UIManager.Instance.IsOpened<MarqueeWin>()) // { // UIManager.Instance.OpenWindow<MarqueeWin>(); // } } public static void OnStageLoadFinish() @@ -40,7 +40,7 @@ // m_Marquees.Clear(); // return; // } Co_StageLoadFinish().Forget(); // Co_StageLoadFinish().Forget(); } private static async UniTask Co_StageLoadFinish() Main/Utility/EnumHelper.cs
@@ -557,7 +557,7 @@ ModelMark = 119, //变形模型Mark 119 PrizeCoin = 120, //奖励点券数 120 ExAttr11 = 121, //扩展属性11 121 现金代币(代金券) ExAttr12 = 122, //扩展属性12 退出仙盟时间 ExAttr12 = 122, //扩展属性12 记录离开信息,主动离开次数*100 + 被踢次数*10 + 最后一次是否主动离开的,暂时最多累计记录到9次 ExAttr13 = 123, //扩展属性13 服务器组ID ExAttr14 = 124, //扩展属性14 124 @@ -674,7 +674,7 @@ default7, default8, default9, // 237 地图境界难度 default10, // 238 离开仙盟时间戳(包含主动退出或被踢 default10, // 238 记录离开时间戳,被踢或主动退出均会更新该值 default11, // 239 代表魅力等级 default12, default13, // 241 古神货币 @@ -1817,16 +1817,7 @@ //查询其他玩家数据 用途类型 public enum ViewPlayerType { viewPlayerEquip = 0, //查看玩家基本信息(装备由请求大境界阶决定),并打开界面 viewPlayerFightPower = 1, //查看玩家战力详情,并打开界面 viewPlayerData = 2, //查看玩家基本信息,公用 viewPlayerDataZZ = 3, //助战场景使用 viewPlayerDataArena = 4, //本服竞技场场景使用 viewPlayerDataFairyKing = 5, //仙盟联赛王者UI使用 viewPlayerData = 0, //查看玩家基本信息,公用打开界面 viewGuildLeader = 1, //查看玩家的公会族长信息 //查询跨服数据从100开始 viewCrossPlayerEquip = 100, //查看玩家基本信息(装备由请求大境界阶决定),并打开界面 viewCrossPlayerFightPower = 101, //查看玩家战力详情,并打开界面 viewCrossPlayerData = 102, //查看玩家基本信息,公用 viewCrossPlayerDataBlessedLand = 103, //福地驱赶 } Main/Utility/TimeUtility.cs
@@ -369,8 +369,8 @@ } //极简显示 // x天x小时 // x小时x分 // x天 或者 x天x小时 // x小时 或者 x小时x分 // x分 // x秒 public static string SecondsToShortDHMS(int _seconds) @@ -381,10 +381,18 @@ int seconds = _seconds % 60; if (days > 0) { if (hours == 0) { return StringUtility.Contact(days, Language.Get("L1074")); } return StringUtility.Contact(days, Language.Get("L1074"), hours, Language.Get("L1072")); } else if (hours > 0) { if (mins == 0) { return StringUtility.Contact(hours, Language.Get("L1072")); } return StringUtility.Contact(hours, Language.Get("L1072"), mins, Language.Get("L1073")); } else if (mins > 0) Main/Utility/UIHelper.cs
@@ -325,6 +325,13 @@ return false; } // 检查字符串是不是纯整数 public static bool IsNumeric(string input) { return int.TryParse(input, out _); } public static string GetColorNameByItemColor(int itemColor) { switch (itemColor) @@ -1256,13 +1263,15 @@ return content; } //检查名字长度,玩家名和公会名 //不同国家长度不同,排版不同 public static bool SatisfyNameLength(string name, out int error) { error = 0; //bool pureChinese = Regex.IsMatch(name, "^[\u4e00-\u9fa5]+$"); //var chsCount = GetChsCount(name); int length = Encoding.Default.GetBytes(name).Length; var maxlength = 20; var maxlength = 14; //纯中文不建议超过7个字 var minlength = 3; if (length > maxlength) { @@ -1362,9 +1371,24 @@ public static string RemoveColor(string content) { { content = WordAnalysis.Color_Start_Regex.Replace(content, string.Empty); content = WordAnalysis.Color_End_Regex.Replace(content, string.Empty); return content; } //复制到剪贴板 // TODO 暂不支持web后续补充 public static void CopyToClipboard(string text) { GUIUtility.systemCopyBuffer = text; Debug.Log("文字已复制到剪贴板: " + text); } //获取剪切板内容 public static string GetClipboardText() { return GUIUtility.systemCopyBuffer; } }