0312 10349 【越南】【英文】【BT】【砍树】跨服竞技场优化 - 第一版
11个文件已删除
1 文件已重命名
1个文件已添加
28个文件已修改
| | |
| | | Register(typeof(HB208_tagMCAddXianyuanCoinMsg), typeof(DTCB208_tagMCAddXianyuanCoinMsg));
|
| | | Register(typeof(HB211_tagMCHelpBattleRecordList), typeof(DTCB211_tagMCHelpBattleRecordList));
|
| | | Register(typeof(HC001_tagGCCrossRealmPKMatchOK), typeof(DTCC001_tagGCCrossRealmPKMatchOK));
|
| | | Register(typeof(HC002_tagGCCrossRealmPKStartMatch), typeof(DTCC002_tagGCCrossRealmPKStartMatch));
|
| | | Register(typeof(HC003_tagGCCrossRealmPKOverInfo), typeof(DTCC003_tagGCCrossRealmPKOverInfo));
|
| | | Register(typeof(HC004_tagGCCrossRealmPKSeasonInfo), typeof(DTCC004_tagGCCrossRealmPKSeasonInfo));
|
| | | Register(typeof(HC101_tagMCCrossRealmPKPlayerInfo), typeof(DTCC101_tagMCCrossRealmPKPlayerInfo));
|
| | | Register(typeof(HC102_tagMCCrossRealmPKAwardState), typeof(DTCC102_tagMCCrossRealmPKAwardState));
|
| | | Register(typeof(HC005_tagGCCrossRealmPKBillboardInfo), typeof(DTCC005_tagGCCrossRealmPKBillboardInfo));
|
| | | //Register(typeof(HC005_tagGCCrossRealmPKBillboardInfo), typeof(DTCC005_tagGCCrossRealmPKBillboardInfo));
|
| | | Register(typeof(HC006_tagGCCrossRealmPKSeasonState), typeof(DTCC006_tagGCCrossRealmPKSeasonState));
|
| | | Register(typeof(HAA1F_tagMCLuckyTreasureInfo), typeof(DTCAA1F_tagMCLuckyTreasureInfo));
|
| | | Register(typeof(HAA1E_tagMCLuckyTreasureResultInfo), typeof(DTCAA1E_tagMCLuckyTreasureResultInfo));
|
| | |
| | | using UnityEngine;
|
| | | using System.Collections;
|
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // C1 01 跨服PK匹配 #tagCMCrossRealmPKMatch
|
| | |
|
| | | // C1 01 跨服PK匹配 #tagCMCrossRealmPKMatch
|
| | |
|
| | | public class CC101_tagCMCrossRealmPKMatch : GameNetPackBasic {
|
| | | public byte Type; // 0-取消匹配; 1-进行匹配
|
| | |
|
| | | public CC101_tagCMCrossRealmPKMatch () {
|
| | | combineCmd = (ushort)0x03FE;
|
| | | _cmd = (ushort)0xC101;
|
| | | }
|
| | |
|
| | | public override void WriteToBytes () {
|
| | | WriteBytes (Type, NetDataType.BYTE);
|
| | | }
|
| | |
|
| | | }
|
| | | public class CC101_tagCMCrossRealmPKMatch : GameNetPackBasic {
|
| | | public byte Type; // 0-查询匹配;1-刷新匹配
|
| | |
|
| | | public CC101_tagCMCrossRealmPKMatch () {
|
| | | combineCmd = (ushort)0x03FE;
|
| | | _cmd = (ushort)0xC101;
|
| | | }
|
| | |
|
| | | public override void WriteToBytes () {
|
| | | WriteBytes (Type, NetDataType.BYTE);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | using UnityEngine; |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // C1 08 跨服PK挑战机器人结算 #tagCMCrossRealmPKRobotOver |
| | | |
| | | public class CC108_tagCMCrossRealmPKRobotOver : GameNetPackBasic |
| | | { |
| | | public byte IsWin; //是否获胜 |
| | | |
| | | public CC108_tagCMCrossRealmPKRobotOver() |
| | | { |
| | | Debug.Log("CC108_tagCMCrossRealmPKRobotOver"); |
| | | combineCmd = (ushort)0x03FE; |
| | | _cmd = (ushort)0xC108; |
| | | } |
| | | |
| | | public override void WriteToBytes() |
| | | { |
| | | WriteBytes(IsWin, NetDataType.BYTE); |
| | | } |
| | | |
| | | } |
| | | // C1 08 跨服PK挑战机器人结算 #tagCMCrossRealmPKRobotOver
|
| | |
|
| | | public class CC108_tagCMCrossRealmPKRobotOver : GameNetPackBasic {
|
| | | public byte IsWin; //是否获胜
|
| | | public uint TagPlayerID; //目标玩家ID
|
| | |
|
| | | public CC108_tagCMCrossRealmPKRobotOver () {
|
| | | combineCmd = (ushort)0x03FE;
|
| | | _cmd = (ushort)0xC108;
|
| | | }
|
| | |
|
| | | public override void WriteToBytes () {
|
| | | WriteBytes (IsWin, NetDataType.BYTE);
|
| | | WriteBytes (TagPlayerID, NetDataType.DWORD);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | |
|
| | | public class DTCC001_tagGCCrossRealmPKMatchOK : DtcBasic
|
| | | {
|
| | |
|
| | | CrossServerOneVsOneModel model { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
| | | public override void Done(GameNetPackBasic vNetPack)
|
| | | {
|
| | |
|
| | |
| | |
|
| | | if (package.socketType == ServerType.Main)
|
| | | {
|
| | | var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
|
| | | if (teamModel.isMatching)
|
| | | {
|
| | | teamModel.RequestCancelAutoMatchTeam();
|
| | | }
|
| | |
|
| | | CrossServerLogin.Instance.UpdateCrossServerOneVsOneData(package,false);
|
| | | WindowCenter.Instance.Open<CrossServerOneVsOneEnterConfirmWin>();
|
| | | ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>().IsMatching = false;
|
| | | model.UpdateOneVSOneMatch(package);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | {
|
| | | return;
|
| | | }
|
| | | crossServerRewardModel.CrossRealmPKBillboardInfo(vNetData);
|
| | | //crossServerRewardModel.CrossRealmPKBillboardInfo(vNetData);
|
| | | }
|
| | | }
|
| | |
| | | // C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK
|
| | |
|
| | | public class HC001_tagGCCrossRealmPKMatchOK : GameNetPackBasic {
|
| | | public ushort RoomID; // 房间ID
|
| | | public byte NameLen;
|
| | | public string PlayerName; // 跨服名字
|
| | | public byte Number; // 位置编号;1-左,2-右
|
| | | public byte MatchPlayerCount;
|
| | | public tagGCCrossRealmPKMatchPlayer[] MatchPlayer; // 匹配到的玩家
|
| | |
|
| | |
| | | }
|
| | |
|
| | | public override void ReadFromBytes (byte[] vBytes) {
|
| | | TransBytes (out RoomID, vBytes, NetDataType.WORD);
|
| | | TransBytes (out NameLen, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out PlayerName, vBytes, NetDataType.Chars, NameLen);
|
| | | TransBytes (out Number, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out MatchPlayerCount, vBytes, NetDataType.BYTE);
|
| | | MatchPlayer = new tagGCCrossRealmPKMatchPlayer[MatchPlayerCount];
|
| | | for (int i = 0; i < MatchPlayerCount; i ++) {
|
| | |
| | | TransBytes (out MatchPlayer[i].PlayerName, vBytes, NetDataType.Chars, MatchPlayer[i].NameLen);
|
| | | TransBytes (out MatchPlayer[i].Job, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out MatchPlayer[i].LV, vBytes, NetDataType.WORD);
|
| | | TransBytes (out MatchPlayer[i].RealmLV, vBytes, NetDataType.WORD);
|
| | | TransBytes (out MatchPlayer[i].Face, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out MatchPlayer[i].FacePic, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out MatchPlayer[i].MaxHP, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out MatchPlayer[i].MaxHPEx, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out MatchPlayer[i].MaxProDef, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out MatchPlayer[i].FightPower, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out MatchPlayer[i].FightPowerEx, vBytes, NetDataType.DWORD);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | public string PlayerName; // 跨服名字
|
| | | public byte Job;
|
| | | public ushort LV;
|
| | | public ushort RealmLV; //境界
|
| | | public uint Face; //基本脸型
|
| | | public uint FacePic; //头像框
|
| | | public uint MaxHP; // 默认满血,求余亿部分
|
| | | public uint MaxHPEx; // 默认满血,整除亿部分
|
| | | public uint MaxProDef; // 最大护盾
|
| | | public uint FightPower; //战力,求余亿部分
|
| | | public uint FightPowerEx; //战力,整除亿部分
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | TransBytes (out GroupList[i].BattleList[j].WinPlayerID, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out GroupList[i].BattleList[j].PlayerIDA, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out GroupList[i].BattleList[j].PlayerIDB, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out GroupList[i].BattleList[j].BattleRetLen, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out GroupList[i].BattleList[j].BattleRet, vBytes, NetDataType.Chars, GroupList[i].BattleList[j].BattleRetLen);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | public uint WinPlayerID; // 获胜玩家ID
|
| | | public uint PlayerIDA; // 玩家IDA
|
| | | public uint PlayerIDB; // 玩家IDB
|
| | | public byte BattleRetLen;
|
| | | public string BattleRet; // 战斗结果明细 {"playerID":[[第1局胜负,第1局总积分,胜负基础分,hp分,时间分], ...], ...}
|
| | | }
|
| | |
|
| | | public struct tagGCCrossChampionshipPKPlayer {
|
| | |
| | | using UnityEngine;
|
| | | using System.Collections;
|
| | | using UnityEngine; |
| | | using System.Collections; |
| | | |
| | | // C1 01 跨服PK玩家信息 #tagMCCrossRealmPKPlayerInfo
|
| | |
|
| | | // C1 01 跨服PK玩家信息 #tagMCCrossRealmPKPlayerInfo
|
| | |
|
| | | public class HC101_tagMCCrossRealmPKPlayerInfo : GameNetPackBasic {
|
| | | public uint Score; // 当前积分
|
| | | public byte DanLV; // 当前段位
|
| | | public ushort PKCount; // PK次数
|
| | | public ushort WinCount; // 胜利次数
|
| | | public ushort CWinCount; // 连胜次数
|
| | | public byte DayPKCount; // 当日已PK次数
|
| | | public byte DayWinCount; // 当日已胜利次数
|
| | | public byte DayBuyCount; // 当日已购买次数
|
| | | public byte DayItemAddCount; // 当日物品增加次数
|
| | |
|
| | | public HC101_tagMCCrossRealmPKPlayerInfo () {
|
| | | _cmd = (ushort)0xC101;
|
| | | }
|
| | |
|
| | | public override void ReadFromBytes (byte[] vBytes) {
|
| | | TransBytes (out Score, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out DanLV, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out PKCount, vBytes, NetDataType.WORD);
|
| | | TransBytes (out WinCount, vBytes, NetDataType.WORD);
|
| | | TransBytes (out CWinCount, vBytes, NetDataType.WORD);
|
| | | TransBytes (out DayPKCount, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out DayWinCount, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out DayBuyCount, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out DayItemAddCount, vBytes, NetDataType.BYTE);
|
| | | }
|
| | |
|
| | | }
|
| | | public class HC101_tagMCCrossRealmPKPlayerInfo : GameNetPackBasic {
|
| | | public uint Score; // 当前积分
|
| | | public byte DanLV; // 当前段位
|
| | | public ushort PKCount; // PK次数
|
| | | public ushort WinCount; // 胜利次数
|
| | | public ushort CWinCount; // 连胜次数
|
| | | public byte DayPKCount; // 当日已PK次数
|
| | | public byte DayWinCount; // 当日已胜利次数
|
| | | public byte DayBuyCount; // 当日已购买次数
|
| | | public byte DayItemAddCount; // 当日物品增加次数
|
| | | public ushort DayRefreshCount; // 今日已刷新匹配次数
|
| | |
|
| | | public HC101_tagMCCrossRealmPKPlayerInfo () {
|
| | | _cmd = (ushort)0xC101;
|
| | | }
|
| | |
|
| | | public override void ReadFromBytes (byte[] vBytes) {
|
| | | TransBytes (out Score, vBytes, NetDataType.DWORD);
|
| | | TransBytes (out DanLV, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out PKCount, vBytes, NetDataType.WORD);
|
| | | TransBytes (out WinCount, vBytes, NetDataType.WORD);
|
| | | TransBytes (out CWinCount, vBytes, NetDataType.WORD);
|
| | | TransBytes (out DayPKCount, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out DayWinCount, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out DayBuyCount, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out DayItemAddCount, vBytes, NetDataType.BYTE);
|
| | | TransBytes (out DayRefreshCount, vBytes, NetDataType.WORD);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | if (crossServerOneVsOneModel.IsMatching)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("CrossOneVsOneMatching");
|
| | | return;
|
| | | }
|
| | |
|
| | | RequestStartClientDungeon(mapId, lineId, (dungeonInfo, isOk) =>
|
| | | {
|
| | | if (!isOk)
|
| | |
| | | |
| | | if (figthCompleted) |
| | | { |
| | | PlayerDatas.Instance.hero.Behaviour.StopHandupAI(true);
|
| | | PlayerDatas.Instance.hero.StopPathFind();
|
| | | PlayerDatas.Instance.hero.StopAll();
|
| | | ArenaModel.Instance.bILAI = false; |
| | | restTimeTimer += Time.deltaTime; |
| | | completed = restTimeTimer >= restTime;
|
| | |
| | | else |
| | | ArenaModel.Instance.StopClientArena(); |
| | | } |
| | | |
| | | PlayerDatas.Instance.hero.StopAll(); |
| | | } |
| | | } |
| | | |
| | |
| | | else
|
| | | ArenaModel.Instance.StopClientArena();
|
| | | } |
| | | PlayerDatas.Instance.hero.StopAll(); |
| | | } |
| | | |
| | | protected virtual void DrawExitTimer(int seconds) |
| | |
| | | var otherPlayerInfo = fightersInfo[otherPlayerID]; |
| | | |
| | | var package = new HC001_tagGCCrossRealmPKMatchOK(); |
| | | package.RoomID = 1001; |
| | | package.PlayerName = PlayerDatas.Instance.baseData.PlayerName; |
| | | package.Number = (byte)pos; |
| | | //package.RoomID = 1001; |
| | | //package.PlayerName = PlayerDatas.Instance.baseData.PlayerName; |
| | | //package.Number = (byte)pos; |
| | | |
| | | var opponent = new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer(); |
| | | opponent.Job = otherPlayerInfo.Job; |
| | |
| | | |
| | | opponent.LV = otherPlayerInfo.LV; |
| | | //待进入游戏刷新对方血量 |
| | | opponent.MaxProDef = 100; |
| | | opponent.MaxHP = 100; |
| | | opponent.MaxHPEx = 0; |
| | | //opponent.MaxProDef = 100; |
| | | //opponent.MaxHP = 100; |
| | | //opponent.MaxHPEx = 0; |
| | | package.MatchPlayer = new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer[] { opponent }; |
| | | |
| | | CrossServerLogin.Instance.UpdateCrossServerOneVsOneData(package, false); |
| | | CrossServerLogin.Instance.SetWaitForLoginCrossServerState(false); |
| | | |
| | | var sendInfo = new CC105_tagCMEnterCrossServer(); |
| | | sendInfo.DataMapID = DATA_MAPID; |
| | | GameNetSystem.Instance.SendInfo(sendInfo); |
| | | //var sendInfo = new CC105_tagCMEnterCrossServer(); |
| | | //sendInfo.DataMapID = DATA_MAPID; |
| | | //GameNetSystem.Instance.SendInfo(sendInfo); |
| | | |
| | | return; |
| | | } |
| | |
| | | public class CrossServerOneVsOneArenaWin : Window
|
| | | {
|
| | | [SerializeField] Button scoreRankBtn;
|
| | | [SerializeField] Button matchBtn;
|
| | | [SerializeField] Image matchBtn_Img;
|
| | | [SerializeField] Text matchBtn_Text;
|
| | | [SerializeField] Button dayAwardBtn;
|
| | | [SerializeField] Text winRateText;
|
| | | [SerializeField] Text sumNumText;
|
| | | [SerializeField] Text reaminNumText;
|
| | | [SerializeField] Text seasonTimeText;
|
| | | [SerializeField] Text openTimeText;
|
| | | [SerializeField] Text winStreakText;
|
| | | [SerializeField] Text reaminNumText;
|
| | | [SerializeField] Button buyTimesBtn;
|
| | | [SerializeField] Button matchRecordBtn;
|
| | | [SerializeField] RedpointBehaviour matchRedPointBeh;
|
| | | [SerializeField] GameObject inSeasonTimeObj;
|
| | | [SerializeField] GameObject outSeasonTimeObj;
|
| | | [SerializeField] GameObject lookPlayerObj;
|
| | | [SerializeField] Text lookTimeText;
|
| | | [SerializeField] Text curSeasonNumText;
|
| | | [SerializeField] Transform playerObjs;
|
| | | [SerializeField] CrossServerOneVsOnePKPlayerCell[] matchPlayerObjs;
|
| | | [SerializeField] Image refreshMoneyIcon;
|
| | | [SerializeField] Text refreshMoneyText;
|
| | | [SerializeField] Text freeRefreshText;
|
| | | [SerializeField] Button refreshBtn;
|
| | |
|
| | | CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
| | | float coolTime = 0;
|
| | | #region Built-in
|
| | | protected override void BindController()
|
| | | {
|
| | |
| | | buyTimesBtn.AddListener(ClickBuyTimes);
|
| | | matchRecordBtn.AddListener(ClickMatchRecord);
|
| | | scoreRankBtn.AddListener(ClickScoreRank);
|
| | | refreshBtn.AddListener(ClickBuyRefreshMatch);
|
| | | }
|
| | |
|
| | | protected override void OnPreOpen()
|
| | | {
|
| | | coolTime = 0;
|
| | | crossServerModel.isClickCoolTime = false;
|
| | | crossServerModel.SendCrossMatch(0);
|
| | | SetDisplay();
|
| | | CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo;
|
| | | TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
|
| | | GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
|
| | | DTCC002_tagGCCrossRealmPKStartMatch.CrossServerStartMatchEvent += OnStartMatch;
|
| | | crossServerModel.UpdateMatchPlayersEvent += UpdateMatchPlayers;
|
| | | }
|
| | |
|
| | | protected override void OnAfterOpen()
|
| | |
| | |
|
| | | }
|
| | |
|
| | | protected override void LateUpdate()
|
| | | {
|
| | | base.LateUpdate();
|
| | | if(crossServerModel.isClickCoolTime)
|
| | | {
|
| | | coolTime += Time.deltaTime;
|
| | | if(coolTime >= 1)
|
| | | {
|
| | | coolTime = 0;
|
| | | crossServerModel.isClickCoolTime = false;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | protected override void OnPreClose()
|
| | | {
|
| | | CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
|
| | | TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
|
| | | GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
|
| | | DTCC002_tagGCCrossRealmPKStartMatch.CrossServerStartMatchEvent -= OnStartMatch;
|
| | | crossServerModel.UpdateMatchPlayersEvent -= UpdateMatchPlayers;
|
| | | }
|
| | | protected override void OnAfterClose()
|
| | | {
|
| | |
| | | UpdatePKInfo();
|
| | | }
|
| | |
|
| | | private void UpdateMatchPlayers()
|
| | | {
|
| | | playerObjs.SetActive(true);
|
| | | for (int i = 0; i < matchPlayerObjs.Length; i++)
|
| | | {
|
| | | matchPlayerObjs[i].Display(i);
|
| | | }
|
| | | }
|
| | |
|
| | | private void SetDisplay()
|
| | | {
|
| | | UpdateMatchInfo();
|
| | | UpdatePKInfo();
|
| | | UpdateActivityState();
|
| | | UpdateLookPlayerTime();
|
| | | UpdateMatchPlayers();
|
| | | var pkSeason = CrossServerOneVsOnePKSeason.Instance;
|
| | | seasonTimeText.text = pkSeason.ToDisplaySeasonTime();
|
| | | curSeasonNumText.text = pkSeason.SeasonID.ToString();
|
| | | var openTimes = pkSeason.GetActivityTimes();
|
| | | openTimeText.SetActive(openTimes != null && openTimes.Count > 0);
|
| | | if(openTimes != null)
|
| | | {
|
| | | string openTimeDes = string.Empty;
|
| | | for(int i = 0; i < openTimes.Count; i++)
|
| | | {
|
| | | var openTime = openTimes[i];
|
| | | string timeDes = StringUtility.Contact(openTime.hourBegin.ToString("D2"), ":", openTime.minuteBegin.ToString("D2")
|
| | | ,"-",openTime.hourEnd.ToString("D2"),":",openTime.minuteEnd.ToString("D2"));
|
| | | if(i == 0)
|
| | | {
|
| | | openTimeDes = timeDes;
|
| | | }
|
| | | else
|
| | | {
|
| | | openTimeDes = StringUtility.Contact(openTimeDes,",",timeDes);
|
| | | }
|
| | | }
|
| | | openTimeText.text = Language.Get("CrossServer119", openTimeDes);
|
| | | }
|
| | |
|
| | | lookPlayerObj.SetActive(crossServerModel.IsMatching);
|
| | | matchRedPointBeh.SetActive(!crossServerModel.IsMatching);
|
| | | }
|
| | |
|
| | | private void UpdateMatchInfo()
|
| | | {
|
| | | int remainNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
|
| | | if (remainNum > 0)
|
| | | //if (remainNum > 0)
|
| | | //{
|
| | | // reaminNumText.text = StringUtility.Contact(UIHelper.AppendColor(TextColType.Green,remainNum.ToString()), "/", crossServerModel.freeMaxMatchNum);
|
| | | //}
|
| | | //else
|
| | | //{
|
| | | // reaminNumText.text = StringUtility.Contact(UIHelper.AppendColor(TextColType.Red, remainNum.ToString()), "/", crossServerModel.freeMaxMatchNum);
|
| | | //}
|
| | | reaminNumText.text = StringUtility.Contact(remainNum, "/", crossServerModel.freeMaxMatchNum);
|
| | |
|
| | | int remainFreeNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayFreeRefreshNum();
|
| | | if (remainFreeNum > 0)
|
| | | {
|
| | | reaminNumText.text = StringUtility.Contact(UIHelper.AppendColor(TextColType.Green,remainNum.ToString()), "/", crossServerModel.freeMaxMatchNum);
|
| | | freeRefreshText.SetActive(true);
|
| | | refreshMoneyIcon.SetActive(false);
|
| | | freeRefreshText.text = StringUtility.Contact(Language.Get("L2032"), Language.Get("BlessedLand036", remainFreeNum, crossServerModel.freeMaxMatchRefreshNum));
|
| | | }
|
| | | else
|
| | | {
|
| | | reaminNumText.text = StringUtility.Contact(UIHelper.AppendColor(TextColType.Red, remainNum.ToString()), "/", crossServerModel.freeMaxMatchNum);
|
| | | freeRefreshText.SetActive(false);
|
| | | refreshMoneyIcon.SetActive(true);
|
| | | refreshMoneyIcon.SetSmallIconWithMoneyType(crossServerModel.refreshMoneyType);
|
| | | refreshMoneyText.text = StringUtility.Contact(Language.Get("BlessedLand036", CrossServerOneVsOnePlayerInfo.Instance.GetDayFreeRefreshPrice(), UIHelper.ReplaceLargeNum( UIHelper.GetMoneyCnt(crossServerModel.refreshMoneyType))));
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | private void UpdatePKInfo()
|
| | | {
|
| | |
| | | UpdateActivityState();
|
| | | }
|
| | |
|
| | | private void UpdateSecond()
|
| | | {
|
| | | UpdateLookPlayerTime();
|
| | | }
|
| | |
|
| | | private void UpdateLookPlayerTime()
|
| | | {
|
| | | if (!crossServerModel.IsMatching)
|
| | | {
|
| | | if(lookPlayerObj.activeInHierarchy)
|
| | | {
|
| | | matchRedPointBeh.SetActive(true);
|
| | | lookPlayerObj.SetActive(false);
|
| | | }
|
| | | return;
|
| | | }
|
| | | |
| | | if(CrossServerOneVsOnePKSeason.Instance.isSatisfyMatch)
|
| | | {
|
| | | int totalSeconds = Mathf.RoundToInt((float)(DateTime.Now - crossServerModel.matchStartTime).TotalSeconds);
|
| | | if (totalSeconds < 3600)
|
| | | {
|
| | | int minute = totalSeconds / 60;
|
| | | int seconds = totalSeconds % 60;
|
| | | lookTimeText.text = StringUtility.Contact(minute.ToString("D2"), ":", seconds.ToString("D2"));
|
| | | }
|
| | | else
|
| | | {
|
| | | ClickMatch(0);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | ClickMatch(0);
|
| | | }
|
| | | }
|
| | |
|
| | | private void UpdateActivityState()
|
| | | {
|
| | | bool isInTime = CrossServerOneVsOnePKSeason.Instance.InPkSeason(TimeUtility.ServerNow);
|
| | | bool isOpen = CrossServerOneVsOnePKSeason.Instance.InOpenTime();
|
| | | inSeasonTimeObj.SetActive(isInTime);
|
| | | outSeasonTimeObj.SetActive(!isInTime);
|
| | | matchBtn.RemoveAllListeners();
|
| | | if (isInTime)
|
| | | {
|
| | | matchBtn_Text.text = Language.Get("CrossServer109");
|
| | | if (isOpen)
|
| | | {
|
| | | matchBtn_Img.material = MaterialUtility.GetUIDefaultGraphicMaterial();
|
| | | if (!crossServerModel.IsMatching)
|
| | | {
|
| | | matchBtn.AddListener(() => { ClickMatch(1); });
|
| | | }
|
| | | else
|
| | | {
|
| | | matchBtn_Text.text = Language.Get("CrossServer110");
|
| | | matchBtn.AddListener(() => { ClickMatch(0); });
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | matchBtn_Img.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
|
| | | matchBtn.AddListener(() => { SysNotifyMgr.Instance.ShowTip("CrossMatching20"); });
|
| | | }
|
| | | }
|
| | | playerObjs.SetActive(isInTime);
|
| | | }
|
| | |
|
| | | private void ClickBuyTimes()
|
| | |
| | | if (!crossServerModel.TryGetBuyMatchTimes("CrossMatching21")) return;
|
| | |
|
| | | WindowCenter.Instance.Open<CrossSeverOneVsOneBuyMatchTimesWin>();
|
| | | }
|
| | |
|
| | | private void ClickBuyRefreshMatch()
|
| | | {
|
| | | int price = CrossServerOneVsOnePlayerInfo.Instance.GetDayFreeRefreshPrice();
|
| | | // UIHelper.ReplaceLargeNum(UIHelper.GetMoneyCnt(crossServerModel.refreshMoneyType)
|
| | | if (price == 0)
|
| | | {
|
| | | crossServerModel.SendCrossMatch(1);
|
| | | return;
|
| | | }
|
| | |
|
| | | if (UIHelper.GetMoneyCnt(crossServerModel.refreshMoneyType) < (ulong)price)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("LackMoney", crossServerModel.refreshMoneyType);
|
| | | return;
|
| | | }
|
| | |
|
| | | ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
|
| | | Language.Get("CrossServerOneVsOne1", price), (bool isOk) =>
|
| | | {
|
| | | if (isOk)
|
| | | {
|
| | | crossServerModel.SendCrossMatch(1);
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | private void ClickDayAward()
|
| | |
| | | WindowCenter.Instance.Open<RankingWin>();
|
| | | }
|
| | |
|
| | | private void OnStartMatch()
|
| | | {
|
| | | matchRedPointBeh.SetActive(false);
|
| | | lookPlayerObj.SetActive(true);
|
| | | crossServerModel.matchStartTime = DateTime.Now;
|
| | | UpdateLookPlayerTime();
|
| | | UpdateActivityState();
|
| | | }
|
| | |
|
| | | private void ClickMatch(int type)
|
| | | {
|
| | | if (type == 1)
|
| | | {
|
| | | if (!AssetVersionUtility.IsUnpriorAssetDownLoadOk())
|
| | | {
|
| | | InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.Whole);
|
| | | return;
|
| | | }
|
| | | int remainNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
|
| | | if (remainNum < 1)
|
| | | {
|
| | | WindowCenter.Instance.Open<CrossSeverOneVsOneBuyMatchTimesWin>();
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | if (crossServerModel.isClickCoolTime) return;
|
| | |
|
| | | DebugEx.Log("ClickMatch......");
|
| | | crossServerModel.isClickCoolTime = true;
|
| | | crossServerModel.SendCrossMatch(type);
|
| | | if(type == 0)
|
| | | {
|
| | | crossServerModel.IsMatching = false;
|
| | | matchRedPointBeh.SetActive(true);
|
| | | lookPlayerObj.SetActive(false);
|
| | | UpdateActivityState();
|
| | | }
|
| | | }
|
| | |
|
| | | private void ClickMatchRecord()
|
| | | {
|
| | |
| | | {
|
| | |
|
| | |
|
| | | public class CrossServerOneVsOneModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, ISwitchAccount, IPlayerLoginOk
|
| | | public class CrossServerOneVsOneModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
|
| | | {
|
| | | public string PkResultLocalSaveKey { get; private set; }
|
| | | public List<CrossServerOneVsOnePkResult> localSaveResults { get; private set; }
|
| | |
| | | public event Action UpdateDayAwardsEvent;
|
| | | public const int CrossServerDataMapId = 32010;
|
| | | DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
| | | public bool isClickCoolTime { get; set; }
|
| | | public event Action UpdateMatchStateEvent;
|
| | | private bool _isMatching;
|
| | | public bool IsMatching {
|
| | | get { return _isMatching; }
|
| | | set {
|
| | | _isMatching = value;
|
| | | if (UpdateMatchStateEvent != null)
|
| | | {
|
| | | UpdateMatchStateEvent();
|
| | | }
|
| | | }
|
| | | }
|
| | | public DateTime matchStartTime { get; set; }
|
| | |
|
| | | public DateTime roundEndTime { get; private set; }
|
| | | StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
|
| | | public string LocalSaveThirdTypeKey = string.Empty;
|
| | | private int recordDataMapId;
|
| | | private int loadSecond;
|
| | |
|
| | | // 跨服竞技场改成匹配3个对象,进行选择挑战
|
| | | public List<HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer> matchPlayers = new List<HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer>();
|
| | | public event Action UpdateMatchPlayersEvent;
|
| | | public bool loginQueryMatch = false;
|
| | |
|
| | | public override void Init()
|
| | | {
|
| | | IsMatching = false;
|
| | | ParseFuncConfig();
|
| | | SetHonorRedpoint();
|
| | | }
|
| | |
| | | dungeonModel.updateMissionEvent -= UpdateFBHelp;
|
| | | rewardModel.CrossRealmPKAwardStateUpdate -= UpdateDayAwardState;
|
| | | CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState;
|
| | | TimeMgr.Instance.OnDayEvent -= OnDay;
|
| | | InitData();
|
| | | }
|
| | |
|
| | |
| | | GetLocalSaveData();
|
| | | }
|
| | |
|
| | | public void OnSwitchAccount()
|
| | | {
|
| | | IsMatching = false;
|
| | | }
|
| | |
|
| | | public void OnPlayerLoginOk()
|
| | | {
|
| | |
| | | rewardModel.CrossRealmPKAwardStateUpdate += UpdateDayAwardState;
|
| | | CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdateDayAwardState;
|
| | | dungeonModel.updateMissionEvent += UpdateFBHelp;
|
| | | TimeMgr.Instance.OnDayEvent += OnDay;
|
| | | UpdateServerOpenDay();
|
| | | UpdateDayAwardState();
|
| | | if (IsMatching && CrossServerOneVsOnePKSeason.Instance.InOpenTime())
|
| | | {
|
| | | SendCrossMatch(1);
|
| | | }
|
| | |
|
| | | UpdateCrossDayAwardsRedpoint();
|
| | | UpdateCrossMatchRedpoint();
|
| | | UpdateCanBuyRedpoint();
|
| | |
| | | CrossServerOneVsOnePlayerInfo.Instance.InitData();
|
| | | pkResultInfo = new CrossServerOneVsOnePkResult();
|
| | | oneVsOneHistoryDict.Clear();
|
| | | }
|
| | |
|
| | | void OnDay()
|
| | | {
|
| | | loginQueryMatch = false;
|
| | | }
|
| | |
|
| | | private void UpdateSecond()
|
| | |
| | | private void UpdateMinute()
|
| | | {
|
| | | UpdateCrossMatchRedpoint();
|
| | | if (!IsMatching) return;
|
| | |
|
| | | if (!CrossServerOneVsOnePKSeason.Instance.isSatisfyMatch)
|
| | | {
|
| | | IsMatching = false;
|
| | | SendCrossMatch(0);
|
| | | }
|
| | | }
|
| | |
|
| | | public void UpdateDayAwardState()
|
| | |
| | | }
|
| | |
|
| | | #region 表数据
|
| | | public int freeMaxMatchNum { get; private set; } //每日免费匹配次数
|
| | | public int buyMaxMatchNum { get; private set; } //每日可购买次数
|
| | | public string priceFormula { get; private set; } //购买匹配次数需要价格公式
|
| | | //挑战
|
| | | public int freeMaxMatchNum { get; private set; } //每日免费匹配次数(挑战)
|
| | | public int buyMaxMatchNum { get; private set; } //每日可购买次数(挑战)
|
| | | public string priceFormula { get; private set; } //购买匹配次数需要价格公式(挑战)
|
| | |
|
| | | //刷新匹配
|
| | | public int freeMaxMatchRefreshNum { get; private set; } //每日免费刷新匹配次数(刷新)
|
| | | public int buyMaxMatchRefreshNum { get; private set; } //每日可购买刷新次数(刷新)
|
| | | public string priceRefreshFormula { get; private set; } //购买刷新匹配次数需要价格公式(刷新)
|
| | | public int refreshMoneyType { get; private set; } //刷新匹配次数消耗货币类型(刷新)
|
| | |
|
| | | public int[] winConstScoreArr { get; private set; } //胜利固定积分
|
| | | public string winStreakScoreFormula { get; private set; } //连胜积分公式
|
| | | public List<AwardType> dayAwardTypelist { get; private set; }
|
| | | public int afterOpenDayOpenCross { get; private set; }
|
| | |
|
| | |
|
| | | private void ParseFuncConfig()
|
| | | {
|
| | | var CrossRealmPKAward = FuncConfigConfig.Get("CrossRealmPKAward");
|
| | |
| | | buyMaxMatchNum = int.Parse(CrossRealmPKMatchCount.Numerical2);
|
| | | priceFormula = CrossRealmPKMatchCount.Numerical3;
|
| | |
|
| | | var CrossRealmPKScore = FuncConfigConfig.Get("CrossRealmPKScore");
|
| | | var CrossRealmPKRefreshCount = FuncConfigConfig.Get("CrossRealmPKMatchRefresh");
|
| | | freeMaxMatchRefreshNum = int.Parse(CrossRealmPKRefreshCount.Numerical1);
|
| | | buyMaxMatchRefreshNum = int.Parse(CrossRealmPKRefreshCount.Numerical2);
|
| | | priceRefreshFormula = CrossRealmPKRefreshCount.Numerical3;
|
| | | refreshMoneyType = int.Parse(CrossRealmPKRefreshCount.Numerical4);
|
| | |
|
| | | var CrossRealmPKScore = FuncConfigConfig.Get("CrossRealmPKScore2");
|
| | | winConstScoreArr = JsonMapper.ToObject<int[]>(CrossRealmPKScore.Numerical1);
|
| | | winStreakScoreFormula = CrossRealmPKScore.Numerical3;
|
| | |
|
| | | var CrossRealmCfg = FuncConfigConfig.Get("CrossRealmCfg");
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public void UpdateOneVSOneMatch(HC001_tagGCCrossRealmPKMatchOK package)
|
| | | {
|
| | | matchPlayers.Clear();
|
| | | for (int i = 0; i < package.MatchPlayerCount; i++)
|
| | | {
|
| | | matchPlayers.Add(package.MatchPlayer[i]);
|
| | | //服务端没有主动推送的话,这里需要请求一次玩家缓存数据
|
| | | }
|
| | |
|
| | | UpdateMatchPlayersEvent?.Invoke();
|
| | | }
|
| | |
|
| | |
|
| | | BuffModel buffDatas { get { return ModelCenter.Instance.GetModel<BuffModel>(); } }
|
| | | /// <summary>
|
| | | ///0-取消匹配; 1-进行匹配
|
| | | /// 0-查询匹配;1-刷新匹配
|
| | | /// </summary>
|
| | | /// <param name="type"></param>
|
| | | public void SendCrossMatch(int type)
|
| | | {
|
| | | if (type == 1 && TryGetMatchTip()) return;
|
| | | if (type == 0)
|
| | | {
|
| | | if (loginQueryMatch)
|
| | | return;
|
| | | else
|
| | | loginQueryMatch = true;
|
| | | }
|
| | |
|
| | | var match = new CC101_tagCMCrossRealmPKMatch();
|
| | | match.Type = (byte)type;
|
| New file |
| | |
| | | using UnityEngine;
|
| | | using UnityEngine.UI;
|
| | | using System.Collections;
|
| | | using System;
|
| | |
|
| | | namespace vnxbqy.UI
|
| | | {
|
| | | public class CrossServerOneVsOnePKPlayerCell : MonoBehaviour
|
| | | {
|
| | | [SerializeField] RawImage playerRaw;
|
| | | [SerializeField] Text nameText;
|
| | | [SerializeField] Text fightPointTxt;
|
| | | [SerializeField] Text winScoreTxt;
|
| | | [SerializeField] Button challengeBtn;
|
| | |
|
| | | CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
| | | RoleParticularModel model { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
|
| | | ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel<ServerMirrorFightModel>(); } }
|
| | |
|
| | |
|
| | |
|
| | | public void Display(int index)
|
| | | {
|
| | | if (index >= crossServerModel.matchPlayers.Count)
|
| | | return;
|
| | |
|
| | | var matchPlayer = crossServerModel.matchPlayers[index];
|
| | | ShowRawPlayer((int)matchPlayer.PlayerID);
|
| | | nameText.text = matchPlayer.PlayerName;
|
| | | fightPointTxt.text = UIHelper.ReplaceLargeArtNum(matchPlayer.FightPowerEx * Constants.ExpPointValue + matchPlayer.FightPower);
|
| | | winScoreTxt.text = crossServerModel.winConstScoreArr[index].ToString();
|
| | |
|
| | | challengeBtn.AddListener(() =>
|
| | | {
|
| | | if (matchPlayer.PlayerID > 10000)
|
| | | {
|
| | | mirrorFightModel.SendMirrorFight(CrossServerOneVsOneModel.CrossServerDataMapId, 0, matchPlayer.PlayerID, 0);
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | void ShowRawPlayer(int playerID)
|
| | | {
|
| | | var viewPlayerData = model.GetViewPlayerData(playerID);
|
| | | if (viewPlayerData == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | int _suitLevel = (int)(viewPlayerData.rolePropData.EquipShowSwitch % 10);
|
| | | int clothes = viewPlayerData.GetItemId(RoleEquipType.Clothes);
|
| | | int weapon = viewPlayerData.GetItemId(RoleEquipType.Weapon);
|
| | | int wing = viewPlayerData.GetItemId(RoleEquipType.Wing);
|
| | | int weapon2 = viewPlayerData.GetItemId(RoleEquipType.Weapon2);
|
| | | int fashionClothes = viewPlayerData.GetItemId(RoleEquipType.FashionClothes);
|
| | | int fashionWeapon = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon);
|
| | | int fashionWeapon2 = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon2);
|
| | | var reikiRootEffectId = viewPlayerData.rolePropData.EquipShowSwitch / 1000 % 1000;
|
| | |
|
| | |
|
| | | var data = new UI3DPlayerExhibitionData
|
| | | {
|
| | | job = viewPlayerData.rolePropData.Job,
|
| | | fashionClothesId = fashionClothes,
|
| | | fashionWeaponId = fashionWeapon,
|
| | | fashionSecondaryId = fashionWeapon2,
|
| | | clothesId = clothes,
|
| | | suitLevel = _suitLevel,
|
| | | weaponId = weapon,
|
| | | wingsId = wing,
|
| | | secondaryId = weapon2,
|
| | | reikiRootEffectId = (int)reikiRootEffectId,
|
| | | isDialogue = false,
|
| | | equipLevel = (int)viewPlayerData.rolePropData.EquipShowSwitch / 10 % 100,
|
| | | titleID = viewPlayerData.rolePropData.TitleID,
|
| | | };
|
| | |
|
| | | UI3DModelExhibition.Instance.ShowPlayer(playerRaw, data);
|
| | | }
|
| | |
|
| | | }
|
| | | }
|
| File was renamed from System/CrossServerOneVsOne/CrossServerOneVsOneEnterConfirmWin.cs.meta |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 7d82e5e3617bae642a3c6c95df07800c |
| | | timeCreated: 1545204096 |
| | | licenseType: Pro |
| | | guid: 40a2ad8e551eec5458e5c9ce456c2a5b |
| | | MonoImporter: |
| | | externalObjects: {} |
| | | serializedVersion: 2 |
| | | defaultReferences: [] |
| | | executionOrder: 0 |
| | |
| | |
|
| | | public string CrossZoneName { get; private set; } // 跨服分区名
|
| | |
|
| | | // 是否跨服竞技场可战斗状态
|
| | | public bool isSatisfyMatch
|
| | | {
|
| | | get
|
| | |
| | | this.SeasonState = pKSeasonState.SeasonState;
|
| | | this.MatchState = pKSeasonState.MatchState;
|
| | | this.CrossZoneName = pKSeasonState.CrossZoneName;
|
| | | if (this.SeasonState != 1 || this.MatchState != 1)
|
| | | {
|
| | | if (crossServerModel.IsMatching)
|
| | | {
|
| | | crossServerModel.IsMatching = false;
|
| | | }
|
| | | }
|
| | |
|
| | | if (updateSelfSeasonEvent != null)
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | return false;
|
| | | return MatchState == 1;
|
| | | }
|
| | |
|
| | | public List<HourMinute> GetActivityTimes()
|
| | |
| | |
|
| | | public int DanLV { get; private set; } // 当前段位
|
| | |
|
| | | public int PKCount { get; private set; } // PK次数
|
| | | public int PKCount { get; private set; } // 总PK次数
|
| | |
|
| | | public int WinCount { get; private set; } // 胜利次数
|
| | |
|
| | |
| | | public int DayBuyCount { get; private set; } // 当日已购买次数
|
| | |
|
| | | public int DayItemAddCount { get; private set; } // 当日物品增加次数
|
| | | public int DayRefreshCount { get; private set; } // 今日已刷新匹配次数
|
| | |
|
| | | private int preDayPkCount;
|
| | | CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
| | |
| | | DayPKCount = 0;
|
| | | DayBuyCount = 0;
|
| | | DayWinCount = 0;
|
| | | DayRefreshCount = 0;
|
| | | }
|
| | |
|
| | | public void UpdatePlayerInfo(HC101_tagMCCrossRealmPKPlayerInfo playerInfo)
|
| | |
| | | this.DayWinCount = playerInfo.DayWinCount;
|
| | | this.DayItemAddCount = playerInfo.DayItemAddCount;
|
| | | this.DayPKCount = playerInfo.DayPKCount;
|
| | | this.DayRefreshCount = playerInfo.DayRefreshCount;
|
| | |
|
| | | if (this.preDayPkCount != playerInfo.DayPKCount)
|
| | | {
|
| | |
| | | return remainNum > 0 ? remainNum : 0;
|
| | | }
|
| | |
|
| | | //正数代表还有几次免费刷新机会,负数代表仙玉刷新次数
|
| | | public int GetDayFreeRefreshNum()
|
| | | {
|
| | | return crossServerModel.freeMaxMatchRefreshNum - DayRefreshCount;
|
| | | }
|
| | |
|
| | | public int GetDayFreeRefreshPrice()
|
| | | {
|
| | | int count = GetDayFreeRefreshNum();
|
| | | if (count > 0)
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | count = Math.Abs(count);
|
| | | Equation.Instance.Clear();
|
| | | Equation.Instance.AddKeyValue("refreshBuyCount", count);
|
| | | return Equation.Instance.Eval<int>(crossServerModel.priceRefreshFormula);
|
| | | }
|
| | |
|
| | |
|
| | | public string DisplayWinningRate()
|
| | | {
|
| | | float rate = PKCount != 0 ? (float)WinCount / PKCount : 0;
|
| | |
| | | //--------------------------------------------------------
|
| | | using System;
|
| | | using System.Collections.Generic;
|
| | | using System.Linq;
|
| | | using vnxbqy.UI;
|
| | | //跨服PK奖励信息
|
| | |
|
| | |
| | | public class CrossServerOneVsOneRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
|
| | | {
|
| | | CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
| | | RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
|
| | | public Dictionary<int, SeasonAwardClass> SegmentRewardDic = new Dictionary<int, SeasonAwardClass>();//段位奖励
|
| | | public ImpactRankModel.RankAwardItem SeasonRewardDic = new ImpactRankModel.RankAwardItem();//赛季奖励
|
| | | public Dictionary<int, List<Item_Class>> SeasonRewardConfigDic = new Dictionary<int, List<Item_Class>>(); //赛季奖励
|
| | | public Dictionary<int, List<Item_Class>> SeasonRewardConfigDic = new Dictionary<int, List<Item_Class>>(); //赛季的段位奖励(废弃)
|
| | | public Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>> ZoneRankingDic = new Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>>();
|
| | | private List<CrossRealmPKDanAwardConfig> CrossRealmPKDanAwardList = new List<CrossRealmPKDanAwardConfig>();
|
| | | public Action CrossRealmPKAwardStateUpdate;//领取奖励刷新
|
| | |
| | | public string ZoneName = string.Empty;//赛区名
|
| | | private int currentId = 0;//获取当前赛区ID
|
| | | private string crossZoneName = string.Empty;//赛区编号
|
| | | public const int rankType = 165;
|
| | |
|
| | |
|
| | | public override void Init()
|
| | | {
|
| | |
|
| | | var config = FuncConfigConfig.Get("CrossServerIcon").Numerical1;
|
| | | MianOpenLV = int.Parse(config);
|
| | | CrossRealmPKDanAwardList = CrossRealmPKDanAwardConfig.GetValues();
|
| | |
|
| | | rankModel.onRankRefresh -= OnRefreshRankList;
|
| | | rankModel.onRankRefresh += OnRefreshRankList;
|
| | | rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh;
|
| | | rankModel.onMyRankRefresh += RankModel_onMyRankRefresh;
|
| | | }
|
| | |
|
| | | public void OnBeforePlayerDataInitialize()
|
| | |
| | | GetZoneName();
|
| | | RedPointSeg();
|
| | | RedPointSea();
|
| | | bool isbool = IsAwardState(CrossRealmPKAwardStateEnum.SeasonAwardState, -1);
|
| | | if (CrossServerOneVsOnePKSeason.Instance.SeasonState == 2)
|
| | | {
|
| | | ViewCrossPKBillboard(CrossServerOneVsOnePKSeason.Instance.ZoneID, CrossServerOneVsOnePKSeason.Instance.SeasonID);//关于赛季查询
|
| | | ViewCrossPKBillboard(CrossServerOneVsOnePKSeason.Instance.ZoneID, CrossServerOneVsOnePKSeason.Instance.SeasonID, true);//关于赛季查询
|
| | | }
|
| | | }
|
| | |
|
| | |
| | |
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | | void OnRefreshRankList(int type)
|
| | | {
|
| | | if (type % 1000 == rankType)
|
| | | {
|
| | | CrossRealmPKBillboardInfo(type);
|
| | | }
|
| | | }
|
| | |
|
| | | private void RankModel_onMyRankRefresh(int type)
|
| | | {
|
| | | if (type % 1000 == rankType)
|
| | | {
|
| | | CrossRealmPKBillboardInfo(type);
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | public override void UnInit()
|
| | | {
|
| | |
| | | WindowCenter.Instance.Open<CrossServerSettlementWin>();
|
| | | }
|
| | | }
|
| | | public void GetSeasonAward()//段位奖励数据获取
|
| | | public void GetSeasonAward()//赛季奖励数据获取
|
| | | {
|
| | |
|
| | | var seasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID;
|
| | | var configPK = CrossRealmPKDanAwardList;
|
| | | var result2 = false;
|
| | |
| | | result2 = true;
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | | if (CrossServerOneVsOnePKSeason.Instance.CrossZoneName != null && result2)
|
| | | {
|
| | |
| | | }
|
| | | currentId = seasonID;
|
| | | }
|
| | | public void GetSegmentReward()//赛季奖励
|
| | | public void GetSegmentReward()//段位奖励
|
| | | {
|
| | | var seasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID;
|
| | | var configPK = CrossRealmPKDanAwardList;
|
| | |
| | | {
|
| | | seasonID += 1;
|
| | | }
|
| | | if (currentId == seasonID && SeasonRewardConfigDic.Count != 0)
|
| | | if (currentId == seasonID && SeasonRewardDic.AwardDic.Count != 0)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
| | | }
|
| | | SeasonRewardDic = _award;
|
| | | }
|
| | |
|
| | | }
|
| | | //---
|
| | | SeasonRewardConfigDic.Clear();
|
| | | //SeasonRewardConfigDic.Clear();
|
| | |
|
| | | for (int i = 0; i < configPK.Count; i++)
|
| | | {
|
| | | var _config = configPK[i];
|
| | | bool result = crossZoneName.Equals(_config.CrossZoneName);
|
| | | if (!SeasonRewardConfigDic.ContainsKey(_config.DanLV) && _config.SeasonID == seasonID && result)
|
| | | {
|
| | | var _jsonDataC = LitJson.JsonMapper.ToObject(_config.SeasonAwardList);
|
| | | List<Item_Class> itemClassList = new List<Item_Class>();
|
| | | for (int j = 0; j < _jsonDataC.Count; j++)
|
| | | {
|
| | | Item_Class itemClass = new Item_Class();
|
| | | itemClass.ItemId = int.Parse((_jsonDataC[j][0]).ToString());
|
| | | itemClass.ItemNumber = int.Parse((_jsonDataC[j][1]).ToString());
|
| | | itemClass.Isbind = int.Parse((_jsonDataC[j][2]).ToString());
|
| | | itemClassList.Add(itemClass);
|
| | | }
|
| | | if (itemClassList.Count <= 0)
|
| | | {
|
| | | continue;
|
| | | }
|
| | | SeasonRewardConfigDic.Add(_config.DanLV, itemClassList);
|
| | | }
|
| | | }
|
| | | //for (int i = 0; i < configPK.Count; i++)
|
| | | //{
|
| | | // var _config = configPK[i];
|
| | | // bool result = crossZoneName.Equals(_config.CrossZoneName);
|
| | | // if (!SeasonRewardConfigDic.ContainsKey(_config.DanLV) && _config.SeasonID == seasonID && result)
|
| | | // {
|
| | | // var _jsonDataC = LitJson.JsonMapper.ToObject(_config.SeasonAwardList);
|
| | | // List<Item_Class> itemClassList = new List<Item_Class>();
|
| | | // for (int j = 0; j < _jsonDataC.Count; j++)
|
| | | // {
|
| | | // Item_Class itemClass = new Item_Class();
|
| | | // itemClass.ItemId = int.Parse((_jsonDataC[j][0]).ToString());
|
| | | // itemClass.ItemNumber = int.Parse((_jsonDataC[j][1]).ToString());
|
| | | // itemClass.Isbind = int.Parse((_jsonDataC[j][2]).ToString());
|
| | | // itemClassList.Add(itemClass);
|
| | | // }
|
| | | // if (itemClassList.Count <= 0)
|
| | | // {
|
| | | // continue;
|
| | | // }
|
| | | // SeasonRewardConfigDic.Add(_config.DanLV, itemClassList);
|
| | | // }
|
| | | //}
|
| | | currentId = seasonID;
|
| | | }
|
| | | public void CrossRealmPKAwardState(HC102_tagMCCrossRealmPKAwardState info)//c102跨服PK玩家奖励记录
|
| | |
| | | GameNetSystem.Instance.SendInfo(c103);
|
| | | }
|
| | |
|
| | | public void ViewCrossPKBillboard(int ZoneID, int SeasonID)//(赛区,赛季) 查看跨服竞技场赛季排行榜 |
| | | public void ViewCrossPKBillboard(int ZoneID, int SeasonID, bool isQuerySelf = false)//(赛区,赛季) 查看跨服竞技场赛季排行榜 |
| | | {
|
| | | ZoneRankingStruct zoneRanking = new ZoneRankingStruct();
|
| | | zoneRanking.ZoneID = ZoneID;
|
| | | zoneRanking.SeasonID = SeasonID;
|
| | | int seasonIDNow = CrossServerOneVsOnePKSeason.Instance.SeasonID;
|
| | | //int seasonIDNow = CrossServerOneVsOnePKSeason.Instance.SeasonID;
|
| | | if (ZoneRankingDic.ContainsKey(zoneRanking))
|
| | | {
|
| | | if (RankInformationUpdate != null)
|
| | |
| | | RankInformationUpdate();
|
| | | }
|
| | | }
|
| | | CC001_tagCGViewCrossPKBillboard c001 = new CC001_tagCGViewCrossPKBillboard();
|
| | | c001.ZoneID = (byte)ZoneID;
|
| | | c001.SeasonID = (byte)SeasonID;
|
| | | GameNetSystem.Instance.SendInfo(c001);
|
| | | //CC001_tagCGViewCrossPKBillboard c001 = new CC001_tagCGViewCrossPKBillboard();
|
| | | //c001.ZoneID = (byte)ZoneID;
|
| | | //c001.SeasonID = (byte)SeasonID;
|
| | | //GameNetSystem.Instance.SendInfo(c001);
|
| | | if (isQuerySelf)
|
| | | rankModel.QueryCrossRank(rankType, ZoneID, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true, groupValue2:SeasonID);
|
| | | else
|
| | | {
|
| | | rankModel.ResetQueryParam();
|
| | | rankModel.QueryCrossRank(rankType, ZoneID, groupValue2: SeasonID);
|
| | | }
|
| | | }
|
| | |
|
| | | public void CrossRealmPKBillboardInfo(HC005_tagGCCrossRealmPKBillboardInfo info)//跨服PK赛季排行榜
|
| | | public void CrossRealmPKBillboardInfo(int type)//跨服PK赛季排行榜
|
| | | {
|
| | | var datas = rankModel.GetRankPageDatas(type);
|
| | |
|
| | | Dictionary<int, RankingInformationClass> RankInformationDic = new Dictionary<int, RankingInformationClass>();
|
| | | if (info.Count > 0)
|
| | | ZoneRankingStruct zoneRank = new ZoneRankingStruct();
|
| | | if (datas.Count > 0)
|
| | | {
|
| | | for (int i = 0; i < info.Count; i++)
|
| | | var keys = datas.Keys.ToList();
|
| | | for (int i = 0; i < keys.Count; i++)
|
| | | {
|
| | | if (!RankInformationDic.ContainsKey(i))
|
| | | {
|
| | | RankingInformationClass RankingInformation = new RankingInformationClass();
|
| | | RankingInformation.PlayerID = (int)info.PKBillboardList[i].PlayerID;
|
| | | RankingInformation.PlayerName = info.PKBillboardList[i].PlayerName;
|
| | | RankingInformation.Job = info.PKBillboardList[i].Job;
|
| | | RankingInformation.Face = (int)info.PKBillboardList[i].Face;
|
| | | RankingInformation.FacePic = (int)info.PKBillboardList[i].FacePic;
|
| | | RankingInformation.Power = (int)info.PKBillboardList[i].FightPower;
|
| | | RankingInformation.Realm = (int)info.PKBillboardList[i].RealmLV;
|
| | | RankingInformation.DanLv = (int)info.PKBillboardList[i].DanLV;
|
| | | RankingInformation.PkScore = (int)info.PKBillboardList[i].PKScore;
|
| | | RankInformationDic.Add(i, RankingInformation);
|
| | | if (PlayerDatas.Instance.baseData.PlayerID == info.PKBillboardList[i].PlayerID)
|
| | | {
|
| | | MyRank = i;
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | RankingInformationClass RankingInformation = new RankingInformationClass();
|
| | | RankingInformation.PlayerID = (int)info.PKBillboardList[i].PlayerID;
|
| | | RankingInformation.PlayerName = info.PKBillboardList[i].PlayerName;
|
| | | RankingInformation.Job = info.PKBillboardList[i].Job;
|
| | | RankingInformation.Face = (int)info.PKBillboardList[i].Face;
|
| | | RankingInformation.FacePic = (int)info.PKBillboardList[i].FacePic;
|
| | | RankingInformation.Power = (int)info.PKBillboardList[i].FightPower;
|
| | | RankingInformation.Realm = (int)info.PKBillboardList[i].RealmLV;
|
| | | RankingInformation.DanLv = (int)info.PKBillboardList[i].DanLV;
|
| | | RankingInformation.PkScore = (int)info.PKBillboardList[i].PKScore;
|
| | | RankInformationDic[i] = RankingInformation;
|
| | | }
|
| | | int index = keys[i];
|
| | | var info = datas[index];
|
| | | RankingInformationClass RankingInformation = new RankingInformationClass();
|
| | | RankingInformation.PlayerID = (int)info.id;
|
| | | RankingInformation.PlayerName = info.name1;
|
| | | RankingInformation.Job = info.subType;
|
| | | RankingInformation.Face = (int)info.value3;
|
| | | RankingInformation.FacePic = (int)info.value4;
|
| | | RankingInformation.Power = 0;
|
| | | RankingInformation.Realm = (int)info.value1;
|
| | | RankingInformation.DanLv = (int)info.value2;
|
| | | RankingInformation.PkScore = (int)info.cmpValue;
|
| | | RankInformationDic[index] = RankingInformation;
|
| | | }
|
| | | }
|
| | | ZoneRankingStruct zoneRank = new ZoneRankingStruct();
|
| | | zoneRank.ZoneID = info.ZoneID;
|
| | | zoneRank.SeasonID = info.SeasonID;
|
| | |
|
| | | var myData = rankModel.GetMyRank(type);
|
| | | MyRank = myData != null ? myData.index : -1;
|
| | |
|
| | | //赛区3位+赛季3位+排行榜类型3位
|
| | | zoneRank.ZoneID = type / 1000000;
|
| | | zoneRank.SeasonID = type/1000 % 1000;
|
| | |
|
| | | if (!ZoneRankingDic.ContainsKey(zoneRank))
|
| | | {
|
| | | ZoneRankingDic.Add(zoneRank, RankInformationDic);
|
| | |
| | | BuffModel m_BuffModel;
|
| | | BuffModel Buffmodel { get { return m_BuffModel ?? (m_BuffModel = ModelCenter.Instance.GetModel<BuffModel>()); } }
|
| | | float timer = 0f;
|
| | | private int WinSorce = 0;
|
| | | private int FailureSorce = 0;
|
| | |
|
| | | protected override void BindController()
|
| | | {
|
| | | var configNum1 = FuncConfigConfig.Get("CrossRealmPKScore").Numerical2;
|
| | | var _jsonDataC = LitJson.JsonMapper.ToObject(configNum1);
|
| | | if (_jsonDataC.Count > 0)
|
| | | {
|
| | | WinSorce = int.Parse(_jsonDataC[0].ToString());
|
| | | FailureSorce = int.Parse(_jsonDataC[1].ToString());
|
| | | }
|
| | | }
|
| | |
|
| | | protected override void AddListeners()
|
| | |
| | | }
|
| | | if (crossServerModel.pkResultInfo.WinStreak > 1)
|
| | | {
|
| | | m_SorceText.text = Language.Get("CrossServer_Z1", crossServerModel.pkResultInfo.AddScore, (crossServerModel.pkResultInfo.AddScore - WinSorce));
|
| | | m_SorceText.text = Language.Get("CrossServer_Z2", crossServerModel.pkResultInfo.AddScore);//, (crossServerModel.pkResultInfo.AddScore - WinSorce));
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | }
|
| | | if (crossServerModel.pkResultInfo.WinStreak > 1)
|
| | | {
|
| | | m_Sorce_Txt.text = Language.Get("CrossServer_Z1", crossServerModel.pkResultInfo.AddScore, (crossServerModel.pkResultInfo.AddScore - WinSorce));
|
| | | m_Sorce_Txt.text = Language.Get("CrossServer_Z2", crossServerModel.pkResultInfo.AddScore);//, (crossServerModel.pkResultInfo.AddScore - WinSorce));
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | namespace vnxbqy.UI
|
| | | {
|
| | |
|
| | | public class RankCellCtrl : ScrollerUI
|
| | | public class RankCellCtrl : MonoBehaviour
|
| | | {
|
| | | [SerializeField] Button m_RankButton;
|
| | | [SerializeField] Text m_RankNum;
|
| | |
| | | CrossServerOneVsOneRewardModel m_CrossServerRewardModel;
|
| | | CrossServerOneVsOneRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerOneVsOneRewardModel>()); } }
|
| | | RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
|
| | | public override void Refresh(CellView cell)
|
| | | public void OnRefresh(int index)
|
| | | {
|
| | | int index = cell.index;
|
| | | //int index = cell.index;
|
| | | if (index < 3)
|
| | | {
|
| | | m_RankNumBottom.SetActive(true);
|
| | |
| | | {
|
| | | rankDic = crossServerRewardModel.ZoneRankingDic[zoneRanking];
|
| | | }
|
| | | if (rankDic != null && index < rankDic.Count)
|
| | | if (rankDic != null && rankDic.ContainsKey(index))
|
| | | {
|
| | | data = rankDic[index];
|
| | | }
|
| | |
| | | m_NameTxt.color = new Color32(64, 28, 6, 255); ;
|
| | | }
|
| | | m_NameTxt.text = data.PlayerName;
|
| | | m_JobTxt.text = OccupationNameConfig.GetOccupationName(data.Job);
|
| | | m_JobTxt.text = OccupationNameConfig.GetOccupationName(Math.Max(1, data.Job));
|
| | | RealmConfig presentCfg = RealmConfig.Get(data.Realm);
|
| | | if (data.Realm > 0 && presentCfg != null)
|
| | | {
|
| | |
| | | using System.Collections.Generic;
|
| | | using UnityEngine;
|
| | | using UnityEngine.UI;
|
| | | using EnhancedUI.EnhancedScroller;
|
| | |
|
| | |
|
| | | namespace vnxbqy.UI
|
| | | {
|
| | |
| | | [SerializeField] Button m_PullButton2;//拉选按钮
|
| | | [SerializeField] GameObject m_ClickScreenOtherSpace2;
|
| | | [SerializeField] ScrollerController m_ScrollerController2;
|
| | | [SerializeField] Text m_Text_A;
|
| | |
|
| | | RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
|
| | | CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
| | | CrossServerOneVsOneRewardModel m_CrossServerRewardModel;
|
| | | CrossServerOneVsOneRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerOneVsOneRewardModel>()); } }
|
| | | private int NeedDanLv = 0;
|
| | |
|
| | | #region Built-in
|
| | |
|
| | |
| | | m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
|
| | | m_ScrollerController1.OnRefreshCell += OnRefreshGridCell_Z;//赛区
|
| | | m_ScrollerController2.OnRefreshCell += OnRefreshGridCell_S;//赛季
|
| | | var configNum1 = FuncConfigConfig.Get("CrossRealmPKCfg").Numerical1;
|
| | | var _jsonDataC = LitJson.JsonMapper.ToObject(configNum1);
|
| | | if (_jsonDataC.Count > 0)
|
| | | {
|
| | | NeedDanLv = int.Parse(_jsonDataC[1].ToString());
|
| | | }
|
| | | var config = CrossServerArenaConfig.Get(NeedDanLv);
|
| | | if (config != null)
|
| | | {
|
| | | m_Text_A.text = Language.Get("CrossServer121", config.Name);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | protected override void AddListeners()
|
| | |
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | private void RankInformationUpdate()
|
| | | {
|
| | | SetZoneAndSeasonNum();
|
| | | OnCreateGridLineCell(m_ScrollerController);
|
| | | //OnCreateGridLineCell(m_ScrollerController);
|
| | | m_ScrollerController.m_Scorller.RefreshActiveCellViews();
|
| | | OnCreateGridLineCell_S(m_ScrollerController2);
|
| | | SetTextMyRank();
|
| | | ZoneAndSeasonpanel();
|
| | | m_ScrollerController.JumpIndex(0);
|
| | | //m_ScrollerController.JumpIndex(0);
|
| | |
|
| | | }
|
| | | private void OnClickPullButton1()
|
| | |
| | | void OnCreateGridLineCell(ScrollerController gridCtrl)
|
| | | {
|
| | | gridCtrl.Refresh();
|
| | | for (int i = 0; i < 100; i++)
|
| | | for (int i = 0; i < 1000; i++)
|
| | | {
|
| | | if (i == 0)
|
| | | {
|
| | |
| | | }
|
| | | private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
|
| | | {
|
| | | var _cell = cell.GetComponent<RankCellCtrl>();
|
| | | _cell.OnRefresh(cell.index);
|
| | |
|
| | | rankModel.ListenCrossRankPage(CrossServerOneVsOneRewardModel.rankType, crossServerRewardModel.ZoneID, cell.index, crossServerRewardModel.SeasonID);
|
| | | }
|
| | | private void OnRefreshGridCell_Z(ScrollerDataType type, CellView cell)//赛区
|
| | | {
|
| | |
| | | if (crossServerRewardModel.SeasonID == CrossServerOneVsOnePKSeason.Instance.SeasonID)
|
| | | {
|
| | | m_TextScores.text = CrossServerOneVsOnePlayerInfo.Instance.Score.ToString();
|
| | | if (crossServerRewardModel.MyRank > -1 && crossServerRewardModel.MyRank < 100)
|
| | | if (crossServerRewardModel.MyRank > -1 && crossServerRewardModel.MyRank < 1000)
|
| | | {
|
| | | m_TextMyRank.text = (crossServerRewardModel.MyRank + 1).ToString();
|
| | | }
|
| | |
| | | CrossServerOneVsOneModel.CrossServerOneVsOneHistory history;
|
| | | if (crossServerModel.TryGetOneVsOneHistory(crossServerRewardModel.SeasonID,out history))
|
| | | {
|
| | | if (history.order > 0 && history.order < 101)
|
| | | if (history.order > 0 && history.order < 1001)
|
| | | {
|
| | | m_TextMyRank.text = history.order.ToString();
|
| | | }
|
| | |
| | |
|
| | | }
|
| | | bool isBool = false;
|
| | | for (int i = 0; i < CrossServerOneVsOnePKSeason.Instance.ZoneCount; i++)
|
| | | {
|
| | | if (CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].ZoneID == crossServerRewardModel.ZoneID)
|
| | | {
|
| | | var list = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].SeasonList;
|
| | | if (list.Count > 1)
|
| | | {
|
| | | isBool = true;
|
| | | }
|
| | | }
|
| | | }
|
| | | //for (int i = 0; i < CrossServerOneVsOnePKSeason.Instance.ZoneCount; i++)
|
| | | //{
|
| | | // if (CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].ZoneID == crossServerRewardModel.ZoneID)
|
| | | // {
|
| | | // var list = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].SeasonList;
|
| | | // if (list.Count > 1)
|
| | | // {
|
| | | // isBool = true;
|
| | | // }
|
| | | // }
|
| | | //}
|
| | | if (isBool)//赛季
|
| | | {
|
| | | m_SeasonObj.SetActive(true);
|
| | |
| | | bool isbool = crossServerRewardModel.IsAwardState(CrossRealmPKAwardStateEnum.SeasonAwardState, -1);
|
| | | if (CrossServerOneVsOnePKSeason.Instance.SeasonState == 2 && !isbool)
|
| | | {
|
| | | crossServerRewardModel.ViewCrossPKBillboard(CrossServerOneVsOnePKSeason.Instance.ZoneID, CrossServerOneVsOnePKSeason.Instance.SeasonID);
|
| | | crossServerRewardModel.ViewCrossPKBillboard(CrossServerOneVsOnePKSeason.Instance.ZoneID, CrossServerOneVsOnePKSeason.Instance.SeasonID, true);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | { |
| | | if (m_Obstacles == null) |
| | | { |
| | | var configString = FuncConfigConfig.Get("CrossRealmPKFB").Numerical2; |
| | | var matches = Regex.Matches(configString, "\\[[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3}\\]"); |
| | | m_Obstacles = new FightObstacle[matches.Count]; |
| | | for (var i = 0; i < matches.Count; i++) |
| | | var configString = FuncConfigConfig.Get("CrossRealmPKFB").Numerical1; |
| | | var matches = JsonMapper.ToObject<int[][]>(configString); |
| | | m_Obstacles = new FightObstacle[matches.Length]; |
| | | for (var i = 0; i < matches.Length; i++) |
| | | { |
| | | var subMatches = Regex.Matches(matches[i].Value, "[0-9]{1,3}"); |
| | | m_Obstacles[i] = new FightObstacle() |
| | | { |
| | | aPosX = subMatches.Count > 0 ? int.Parse(subMatches[0].Value) : 0, |
| | | aPosY = subMatches.Count > 1 ? int.Parse(subMatches[1].Value) : 0, |
| | | bPosX = subMatches.Count > 2 ? int.Parse(subMatches[2].Value) : 0, |
| | | bPosY = subMatches.Count > 3 ? int.Parse(subMatches[3].Value) : 0, |
| | | angle = subMatches.Count > 4 ? int.Parse(subMatches[4].Value) : 0, |
| | | aPosX = matches[i][0], |
| | | aPosY = matches[i][1], |
| | | bPosX = matches[i][2], |
| | | bPosY = matches[i][3], |
| | | angle = matches[i][4], |
| | | }; |
| | | } |
| | | } |
| | |
| | | return playerInfo; |
| | | } |
| | | |
| | | //改为直接挑战机器人 |
| | | public static void JiaMatchOk() |
| | | { |
| | | var teamModel = ModelCenter.Instance.GetModel<TeamModel>(); |
| | |
| | | } |
| | | |
| | | var package = new HC001_tagGCCrossRealmPKMatchOK(); |
| | | package.RoomID = 1000; |
| | | //package.RoomID = 1000; |
| | | var serverName = ServerListCenter.Instance.currentServer.name; |
| | | var playerName = PlayerDatas.Instance.baseData.PlayerName; |
| | | package.PlayerName = StringUtility.Contact("[", serverName.Replace("@gm", ""), "]", playerName); |
| | | package.Number = (byte)UnityEngine.Random.Range(1, 3); |
| | | //package.PlayerName = StringUtility.Contact("[", serverName.Replace("@gm", ""), "]", playerName); |
| | | //package.Number = (byte)UnityEngine.Random.Range(1, 3); |
| | | |
| | | var opponent = new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer(); |
| | | opponent.Job = (byte)UnityEngine.Random.Range(1, 3); |
| | |
| | | |
| | | var exceptedLevel = PlayerDatas.Instance.baseData.LV - UnityEngine.Random.Range(1, 5); |
| | | opponent.LV = (ushort)(Mathf.Clamp(exceptedLevel, FuncOpenLVConfig.Get(157).LimitLV, 999)); |
| | | opponent.MaxProDef = 100; |
| | | var maxHP = (ulong)(PlayerDatas.Instance.extersion.MaxHP * UnityEngine.Random.Range(0.7f, 0.95f)); |
| | | opponent.MaxHP = (uint)(maxHP % Constants.ExpPointValue); |
| | | opponent.MaxHPEx = (uint)(maxHP / Constants.ExpPointValue); |
| | | //opponent.MaxProDef = 100; |
| | | //var maxHP = (ulong)(PlayerDatas.Instance.extersion.MaxHP * UnityEngine.Random.Range(0.7f, 0.95f)); |
| | | //opponent.MaxHP = (uint)(maxHP % Constants.ExpPointValue); |
| | | //opponent.MaxHPEx = (uint)(maxHP / Constants.ExpPointValue); |
| | | package.MatchPlayer = new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer[] { opponent }; |
| | | |
| | | myPlace = package.Number; |
| | | //myPlace = package.Number; |
| | | opponentName = opponent.PlayerName; |
| | | CrossServerLogin.Instance.UpdateCrossServerOneVsOneData(package, true); |
| | | WindowCenter.Instance.Open<CrossServerOneVsOneEnterConfirmWin>(); |
| | | ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>().IsMatching = false; |
| | | StartClientCrossServerOneVsOne(); |
| | | } |
| | | |
| | | public static void StartClientCrossServerOneVsOne() |
| | |
| | | ClientDungeonStageUtility.SetClientDungeon(true, mapId); |
| | | var sendInfo = new CA231_tagCMClientStartCustomScene(); |
| | | GameNetSystem.Instance.SendInfo(sendInfo); |
| | | CrossServerLogin.Instance.SetWaitForLoginCrossServerState(false); |
| | | StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand() |
| | | { |
| | | toMapId = mapId, |
| | |
| | | break;
|
| | | }
|
| | |
|
| | | switch (_type)
|
| | | {
|
| | | case DungeonCoolDownType.WaitPlayer:
|
| | | if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOneWaitPlayerCoolDownWin>())
|
| | | {
|
| | | WindowCenter.Instance.Open<CrossServerOneVsOneWaitPlayerCoolDownWin>();
|
| | | }
|
| | | break;
|
| | | case DungeonCoolDownType.PlayerLeave:
|
| | | if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOnePlayerLeaveCoolDownWin>())
|
| | | {
|
| | | WindowCenter.Instance.Open<CrossServerOneVsOnePlayerLeaveCoolDownWin>();
|
| | | }
|
| | | break;
|
| | | }
|
| | | //switch (_type)
|
| | | //{
|
| | | // case DungeonCoolDownType.WaitPlayer:
|
| | | // if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOneWaitPlayerCoolDownWin>())
|
| | | // {
|
| | | // WindowCenter.Instance.Open<CrossServerOneVsOneWaitPlayerCoolDownWin>();
|
| | | // }
|
| | | // break;
|
| | | // case DungeonCoolDownType.PlayerLeave:
|
| | | // if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOnePlayerLeaveCoolDownWin>())
|
| | | // {
|
| | | // WindowCenter.Instance.Open<CrossServerOneVsOnePlayerLeaveCoolDownWin>();
|
| | | // }
|
| | | // break;
|
| | | //}
|
| | | }
|
| | |
|
| | | if (_type == DungeonCoolDownType.WaitStart)
|
| | |
| | | InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.Whole);
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | var model = ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>();
|
| | | if (model.IsMatching)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("CrossMatching8", dungeonConfig.MapID);
|
| | | return;
|
| | | }
|
| | |
|
| | | if (CrossServerLogin.Instance.IsEnterCrossServerPreparing())
|
| | |
| | | |
| | | timer = 0f; |
| | | |
| | | if (crossServerOneVsOneModel.IsMatching) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (CrossServerLogin.Instance.IsEnterCrossServerPreparing()) |
| | | { |
| | | return; |
| | |
| | | error = 1;
|
| | | return false;
|
| | | }
|
| | | if (crossServerOneVsOneModel.IsMatching)
|
| | | {
|
| | | error = 8;
|
| | | return false;
|
| | | }
|
| | |
|
| | | var mapId = PlayerDatas.Instance.baseData.MapID;
|
| | | if (MapUtility.IsDungeon(mapId))
|
| | | {
|
| | |
| | | public string accountBuf { get; private set; }
|
| | | public string passwordBuf { get; private set; }
|
| | |
|
| | | public void UpdateCrossServerOneVsOneData(HC001_tagGCCrossRealmPKMatchOK matchOK, bool isClient)
|
| | | {
|
| | | oneVsOnePlayerData = new CrossServerOneVsOne()
|
| | | {
|
| | | isClient = isClient,
|
| | | roomId = matchOK.RoomID,
|
| | | waitForLoginCrossServer = true,
|
| | | validTimeLimited = Time.time + 30f,
|
| | | autoEnsureTime = Time.time + 3f,
|
| | | myName = matchOK.PlayerName.Replace("@gm", ""),
|
| | | myJob = PlayerDatas.Instance.baseData.Job,
|
| | | myFace = AvatarHelper.GetMyAvatarID(),
|
| | | myFacePic = AvatarHelper.GetMyAvatarFrameID(),
|
| | | myBornPoint = matchOK.Number,
|
| | | opponentName = matchOK.MatchPlayer[0].PlayerName.Replace("@gm", ""),
|
| | | opponentJob = matchOK.MatchPlayer[0].Job,
|
| | | opponentFace = (int)matchOK.MatchPlayer[0].Face,
|
| | | opponentFacePic = (int)matchOK.MatchPlayer[0].FacePic,
|
| | | opponentMaxHp = matchOK.MatchPlayer[0].MaxHP + matchOK.MatchPlayer[0].MaxHPEx * Constants.ExpPointValue,
|
| | | opponentLevel = (int)matchOK.MatchPlayer[0].LV,
|
| | | opponentPlayerId = (int)matchOK.MatchPlayer[0].PlayerID,
|
| | | MaxProDef = (int)matchOK.MatchPlayer[0].MaxProDef,
|
| | | };
|
| | |
|
| | | Clock.AlarmAt(DateTime.Now + new TimeSpan(3 * TimeSpan.TicksPerSecond), () =>
|
| | | {
|
| | | if (oneVsOnePlayerData.waitForLoginCrossServer)
|
| | | {
|
| | | if (oneVsOnePlayerData.isClient)
|
| | | {
|
| | | ClientCrossServerOneVsOne.StartClientCrossServerOneVsOne();
|
| | | }
|
| | | else
|
| | | {
|
| | | CrossServerOneVsOneLogin();
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | | //public void CrossServerOneVsOneLogin()
|
| | | //{
|
| | | // var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
|
| | | // var account = loginModel.accountBuf;
|
| | | // var ip = GameNetSystem.Instance.crossServerData.ip;
|
| | | // var port = GameNetSystem.Instance.crossServerData.port;
|
| | |
|
| | | public void CrossServerOneVsOneLogin()
|
| | | {
|
| | | var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
|
| | | var account = loginModel.accountBuf;
|
| | | var ip = GameNetSystem.Instance.crossServerData.ip;
|
| | | var port = GameNetSystem.Instance.crossServerData.port;
|
| | | // LoadingWin.isCrossServerOneVsOne = true;
|
| | | // WindowCenter.Instance.Open<LoadingWin>();
|
| | | // SetWaitForLoginCrossServerState(false);
|
| | |
|
| | | LoadingWin.isCrossServerOneVsOne = true;
|
| | | WindowCenter.Instance.Open<LoadingWin>();
|
| | | SetWaitForLoginCrossServerState(false);
|
| | | // AccountLogin(account, ip, port, false);
|
| | | //}
|
| | |
|
| | | AccountLogin(account, ip, port, false);
|
| | | }
|
| | |
|
| | | public void SetWaitForLoginCrossServerState(bool state)
|
| | | {
|
| | | oneVsOnePlayerData = oneVsOnePlayerData.SetWaitForLoginCrossServer(false);
|
| | | }
|
| | | //public void SetWaitForLoginCrossServerState(bool state)
|
| | | //{
|
| | | // oneVsOnePlayerData = oneVsOnePlayerData.SetWaitForLoginCrossServer(false);
|
| | | //}
|
| | |
|
| | | public bool IsEnterCrossServerPreparing()
|
| | | {
|
| | |
| | | Dictionary<int, int> queryRankCD = new Dictionary<int, int>(); //查询CD
|
| | | Dictionary<int, Dictionary<int, RankData>> m_RankPageDatas = new Dictionary<int, Dictionary<int, RankData>>(); //分页查询 排名索引按字段存储 0代表第一名
|
| | | //类型:ID -排名索引,通过ID进行排重删除 不同名次 同ID的数据
|
| | | Dictionary<int, Dictionary<int, int>> m_RankIDToIndex = new Dictionary<int, Dictionary<int, int>>(); |
| | | Dictionary<int, Dictionary<int, int>> m_RankIDToIndex = new Dictionary<int, Dictionary<int, int>>();
|
| | |
|
| | |
|
| | | //本服分页查询使用说明
|
| | | //1. QueryRankByPage:先查询第一页,startIndex = 0, count = 30, 在第一页查询前可以选择初始化ResetQueryParam
|
| | | //2. ListenRankPage:一般在滚动条OnRefreshCell监听排行榜显示名次,用于分页查询
|
| | | // isSelf =1 固定返回自己的排名附近10条,其他参数无效
|
| | | // WatchID; //查看指定ID名次前后,其他参数无效
|
| | | public void QueryRankByPage(int type, int startIndex = 0, int count = 30, int watchID = 0, bool forceQuery = false)
|
| | | {
|
| | | if (queryRankCD.ContainsKey(type) && !forceQuery)
|
| | |
| | | //分页查询使用说明
|
| | | //1. QueryCrossRank:先查询第一页,startIndex = 0, count = 30, 在第一页查询前可以选择初始化ResetQueryParam
|
| | | //2. ListenCrossRankPage:一般在滚动条OnRefreshCell监听排行榜显示名次,用于分页查询
|
| | | // isSelf =1 固定返回自己的排名附近10条,其他参数无效
|
| | | //查询跨服排行榜
|
| | | // WatchID; //查看指定ID名次前后,其他参数无效
|
| | | //查询跨服排行榜,排行榜类型可能因跨服功能不同 由分组分赛季等情况组合
|
| | | /// <param name="count"> 查看条数,服务端默认20,最大不超过100 </param>
|
| | | public void QueryCrossRank(int type, int groupID, int startIndex = 0, int count = 30, int watchID = 0, int cd = 2, bool forceQuery = false)
|
| | | public void QueryCrossRank(int type, int groupID, int startIndex = 0, int count = 30, int watchID = 0, int cd = 2, bool forceQuery = false, int groupValue2 = 0)
|
| | | {
|
| | | if (queryRankCD.ContainsKey(type) && !forceQuery)
|
| | | {
|
| | |
| | | var pak = new CC004_tagCGViewCrossBillboard();
|
| | | pak.Type = (byte)type;
|
| | | pak.GroupValue1 = (byte)groupID;
|
| | | pak.GroupValue2 = (byte)groupValue2;
|
| | | pak.StartIndex = (uint)startIndex;
|
| | | pak.WatchCnt = (byte)count;
|
| | | pak.WatchID = (uint)watchID;
|
| | |
| | | queryRankCD[type] = (int)Time.time;
|
| | | }
|
| | |
|
| | |
|
| | | public void ListenCrossRankPage(int type, int groupID, int index)
|
| | | //groupVaule2 用于分组分赛季等情况
|
| | | public void ListenCrossRankPage(int type, int groupID, int index, int groupVaule2 = 0)
|
| | | {
|
| | | int page = index / pageCnt;
|
| | | if (index > page * pageCnt + queryPointNum)
|
| | |
| | | if (queryPageTimes.ContainsKey(page) && Time.realtimeSinceStartup - queryPageTimes[page] < queryPageCD)
|
| | | return;
|
| | | Debug.LogFormat("跨服分页查询:{0} - {1}", index, page);
|
| | | QueryCrossRank(type, groupID, pageCnt * (page + 1), pageCnt, forceQuery: true);
|
| | | QueryCrossRank(type, groupID, pageCnt * (page + 1), pageCnt, forceQuery: true, groupValue2: groupVaule2);
|
| | | queryPageTimes[page] = Time.realtimeSinceStartup;
|
| | | }
|
| | | }
|
| | |
| | | //跨服排行榜信息
|
| | | public void ReceivePackageCross(HC007_tagGCCrossBillboardInfo package)
|
| | | {
|
| | |
|
| | | if (!m_RankPageDatas.ContainsKey(package.Type))
|
| | | int rankType = package.Type;
|
| | | //部分跨服排行榜同一个榜存在分组分区的情况 //赛区3位+赛季3位+排行榜类型3位
|
| | | if (rankType == CrossServerOneVsOneRewardModel.rankType)
|
| | | {
|
| | | m_RankPageDatas.Add(package.Type, new Dictionary<int, RankData>());
|
| | | rankType = package.GroupValue1 * 1000000 + package.GroupValue2 * 1000 + rankType;
|
| | | }
|
| | | if (!m_RankPageDatas.ContainsKey(rankType))
|
| | | {
|
| | | m_RankPageDatas.Add(rankType, new Dictionary<int, RankData>());
|
| | | }
|
| | |
|
| | | //同ID排重删除
|
| | | if (!m_RankIDToIndex.ContainsKey(package.Type))
|
| | | if (!m_RankIDToIndex.ContainsKey(rankType))
|
| | | {
|
| | | m_RankIDToIndex.Add(package.Type, new Dictionary<int, int>());
|
| | | m_RankIDToIndex.Add(rankType, new Dictionary<int, int>());
|
| | | }
|
| | |
|
| | | for (int i = 0; i < package.BillboardCount; i++)
|
| | | {
|
| | | int id = (int)package.CrossBillboardDataList[i].ID;
|
| | | int orderIndex = (int)package.CrossBillboardDataList[i].OrderIndex;
|
| | | if (!m_RankIDToIndex[package.Type].ContainsKey(id))
|
| | | if (!m_RankIDToIndex[rankType].ContainsKey(id))
|
| | | {
|
| | | m_RankIDToIndex[package.Type][id] = orderIndex;
|
| | | m_RankIDToIndex[rankType][id] = orderIndex;
|
| | | }
|
| | | else if (m_RankIDToIndex[package.Type][id] != orderIndex)
|
| | | else if (m_RankIDToIndex[rankType][id] != orderIndex)
|
| | | {
|
| | | m_RankPageDatas[package.Type].Remove(m_RankIDToIndex[package.Type][id]);
|
| | | m_RankIDToIndex[package.Type][id] = orderIndex;
|
| | | m_RankPageDatas[rankType].Remove(m_RankIDToIndex[rankType][id]);
|
| | | m_RankIDToIndex[rankType][id] = orderIndex;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | for (int i = 0; i < package.BillboardCount; i++)
|
| | | {
|
| | | int orderIndex = (int)package.CrossBillboardDataList[i].OrderIndex;
|
| | | if (!m_RankPageDatas[package.Type].ContainsKey(orderIndex))
|
| | | if (!m_RankPageDatas[rankType].ContainsKey(orderIndex))
|
| | | {
|
| | | m_RankPageDatas[package.Type][orderIndex] = new RankData();
|
| | | m_RankPageDatas[rankType][orderIndex] = new RankData();
|
| | | }
|
| | | ReSetRankData(m_RankPageDatas[package.Type][orderIndex], package.CrossBillboardDataList[i], package.Type);
|
| | | ReSetRankData(m_RankPageDatas[rankType][orderIndex], package.CrossBillboardDataList[i], package.Type);
|
| | | }
|
| | |
|
| | | if (package.WatchID != 0)
|
| | | {
|
| | | onMyRankRefresh?.Invoke(package.Type);
|
| | | onMyRankRefresh?.Invoke(rankType);
|
| | | }
|
| | | else
|
| | | {
|
| | | onRankRefresh?.Invoke(package.Type);
|
| | | onRankRefresh?.Invoke(rankType);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | data.cmpValue3 = serverData.CmpValue3;
|
| | | data.userData = serverData.UserData;
|
| | | data.index = serverData.OrderIndex;
|
| | | data.type = type;
|
| | | data.type = type; //与服务端一致的跨服排行榜类型,外部自行处理不同分组分赛季等情况
|
| | | }
|
| | |
|
| | | //查询本服排行榜
|
| | |
| | | }
|
| | |
|
| | | //排名从0 开始
|
| | | //如果是跨服排行榜 类型可能因跨服功能不同 由分组分赛季等情况组合
|
| | | public Dictionary<int, RankData> GetRankPageDatas(int type)
|
| | | {
|
| | | Dictionary<int, RankData> datas = null;
|
| | |
| | | return null;
|
| | | }
|
| | |
|
| | |
|
| | | ////如果是跨服排行榜 类型可能因跨服功能不同 由分组分赛季等情况组合
|
| | | public RankData GetMyRank(int type)
|
| | | {
|
| | | var playerId = PlayerDatas.Instance.baseData.PlayerID;
|
| | |
| | |
|
| | | public void RequestPrepareEnterDungeon(bool _prepare)
|
| | | {
|
| | | var crossServerOneVsOneModel = ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>();
|
| | | if (crossServerOneVsOneModel.IsMatching)
|
| | | {
|
| | | crossServerOneVsOneModel.SendCrossMatch(0);
|
| | | }
|
| | |
|
| | | var sendInfo = new CB909_tagCGTeamMemberPrepare();
|
| | | sendInfo.PrepareState = (byte)(_prepare ? 1 : 2);
|
| | | GameNetSystem.Instance.SendInfo(sendInfo);
|