143 子 【挑战】演武场 / 【挑战】演武场-客户端
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // A0 08 查看通用记录 #tagCSViewGameRec |
| | | |
| | | public class CA008_tagCSViewGameRec : GameNetPackBasic { |
| | | public ushort RecType; //记录类型 |
| | | public uint RecID; //自定义记录ID |
| | | |
| | | public CA008_tagCSViewGameRec () { |
| | | combineCmd = (ushort)0x03FE; |
| | | _cmd = (ushort)0xA008; |
| | | } |
| | | |
| | | public override void WriteToBytes () { |
| | | WriteBytes (RecType, NetDataType.WORD); |
| | | WriteBytes (RecID, NetDataType.DWORD); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: b6a48b9769ab25a47adb4313ea3e1711 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | //A2 12 查看玩家详细信息#tagCMViewPlayerInfo |
| | | //A2 12 查看玩家详细信息#tagCMViewPlayerInfo |
| | | |
| | | public class CA212_tagCMViewPlayerInfo : GameNetPackBasic |
| | | { |
| | | public class CA212_tagCMViewPlayerInfo : GameNetPackBasic { |
| | | public uint PlayerID; |
| | | public byte EquipClassLV; //大于0为查看指定境界阶装备信息, 0为查看默认信息 |
| | | public byte EquipClassLV; //大于0为查看指定境界阶装备信息, 0为查看默认信息 |
| | | |
| | | public CA212_tagCMViewPlayerInfo() |
| | | { |
| | | public CA212_tagCMViewPlayerInfo () { |
| | | combineCmd = (ushort)0x03FE; |
| | | _cmd = (ushort)0xA212; |
| | | } |
| | | |
| | | public override void WriteToBytes() |
| | | { |
| | | WriteBytes(PlayerID, NetDataType.DWORD); |
| | | WriteBytes(EquipClassLV, NetDataType.BYTE); |
| | | public override void WriteToBytes () { |
| | | WriteBytes (PlayerID, NetDataType.DWORD); |
| | | WriteBytes (EquipClassLV, NetDataType.BYTE); |
| | | } |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // B2 09 演武场匹配玩家 #tagCSArenaMatch |
| | | |
| | | public class CB209_tagCSArenaMatch : GameNetPackBasic { |
| | | public byte IsRefresh; // 0-打开界面无匹配数据时查询,1-强制刷新匹配列表 |
| | | |
| | | public CB209_tagCSArenaMatch () { |
| | | combineCmd = (ushort)0x03FE; |
| | | _cmd = (ushort)0xB209; |
| | | } |
| | | |
| | | public override void WriteToBytes () { |
| | | WriteBytes (IsRefresh, NetDataType.BYTE); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: e768d709b4503ed47a18dad52f32422e |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // A0 09 通用记录信息 #tagSCGameRecInfo |
| | | |
| | | public class DTCA009_tagSCGameRecInfo : DtcBasic { |
| | | public override void Done(GameNetPackBasic vNetPack) { |
| | | base.Done(vNetPack); |
| | | HA009_tagSCGameRecInfo vNetData = vNetPack as HA009_tagSCGameRecInfo; |
| | | ArenaManager.Instance.UpdateGameRecInfo(vNetData); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: ef9a2a1877a033e4198a1343e4eb8dea |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // A9 22 演武场匹配玩家列表 #tagSCArenaMatchList |
| | | |
| | | public class DTCA922_tagSCArenaMatchList : DtcBasic { |
| | | public override void Done(GameNetPackBasic vNetPack) { |
| | | base.Done(vNetPack); |
| | | HA922_tagSCArenaMatchList vNetData = vNetPack as HA922_tagSCArenaMatchList; |
| | | ArenaManager.Instance.OnArenaMatchList(vNetData); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 3018194b7bdafa24c9855f1880bb15a2 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // A9 23 演武场玩家信息 #tagSCArenaPlayerInfo |
| | | |
| | | public class DTCA923_tagSCArenaPlayerInfo : DtcBasic { |
| | | public override void Done(GameNetPackBasic vNetPack) { |
| | | base.Done(vNetPack); |
| | | HA923_tagSCArenaPlayerInfo vNetData = vNetPack as HA923_tagSCArenaPlayerInfo; |
| | | ArenaManager.Instance.UpdateArenaPlayerInfo(vNetData); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: fe3971f96b149f14b8adf6e9c4e1ba5f |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | Register(typeof(HA521_tagMCFamilyChange), typeof(DTCA521_tagMCFamilyChange)); |
| | | Register(typeof(HA522_tagMCFamilyReqJoinInfo), typeof(DTCA522_tagMCFamilyReqJoinInfo)); |
| | | Register(typeof(HA523_tagMCFamilyViewList), typeof(DTCA523_tagMCFamilyViewList)); |
| | | |
| | | Register(typeof(HA009_tagSCGameRecInfo), typeof(DTCA009_tagSCGameRecInfo)); |
| | | Register(typeof(HA922_tagSCArenaMatchList), typeof(DTCA922_tagSCArenaMatchList)); |
| | | Register(typeof(HA923_tagSCArenaPlayerInfo), typeof(DTCA923_tagSCArenaPlayerInfo)); |
| | | } |
| | | |
| | | //主工程注册封包 |
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // A0 09 通用记录信息 #tagSCGameRecInfo |
| | | |
| | | public class HA009_tagSCGameRecInfo : GameNetPackBasic { |
| | | public ushort RecType; //记录类型 |
| | | public uint RecID; //自定义记录ID |
| | | public ushort Count; //数量 |
| | | public tagSCGameRec[] RecList; |
| | | |
| | | public HA009_tagSCGameRecInfo () { |
| | | _cmd = (ushort)0xA009; |
| | | } |
| | | |
| | | public override void ReadFromBytes (byte[] vBytes) { |
| | | TransBytes (out RecType, vBytes, NetDataType.WORD); |
| | | TransBytes (out RecID, vBytes, NetDataType.DWORD); |
| | | TransBytes (out Count, vBytes, NetDataType.WORD); |
| | | RecList = new tagSCGameRec[Count]; |
| | | for (int i = 0; i < Count; i ++) { |
| | | RecList[i] = new tagSCGameRec(); |
| | | TransBytes (out RecList[i].Time, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].Value1, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].Value2, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].Value3, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].Value4, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].Value5, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].Value6, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].Value7, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].Value8, vBytes, NetDataType.DWORD); |
| | | TransBytes (out RecList[i].UserDataLen, vBytes, NetDataType.WORD); |
| | | TransBytes (out RecList[i].UserData, vBytes, NetDataType.Chars, RecList[i].UserDataLen); |
| | | } |
| | | } |
| | | |
| | | public class tagSCGameRec { |
| | | public uint Time; //时间 |
| | | public uint Value1; //值1 |
| | | public uint Value2; //值2 |
| | | public uint Value3; //值3 |
| | | public uint Value4; //值4 |
| | | public uint Value5; //值5 |
| | | public uint Value6; //值6 |
| | | public uint Value7; //值7 |
| | | public uint Value8; //值8 |
| | | public ushort UserDataLen; //扩展数据长度 |
| | | public string UserData; //扩展数据 |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 77ee48f6b77c0f34499e2cbd2546a944 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | public byte RealmLV;
|
| | | public uint Face;
|
| | | public uint FacePic;
|
| | | public uint ModelMark; //变形模型mark
|
| | | public uint TitleID; //佩戴的称号
|
| | | public uint ServerID;
|
| | | public uint FightPower;
|
| | |
| | | public uint FamilyID;
|
| | | public string FamilyName;
|
| | | public uint FamilyEmblemID; //仙盟徽章ID
|
| | | public string FamilyEmblemWord; //徽章文字
|
| | | public uint PlusDataSize;
|
| | | public string PlusData; //扩展记录
|
| | |
|
| | |
| | | TransBytes (out RealmLV, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out Face, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out FacePic, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out ModelMark, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out TitleID, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out ServerID, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out FightPower, vBytes, NetDataType.DWORD);
|
| | |
| | | TransBytes (out FamilyID, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out FamilyName, vBytes, NetDataType.Chars, 33);
|
| | | TransBytes (out FamilyEmblemID, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out FamilyEmblemWord, vBytes, NetDataType.Chars, 3);
|
| | | TransBytes (out PlusDataSize, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out PlusData, vBytes, NetDataType.Chars, PlusDataSize);
|
| | | }
|
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // A9 22 演武场匹配玩家列表 #tagSCArenaMatchList |
| | | |
| | | public class HA922_tagSCArenaMatchList : GameNetPackBasic { |
| | | public byte MatchCount; |
| | | public tagSCArenaMatchInfo[] MatchList; // 匹配列表,从高分到低分 |
| | | |
| | | public HA922_tagSCArenaMatchList () { |
| | | _cmd = (ushort)0xA922; |
| | | } |
| | | |
| | | public override void ReadFromBytes (byte[] vBytes) { |
| | | TransBytes (out MatchCount, vBytes, NetDataType.BYTE); |
| | | MatchList = new tagSCArenaMatchInfo[MatchCount]; |
| | | for (int i = 0; i < MatchCount; i ++) { |
| | | MatchList[i] = new tagSCArenaMatchInfo(); |
| | | TransBytes (out MatchList[i].PlayerID, vBytes, NetDataType.DWORD); |
| | | TransBytes (out MatchList[i].PlayerName, vBytes, NetDataType.Chars, 33); |
| | | TransBytes (out MatchList[i].LV, vBytes, NetDataType.WORD); |
| | | TransBytes (out MatchList[i].RealmLV, vBytes, NetDataType.WORD); |
| | | TransBytes (out MatchList[i].FightPower, vBytes, NetDataType.DWORD); |
| | | TransBytes (out MatchList[i].FightPowerEx, vBytes, NetDataType.DWORD); |
| | | TransBytes (out MatchList[i].Face, vBytes, NetDataType.DWORD); |
| | | TransBytes (out MatchList[i].FacePic, vBytes, NetDataType.DWORD); |
| | | TransBytes (out MatchList[i].TitleID, vBytes, NetDataType.DWORD); |
| | | } |
| | | } |
| | | |
| | | public class tagSCArenaMatchInfo { |
| | | public uint PlayerID; //目标玩家ID |
| | | public string PlayerName; |
| | | public ushort LV; // 玩家等级 |
| | | public ushort RealmLV; //境界,机器人读境界表取等级对应境界 |
| | | public uint FightPower; //战力求余亿部分 |
| | | public uint FightPowerEx; //战力整除亿部分 |
| | | public uint Face; //基本脸型 |
| | | public uint FacePic; //头像框 |
| | | public uint TitleID; //称号 |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 2b4642cd36b59424c907081f1ea9e173 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // A9 23 演武场玩家信息 #tagSCArenaPlayerInfo |
| | | |
| | | public class HA923_tagSCArenaPlayerInfo : GameNetPackBasic { |
| | | public uint Score; //当前积分 |
| | | |
| | | public HA923_tagSCArenaPlayerInfo () { |
| | | _cmd = (ushort)0xA923; |
| | | } |
| | | |
| | | public override void ReadFromBytes (byte[] vBytes) { |
| | | TransBytes (out Score, vBytes, NetDataType.DWORD); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 9a2b69f1fef30664080e787544234dab |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | managers.Add(NewBieCenter.Instance);
|
| | | managers.Add(AdsManager.Instance);
|
| | | managers.Add(BoneFieldManager.Instance);
|
| | |
|
| | | managers.Add(ArenaManager.Instance);
|
| | | foreach (var manager in managers)
|
| | | {
|
| | | manager.Init();
|
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 2bada89d61080494cadb1e44f3ea3bf3 |
| | | folderAsset: yes |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using UnityEngine; |
| | | |
| | | public class ArenaAwardCell : CellView |
| | | { |
| | | [SerializeField] ImageEx imgRank; |
| | | [SerializeField] TextEx txtRank; |
| | | [SerializeField] ItemCell[] itemCells; |
| | | public void Display(int index, CellView cellView) |
| | | { |
| | | int functionOrder = cellView.info.Value.infoInt1; |
| | | Dictionary<int, int[][]> rewardDict = ArenaManager.Instance.GetArenaAwardDict(functionOrder); |
| | | if (rewardDict.IsNullOrEmpty()) |
| | | return; |
| | | var list = rewardDict.Keys.ToList(); |
| | | list.Sort(); |
| | | |
| | | |
| | | int rank = list[index]; |
| | | |
| | | if (rank <= 3) |
| | | { |
| | | imgRank.SetActive(true); |
| | | txtRank.SetActive(false); |
| | | imgRank.SetSprite(StringUtility.Contact("Rank", rank)); |
| | | txtRank.text = rank.ToString(); |
| | | } |
| | | else |
| | | { |
| | | imgRank.SetActive(false); |
| | | txtRank.SetActive(true); |
| | | int lastIndex = index - 1; |
| | | txtRank.text = lastIndex > 0 && lastIndex < list.Count ? Language.Get("Arena15", list[lastIndex] + 1, rank) : string.Empty; |
| | | } |
| | | |
| | | int key = list[index]; |
| | | int[][] rewardArr = rewardDict[key]; |
| | | for (int i = 0; i < itemCells.Length; i++) |
| | | { |
| | | var itemCell = itemCells[i]; |
| | | if (!rewardArr.IsNullOrEmpty() && i < rewardArr.Length) |
| | | { |
| | | int itemCellIndex = i; |
| | | itemCell.SetActive(true); |
| | | itemCell.Init(new ItemCellModel(rewardArr[i][0], true, rewardArr[i][1])); |
| | | itemCell.button.SetListener(() => ItemTipUtility.Show(rewardArr[itemCellIndex][0], true)); |
| | | } |
| | | else |
| | | { |
| | | itemCell.SetActive(false); |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 1af032a349424c84fae27b64da3a604e |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using UnityEngine; |
| | | |
| | | public class ArenaAwardWin : FunctionsBaseWin |
| | | { |
| | | [SerializeField] ButtonEx btnClose; |
| | | [SerializeField] TextEx txtCountdown; |
| | | [SerializeField] ScrollerController scrAward; |
| | | [SerializeField] ArenaPlayerRankCell myRankCell; |
| | | [HideInInspector] public string valueFormat = "{0}"; |
| | | protected override void InitComponent() |
| | | { |
| | | base.InitComponent(); |
| | | btnClose.SetListener(() => UIManager.Instance.CloseWindow<ArenaAwardWin>()); |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | base.OnPreOpen(); |
| | | tabButtons[functionOrder].SelectBtn(true); |
| | | ArenaManager.Instance.OnArenaMatchListEvent += OnArenaMatchListEvent; |
| | | ArenaManager.Instance.OnUpdateArenaPlayerInfo += OnUpdateArenaPlayerInfo; |
| | | ArenaManager.Instance.OnUpdateGameRecInfo += OnUpdateGameRecInfo; |
| | | RankModel.Instance.onRankRefresh -= OnRankRefresh; |
| | | GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; |
| | | scrAward.OnRefreshCell += OnRefreshCell; |
| | | Display(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | base.OnPreClose(); |
| | | ArenaManager.Instance.OnArenaMatchListEvent -= OnArenaMatchListEvent; |
| | | ArenaManager.Instance.OnUpdateArenaPlayerInfo -= OnUpdateArenaPlayerInfo; |
| | | ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo; |
| | | RankModel.Instance.onRankRefresh -= OnRankRefresh; |
| | | GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; |
| | | scrAward.OnRefreshCell -= OnRefreshCell; |
| | | } |
| | | |
| | | private void OnSecondEvent() |
| | | { |
| | | ArenaManager.Instance.GetCurrentSeasonDates(out DateTime seasonStartDate, out DateTime seasonEndDate); |
| | | TimeSpan remainingTime = seasonEndDate - TimeUtility.ServerNow; |
| | | int remainingSeconds = (int)remainingTime.TotalSeconds; |
| | | if (remainingSeconds > 0) |
| | | { |
| | | string countdownText = TimeUtility.SecondsToDHMSCHS(remainingSeconds); |
| | | txtCountdown.SetActive(true); |
| | | txtCountdown.text = Language.Get("Arena14", countdownText); |
| | | } |
| | | else |
| | | { |
| | | txtCountdown.SetActive(false); |
| | | } |
| | | } |
| | | |
| | | |
| | | protected override void OpenSubUIByTabIndex() |
| | | { |
| | | ArenaManager.Instance.nowAwardTabIndex = functionOrder; |
| | | Display(); |
| | | } |
| | | |
| | | private void OnRefreshCell(ScrollerDataType type, CellView cell) |
| | | { |
| | | var _cell = cell.GetComponent<ArenaAwardCell>(); |
| | | _cell?.Display(cell.index, cell); |
| | | } |
| | | |
| | | private void OnUpdateArenaPlayerInfo() |
| | | { |
| | | Display(); |
| | | } |
| | | |
| | | private void OnArenaMatchListEvent() |
| | | { |
| | | Display(); |
| | | } |
| | | |
| | | private void OnUpdateGameRecInfo() |
| | | { |
| | | Display(); |
| | | } |
| | | void OnRankRefresh(int type) |
| | | { |
| | | DisplayMyRank(); |
| | | } |
| | | |
| | | private void Display() |
| | | { |
| | | CreateScroller(); |
| | | DisplayMyRank(); |
| | | OnSecondEvent(); |
| | | } |
| | | |
| | | private void CreateScroller() |
| | | { |
| | | scrAward.Refresh(); |
| | | Dictionary<int, int[][]> rewardDict = ArenaManager.Instance.GetArenaAwardDict(functionOrder); |
| | | if (!rewardDict.IsNullOrEmpty()) |
| | | { |
| | | var list = rewardDict.Keys.ToList(); |
| | | list.Sort(); |
| | | for (int i = 0; i < list.Count; i++) |
| | | { |
| | | CellInfo cellInfo = new CellInfo(); |
| | | cellInfo.infoInt1 = (int)functionOrder; |
| | | scrAward.AddCell(ScrollerDataType.Header, i, cellInfo); |
| | | } |
| | | } |
| | | scrAward.Restart(); |
| | | } |
| | | |
| | | private void DisplayMyRank() |
| | | { |
| | | myRankCell.Display(ArenaManager.Instance.rankType, 0, valueFormat); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 261402b40fdeef54b88c11e75dddd897 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using Cysharp.Threading.Tasks; |
| | | using LitJson; |
| | | using UnityEngine; |
| | | |
| | | //战场结算界面,存在多个的情况 |
| | | public class ArenaBattleFailWin : UIBase |
| | | { |
| | | [SerializeField] AvatarCell myAvatarCell; |
| | | [SerializeField] AvatarCell enemyAvatarCell; |
| | | [SerializeField] TextEx txtMyName; |
| | | [SerializeField] TextEx txtEnemyName; |
| | | [SerializeField] TextEx txtMyScore; |
| | | [SerializeField] TextEx txtEnemyScore; |
| | | [SerializeField] ScrollerController scroller; |
| | | JsonData jsonData; |
| | | string guid; |
| | | |
| | | protected override void InitComponent() |
| | | { |
| | | |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | scroller.OnRefreshCell += OnRefreshCell; |
| | | guid = BattleSettlementManager.Instance.notifyGuid; |
| | | jsonData = BattleSettlementManager.Instance.GetBattleSettlement(guid); |
| | | if (jsonData == null) |
| | | { |
| | | DelayCloseWindow().Forget(); |
| | | return; |
| | | } |
| | | Display(); |
| | | CreateScroller(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | scroller.OnRefreshCell -= OnRefreshCell; |
| | | BattleSettlementManager.Instance.WinShowOver(guid); |
| | | } |
| | | |
| | | // B4 20 回合制战斗状态 #tagMCTurnFightState 通用的结算状态 State 4-结算奖励 |
| | | // Msg 中额外信息 |
| | | // "tagPlayerID":对战的目标ID, |
| | | // "atkAddScore":发起方增加的积分,可能为0, |
| | | // "defDecScore":被击方减少的积分,可能为0, |
| | | // itemInfo:奖励物品列表,可能为空 |
| | | void Display() |
| | | { |
| | | if (!jsonData.ContainsKey("tagPlayerID") || !jsonData.ContainsKey("atkAddScore") || !jsonData.ContainsKey("defDecScore")) |
| | | return; |
| | | uint tagPlayerID = (uint)jsonData["tagPlayerID"]; |
| | | int atkAddScore = (int)jsonData["atkAddScore"]; |
| | | int defDecScore = (int)jsonData["defDecScore"]; |
| | | if (!ArenaManager.Instance.TryGetPlayerInfo(tagPlayerID, out ArenaMatchInfo info)) |
| | | return; |
| | | uint enemyFace = info.Face; |
| | | uint enemyFacePic = info.FacePic; |
| | | |
| | | myAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID, |
| | | PlayerDatas.Instance.baseData.face, |
| | | PlayerDatas.Instance.baseData.facePic)); |
| | | enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)tagPlayerID, (int)enemyFace, (int)enemyFacePic)); |
| | | txtMyName.text = PlayerDatas.Instance.baseData.PlayerName; |
| | | txtEnemyName.text = UIHelper.ServerStringTrim(info.PlayerName); |
| | | txtMyScore.text = Language.Get("Arena17", atkAddScore); |
| | | txtEnemyScore.text = Language.Get("Arena21", defDecScore); |
| | | } |
| | | List<Item> showItems = new List<Item>(); |
| | | void CreateScroller() |
| | | { |
| | | |
| | | showItems.Clear(); |
| | | scroller.Refresh(); |
| | | |
| | | if (!jsonData.ContainsKey("itemInfo")) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | var resultStr = jsonData["itemInfo"]; |
| | | for (int i = 0; i < resultStr.Count; i++) |
| | | { |
| | | showItems.Add(new Item((int)resultStr[i]["ItemID"], (long)resultStr[i]["Count"])); |
| | | } |
| | | |
| | | showItems.Sort(SortItem); |
| | | for (int i = 0; i < showItems.Count; i++) |
| | | { |
| | | scroller.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | scroller.Restart(); |
| | | } |
| | | |
| | | int SortItem(Item itemA, Item itemB) |
| | | { |
| | | var itemConfigA = ItemConfig.Get(itemA.id); |
| | | var itemConfigB = ItemConfig.Get(itemB.id); |
| | | return itemConfigB.ItemColor - itemConfigA.ItemColor; |
| | | } |
| | | |
| | | void OnRefreshCell(ScrollerDataType type, CellView cell) |
| | | { |
| | | var _cell = cell as SettlementAwardCell; |
| | | var item = showItems[cell.index]; |
| | | _cell?.Display(item.id, item.countEx); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: e168451406b9e004180f67432eb30f58 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using Cysharp.Threading.Tasks; |
| | | using LitJson; |
| | | using UnityEngine; |
| | | |
| | | // 【战斗结算】 |
| | | // 当收到 // B4 20 回合制战斗状态 #tagMCTurnFightState State 为 4-结算,时,代表本场战斗已结束并结算 |
| | | // char Msg[Len]; //size = Len Msg信息为 |
| | | // {"winFaction":获胜阵营, "statInfo":统计信息, “itemInfo“:[奖励物品信息列表]} |
| | | // 获胜阵营: 一般为1或者2,当玩家发起的战斗时,如果获胜阵营不等于1代表玩家失败了 |
| | | // 统计信息: 格式 {"阵营编号":{"阵容编号":{"站位编号":{该武将统计信息字典}, ...}, ...}, ...} |
| | | // 阵营编号: 一般时1或2, 对应 B424 同步下去的阵营 |
| | | // 阵容编号: 隶属于某个阵营的阵容编号,一般是从1开始,一个阵营在多V多的情况下可以有多个阵容 |
| | | // 站位编号: 某个阵容中武将战斗实例的站位编号,一般从1开始,代表站位1 |
| | | // 武将统计信息字典: 格式: {"ObjID":实例ID, "HeroID":玩家阵容武将ID, "NPCID":npc表ID, "AtkHurt":总输出, "DefHurt":总承伤, "CureHP":总治疗} |
| | | |
| | | // 处理战斗结束逻辑 |
| | | // IsBattleFinish = true; |
| | | // 结算逻辑 |
| | | |
| | | // { |
| | | // "itemInfo": [], |
| | | // "winFaction": 1,//获胜阵营: 一般为1或者2,当玩家发起的战斗时,如果获胜阵营不等于1代表玩家失败了 |
| | | // "statInfo": { |
| | | // "1": { |
| | | // "1": { |
| | | // "5": { |
| | | // "NPCID": 0, |
| | | // "DefHurt": 633, |
| | | // "CureHP": 0, |
| | | // "AtkHurt": 169247, |
| | | // "ObjID": 1, |
| | | // "HeroID": 510006 |
| | | // } |
| | | // } |
| | | // }, |
| | | // "2": { |
| | | // "1": { |
| | | // "2": { |
| | | // "NPCID": 10101001, |
| | | // "DefHurt": 169246, |
| | | // "CureHP": 143096, |
| | | // "AtkHurt": 999952, |
| | | // "ObjID": 2, |
| | | // "HeroID": 0 |
| | | // }, |
| | | // "4": { |
| | | // "NPCID": 10101001, |
| | | // "DefHurt": 0, |
| | | // "CureHP": 0, |
| | | // "AtkHurt": 0, |
| | | // "ObjID": 3, |
| | | // "HeroID": 0 |
| | | // }, |
| | | // "6": { |
| | | // "NPCID": 10101001, |
| | | // "DefHurt": 1, |
| | | // "CureHP": 0, |
| | | // "AtkHurt": 0, |
| | | // "ObjID": 4, |
| | | // "HeroID": 0 |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | //"Msg":{"itemInfo":[{"ItemID":5,"Count":2},{"ItemID":3,"Count":40}],"winFaction":1,"statInfo":{"1":{"1":{"1":{"NPCID":0,"DefHurt":727,"CureHP":0,"AtkHurt":1891,"ObjID":1,"HeroID":530004},"3":{"NPCID":0,"DefHurt":483,"CureHP":1511,"AtkHurt":782,"ObjID":6,"HeroID":520001},"2":{"NPCID":0,"DefHurt":953,"CureHP":0,"AtkHurt":1712,"ObjID":5,"HeroID":510003}}},"2":{"1":{"1":{"NPCID":10101091,"DefHurt":638,"CureHP":0,"AtkHurt":140,"ObjID":2,"HeroID":610001},"3":{"NPCID":10101092,"DefHurt":625,"CureHP":0,"AtkHurt":126,"ObjID":3,"HeroID":610001},"5":{"NPCID":10101093,"DefHurt":3122,"CureHP":0,"AtkHurt":1897,"ObjID":4,"HeroID":510003}}}}} |
| | | |
| | | //战场结算界面,存在多个的情况 |
| | | public class ArenaBattleVictoryWin : UIBase |
| | | { |
| | | [SerializeField] AvatarCell myAvatarCell; |
| | | [SerializeField] AvatarCell enemyAvatarCell; |
| | | [SerializeField] TextEx txtMyName; |
| | | [SerializeField] TextEx txtEnemyName; |
| | | [SerializeField] TextEx txtMyScore; |
| | | [SerializeField] TextEx txtEnemyScore; |
| | | |
| | | [SerializeField] ScrollerController scroller; |
| | | JsonData jsonData; |
| | | string guid; |
| | | protected override void OnPreOpen() |
| | | { |
| | | scroller.OnRefreshCell += OnRefreshCell; |
| | | guid = BattleSettlementManager.Instance.notifyGuid; |
| | | jsonData = BattleSettlementManager.Instance.GetBattleSettlement(guid); |
| | | if (jsonData == null) |
| | | { |
| | | DelayCloseWindow().Forget(); |
| | | return; |
| | | } |
| | | Display(); |
| | | CreateScroller(); |
| | | } |
| | | |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | scroller.OnRefreshCell -= OnRefreshCell; |
| | | BattleSettlementManager.Instance.WinShowOver(guid); |
| | | } |
| | | // B4 20 回合制战斗状态 #tagMCTurnFightState 通用的结算状态 State 4-结算奖励 |
| | | // Msg 中额外信息 |
| | | // "tagPlayerID":对战的目标ID, |
| | | // "atkAddScore":发起方增加的积分,可能为0, |
| | | // "defDecScore":被击方减少的积分,可能为0, |
| | | // itemInfo:奖励物品列表,可能为空 |
| | | void Display() |
| | | { |
| | | if (!jsonData.ContainsKey("tagPlayerID") || !jsonData.ContainsKey("atkAddScore") || !jsonData.ContainsKey("defDecScore")) |
| | | return; |
| | | uint tagPlayerID = (uint)jsonData["tagPlayerID"]; |
| | | int atkAddScore = (int)jsonData["atkAddScore"]; |
| | | int defDecScore = (int)jsonData["defDecScore"]; |
| | | if (!ArenaManager.Instance.TryGetPlayerInfo(tagPlayerID, out ArenaMatchInfo info)) |
| | | return; |
| | | uint enemyFace = info.Face; |
| | | uint enemyFacePic = info.FacePic; |
| | | |
| | | myAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID, |
| | | PlayerDatas.Instance.baseData.face, |
| | | PlayerDatas.Instance.baseData.facePic)); |
| | | enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)tagPlayerID, (int)enemyFace, (int)enemyFacePic)); |
| | | txtMyName.text = PlayerDatas.Instance.baseData.PlayerName; |
| | | txtEnemyName.text = UIHelper.ServerStringTrim(info.PlayerName); |
| | | txtMyScore.text = Language.Get("Arena17", atkAddScore); |
| | | txtEnemyScore.text = Language.Get("Arena21", defDecScore); |
| | | } |
| | | |
| | | List<Item> showItems = new List<Item>(); |
| | | void CreateScroller() |
| | | { |
| | | |
| | | showItems.Clear(); |
| | | scroller.Refresh(); |
| | | |
| | | if (!jsonData.ContainsKey("itemInfo")) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | var resultStr = jsonData["itemInfo"]; |
| | | for (int i = 0; i < resultStr.Count; i++) |
| | | { |
| | | showItems.Add(new Item((int)resultStr[i]["ItemID"], (long)resultStr[i]["Count"])); |
| | | } |
| | | |
| | | showItems.Sort(SortItem); |
| | | for (int i = 0; i < showItems.Count; i++) |
| | | { |
| | | scroller.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | scroller.Restart(); |
| | | } |
| | | |
| | | int SortItem(Item itemA, Item itemB) |
| | | { |
| | | var itemConfigA = ItemConfig.Get(itemA.id); |
| | | var itemConfigB = ItemConfig.Get(itemB.id); |
| | | return itemConfigB.ItemColor - itemConfigA.ItemColor; |
| | | } |
| | | |
| | | void OnRefreshCell(ScrollerDataType type, CellView cell) |
| | | { |
| | | var _cell = cell as SettlementAwardCell; |
| | | var item = showItems[cell.index]; |
| | | _cell?.Display(item.id, item.countEx); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 4b85bbac1964abf45a57115812f0b39b |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | |
| | | public class ArenaChallengeCell : MonoBehaviour |
| | | { |
| | | [SerializeField] AvatarCell avatarCell; |
| | | [SerializeField] TextEx txtName; |
| | | [SerializeField] TextEx txtAddScore; |
| | | [SerializeField] TextEx txtFightPoint; |
| | | [SerializeField] OfficialTitleCell officialTitleCell; |
| | | [SerializeField] List<ItemCell> itemCells; |
| | | [SerializeField] ButtonEx btnChallenge; |
| | | ArenaMatchInfo arenaMatchInfo; |
| | | void Start() |
| | | { |
| | | btnChallenge.SetListener(() => |
| | | { |
| | | if (arenaMatchInfo == null) |
| | | return; |
| | | // 货币不足 |
| | | if (!UIHelper.CheckMoneyCount(ArenaManager.Instance.ChallengeMoneyType, ArenaManager.Instance.NeedChallengeMoneyCnt, 1)) |
| | | return; |
| | | ArenaManager.Instance.atkPlayerId = arenaMatchInfo.PlayerID; |
| | | ArenaManager.Instance.SendTurnFight(arenaMatchInfo.PlayerID); |
| | | }); |
| | | } |
| | | |
| | | public void Display(int index) |
| | | { |
| | | List<ArenaMatchInfo> list = ArenaManager.Instance.matchInfoList; |
| | | if (list.IsNullOrEmpty() || index < 0 || index >= list.Count) |
| | | return; |
| | | arenaMatchInfo = list[index]; |
| | | |
| | | avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)arenaMatchInfo.PlayerID, (int)arenaMatchInfo.Face, (int)arenaMatchInfo.FacePic)); |
| | | txtName.text = UIHelper.ServerStringTrim(arenaMatchInfo.PlayerName); |
| | | txtFightPoint.text = UIHelper.ReplaceLargeArtNum(arenaMatchInfo.FightPower); |
| | | txtAddScore.text = Language.Get("Arena16", ArenaManager.Instance.GetChallengePoints(index)); |
| | | |
| | | officialTitleCell.InitUI(arenaMatchInfo.RealmLV, (int)arenaMatchInfo.TitleID); |
| | | |
| | | int[][] rewards = ArenaManager.Instance.fixedChallengeRewards; |
| | | for (int i = 0; i < itemCells.Count; i++) |
| | | { |
| | | var itemCell = itemCells[i]; |
| | | if (!rewards.IsNullOrEmpty() && i < rewards.Length) |
| | | { |
| | | int itemCellIndex = i; |
| | | itemCell.SetActive(true); |
| | | itemCell.Init(new ItemCellModel(rewards[i][0], true, rewards[i][1])); |
| | | itemCell.button.SetListener(() => ItemTipUtility.Show(rewards[itemCellIndex][0], true)); |
| | | } |
| | | else |
| | | { |
| | | itemCell.SetActive(false); |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 241dd54b1d574284b97aeb85cfed40a2 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | |
| | | public class ArenaChallengeVoucher : MonoBehaviour |
| | | { |
| | | [SerializeField] ImageEx imgChallengeMoneyIcon; |
| | | [SerializeField] TextEx txtChallengeMoneyCount; |
| | | [SerializeField] ButtonEx btnBuy; |
| | | |
| | | void Awake() |
| | | { |
| | | btnBuy.SetListener(() => |
| | | { |
| | | |
| | | }); |
| | | } |
| | | |
| | | public void Display() |
| | | { |
| | | int type = ArenaManager.Instance.ChallengeMoneyType; |
| | | int maxChallengeCount = ArenaManager.Instance.GetMaxChallengeCount(); |
| | | imgChallengeMoneyIcon.SetIconWithMoneyType(type); |
| | | txtChallengeMoneyCount.text = Language.Get("BoneField09", UIHelper.GetMoneyCnt(type), maxChallengeCount); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 5aabcebb83427c645b22e283276e1d00 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | |
| | | public class ArenaChallengeWin : UIBase |
| | | { |
| | | [SerializeField] ArenaChallengeVoucher voucher; |
| | | [SerializeField] ButtonEx btnRefresh; |
| | | [SerializeField] TextEx txtFightPoint; |
| | | [SerializeField] ImageEx imgMoneyIcon; |
| | | [SerializeField] TextEx txtMoneyCount; |
| | | [SerializeField] ScrollerController scrollerController; |
| | | |
| | | protected override void InitComponent() |
| | | { |
| | | base.InitComponent(); |
| | | btnRefresh.SetListener(() => |
| | | { |
| | | // 货币不足 |
| | | if (!UIHelper.CheckMoneyCount(ArenaManager.Instance.currencyType, ArenaManager.Instance.currencyValue, 1)) |
| | | return; |
| | | ArenaManager.Instance.SendArenaMatch(true); |
| | | }); |
| | | |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | base.OnPreOpen(); |
| | | // RankModel.Instance.onRankRefresh += OnRankRefresh; |
| | | scrollerController.OnRefreshCell += OnRefreshCell; |
| | | ArenaManager.Instance.OnArenaMatchListEvent += OnArenaMatchListEvent; |
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; |
| | | // ArenaManager.Instance.OnUpdateArenaPlayerInfo += OnUpdateArenaPlayerInfo; |
| | | // ArenaManager.Instance.OnUpdateGameRecInfo += OnUpdateGameRecInfo; |
| | | // Display(); |
| | | Display(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | base.OnPreClose(); |
| | | // RankModel.Instance.onRankRefresh -= OnRankRefresh; |
| | | scrollerController.OnRefreshCell -= OnRefreshCell; |
| | | ArenaManager.Instance.OnArenaMatchListEvent -= OnArenaMatchListEvent; |
| | | PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh; |
| | | // ArenaManager.Instance.OnUpdateArenaPlayerInfo -= OnUpdateArenaPlayerInfo; |
| | | // ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo; |
| | | } |
| | | |
| | | private void PlayerDataRefresh(PlayerDataType type) |
| | | { |
| | | if (type != PlayerDataType.ChallengeVoucher) |
| | | return; |
| | | Display(); |
| | | } |
| | | |
| | | private void OnArenaMatchListEvent() |
| | | { |
| | | Display(); |
| | | |
| | | } |
| | | |
| | | private void CreateScroller() |
| | | { |
| | | scrollerController.Refresh(); |
| | | List<ArenaMatchInfo> list = ArenaManager.Instance.matchInfoList; |
| | | if (!list.IsNullOrEmpty()) |
| | | { |
| | | for (int i = 0; i < list.Count; i++) |
| | | { |
| | | scrollerController.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | } |
| | | scrollerController.Restart(); |
| | | } |
| | | |
| | | void OnRefreshCell(ScrollerDataType type, CellView cell) |
| | | { |
| | | var _cell = cell.GetComponent<ArenaChallengeCell>(); |
| | | _cell?.Display(cell.index); |
| | | } |
| | | |
| | | void Display() |
| | | { |
| | | CreateScroller(); |
| | | voucher.Display(); |
| | | txtFightPoint.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPower); |
| | | imgMoneyIcon.SetIconWithMoneyType(ArenaManager.Instance.currencyType); |
| | | txtMoneyCount.text = UIHelper.ShowUseMoney(ArenaManager.Instance.currencyType, ArenaManager.Instance.currencyValue); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 1ab89feb7fe3f5e4695c1cf39769fc60 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | |
| | | public class ArenaHeroHead : MonoBehaviour |
| | | { |
| | | [SerializeField] ImageEx imgQuality; |
| | | [SerializeField] ImageEx imgHeadIcon; |
| | | [SerializeField] TextEx txtHeroLv; |
| | | |
| | | public void Display(int heroID, int skinID, int heroLv) |
| | | { |
| | | if (!HeroConfig.HasKey(heroID) || !HeroSkinConfig.HasKey(skinID)) |
| | | return; |
| | | var heroConfig = HeroConfig.Get(heroID); |
| | | var heroSkinConfig = HeroSkinConfig.Get(skinID); |
| | | imgQuality.SetSprite("heroheadBG" + heroConfig.Quality); |
| | | |
| | | var sprite = UILoader.LoadSprite("HeroHead", heroSkinConfig.SquareIcon); |
| | | if (sprite == null) |
| | | { |
| | | // 内网未配置时 |
| | | imgHeadIcon.SetSprite("herohead_default"); |
| | | } |
| | | else |
| | | { |
| | | imgHeadIcon.overrideSprite = sprite; |
| | | } |
| | | |
| | | txtHeroLv.text = Language.Get("Arena22", heroLv); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: f37aea19aa098294f825fa0dfea4a44e |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using LitJson; |
| | | using System; |
| | | |
| | | public class ArenaManager : GameSystemManager<ArenaManager> |
| | | { |
| | | public readonly int rankType = 1; // 榜单类型 |
| | | public readonly int funcId = 27; // 功能Id |
| | | public readonly int recType = 308; // 演武场玩家挑战记录类型 308 |
| | | public readonly int ChallengeMoneyType = 53; |
| | | public readonly int NeedChallengeMoneyCnt = 1; |
| | | public readonly int RecordType = 308; // 演武场玩家挑战记录 |
| | | public int initialPoints; // 玩家初始积分 |
| | | public int challengeRecordCount; // 被挑战记录条数(不超过50) |
| | | public int challengeTicketLimit; // 挑战券基础存储上限 |
| | | public int[][] fixedChallengeRewards; // 固定挑战奖励 [[物品ID,个数], ...] |
| | | public int[][] matchVictoryPoints; // 匹配位置挑战胜利对应增减积分 [[挑战方增加积分, 防守方扣除积分], ...],长度即为匹配的人数,从最高分开始配置 |
| | | public int lowerRankStart; // 从比自己低几个段的名次开始匹配 |
| | | public int rankStep; // 每个匹配段跨x名,如配置 2|10,即代表从自己名次向后20名开始匹配,每跨10名匹配1人 |
| | | public Dictionary<int, int[]> robotMatchCounts; // 玩家所在小于等于该名次对应匹配机器人数 {名次:[匹配机器人数下限, 上限], ...} |
| | | public int currencyType; // 刷新匹配固定消耗货币类型 |
| | | public int currencyValue; // 刷新匹配固定消耗货币值 |
| | | public Dictionary<int, int[][]> dailyRankRewards; // 每日排行奖励 {"名次":[[物品ID, 个数,是否拍品], ...], ...} 配置的名次key,自动按小于等于对应名次给奖励 |
| | | public Dictionary<int, int[][]> seasonRankRewards; // 赛季排行奖励 {"名次":[[物品ID, 个数,是否拍品], ...], ...} |
| | | |
| | | public uint score; // 当前积分 |
| | | |
| | | public List<ArenaMatchInfo> matchInfoList = new List<ArenaMatchInfo>(); |
| | | //用于用来拿战斗胜利失败的头像信息 |
| | | public Dictionary<uint, ArenaMatchInfo> allFaceInfoDict = new Dictionary<uint, ArenaMatchInfo>(); |
| | | public Dictionary<uint, List<ArenaGameRec>> gameRecDict = new Dictionary<uint, List<ArenaGameRec>>(); // <RecID,ArenaGameRec> |
| | | public uint atkPlayerId; |
| | | public Redpoint parentRedpoint = new Redpoint(MainRedDot.MainChallengeRedpoint, MainRedDot.ArenaRepoint); |
| | | public Redpoint challengeButtonRedpoint; |
| | | public int nowAwardTabIndex = 0; |
| | | public event Action OnArenaMatchListEvent; |
| | | public event Action OnUpdateArenaPlayerInfo; |
| | | public event Action OnUpdateGameRecInfo; |
| | | public override void Init() |
| | | { |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent; |
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; |
| | | InitTable(); |
| | | InitRedpoint(); |
| | | } |
| | | |
| | | public override void Release() |
| | | { |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent; |
| | | PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh; |
| | | } |
| | | |
| | | public void OnBeforePlayerDataInitializeEvent() |
| | | { |
| | | matchInfoList.Clear(); |
| | | gameRecDict.Clear(); |
| | | allFaceInfoDict.Clear(); |
| | | } |
| | | |
| | | void InitRedpoint() |
| | | { |
| | | challengeButtonRedpoint = new Redpoint(MainRedDot.ArenaRepoint, GetRedPonitId(1)); |
| | | } |
| | | |
| | | void InitTable() |
| | | { |
| | | FuncConfigConfig config = FuncConfigConfig.Get("ArenaSet"); |
| | | initialPoints = int.Parse(config.Numerical1); |
| | | challengeRecordCount = int.Parse(config.Numerical2); |
| | | challengeTicketLimit = int.Parse(config.Numerical3); |
| | | fixedChallengeRewards = JsonMapper.ToObject<int[][]>(config.Numerical4); |
| | | |
| | | config = FuncConfigConfig.Get("ArenaMatch"); |
| | | matchVictoryPoints = JsonMapper.ToObject<int[][]>(config.Numerical1); |
| | | string[] matchParams = config.Numerical2.Split('|'); |
| | | lowerRankStart = int.Parse(matchParams[0]); |
| | | rankStep = int.Parse(matchParams[1]); |
| | | robotMatchCounts = ConfigParse.GetDic<int, int[]>(config.Numerical3); |
| | | string[] costParams = config.Numerical4.Split('|'); |
| | | currencyType = int.Parse(costParams[0]); |
| | | currencyValue = int.Parse(costParams[1]); |
| | | |
| | | config = FuncConfigConfig.Get("ArenaBillboradAward"); |
| | | dailyRankRewards = ConfigParse.ParseIntArray2Dict(config.Numerical1); |
| | | seasonRankRewards = ConfigParse.ParseIntArray2Dict(config.Numerical2); |
| | | } |
| | | public void UpdateRedPonit() |
| | | { |
| | | parentRedpoint.state = RedPointState.None; |
| | | challengeButtonRedpoint.state = RedPointState.None; |
| | | |
| | | if (!FuncOpen.Instance.IsFuncOpen(funcId)) |
| | | return; |
| | | |
| | | if (UIHelper.GetMoneyCnt(ChallengeMoneyType) > 0) |
| | | { |
| | | challengeButtonRedpoint.state = RedPointState.Simple; |
| | | } |
| | | } |
| | | |
| | | public bool TryGetPlayerInfo(uint playerID, out ArenaMatchInfo info) |
| | | { |
| | | return allFaceInfoDict.TryGetValue(playerID, out info); |
| | | } |
| | | |
| | | // 1 挑战按钮 |
| | | public int GetRedPonitId(int num) |
| | | { |
| | | return MainRedDot.ArenaRepoint * 10 + num; |
| | | } |
| | | |
| | | private void PlayerDataRefresh(PlayerDataType type) |
| | | { |
| | | if (type != PlayerDataType.ChallengeVoucher) |
| | | return; |
| | | UpdateRedPonit(); |
| | | } |
| | | |
| | | public int GetMaxChallengeCount() |
| | | { |
| | | return challengeTicketLimit; |
| | | } |
| | | |
| | | public void OnArenaMatchList(HA922_tagSCArenaMatchList vNetData) |
| | | { |
| | | if (vNetData == null || vNetData.MatchList.IsNullOrEmpty()) |
| | | return; |
| | | |
| | | matchInfoList.Clear(); |
| | | |
| | | foreach (var item in vNetData.MatchList) |
| | | { |
| | | var matchInfo = new ArenaMatchInfo |
| | | { |
| | | PlayerID = item.PlayerID, |
| | | PlayerName = item.PlayerName, |
| | | Lv = item.LV, |
| | | RealmLV = item.RealmLV, |
| | | FightPower = (ulong)item.FightPowerEx * 100000000 + (ulong)item.FightPower, |
| | | Face = item.Face, |
| | | FacePic = item.FacePic |
| | | }; |
| | | matchInfoList.Add(matchInfo); |
| | | allFaceInfoDict[item.PlayerID] = matchInfo; |
| | | } |
| | | matchInfoList.Reverse(); |
| | | OnArenaMatchListEvent?.Invoke(); |
| | | } |
| | | |
| | | |
| | | public void UpdateArenaPlayerInfo(HA923_tagSCArenaPlayerInfo vNetData) |
| | | { |
| | | if (vNetData == null) |
| | | return; |
| | | this.score = vNetData.Score; |
| | | OnUpdateArenaPlayerInfo?.Invoke(); |
| | | } |
| | | public void UpdateGameRecInfo(HA009_tagSCGameRecInfo vNetData) |
| | | { |
| | | if (vNetData == null || vNetData.RecType != recType) |
| | | return; |
| | | gameRecDict.Clear(); |
| | | uint recID = vNetData.RecID; |
| | | if (!gameRecDict.ContainsKey(recID)) |
| | | gameRecDict[recID] = new List<ArenaGameRec>(); |
| | | foreach (var rec in vNetData.RecList) |
| | | { |
| | | try |
| | | { |
| | | var userData = JsonMapper.ToObject(rec.UserData); |
| | | string name = userData["Name"].ToString(); |
| | | int addScore = int.Parse(userData["AddScore"].ToString()); |
| | | ulong fightPower = ulong.Parse(userData["FightPower"].ToString()); |
| | | |
| | | var arenaGameRec = new ArenaGameRec |
| | | { |
| | | Time = rec.Time, |
| | | Value1 = rec.Value1, |
| | | Value2 = rec.Value2, |
| | | Value3 = rec.Value3, |
| | | Value4 = rec.Value4, |
| | | Value5 = rec.Value5, |
| | | Value6 = rec.Value6, |
| | | Value7 = rec.Value7, |
| | | Value8 = rec.Value8, |
| | | Name = name, |
| | | AddScore = addScore, |
| | | FightPower = fightPower |
| | | }; |
| | | |
| | | gameRecDict[recID].Add(arenaGameRec); |
| | | |
| | | if (recID == PlayerDatas.Instance.baseData.PlayerID) |
| | | { |
| | | allFaceInfoDict[rec.Value3] = new ArenaMatchInfo |
| | | { |
| | | Face = rec.Value5, |
| | | FacePic = rec.Value6, |
| | | RealmLV = (ushort)rec.Value7, |
| | | Lv = (ushort)rec.Value8, |
| | | PlayerName = name, |
| | | FightPower = fightPower, |
| | | }; |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Debug.LogError($"JSON解析错误: {ex.Message}, UserData: {rec.UserData}"); |
| | | continue; |
| | | } |
| | | } |
| | | OnUpdateGameRecInfo?.Invoke(); |
| | | } |
| | | |
| | | |
| | | public Dictionary<int, int[][]> GetArenaAwardDict(int functionOrder) |
| | | { |
| | | return functionOrder == 0 ? dailyRankRewards : seasonRankRewards; |
| | | } |
| | | |
| | | public void SendViewGameRecPack() |
| | | { |
| | | CA008_tagCSViewGameRec pack = new CA008_tagCSViewGameRec(); |
| | | pack.RecType = (ushort)RecordType; |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | } |
| | | |
| | | public void SendArenaMatch(bool isRefresh = false) |
| | | { |
| | | CB209_tagCSArenaMatch pack = new CB209_tagCSArenaMatch(); |
| | | pack.IsRefresh = isRefresh ? (byte)1 : (byte)0; |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | } |
| | | |
| | | public void SendTurnFight(uint playerID) |
| | | { |
| | | CB410_tagCMTurnFight pack = new CB410_tagCMTurnFight(); |
| | | pack.MapID = 3; |
| | | pack.TagType = 1; |
| | | pack.TagID = playerID; |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | } |
| | | |
| | | public bool IsTimeInvalid(uint time) |
| | | { |
| | | DateTime dateTime = TimeUtility.GetTime(time); |
| | | GetCurrentSeasonDates(out DateTime seasonStartDate, out DateTime seasonEndDate); |
| | | return dateTime < seasonStartDate || dateTime > seasonEndDate; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据索引和排序方向获取积分 |
| | | /// </summary> |
| | | /// <param name="index">索引位置(从0开始)</param> |
| | | /// <param name="isAscending">true-正序,false-倒序</param> |
| | | /// <param name="isChallenger">true-挑战方增加积分,false-防守方扣除积分</param> |
| | | /// <returns>对应的积分值</returns> |
| | | public int GetChallengePoints(int index, bool isAscending = false, bool isChallenger = true) |
| | | { |
| | | // 检查索引是否在有效范围内 |
| | | if (matchVictoryPoints.IsNullOrEmpty() || index < 0 || index >= matchVictoryPoints.Length) |
| | | return 0; |
| | | int targetIndex = isAscending ? index : matchVictoryPoints.Length - 1 - index; |
| | | return matchVictoryPoints[targetIndex][isChallenger ? 0 : 1]; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获得当前赛季的起止日期。赛季从周一 00:00:00 开始,到周日 23:59:59 结束。 |
| | | /// 服务端定义周一为每周的第一天。 |
| | | /// </summary> |
| | | /// <param name="seasonStartDate">输出参数:赛季的起始日期(本周一 00:00:00)</param> |
| | | /// <param name="seasonEndDate">输出参数:赛季的结束日期(本周日 23:59:59)</param> |
| | | public void GetCurrentSeasonDates(out DateTime seasonStartDate, out DateTime seasonEndDate) |
| | | { |
| | | DateTime now = TimeUtility.ServerNow; |
| | | // 在 .NET 中,DayOfWeek 枚举 Sunday = 0, Monday = 1, ..., Saturday = 6。 |
| | | // 为了符合周一是一周第一天的计算标准,我们将周日视为一周的第7天。 |
| | | int currentDayOfWeek = (int)now.DayOfWeek; |
| | | if (currentDayOfWeek == 0) // 如果是周日 (Sunday = 0) |
| | | { |
| | | currentDayOfWeek = 7; |
| | | } |
| | | |
| | | // 从当前日期减去相应的天数,得到周一的日期。 |
| | | // 例如,如果是周三(3),则需要减去 3-1=2 天。 |
| | | // 如果是周日(7),则需要减去 7-1=6 天。 |
| | | DateTime monday = now.AddDays(-(currentDayOfWeek - 1)); |
| | | // 设置赛季的起始时间为周一的 0点0分0秒 |
| | | seasonStartDate = new DateTime(monday.Year, monday.Month, monday.Day, 0, 0, 0); |
| | | // 赛季的结束日期是开始日期(周一)加上6天,即周日 |
| | | DateTime sunday = seasonStartDate.AddDays(6); |
| | | // 设置赛季的结束时间为周日的 23点59分59秒 |
| | | seasonEndDate = new DateTime(sunday.Year, sunday.Month, sunday.Day, 23, 59, 59); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据recID获取按时间从大到小排序的List<ArenaGameRec> |
| | | /// </summary> |
| | | /// <param name="recID">记录ID</param> |
| | | /// <param name="sortedList">输出参数:按时间从大到小排序的ArenaGameRec列表</param> |
| | | /// <returns>如果recID存在且成功获取列表返回true,否则返回false</returns> |
| | | public bool TryGetSortedArenaGameRecList(uint recID, out List<ArenaGameRec> sortedList) |
| | | { |
| | | sortedList = null; |
| | | if (!gameRecDict.ContainsKey(recID)) |
| | | return false; |
| | | sortedList = new List<ArenaGameRec>(gameRecDict[recID]); |
| | | sortedList.Sort((a, b) => b.Time.CompareTo(a.Time)); // 按时间从大到小排序 |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public class ArenaMatchInfo |
| | | { |
| | | public uint PlayerID; //目标玩家ID |
| | | public string PlayerName; |
| | | public ushort Lv; //等级 |
| | | public ushort RealmLV; //境界,机器人读境界表取等级对应境界 |
| | | public uint TitleID; |
| | | public ulong FightPower; //战力 |
| | | public uint Face; //基本脸型 |
| | | public uint FacePic; //头像框 |
| | | |
| | | } |
| | | |
| | | public class ArenaGameRec |
| | | { |
| | | public uint Time; //战斗时间戳 |
| | | public uint Value1; //更新积分,战斗后的最终积分 |
| | | public uint Value2; //攻击类型 1-发起攻击的,2-被攻击的 |
| | | public uint Value3; //相对攻击类型的目标玩家ID |
| | | public uint Value4; //是否获胜 1-获胜;2-失败 |
| | | public uint Value5; //目标头像 |
| | | public uint Value6; //目标头像框 |
| | | public uint Value7; //目标官职 |
| | | public uint Value8; //目标等级 |
| | | public string Name; //目标名称 |
| | | public int AddScore; //本次自己变更的积分,有正负 |
| | | public ulong FightPower; //目标战力 |
| | | public int TitileId; //未来接入 |
| | | |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 7a403f8e8b73bb443acd4352e1c1c00f |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | | public class ArenaPlayerRankCell : MonoBehaviour |
| | | { |
| | | [SerializeField] AvatarCell avatarCell; |
| | | [SerializeField] Text rankText; |
| | | [SerializeField] Text rankValueText; //排名比较内容 |
| | | [SerializeField] Text nameText; |
| | | [SerializeField] OfficialTitleCell officialTitleCell; |
| | | [SerializeField] Button queryPlayerBtn; //后续添加点击查看玩家详情 |
| | | |
| | | |
| | | // rank 为0 代表玩家自己 |
| | | public void Display(int rankType, int rank, string valueFormat) |
| | | { |
| | | RankData rankData = null; |
| | | if (rank != 0) |
| | | { |
| | | rankData = RankModel.Instance.GetRankDataByRank(rankType, rank); |
| | | } |
| | | else |
| | | { |
| | | rankData = RankModel.Instance.GetMyRank(rankType); |
| | | if (rankData == null) |
| | | { |
| | | //取玩家自己的数据 |
| | | avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID, |
| | | PlayerDatas.Instance.baseData.face, |
| | | PlayerDatas.Instance.baseData.facePic)); |
| | | rankText.text = Language.Get("L1045"); |
| | | rankValueText.text = ArenaManager.Instance.score.ToString(); |
| | | nameText.text = PlayerDatas.Instance.baseData.PlayerName; |
| | | officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID); |
| | | return; |
| | | } |
| | | rank = rankData.rank; |
| | | } |
| | | if (rankData == null) |
| | | { |
| | | officialTitleCell.SetActive(false); |
| | | avatarCell.SetActive(false); |
| | | nameText.text = Language.Get("L1124"); |
| | | rankValueText.text = "0";//Language.Get("L1125"); |
| | | } |
| | | else |
| | | { |
| | | officialTitleCell.SetActive(true); |
| | | officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2); |
| | | avatarCell.SetActive(true); |
| | | avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)rankData.id, (int)rankData.value3, (int)rankData.value4)); |
| | | nameText.text = rankData.name1; |
| | | rankValueText.text = string.Format(valueFormat, UIHelper.ReplaceLargeNum(rankData.cmpValue)); |
| | | } |
| | | |
| | | rankText.text = rank.ToString(); |
| | | if (queryPlayerBtn != null) |
| | | { |
| | | queryPlayerBtn.AddListener(() => |
| | | { |
| | | |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 88b05b28e044ffc4cbe09e000d6a5a08 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | | public class ArenaPlayerTop3Cell : MonoBehaviour |
| | | { |
| | | //[SerializeField] Model 显示NPC 武将模型 |
| | | [SerializeField] Text rankValueText; //排名比较内容 |
| | | [SerializeField] Text nameText; |
| | | [SerializeField] OfficialTitleCell officialTitleCell; |
| | | [SerializeField] Button queryPlayerBtn; //后续添加点击查看玩家详情 |
| | | [SerializeField] UIHeroController model; |
| | | |
| | | public void Display(int rankType, int rank, string valueFormat = "{0}") |
| | | { |
| | | var rankData = RankModel.Instance.GetRankDataByRank(rankType, rank); |
| | | if (rankData == null) |
| | | { |
| | | rankValueText.text = "0";//Language.Get("L1125"); |
| | | nameText.text = Language.Get("L1124"); |
| | | officialTitleCell.SetActive(false); |
| | | return; |
| | | } |
| | | officialTitleCell.SetActive(true); |
| | | rankValueText.text = string.Format(valueFormat, UIHelper.ReplaceLargeNum(rankData.cmpValue)); |
| | | nameText.text = rankData.name1; |
| | | officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2); |
| | | model.Create((int)rankData.value5, 1); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 478726dd88ca04047a63760c746634e5 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using System; |
| | | |
| | | public class ArenaRecordCell : MonoBehaviour |
| | | { |
| | | [SerializeField] AvatarCell avatarCell; |
| | | [SerializeField] TextEx txtName; |
| | | [SerializeField] TextEx txtDate; |
| | | [SerializeField] TextEx txtFightPoint; |
| | | [SerializeField] TextEx txtState; |
| | | [SerializeField] TextEx txtAdd; |
| | | [SerializeField] TextEx txtTimeInvalid; |
| | | [SerializeField] TextEx txtNeedCount; |
| | | [SerializeField] ImageEx imgMoneyIcon; |
| | | [SerializeField] ImageEx imgType; |
| | | [SerializeField] Transform transChallenge; |
| | | [SerializeField] OfficialTitleCell officialTitleCell; |
| | | [SerializeField] ButtonEx btnChallenge; |
| | | ArenaGameRec arenaGameRec; |
| | | void Start() |
| | | { |
| | | btnChallenge.SetListener(() => |
| | | { |
| | | if (arenaGameRec == null) |
| | | return; |
| | | ArenaManager.Instance.SendTurnFight(arenaGameRec.Value3); |
| | | ArenaManager.Instance.atkPlayerId = arenaGameRec.Value3; |
| | | }); |
| | | } |
| | | |
| | | public void Display(int index) |
| | | { |
| | | uint playerID = PlayerDatas.Instance.baseData.PlayerID; |
| | | ArenaManager.Instance.TryGetSortedArenaGameRecList(playerID, out List<ArenaGameRec> sortedList); |
| | | if (sortedList.IsNullOrEmpty() || index < 0 || index >= sortedList.Count) |
| | | return; |
| | | arenaGameRec = sortedList[index]; |
| | | imgType.SetSprite(arenaGameRec.Value2 == 1 ? "ArenaRecordTypeAtk" : "ArenaRecordTypeDef"); |
| | | txtDate.text = FormatTime(arenaGameRec.Time); |
| | | // true 已失效 false 未失效 |
| | | bool isTimeInvalid = ArenaManager.Instance.IsTimeInvalid(arenaGameRec.Time); |
| | | // 发起攻击,打赢有积分,打输没有 |
| | | //被攻击的,打赢没有积分,打输扣积分 |
| | | // 0 打别人胜利 1 打别人输 2 被打,我赢 3 被打,我输 |
| | | int state = GetState(arenaGameRec.Value2, arenaGameRec.Value4); |
| | | transChallenge.SetActive(!isTimeInvalid && state == 3); |
| | | txtTimeInvalid.SetActive(isTimeInvalid); |
| | | if (state == 0 || state == 2) |
| | | { |
| | | txtState.text = UIHelper.AppendColor(TextColType.Green, Language.Get("Arena09")); |
| | | txtAdd.text = UIHelper.AppendColor(TextColType.Green, Language.Get("Arena17", arenaGameRec.AddScore)); |
| | | } |
| | | else |
| | | { |
| | | txtState.text = UIHelper.AppendColor(TextColType.Red, Language.Get("Arena10")); |
| | | if (arenaGameRec.AddScore == 0) |
| | | { |
| | | txtAdd.text = UIHelper.AppendColor(TextColType.Red, Language.Get("Arena21", arenaGameRec.AddScore)); |
| | | } |
| | | else |
| | | { |
| | | txtAdd.text = UIHelper.AppendColor(TextColType.Red, Language.Get("Arena18", arenaGameRec.AddScore)); |
| | | } |
| | | |
| | | } |
| | | avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)arenaGameRec.Value3, (int)arenaGameRec.Value5, (int)arenaGameRec.Value6)); |
| | | txtName.text = arenaGameRec.Name; |
| | | txtFightPoint.text = UIHelper.ReplaceLargeArtNum(arenaGameRec.FightPower); |
| | | officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID); |
| | | imgMoneyIcon.SetIconWithMoneyType(ArenaManager.Instance.ChallengeMoneyType); |
| | | txtNeedCount.text = ArenaManager.Instance.NeedChallengeMoneyCnt.ToString(); |
| | | } |
| | | |
| | | // 0 打别人胜利 1 打别人输 2 被打,我赢 3 被打,我输 |
| | | public int GetState(uint isAtk, uint isWin) |
| | | { |
| | | if (isAtk == 1) // 发起攻击 |
| | | { |
| | | return isWin == 1 ? 0 : 1; |
| | | } |
| | | else // 被攻击 |
| | | { |
| | | return isWin == 1 ? 2 : 3; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 格式化时间戳为 "月-日 时:分:秒" 格式 |
| | | /// </summary> |
| | | /// <param name="timeStamp">时间戳</param> |
| | | /// <returns>格式化后的时间字符串</returns> |
| | | private string FormatTime(uint timeStamp) |
| | | { |
| | | DateTime dateTime = TimeUtility.GetTime(timeStamp); |
| | | return dateTime.ToString("MM-dd HH:mm:ss"); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: e830b4133d825fc4086c135f1446b842 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | |
| | | public class ArenaRecordWin : UIBase |
| | | { |
| | | [SerializeField] ArenaChallengeVoucher voucher; |
| | | [SerializeField] TextEx txtFightPoint; |
| | | [SerializeField] ScrollerController scrollerController; |
| | | [SerializeField] Transform transNoRecord; |
| | | protected override void InitComponent() |
| | | { |
| | | base.InitComponent(); |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | base.OnPreOpen(); |
| | | scrollerController.OnRefreshCell += OnRefreshCell; |
| | | ArenaManager.Instance.OnArenaMatchListEvent += OnArenaMatchListEvent; |
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; |
| | | ArenaManager.Instance.OnUpdateGameRecInfo += OnUpdateGameRecInfo; |
| | | GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; |
| | | transNoRecord.SetActive(false); |
| | | Display(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | base.OnPreClose(); |
| | | scrollerController.OnRefreshCell -= OnRefreshCell; |
| | | ArenaManager.Instance.OnArenaMatchListEvent -= OnArenaMatchListEvent; |
| | | PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh; |
| | | ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo; |
| | | GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; |
| | | } |
| | | |
| | | private void OnSecondEvent() |
| | | { |
| | | scrollerController.m_Scorller.RefreshActiveCellViews(); |
| | | } |
| | | |
| | | private void OnUpdateGameRecInfo() |
| | | { |
| | | Display(); |
| | | } |
| | | |
| | | private void PlayerDataRefresh(PlayerDataType type) |
| | | { |
| | | if (type != PlayerDataType.ChallengeVoucher) |
| | | return; |
| | | Display(); |
| | | } |
| | | |
| | | private void OnArenaMatchListEvent() |
| | | { |
| | | Display(); |
| | | } |
| | | |
| | | void OnRefreshCell(ScrollerDataType type, CellView cell) |
| | | { |
| | | var _cell = cell.GetComponent<ArenaRecordCell>(); |
| | | _cell?.Display(cell.index); |
| | | } |
| | | |
| | | private void CreateScroller() |
| | | { |
| | | scrollerController.Refresh(); |
| | | uint playerID = PlayerDatas.Instance.baseData.PlayerID; |
| | | ArenaManager.Instance.TryGetSortedArenaGameRecList(playerID, out List<ArenaGameRec> sortedList); |
| | | if (!sortedList.IsNullOrEmpty()) |
| | | { |
| | | transNoRecord.SetActive(false); |
| | | for (int i = 0; i < sortedList.Count; i++) |
| | | { |
| | | scrollerController.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | } |
| | | scrollerController.Restart(); |
| | | } |
| | | |
| | | void Display() |
| | | { |
| | | CreateScroller(); |
| | | voucher.Display(); |
| | | txtFightPoint.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPower); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 91107595693c34d46aeb83c7fac01f39 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | |
| | | public class ArenaWin : UIBase |
| | | { |
| | | [SerializeField] ButtonEx btnClose; |
| | | [SerializeField] ButtonEx btnRecord; |
| | | [SerializeField] ButtonEx btnAward; |
| | | [SerializeField] ButtonEx btnChallage; |
| | | [SerializeField] RedpointBehaviour rpChallage; |
| | | [SerializeField] ButtonEx btnDeployTroops; |
| | | [SerializeField] List<ArenaPlayerTop3Cell> playerTop3Cells; |
| | | [SerializeField] ScrollerController scrollerController; |
| | | [SerializeField] ArenaPlayerRankCell myRankCell; |
| | | [SerializeField] ArenaChallengeVoucher voucher; |
| | | [HideInInspector] public int groupValue1 = 0; //一般用于跨服 |
| | | [HideInInspector] public int groupValue2 = 0; //一般用于跨服 |
| | | [HideInInspector] public string valueFormat = "{0}"; |
| | | |
| | | protected override void InitComponent() |
| | | { |
| | | base.InitComponent(); |
| | | btnClose.SetListener(() => UIManager.Instance.CloseWindow<ArenaWin>()); |
| | | btnAward.SetListener(() => UIManager.Instance.OpenWindow<ArenaAwardWin>()); |
| | | btnRecord.SetListener(() => |
| | | { |
| | | ArenaManager.Instance.SendViewGameRecPack(); |
| | | UIManager.Instance.OpenWindow<ArenaRecordWin>(); |
| | | }); |
| | | btnChallage.SetListener(() => |
| | | { |
| | | ArenaManager.Instance.SendArenaMatch(); |
| | | UIManager.Instance.OpenWindow<ArenaChallengeWin>(); |
| | | }); |
| | | btnDeployTroops.SetListener(() => |
| | | { |
| | | HeroUIManager.Instance.selectTeamType = TeamType.ArenaDefense; |
| | | UIManager.Instance.OpenWindow<HeroPosWin>(); |
| | | }); |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | base.OnPreOpen(); |
| | | RankModel.Instance.ResetQueryParam(); |
| | | RankModel.Instance.QueryRankByPage(ArenaManager.Instance.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID); |
| | | rpChallage.redpointId = ArenaManager.Instance.GetRedPonitId(1); |
| | | } |
| | | |
| | | protected override void NextFrameAfterOpen() |
| | | { |
| | | RankModel.Instance.onRankRefresh += OnRankRefresh; |
| | | scrollerController.OnRefreshCell += OnRefreshCell; |
| | | ArenaManager.Instance.OnArenaMatchListEvent += OnArenaMatchListEvent; |
| | | ArenaManager.Instance.OnUpdateArenaPlayerInfo += OnUpdateArenaPlayerInfo; |
| | | ArenaManager.Instance.OnUpdateGameRecInfo += OnUpdateGameRecInfo; |
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; |
| | | Display(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | base.OnPreClose(); |
| | | RankModel.Instance.onRankRefresh -= OnRankRefresh; |
| | | scrollerController.OnRefreshCell -= OnRefreshCell; |
| | | ArenaManager.Instance.OnArenaMatchListEvent -= OnArenaMatchListEvent; |
| | | ArenaManager.Instance.OnUpdateArenaPlayerInfo -= OnUpdateArenaPlayerInfo; |
| | | ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo; |
| | | PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh; |
| | | } |
| | | |
| | | private void PlayerDataRefresh(PlayerDataType type) |
| | | { |
| | | if (type != PlayerDataType.ChallengeVoucher) |
| | | return; |
| | | Display(); |
| | | } |
| | | |
| | | void OnRefreshCell(ScrollerDataType type, CellView cell) |
| | | { |
| | | var _cell = cell.GetComponent<ArenaPlayerRankCell>(); |
| | | _cell.Display(ArenaManager.Instance.rankType, cell.index + 1, valueFormat); |
| | | RankModel.Instance.ListenRankPage(ArenaManager.Instance.rankType, cell.index, groupValue1, groupValue2); |
| | | } |
| | | |
| | | private void OnUpdateArenaPlayerInfo() |
| | | { |
| | | Display(); |
| | | } |
| | | |
| | | private void OnArenaMatchListEvent() |
| | | { |
| | | Display(); |
| | | } |
| | | |
| | | private void OnUpdateGameRecInfo() |
| | | { |
| | | Display(); |
| | | } |
| | | |
| | | private void Display() |
| | | { |
| | | voucher.Display(); |
| | | CreateScroller(); |
| | | DisplayMyRank(); |
| | | DisplayTop3(); |
| | | } |
| | | |
| | | void CreateScroller() |
| | | { |
| | | scrollerController.Refresh(); |
| | | var cnt = RankModel.Instance.GetRankShowMaxCnt(ArenaManager.Instance.rankType); |
| | | for (int i = 3; i < cnt; i++) |
| | | { |
| | | scrollerController.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | scrollerController.Restart(); |
| | | } |
| | | |
| | | void DisplayMyRank() |
| | | { |
| | | myRankCell.Display(ArenaManager.Instance.rankType, 0, ArenaManager.Instance.score.ToString()); |
| | | } |
| | | |
| | | void DisplayTop3() |
| | | { |
| | | for (int i = 0; i < playerTop3Cells.Count; i++) |
| | | { |
| | | playerTop3Cells[i].Display(ArenaManager.Instance.rankType, i + 1); |
| | | } |
| | | } |
| | | |
| | | void OnRankRefresh(int type) |
| | | { |
| | | if (type != ArenaManager.Instance.rankType) |
| | | return; |
| | | DisplayTop3(); |
| | | scrollerController.m_Scorller.RefreshActiveCellViews(); |
| | | DisplayMyRank(); |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: c2491f5ebae5bc041a14d081fd07e801 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | | public class BuyItemWin : UIBase |
| | | { |
| | | |
| | | [SerializeField] ItemCell itemCell; |
| | | [SerializeField] Text nameText; |
| | | [SerializeField] Text descText; |
| | | //[SerializeField] ScrollerController scroller; |
| | | [SerializeField] SliderPanel sliderPanel; |
| | | [SerializeField] Button openButton; |
| | | |
| | | //[SerializeField] CellView _InitCell; |
| | | |
| | | string guid; |
| | | int itemID; |
| | | int itemCount; |
| | | int useCnt; |
| | | List<Item> items; |
| | | protected override void InitComponent() |
| | | { |
| | | openButton.AddListener(() => |
| | | { |
| | | if (useCnt == 0) |
| | | { |
| | | CloseWindow(); |
| | | return; |
| | | } |
| | | if (ItemLogicUtility.Instance.UseItem(guid, useCnt)) |
| | | { |
| | | CloseWindow(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | protected override void Start() |
| | | { |
| | | //_InitCell.cellIdentifier = _InitCell.cellIdentifier + this.GetInstanceID().ToString(); |
| | | } |
| | | |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | itemID = ItemTipUtility.mainTipData.baseInfo.itemId; |
| | | itemCount = ItemTipUtility.mainTipData.baseInfo.count; |
| | | guid = ItemTipUtility.mainTipData.guid; |
| | | |
| | | itemCell.Init(new ItemCellModel(itemID, false, itemCount)); |
| | | var itemConfig = ItemConfig.Get(itemID); |
| | | nameText.text = itemConfig.ItemName; |
| | | descText.text = itemConfig.Description; |
| | | |
| | | if (string.IsNullOrEmpty(guid)) |
| | | { |
| | | openButton.SetActive(false); |
| | | sliderPanel.SetActive(false); |
| | | } |
| | | else |
| | | { |
| | | openButton.SetActive(true); |
| | | sliderPanel.SetActive(true); |
| | | } |
| | | |
| | | sliderPanel.Init((value) => { useCnt = value; }, itemCount); |
| | | |
| | | |
| | | // scroller.OnRefreshCell += OnRefreshCell; |
| | | items = BoxGetItemModel.Instance.GetBoxItems(itemID); |
| | | CreateScroller(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | //scroller.OnRefreshCell -= OnRefreshCell; |
| | | } |
| | | |
| | | void CreateScroller() |
| | | { |
| | | // scroller.Refresh(); |
| | | |
| | | for (int i = 0; i < items.Count; i++) |
| | | { |
| | | if (i % 4 == 0) |
| | | { |
| | | List<Item> tmpIDs = new List<Item>(); |
| | | for (int j = 0; j < 4; j++) |
| | | { |
| | | int index = i + j; |
| | | if (index >= items.Count) |
| | | break; |
| | | tmpIDs.Add(items[index]); |
| | | } |
| | | // scroller.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | } |
| | | // scroller.Restart(); |
| | | } |
| | | |
| | | |
| | | void OnRefreshCell(ScrollerDataType type, CellView cell) |
| | | { |
| | | var _cell = cell as BoxItemLineCell; |
| | | |
| | | List<Item> tmpIDs = new List<Item>(); |
| | | for (int j = 0; j < 4; j++) |
| | | { |
| | | int index = cell.index + j; |
| | | if (index >= items.Count) |
| | | break; |
| | | tmpIDs.Add(items[index]); |
| | | } |
| | | |
| | | _cell.Display(tmpIDs); |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 5627605d78de2a748b34bdb33137ab7c |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | | public class HeroCountryComponent : MonoBehaviour |
| | | { |
| | | [SerializeField] Image countryOnImg; //上阵阵型激活国家 |
| | | [SerializeField] UIEffectPlayer countryEffect; |
| | | [SerializeField] List<Image> OnCountImgs; //上阵数量激活 |
| | | |
| | | /// <summary> |
| | | /// 上阵队伍中各个国家的武将数量 |
| | | /// </summary> |
| | | public Dictionary<HeroCountry, int> GetCountryHeroCountByTeamType(List<TeamHero> teamHeroes) |
| | | { |
| | | Dictionary<HeroCountry, int> heroCountryCount = new Dictionary<HeroCountry, int>(); |
| | | if (teamHeroes == null) |
| | | { |
| | | return heroCountryCount; |
| | | } |
| | | for (int i = 0; i < teamHeroes.Count; i++) |
| | | { |
| | | if (teamHeroes[i] == null) |
| | | continue; |
| | | var country = teamHeroes[i].Country; |
| | | |
| | | if (!heroCountryCount.ContainsKey(country)) |
| | | { |
| | | heroCountryCount.Add(country, 1); |
| | | } |
| | | else |
| | | { |
| | | heroCountryCount[country] += 1; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | return heroCountryCount; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获得上阵中武将数量最大的国家和数量 |
| | | /// </summary> |
| | | public Int2 GetMaxCountHeroCountry(List<TeamHero> teamType) |
| | | { |
| | | var countryCountDict = GetCountryHeroCountByTeamType(teamType); |
| | | //找到最大的国家和数量 |
| | | HeroCountry country = HeroCountry.None; |
| | | int maxValue = 0; |
| | | foreach (var data in countryCountDict) |
| | | { |
| | | if (data.Value > maxValue) |
| | | { |
| | | country = data.Key; |
| | | maxValue = data.Value; |
| | | } |
| | | } |
| | | return new Int2((int)country, maxValue); |
| | | } |
| | | |
| | | //上阵武将国家光环激活 |
| | | public void RefreshOnTeamCountry(List<TeamHero> teamType, bool playEffect = false) |
| | | { |
| | | Int2 result = GetMaxCountHeroCountry(teamType); |
| | | |
| | | var config = HeroLineupHaloConfig.GetConfig(result.x, result.y); |
| | | if (config == null) |
| | | { |
| | | countryOnImg.SetSprite("heroTeamCountry0"); |
| | | for (int i = 0; i < OnCountImgs.Count; i++) |
| | | { |
| | | OnCountImgs[i].SetActive(false); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | countryOnImg.SetSprite("heroTeamCountry" + result.x); |
| | | for (int i = 0; i < OnCountImgs.Count; i++) |
| | | { |
| | | if (i < result.y) |
| | | { |
| | | OnCountImgs[i].SetActive(true); |
| | | OnCountImgs[i].SetSprite("heroTeamCountryPoint" + result.x); |
| | | } |
| | | else |
| | | { |
| | | OnCountImgs[i].SetActive(false); |
| | | } |
| | | } |
| | | if (playEffect) |
| | | countryEffect.Play(); |
| | | } |
| | | |
| | | } |
| | | |
| | | //上阵武将国家光环激活 |
| | | public void RefreshOnTeamCountry(TeamType selectTeamType, bool playEffect = false) |
| | | { |
| | | Int2 result = HeroUIManager.Instance.GetMaxCountHeroCountry(selectTeamType, true); |
| | | |
| | | var config = HeroLineupHaloConfig.GetConfig(result.x, result.y); |
| | | if (config == null) |
| | | { |
| | | countryOnImg.SetSprite("heroTeamCountry0"); |
| | | for (int i = 0; i < OnCountImgs.Count; i++) |
| | | { |
| | | OnCountImgs[i].SetActive(false); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | countryOnImg.SetSprite("heroTeamCountry" + result.x); |
| | | for (int i = 0; i < OnCountImgs.Count; i++) |
| | | { |
| | | if (i < result.y) |
| | | { |
| | | OnCountImgs[i].SetActive(true); |
| | | OnCountImgs[i].SetSprite("heroTeamCountryPoint" + result.x); |
| | | } |
| | | else |
| | | { |
| | | OnCountImgs[i].SetActive(false); |
| | | } |
| | | } |
| | | if (playEffect) |
| | | countryEffect.Play(); |
| | | } |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 3ac0bc04463e5ef45a04c61ca9698fe9 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | using System.Collections.Generic; |
| | | using LitJson; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | | public class ArenaBattleWin : UIBase |
| | | { |
| | | // 组件引用 |
| | | [SerializeField] Transform mountPoint; |
| | | [SerializeField] Button btnSpeed; |
| | | [SerializeField] Text textSpeed; |
| | | [SerializeField] Button btnPass; |
| | | [SerializeField] Button btnPause; |
| | | [SerializeField] RendererAdjuster buttonsAdjuster; |
| | | private BattleRootNode battleRootNode = null; |
| | | private BattleField battleField; |
| | | |
| | | [SerializeField] HeroCountryComponent myCountry; |
| | | [SerializeField] TextEx txtMyLV; |
| | | [SerializeField] TextEx txtMyName; |
| | | [SerializeField] TextEx txtMyHp; |
| | | [SerializeField] ImageEx imgMyHp; |
| | | [SerializeField] TextEx txtMyFightPonit; |
| | | [SerializeField] AvatarCell myAvatarCell; |
| | | [SerializeField] List<ArenaHeroHead> myHeroHeads; |
| | | |
| | | [SerializeField] HeroCountryComponent enemyCountry; |
| | | [SerializeField] TextEx txtEnemyLV; |
| | | [SerializeField] TextEx txtEnemyName; |
| | | [SerializeField] TextEx txtEnemyHp; |
| | | [SerializeField] ImageEx imgEnemyHp; |
| | | [SerializeField] TextEx txtEnemyFightPonit; |
| | | [SerializeField] AvatarCell enemyAvatarCell; |
| | | [SerializeField] List<ArenaHeroHead> enemyHeroHeads; |
| | | |
| | | [SerializeField] TextEx txtWaveInfo; |
| | | // 生命周期 |
| | | protected override void InitComponent() |
| | | { |
| | | base.InitComponent(); |
| | | // 初始化组件引用 绑定按钮等UI组件事件 |
| | | btnSpeed.AddListener(ChangeSpeed); |
| | | btnPass.AddListener(OnClickPass); |
| | | btnPause.AddListener(OnClickPause); |
| | | } |
| | | |
| | | private void OnClickPause() |
| | | { |
| | | if (null == battleField) |
| | | return; |
| | | battleField.IsPause = !battleField.IsPause; |
| | | } |
| | | |
| | | private void OnClickPass() |
| | | { |
| | | if (null == battleField) |
| | | return; |
| | | battleField.ForceFinish(); |
| | | } |
| | | |
| | | private void ChangeSpeed() |
| | | { |
| | | if (null == battleField) |
| | | return; |
| | | BattleManager.Instance.speedIndex = (BattleManager.Instance.speedIndex + 1) % BattleManager.Instance.speedGear.Length; |
| | | battleField.SetSpeedRatio(BattleManager.Instance.speedGear[BattleManager.Instance.speedIndex]); |
| | | textSpeed.text = (BattleManager.Instance.speedIndex + 1).ToString(); |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | base.OnPreOpen(); |
| | | // SetBattleField(BattleManager.Instance.storyBattleField); |
| | | BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField; |
| | | EventBroadcast.Instance.AddListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken); |
| | | EventBroadcast.Instance.AddListener<string, JsonData>(EventName.BATTLE_END, OnBattleEnd); |
| | | //UIManager.Instance.CloseWindow<MainWin>(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | base.OnPreClose(); |
| | | UIManager.Instance.CloseWindow<BattleHUDWin>(); |
| | | BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField; |
| | | EventBroadcast.Instance.RemoveListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken); |
| | | EventBroadcast.Instance.RemoveListener<string, JsonData>(EventName.BATTLE_END, OnBattleEnd); |
| | | //UIManager.Instance.OpenWindow<MainWin>(0); |
| | | } |
| | | private void OnBattleEnd(string guid, JsonData endData) |
| | | { |
| | | if (battleField != null && guid == battleField.guid) |
| | | { |
| | | DisplayHpInfo(); |
| | | } |
| | | } |
| | | |
| | | private void OnDamageTaken(BattleDmgInfo damageInfo) |
| | | { |
| | | if (battleField == null) |
| | | return; |
| | | if (damageInfo.battleFieldGuid == battleField.guid) |
| | | { |
| | | DisplayHpInfo(); |
| | | } |
| | | } |
| | | |
| | | private void OnCreateBattleField(string arg1, BattleField field) |
| | | { |
| | | if (field.GetType() == battleField.GetType()) |
| | | { |
| | | SetBattleField(field); |
| | | } |
| | | } |
| | | |
| | | protected override void OnOpen() |
| | | { |
| | | base.OnOpen(); |
| | | } |
| | | |
| | | protected override void OnClose() |
| | | { |
| | | base.OnClose(); |
| | | if (battleRootNode != null) |
| | | { |
| | | battleRootNode.transform.SetParent(Launch.Instance.transform); |
| | | battleRootNode.transform.localPosition = new Vector3(-10000, -10000, 0); |
| | | } |
| | | battleField = null; |
| | | } |
| | | |
| | | protected override void NextFrameAfterOpen() |
| | | { |
| | | base.NextFrameAfterOpen(); |
| | | } |
| | | |
| | | protected override void CompleteClose() |
| | | { |
| | | base.CompleteClose(); |
| | | } |
| | | |
| | | public void SetBattleField(BattleField _battleField) |
| | | { |
| | | battleField = _battleField; |
| | | if (battleRootNode != null) |
| | | { |
| | | battleRootNode.transform.localPosition = Vector3.zero; |
| | | battleRootNode.transform.SetParent(Launch.Instance.transform); |
| | | } |
| | | |
| | | battleRootNode = battleField.battleRootNode; |
| | | battleRootNode.transform.SetParent(mountPoint); |
| | | battleRootNode.transform.localPosition = Vector3.zero; |
| | | battleRootNode.transform.localScale = Vector3.one; |
| | | BattleHUDWin ui = UIManager.Instance.GetUI<BattleHUDWin>(); |
| | | |
| | | if (null == ui) |
| | | { |
| | | ui = UIManager.Instance.OpenWindow<BattleHUDWin>(); |
| | | } |
| | | ui.SetBattleField(battleField); |
| | | battleField.UpdateCanvas(canvas); |
| | | buttonsAdjuster.SetSortingOrder(BattleConst.ActiveHeroActionSortingOrder); |
| | | textSpeed.text = (BattleManager.Instance.speedIndex + 1).ToString(); |
| | | DisplayHpInfo(); |
| | | DisplayPlayerInfo(); |
| | | } |
| | | private void DisplayHpInfo() |
| | | { |
| | | if (battleField == null) |
| | | return; |
| | | |
| | | // 获取我方(红方)队伍数据 |
| | | List<BattleObject> myTeam = battleField.battleObjMgr.GetBattleObjList(BattleCamp.Red); |
| | | // 获取敌方(蓝方)队伍数据 |
| | | List<BattleObject> enemyTeam = battleField.battleObjMgr.GetBattleObjList(BattleCamp.Blue); |
| | | |
| | | ulong myMaxHp = GetMaxHP(myTeam); |
| | | ulong enemyMaxHp = GetMaxHP(enemyTeam); |
| | | |
| | | ulong myNowHp = GetNowHP(myTeam); |
| | | ulong enemyNowHp = GetNowHP(enemyTeam); |
| | | txtMyHp.text = Language.Get("BoneField09", UIHelper.ReplaceLargeArtNum(myNowHp), UIHelper.ReplaceLargeArtNum(myMaxHp)); |
| | | txtEnemyHp.text = Language.Get("BoneField09", UIHelper.ReplaceLargeArtNum(enemyNowHp), UIHelper.ReplaceLargeArtNum(enemyMaxHp)); |
| | | imgMyHp.fillAmount = Mathf.Clamp01((myMaxHp > 0) ? (float)myNowHp / myMaxHp : 0f); |
| | | imgEnemyHp.fillAmount = Mathf.Clamp01((enemyMaxHp > 0) ? (float)enemyNowHp / enemyMaxHp : 0f); |
| | | |
| | | } |
| | | |
| | | private void DisplayPlayerInfo() |
| | | { |
| | | if (battleField == null) |
| | | return; |
| | | if (!ArenaManager.Instance.TryGetPlayerInfo(ArenaManager.Instance.atkPlayerId, out ArenaMatchInfo info)) |
| | | return; |
| | | // 获取我方(红方)队伍数据 |
| | | List<BattleObject> myTeam = battleField.battleObjMgr.GetBattleObjList(BattleCamp.Red); |
| | | // 获取敌方(蓝方)队伍数据 |
| | | List<BattleObject> enemyTeam = battleField.battleObjMgr.GetBattleObjList(BattleCamp.Blue); |
| | | |
| | | |
| | | txtEnemyLV.text = Language.Get("Arena22", info.Lv); |
| | | txtEnemyName.text = UIHelper.ServerStringTrim(info.PlayerName); |
| | | txtEnemyFightPonit.text = UIHelper.ReplaceLargeArtNum(info.FightPower); |
| | | enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)info.PlayerID, (int)info.Face, (int)info.FacePic)); |
| | | |
| | | var team = GetTeamHeroList(enemyTeam); |
| | | enemyCountry.RefreshOnTeamCountry(team, true); |
| | | |
| | | txtMyLV.text = Language.Get("Arena22", PlayerDatas.Instance.baseData.LV); |
| | | txtMyName.text = PlayerDatas.Instance.baseData.PlayerName; |
| | | txtMyFightPonit.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPower); |
| | | myAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID, PlayerDatas.Instance.baseData.face, PlayerDatas.Instance.baseData.facePic)); |
| | | myCountry.RefreshOnTeamCountry(TeamType.Arena); |
| | | |
| | | for (int i = 0; i < myHeroHeads.Count; i++) |
| | | { |
| | | if (i < myTeam.Count) |
| | | { |
| | | myHeroHeads[i].SetActive(true); |
| | | var teamHero = myTeam[i].teamHero; |
| | | myHeroHeads[i].Display(teamHero.heroId, teamHero.SkinID, teamHero.level); |
| | | } |
| | | else |
| | | { |
| | | myHeroHeads[i].SetActive(false); |
| | | } |
| | | } |
| | | |
| | | // 敌方英雄显示(从右到左) |
| | | for (int i = enemyHeroHeads.Count - 1; i >= 0; i--) |
| | | { |
| | | int teamIndex = enemyHeroHeads.Count - 1 - i; // 建立反向映射 |
| | | |
| | | if (teamIndex < enemyTeam.Count) |
| | | { |
| | | enemyHeroHeads[i].SetActive(true); |
| | | var teamHero = enemyTeam[teamIndex].teamHero; // 使用映射后的索引 |
| | | enemyHeroHeads[i].Display(teamHero.heroId, teamHero.SkinID, teamHero.level); |
| | | } |
| | | else |
| | | { |
| | | enemyHeroHeads[i].SetActive(false); |
| | | } |
| | | } |
| | | |
| | | } |
| | | ulong GetMaxHP(List<BattleObject> battleObjects) |
| | | { |
| | | ulong sun = 0; |
| | | if (!battleObjects.IsNullOrEmpty()) |
| | | { |
| | | for (int i = 0; i < battleObjects.Count; i++) |
| | | { |
| | | sun += (ulong)battleObjects[i].teamHero.maxHp; |
| | | } |
| | | } |
| | | return sun; |
| | | } |
| | | |
| | | ulong GetNowHP(List<BattleObject> battleObjects) |
| | | { |
| | | ulong sun = 0; |
| | | if (!battleObjects.IsNullOrEmpty()) |
| | | { |
| | | for (int i = 0; i < battleObjects.Count; i++) |
| | | { |
| | | sun += (ulong)battleObjects[i].teamHero.curHp; |
| | | } |
| | | } |
| | | return sun; |
| | | } |
| | | |
| | | List<TeamHero> GetTeamHeroList(List<BattleObject> teams) |
| | | { |
| | | List<TeamHero> teamHeroes = new List<TeamHero>(); |
| | | if (teams.IsNullOrEmpty()) |
| | | return teamHeroes; |
| | | foreach (var item in teams) |
| | | { |
| | | teamHeroes.Add(item.teamHero); |
| | | } |
| | | return teamHeroes; |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: d2609ee6f8b8f4b4896c3963c15924d2 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | { |
| | | typeof(BattleWin), |
| | | typeof(StoryBossBattleWin), |
| | | typeof(ArenaBattleWin), |
| | | }; |
| | | |
| | | public const int BattleStartEffectID = 1001; // Example effect ID for battle start |
New file |
| | |
| | | using System; |
| | | using LitJson; |
| | | using UnityEngine; |
| | | using System.Collections.Generic; |
| | | |
| | | |
| | | public class ArenaBattleField : BattleField |
| | | { |
| | | protected int chapter;// 章节 |
| | | protected int wave;// 波数 |
| | | protected int level;// 关卡 |
| | | protected JsonData extendData; |
| | | |
| | | protected MainChapterConfig chapterConfig; |
| | | |
| | | protected MainLevelConfig levelConfig; |
| | | |
| | | public ArenaBattleField(string _guid) : base(_guid) |
| | | { |
| | | |
| | | } |
| | | |
| | | public override void Init(int MapID, int FuncLineID, JsonData _extendData, |
| | | List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList) |
| | | { |
| | | base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList); |
| | | |
| | | chapter = FuncLineID / 10000; |
| | | wave = MapID == 1 ? FuncLineID % 100 : 1;//第几波怪 |
| | | level = (FuncLineID % 10000) / 100; |
| | | |
| | | extendData = _extendData; |
| | | chapterConfig = MainChapterConfig.Get(chapter); |
| | | levelConfig = MainLevelConfig.Get(level); |
| | | |
| | | SetBattleMode(BattleMode.Record); |
| | | } |
| | | |
| | | public override void Release() |
| | | { |
| | | base.Release(); |
| | | } |
| | | |
| | | |
| | | public override void AutoSetBattleMode() |
| | | { |
| | | SetBattleMode(BattleMode.Record); |
| | | } |
| | | |
| | | public override void TurnFightState(int TurnNum, int State, |
| | | uint FuncLineID, JsonData extendData) |
| | | { |
| | | base.TurnFightState(TurnNum, State, FuncLineID, extendData); |
| | | |
| | | switch (State) |
| | | { |
| | | // 起始状态标记 |
| | | case 0: |
| | | break; |
| | | case 1://准备完毕 |
| | | break; |
| | | case 2://战斗中 |
| | | break; |
| | | case 3://战斗结束 |
| | | break; |
| | | case 4://结算奖励 |
| | | break; |
| | | case 5://结束状态标记 |
| | | break; |
| | | default: |
| | | BattleDebug.LogError("recieve a unknown State"); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | protected override void OnSettlement(JsonData turnFightStateData) |
| | | { |
| | | base.OnSettlement(turnFightStateData); |
| | | } |
| | | |
| | | public override void WhaleFall() |
| | | { |
| | | UIManager.Instance.CloseWindow<ArenaBattleWin>(); |
| | | AutoFightModel.Instance.isPause = false; |
| | | Destroy(); |
| | | UIManager.Instance.OpenWindow<ArenaWin>(); |
| | | } |
| | | |
| | | |
| | | |
| | | public override void HaveRest() |
| | | { |
| | | // 主线BOSS战斗没有休息 |
| | | } |
| | | |
| | | |
| | | // public override void OnBattleEnd(JsonData turnFightStateData) |
| | | // { |
| | | // base.OnBattleEnd(turnFightStateData); |
| | | // // HaveRest(); |
| | | // } |
| | | |
| | | public override void Run() |
| | | { |
| | | if (operationAgent == null) |
| | | { |
| | | //防范异常 |
| | | return; |
| | | } |
| | | base.Run(); |
| | | } |
| | | |
| | | public override void DistributeNextPackage() |
| | | { |
| | | if (IsBattleFinish) |
| | | return; |
| | | |
| | | // 不要调用base的函数 |
| | | BattleManager.Instance.DistributeNextReportPackage(guid); |
| | | } |
| | | |
| | | |
| | | |
| | | public override void ShowWindow(HB424_tagSCTurnFightInit vNetData) |
| | | { |
| | | ArenaBattleWin fsBattleWin = UIManager.Instance.GetUI<ArenaBattleWin>();// as FullScreenBattleWin; |
| | | if (null == fsBattleWin) |
| | | { |
| | | fsBattleWin = UIManager.Instance.OpenWindow<ArenaBattleWin>(); |
| | | } |
| | | fsBattleWin.SetBattleField(this); |
| | | |
| | | if (UIManager.Instance.IsOpened<ArenaRecordWin>()) |
| | | { |
| | | UIManager.Instance.CloseWindow<ArenaRecordWin>(); |
| | | } |
| | | |
| | | if (UIManager.Instance.IsOpened<ArenaChallengeWin>()) |
| | | { |
| | | UIManager.Instance.CloseWindow<ArenaChallengeWin>(); |
| | | } |
| | | |
| | | if (UIManager.Instance.IsOpened<ArenaWin>()) |
| | | { |
| | | UIManager.Instance.CloseWindow<ArenaWin>(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: c1f4142e50b5caf4cbdc39364d3c8f85 |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | | icon: {instanceID: 0} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | case 2: |
| | | battleField = new StoryBossBattleField(guid); |
| | | break; |
| | | case 3: |
| | | battleField = new ArenaBattleField(guid); |
| | | break; |
| | | case 30010: |
| | | battleField = new BoneBattleField(guid); |
| | | break; |
| | |
| | | rankValueText.text = string.Format(valueFormat, UIHelper.ReplaceLargeNum(rankData.cmpValue2 + rankData.cmpValue * Constants.ExpPointValue));
|
| | | nameText.text = rankData.name1;
|
| | | officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2);
|
| | | model.Create(5100030, 1); //测试
|
| | | model.Create((int)rankData.value5, 1);
|
| | | }
|
| | |
|
| | |
|
| | |
| | | public class ChallengeTabWin : UIBase |
| | | { |
| | | [SerializeField] ChallengeTabButton btnBoneField; |
| | | [SerializeField] ChallengeTabButton btnArena; |
| | | public static Action OnCloseChallengeTabWin; |
| | | protected override void InitComponent() |
| | | { |
| | |
| | | AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent; |
| | | TimeMgr.Instance.OnDayEvent += OnDayEvent; |
| | | FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; |
| | | |
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; |
| | | Display(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | base.OnPreClose(); |
| | | DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent; |
| | | AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent; |
| | | TimeMgr.Instance.OnDayEvent -= OnDayEvent; |
| | | FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; |
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; |
| | | OnCloseChallengeTabWin?.Invoke(); |
| | | } |
| | | private void OnDayEvent() |
| | | { |
| | | Display(); |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | public void OnFuncStateChangeEvent(int funcId) |
| | | { |
| | | if (funcId == BoneFieldManager.Instance.funcId) |
| | | { |
| | | DisplayBoneFieldButton(); |
| | | } |
| | | else if (funcId == ArenaManager.Instance.funcId) |
| | | { |
| | | DisplayArenaButton(); |
| | | } |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | private void PlayerDataRefresh(PlayerDataType type) |
| | | { |
| | | base.OnPreClose(); |
| | | DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent; |
| | | AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent; |
| | | TimeMgr.Instance.OnDayEvent -= OnDayEvent; |
| | | FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; |
| | | OnCloseChallengeTabWin?.Invoke(); |
| | | if (type == PlayerDataType.ChallengeVoucher) |
| | | { |
| | | DisplayArenaButton(); |
| | | } |
| | | } |
| | | |
| | | public void Display() |
| | | { |
| | | DisplayBoneFieldButton(); |
| | | DisplayArenaButton(); |
| | | } |
| | | |
| | | public void DisplayArenaButton() |
| | | { |
| | | int index = 1; |
| | | int funcId = ArenaManager.Instance.funcId; |
| | | int redpointId = MainRedDot.ArenaRepoint; |
| | | bool isLock = FuncOpen.Instance.IsFuncOpen(funcId); |
| | | int type = ArenaManager.Instance.ChallengeMoneyType; |
| | | long nowCount = UIHelper.GetMoneyCnt(type); |
| | | string countInfo = UIHelper.AppendColor(nowCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("Challenge03", nowCount)); |
| | | string lockInfo = !isLock ? Language.Get("Challenge02") : string.Empty; |
| | | btnArena.Display(index, redpointId, isLock, countInfo, lockInfo, () => |
| | | { |
| | | UIManager.Instance.CloseWindow<ChallengeTabWin>(); |
| | | if (!FuncOpen.Instance.IsFuncOpen(funcId, true)) |
| | | return; |
| | | UIManager.Instance.OpenWindow<ArenaWin>(); |
| | | }); |
| | | } |
| | | |
| | | public void DisplayBoneFieldButton() |
| | |
| | | public const int MailRepoint = 467; //邮箱
|
| | | public const int FirstChargeRepoint = 468; //首充
|
| | | public const int BoneFieldRepoint = 469; //白骨盈野
|
| | |
|
| | |
|
| | | public const int ArenaRepoint = 470; //演武场
|
| | | public void Register()
|
| | | {
|
| | |
|
| | |
| | | Wristband = 8, //护腕 |
| | | Shawl = 9, //披肩 |
| | | Neck = 10, //项链 |
| | | Ring= 11, //戒指 |
| | | Ring = 11, //戒指 |
| | | Amulet = 12, //护符 |
| | | |
| | | retMax, |
| | |
| | | default4, // 环保值 232 |
| | | default5, // 233仙玉负数 |
| | | default6, // 234灵石负数 |
| | | default7, |
| | | default7, |
| | | default8, |
| | | default9, // 237 地图境界难度 |
| | | default10, // 238 记录离开时间戳,被踢或主动退出均会更新该值 |
| | |
| | | default24, |
| | | default25, |
| | | default26, // 254 战锤 |
| | | default27, |
| | | default27, |
| | | default28, |
| | | default29, |
| | | default30, |
| | |
| | | default43, // 271 幻境阁积分 |
| | | default44, // 272 武将招募积分 |
| | | GoldRush = 285, // 淘金令 |
| | | ChallengeVoucher = 286,//挑战凭证 |
| | | }; |
| | | |
| | | |
| | |
| | | Guard_1 = 114, // 灵守 1 |
| | | Guard_2 = 115, //灵守 2 |
| | | Hero = 150, //武将 |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | BatchAlchemyFairy = 36,//批量炼制仙丹 |
| | | BossHomeBuyTimes = 37,//boss之家购买次数 |
| | | SelfBossBuyTims = 38, //个人boss购买次数 |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | Def_RewardType_HolidayLogin = 37,//节日登录奖励 |
| | | Def_RewardType_HolidayTravel = 38,//节日游历奖励 |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | FashionDress = 24,//时装 |
| | | JadeDynastyEquip = 25, //诛仙装备 |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | RushAttack = 34,//34 冲锋+伤害,然后效果半径配0时=单攻伤害,配>0时=群攻格子数,配5就等于说群攻5*5 |
| | | //35 蓄力模板,搭配效果值 效果ID 1206 A值为能量次数 |
| | | default35, |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | default1, //升阶 |
| | | default2, |
| | | default3, |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | {3, PlayerDataType.Silver}, |
| | | {41, PlayerDataType.default26}, |
| | | {42, PlayerDataType.default33}, |
| | | |
| | | {53, PlayerDataType.ChallengeVoucher}, |
| | | }; |
| | | |
| | | public static long GetMoneyCnt(int moneyType) |
| | |
| | | //淘金令 |
| | | return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.GoldRush); |
| | | } |
| | | case 53: |
| | | { |
| | | //挑战凭证 |
| | | return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.ChallengeVoucher); |
| | | } |
| | | case 98: |
| | | { |
| | | //过期型代金券 |