| System/CrossServerOneVsOne/CrossMatchRecordWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/CrossMatchRecordWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/CrossMatchResultCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/CrossMatchResultCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/CrossServerArenaWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/CrossServerModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/CrossServerRewardModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/CrossServerWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/RankCellCtrl.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/RankCellCtrl.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CrossServerOneVsOne/RankingWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/CrossServerOneVsOne/CrossMatchRecordWin.cs
New file @@ -0,0 +1,59 @@ using System; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class CrossMatchRecordWin : Window { [SerializeField] ScrollerController resultCtrl; [SerializeField] Button closeBtn; CrossServerModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerModel>(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { closeBtn.AddListener(CloseClick); } protected override void OnPreOpen() { SetDisplay(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion private void SetDisplay() { UpdateResultCell(); } private void UpdateResultCell() { var results = crossServerModel.localSaveResults; resultCtrl.Refresh(); for(int i = 0; i < results.Count; i++) { resultCtrl.AddCell(ScrollerDataType.Header,i); } resultCtrl.Restart(); } } } System/CrossServerOneVsOne/CrossMatchRecordWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: df6eb0062ff2c524aa564a542bf94e39 timeCreated: 1545199685 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/CrossServerOneVsOne/CrossMatchResultCell.cs
New file @@ -0,0 +1,66 @@ using System; using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; namespace Snxxz.UI { [XLua.Hotfix] public class CrossMatchResultCell : ScrollerUI { [SerializeField] Text dateTime; [SerializeField] Text info; [SerializeField] Image resultImg; CrossServerModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerModel>(); } } public override void Refresh(CellView cell) { var results = crossServerModel.localSaveResults; var resultInfo = results[cell.index]; dateTime.text = resultInfo.PkEndTime; int offlineType = 0; bool isOffline = crossServerModel.TryGetOffLine(out offlineType); int winStreakScore = 0; bool isWinStreak = crossServerModel.TryGetWinStreakScore(out winStreakScore); if(isOffline) { switch(offlineType) { case 1: info.text = Language.Get("CrossServer105", resultInfo.VsPlayerName, resultInfo.AddScore); break; case 2: if(isWinStreak) { info.text = Language.Get("CrossServer104", resultInfo.VsPlayerName, resultInfo.AddScore, resultInfo.WinStreak,winStreakScore); } else { info.text = Language.Get("CrossServer103",resultInfo.VsPlayerName,resultInfo.AddScore); } break; } } else { int winNum = 0; int failNum = 0; crossServerModel.GetWinAndFailNum(out winNum,out failNum); string compareScore = StringUtility.Contact(winNum,":",failNum); if (isWinStreak) { info.text = Language.Get("CrossServer102", resultInfo.VsPlayerName,compareScore,resultInfo.AddScore, resultInfo.WinStreak, winStreakScore); } else { info.text = Language.Get("CrossServer101", resultInfo.VsPlayerName,compareScore,resultInfo.AddScore); } } bool isWinner = PlayerDatas.Instance.baseData.PlayerID == resultInfo.WinnerID ? true : false; resultImg.SetSprite(isWinner ? "" : ""); } } } System/CrossServerOneVsOne/CrossMatchResultCell.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 0cfdcd65f265117449df8b7ebdadb182 timeCreated: 1545200173 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/CrossServerOneVsOne/CrossServerArenaWin.cs
@@ -17,7 +17,7 @@ [SerializeField] Text seasonTimeText; [SerializeField] Text openTimeText; [SerializeField] Button buyTimesBtn; [SerializeField] Button matchRecordBtn; CrossServerRewardModel m_CrossServerRewardModel; CrossServerRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerRewardModel>()); } } CrossServerModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerModel>(); } } @@ -31,6 +31,7 @@ dayAwardBtn.AddListener(ClickDayAward); matchBtn.AddListener(ClickMatch); buyTimesBtn.AddListener(ClickBuyTimes); matchRecordBtn.AddListener(ClickMatchRecord); } protected override void OnPreOpen() @@ -105,7 +106,6 @@ } private void ClickBuyTimes() { int remainNum = crossServerModel.alreadyBuyNum + crossServerModel.freeMaxMatchNum - crossServerModel.dayMatchNum; @@ -128,5 +128,10 @@ WindowCenter.Instance.Open<MatchWin>(); } private void ClickMatchRecord() { WindowCenter.Instance.Open<CrossMatchRecordWin>(); } } } System/CrossServerOneVsOne/CrossServerModel.cs
@@ -11,6 +11,9 @@ [XLua.LuaCallCSharp] public class CrossServerModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk { public string PkResultLocalSaveKey { get; private set; } public List<PkResultInfo> localSaveResults { get; private set; } public override void Init() { ParseFuncConfig(); @@ -23,7 +26,9 @@ public void OnAfterPlayerDataInitialize() { int playerId = (int)PlayerDatas.Instance.baseData.PlayerID; PkResultLocalSaveKey = StringUtility.Contact("PkResultLocalSaveKey", playerId); GetLocalSaveData(); } public void OnPlayerLoginOk() @@ -64,6 +69,17 @@ return Equation.Instance.Eval<int>(priceFormula); } public bool TryGetWinStreakScore(out int score) { score = 0; if (pkResultInfo.WinStreak < 2) return false; Equation.Instance.Clear(); Equation.Instance.AddKeyValue("cWinCount",pkResultInfo.WinStreak); score = Equation.Instance.Eval<int>(winStreakScoreFormula); return true; } public List<AwardType> sortDayAwardslist = new List<AwardType>(); public void SortDayAwardsList() { @@ -89,6 +105,7 @@ public int freeMaxMatchNum { get; private set; } //每日免费匹配次数 public int buyMaxMatchNum { get; private set; } //每日可购买次数 public string priceFormula { get;private set;} //购买匹配次数需要价格公式 public string winStreakScoreFormula { get; private set; } //连胜积分公式 public List<AwardType> dayAwardTypelist { get; private set; } private void ParseFuncConfig() { @@ -152,6 +169,9 @@ freeMaxMatchNum = int.Parse(CrossRealmPKMatchCount.Numerical1); buyMaxMatchNum = int.Parse(CrossRealmPKMatchCount.Numerical2); priceFormula = CrossRealmPKMatchCount.Numerical3; var CrossRealmPKScore = Config.Instance.Get<FuncConfigConfig>("CrossRealmPKScore"); winStreakScoreFormula = CrossRealmPKScore.Numerical3; } public class AwardType @@ -222,6 +242,7 @@ public event Action UpdatePkResultEvent; public void UpdatePKResultInfo(HC003_tagGCCrossRealmPKOverInfo pKOverInfo) { pkResultInfo = new PkResultInfo(); pkResultInfo.PkEndTime = pKOverInfo.TimeStr; pkResultInfo.OverType = pKOverInfo.OverType; pkResultInfo.WinnerID = (int)pKOverInfo.WinnerID; @@ -232,6 +253,7 @@ pkResultInfo.DanLV = pKOverInfo.DanLV; pkResultInfo.WinStreak = pKOverInfo.CWinCnt; pkResultInfo.VsPlayerName = pKOverInfo.TagName; SetPkInfoLocalSave(pkResultInfo); if(UpdatePkResultEvent != null) { UpdatePkResultEvent(); @@ -244,7 +266,7 @@ public int OverType; // 0-正常,1-有人离线 public int WinnerID; // 胜方ID public int WinnerID; // 胜方ID(本次战斗结束,不是回合结束) public int RoundCount; // PK回合数 @@ -281,6 +303,22 @@ } /// <summary> /// 1 自己离线 2 对手离线 /// </summary> /// <param name="type"></param> /// <returns></returns> public bool TryGetOffLine(out int type) { type = 0; int playerId = (int)PlayerDatas.Instance.baseData.PlayerID; if(pkResultInfo.OverType != 0) { type = playerId == pkResultInfo.WinnerID ? 2 : 1; } return pkResultInfo.OverType != 0; } /// <summary> ///0-取消匹配; 1-进行匹配 /// </summary> /// <param name="type"></param> @@ -291,6 +329,41 @@ GameNetSystem.Instance.SendInfo(match); } #endregion #region 匹配记录 private void GetLocalSaveData() { localSaveResults = new List<PkResultInfo>(); string[] localJsons = LocalSave.GeStringArray(PkResultLocalSaveKey); if(localJsons != null) { for(int i = 0; i < localJsons.Length; i++) { PkResultInfo resultInfo = JsonMapper.ToObject<PkResultInfo>(localJsons[i]); localSaveResults.Add(resultInfo); } } } public void SetPkInfoLocalSave(PkResultInfo resultInfo) { if (localSaveResults.Count >= 30) { localSaveResults.RemoveAt(localSaveResults.Count - 1); } localSaveResults.Insert(0,resultInfo); string[] localJsons = new string[localSaveResults.Count]; for(int i = 0; i < localJsons.Length; i++) { string json = JsonMapper.ToJson(localSaveResults[i]); localJsons[i] = json; } LocalSave.SetStringArray(PkResultLocalSaveKey,localJsons); } #endregion #region 红点 #endregion System/CrossServerOneVsOne/CrossServerRewardModel.cs
@@ -21,10 +21,23 @@ public int Score; public List<Item_Class> ItemList; } public class RankingInformationClass//排名信息 { public int Rankin;//名次 public int Realm;//境界 public int PlayerID;//玩家ID public string ServerName;//服务器名 public int Job;//职业 public int Power;//战力 public int Segment;//段位 public int Integral;//积分 } public class CrossServerRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public Dictionary<int, SeasonAwardClass> SegmentRewardDic = new Dictionary<int, SeasonAwardClass>(); public ImpactRankModel.RankAwardItem SeasonRewardDic = new ImpactRankModel.RankAwardItem(); public Dictionary<int, RankingInformationClass> RankInformationDic = new Dictionary<int, RankingInformationClass>(); private bool m_IsOpenMatch; public bool IsOpenMatch { @@ -45,13 +58,11 @@ public void OnBeforePlayerDataInitialize() { GlobalTimeEvent.Instance.secondEvent -= secondEvent; } public void OnPlayerLoginOk() { GlobalTimeEvent.Instance.secondEvent += secondEvent; } @@ -111,10 +122,6 @@ public void ResetTime() { Date_Time= TimeUtility.ServerNow; } private void secondEvent() { } } System/CrossServerOneVsOne/CrossServerWin.cs
@@ -22,6 +22,7 @@ [SerializeField] Text honorText; [SerializeField] Slider scoreSlider; [SerializeField] Text scorePerText; [SerializeField] GameObject danLvUpObj; [SerializeField] Button scoreRankBtn; [SerializeField] Button rankAwardBtn; [SerializeField] Button arenaBtn; @@ -95,6 +96,7 @@ curScoreText.text = crossServerModel.pkResultInfo.CurScore.ToString(); int maxScore = 0; bool isMaxRank = crossServerModel.TryGetMaxRank(out maxScore); danLvUpObj.SetActive(!isMaxRank); if (!isMaxRank) { scorePerText.text = StringUtility.Contact(crossServerModel.pkResultInfo.CurScore, "/", maxScore); System/CrossServerOneVsOne/RankCellCtrl.cs
New file @@ -0,0 +1,82 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, December 19, 2018 //-------------------------------------------------------- using EnhancedUI.EnhancedScroller; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; using System; namespace Snxxz.UI { public class RankCellCtrl : ScrollerUI { [SerializeField] Button m_RankButton; [SerializeField] Text m_RankNum; [SerializeField] Image m_RankNumBottom; [SerializeField] Text m_NameTxt; [SerializeField] Text m_JobTxt; [SerializeField] Text m_RankWhatTxt; [SerializeField] Text m_SegmentTxt; [SerializeField] Text m_IntegralTxt; CrossServerRewardModel m_CrossServerRewardModel; CrossServerRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerRewardModel>()); } } public override void Refresh(CellView cell) { int index = cell.index; if (index < 3) { m_RankNumBottom.gameObject.SetActive(true); if (index == 0) { m_RankNumBottom.SetSprite("Rank_First"); } else if (index == 1) { m_RankNumBottom.SetSprite("Rank_Second"); } else if (index == 2) { m_RankNumBottom.SetSprite("Rank_Third"); } m_RankNum.gameObject.SetActive(false); } else { m_RankNumBottom.gameObject.SetActive(false); m_RankNum.text = (index + 1).ToString(); m_RankNum.gameObject.SetActive(true); } RankingInformationClass data = null; if (crossServerRewardModel.RankInformationDic != null && index < crossServerRewardModel.RankInformationDic.Count) { data = crossServerRewardModel.RankInformationDic[index]; } if (data != null) { } else { m_NameTxt.text = Language.Get("L1046"); m_JobTxt.text = "-"; m_RankWhatTxt.text = "-"; m_SegmentTxt.text= "-"; m_IntegralTxt.text= "-"; m_NameTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); m_JobTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); m_RankWhatTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); m_SegmentTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); m_SegmentTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); } } } } System/CrossServerOneVsOne/RankCellCtrl.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 7e2f54309d2f92a48854420b24f50804 timeCreated: 1545200441 licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/CrossServerOneVsOne/RankingWin.cs
@@ -17,6 +17,7 @@ public class RankingWin : Window { [SerializeField] ScrollerController m_ScrollerController; [SerializeField] Button m_CloseButton; #region Built-in protected override void BindController() { @@ -25,6 +26,7 @@ protected override void AddListeners() { m_CloseButton.AddListener(()=> { Close(); }); } protected override void OnPreOpen()