System/CrossServerOneVsOne/CrossServerOneVsOneArenaWin.cs
@@ -256,6 +256,12 @@ InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.Whole); return; } int remainNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum(); if (remainNum < 1) { WindowCenter.Instance.Open<CrossSeverOneVsOneBuyMatchTimesWin>(); return; } } if (crossServerModel.isClickCoolTime) return; System/CrossServerOneVsOne/CrossServerOneVsOnePlayerInfo.cs
@@ -75,10 +75,18 @@ public bool TryGetMaxRank(out int upScore) { upScore = 0; var preArenaConfig = Config.Instance.Get<CrossServerArenaConfig>(DanLV - 1); var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(DanLV); if (arenaConfig != null) if (arenaConfig != null && arenaConfig.LVUpScore > 0) { upScore = arenaConfig.LVUpScore; if(preArenaConfig != null) { upScore = arenaConfig.LVUpScore - preArenaConfig.LVUpScore; } else { upScore = arenaConfig.LVUpScore; } } return upScore == 0; } System/CrossServerOneVsOne/CrossServerOneVsOneWin.cs
@@ -140,8 +140,14 @@ danLvUpObj.SetActive(!isMaxRank); if (!isMaxRank) { scorePerText.text = StringUtility.Contact(playerInfo.Score, "/", maxScore); scoreSlider.value = (float)playerInfo.Score / maxScore; var preUpScore = Config.Instance.Get<CrossServerArenaConfig>(playerInfo.DanLV - 1); int curScore = playerInfo.Score; if(preUpScore != null) { curScore -= preUpScore.LVUpScore; } scorePerText.text = StringUtility.Contact(curScore, "/", maxScore); scoreSlider.value = (float)curScore / maxScore; } } private void ClickHonorStore() System/CrossServerOneVsOne/CrossSeverOneVsOneBuyMatchTimesWin.cs
@@ -27,6 +27,7 @@ protected override void OnPreOpen() { CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += SetDisplay; SetDisplay(); } protected override void OnAfterOpen() @@ -36,7 +37,7 @@ protected override void OnPreClose() { CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= SetDisplay; } protected override void OnAfterClose() { @@ -63,6 +64,8 @@ private void ClickBuyTimes() { if (!crossServerModel.TryGetBuyMatchTimes("CrossMatching21")) return; ulong gold = UIHelper.GetMoneyCnt(1); ulong bindGold = UIHelper.GetMoneyCnt(2); ulong sumGold = gold + bindGold; @@ -94,7 +97,6 @@ private void SendBuyTimes() { crossServerModel.SendBuyMatchCount(); CloseImmediately(); } } } System/OpenServerActivity/AutoTreasureAwardsRow.cs
New file @@ -0,0 +1,49 @@ using System; using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; namespace Snxxz.UI { public class AutoTreasureAwardsRow : MonoBehaviour { [SerializeField] List<AwardItem> awardItems = new List<AwardItem>(); ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } public void SetDisplay(int row,int sum) { int length = awardItems.Count; for(int i = 0; i < length; i++) { var awardItem = awardItems[i]; int index = awardItems.Count * row + i; if(index < sum) { awardItem.itemObj.SetActive(true); ItemCellModel itemCellModel = new ItemCellModel(10101, true); awardItem.itemBaisc.Init(itemCellModel); awardItem.itemBaisc.cellBtn.RemoveAllListeners(); awardItem.itemBaisc.cellBtn.AddListener(() => { ItemAttrData attrData = new ItemAttrData(10101, true); tipsModel.SetItemTipsModel(attrData); }); } else { awardItem.itemObj.SetActive(false); } } } [Serializable] public class AwardItem { public GameObject itemObj; public CommonItemBaisc itemBaisc; } } } System/OpenServerActivity/AutoTreasureAwardsRow.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 961051ac0ec5b404cbe2ed7f67288801 timeCreated: 1544423586 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/AutomaticTreasureWin.cs
New file @@ -0,0 +1,95 @@ using System; using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; namespace Snxxz.UI { [XLua.Hotfix] public class AutomaticTreasureWin : Window { [SerializeField] Button closeBtn; [SerializeField] Button treasureBtn; [SerializeField] Text treasureBtn_Text; [SerializeField] Transform container_Awards; [SerializeField] AutoTreasureAwardsRow awardsRow; LuckyTreasureModel luckyTreasureModel { get { return ModelCenter.Instance.GetModel<LuckyTreasureModel>(); } } ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } int length = 13; List<AutoTreasureAwardsRow> awardsRows = new List<AutoTreasureAwardsRow>(); #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() { OnDestroyAwardsRow(); } protected override void OnAfterClose() { } #endregion private void SetDisplay() { awardsRows.Clear(); UpdateAwardsItem(); } private void UpdateAwardsItem() { CreateAwardsRow(); for(int i = 0; i < awardsRows.Count; i++) { var treasureAwardsRow = awardsRows[i]; treasureAwardsRow.SetDisplay(i,length); } } private void CreateAwardsRow() { int row = length /10; if(length % 10 > 0) { row += 1; } int startRow = awardsRows.Count; for(int i = startRow; i < row; i++) { AutoTreasureAwardsRow treasureAwardsRow = Instantiate(awardsRow, Vector3.zero, Quaternion.identity, container_Awards); treasureAwardsRow.transform.localScale = Vector3.one; treasureAwardsRow.gameObject.SetActive(true); awardsRows.Add(treasureAwardsRow); } awardsRow.gameObject.SetActive(false); } private void OnDestroyAwardsRow() { for(int i = 0; i < awardsRows.Count;i++) { DestroyObject(awardsRows[i].gameObject); } } } } System/OpenServerActivity/AutomaticTreasureWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 1a5a86936f3b05f419bc9803818b90fb timeCreated: 1544421577 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/ImpactRankModel.cs
@@ -714,7 +714,7 @@ [XLua.LuaCallCSharp] public class OpenServerActivityCenter : Singleton<OpenServerActivityCenter> { public event Action openServerActivityStateChange; @@ -829,6 +829,8 @@ AccumulateRecharge, [Header("神秘限购")] MysticalPurchase, [Header("幸运鉴宝")] LuckyTreasure, [Header("节日红包")] FestivalRedpack, } System/OpenServerActivity/LuckyAwardsGroup.cs
New file @@ -0,0 +1,49 @@ using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; using System; using System.Collections.Generic; namespace Snxxz.UI { public class LuckyAwardsGroup : ScrollerUI { [SerializeField] List<AwardCell> awardCells = new List<AwardCell>(); ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } public override void Refresh(CellView cell) { int length = awardCells.Count; for (int i = 0; i < length; i++) { var awardCell = awardCells[i]; int index = cell.index * length + i; List<int> awardIds = null; if(index < awardIds.Count) { int awardId = awardIds[i]; awardCell.itemBaisc.gameObject.SetActive(true); ItemCellModel itemCellModel = new ItemCellModel(awardId, true); awardCell.itemBaisc.Init(itemCellModel); awardCell.itemBaisc.cellBtn.RemoveAllListeners(); awardCell.itemBaisc.cellBtn.AddListener(() => { ItemAttrData attrData = new ItemAttrData(awardId, true); tipsModel.SetItemTipsModel(attrData); }); } else { awardCell.itemBaisc.gameObject.SetActive(false); } } } [Serializable] public class AwardCell { public CommonItemBaisc itemBaisc; } } } System/OpenServerActivity/LuckyAwardsGroup.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 28f0f9094a9cef344a511fe96782184d timeCreated: 1544250056 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/LuckyResultInfo.cs
New file @@ -0,0 +1,22 @@ using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; using System; using System.Collections.Generic; namespace Snxxz.UI { public class LuckyResultInfo : ScrollerUI { [SerializeField] Text infoText; LuckyTreasureModel luckyTreasureModel { get { return ModelCenter.Instance.GetModel<LuckyTreasureModel>(); } } public override void Refresh(CellView cell) { string info = luckyTreasureModel.resultInfolist[cell.index]; infoText.text = info; } } } System/OpenServerActivity/LuckyResultInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: c421cb0c6c83dd54ea2f661a01bed01a timeCreated: 1544250175 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/LuckyTreasureModel.cs
New file @@ -0,0 +1,132 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Snxxz.UI { [XLua.Hotfix] [XLua.LuaCallCSharp] public class LuckyTreasureModel : Model, IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk, IOpenServerActivity { public string resultInfoLocalSave { get; private set; } public List<string> resultInfolist { get; private set; } public event Action<int> onStateUpate; public override void Init() { OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent; OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent; OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent; OpenServerActivityCenter.Instance.Register((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure, this); maxLuckValue = 600; curLuckValue = 300; } public void OnBeforePlayerDataInitialize() { } public void OnAfterPlayerDataInitialize() { int playerId = (int)PlayerDatas.Instance.baseData.PlayerID; resultInfoLocalSave = StringUtility.Contact("LuckyTreasureResult", playerId); GetLocalSaveData(); } public void OnPlayerLoginOk() { } public override void UnInit() { OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent; OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent; OperationTimeHepler.Instance.operationAdvanceEvent -= OperationAdvanceEvent; } public bool IsOpen { get { return false; } } public bool IsAdvance { get { return false; } } public bool priorityOpen { get { return false; } } public OperationLuckyTreasure GetOperation() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.LuckyTreasure, out operationBase)) { return operationBase as OperationLuckyTreasure; } return null; } private void OperationAdvanceEvent(Operation type) { if (type == Operation.LuckyTreasure) { if (onStateUpate != null) { onStateUpate((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure); } } } private void OperationStartEvent(Operation type, int state) { if (type == Operation.LuckyTreasure && state == 0) { if (onStateUpate != null) { onStateUpate((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure); } } } private void OperationEndEvent(Operation type, int state) { if (type == Operation.LuckyTreasure && state == 0) { if (onStateUpate != null) { onStateUpate((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure); } } } #region 表数据 public int maxLuckValue { get; private set;} public int luckAwardId { get; private set; } //幸运大奖物品id public int maxRecordResultNum { get; private set; } //记录鉴宝结果最大条数 public event Action UpdateResultEvent; private void GetLocalSaveData() { string[] infos = LocalSave.GeStringArray(resultInfoLocalSave); resultInfolist = infos == null ? new List<string>() : infos.ToList(); } private void SetAwardResultLocalSave(string info) { resultInfolist = resultInfolist == null ? new List<string>() : resultInfolist; if (resultInfolist.Count >= 3) { resultInfolist.RemoveAt(resultInfolist.Count - 1); } resultInfolist.Insert(0, info); LocalSave.SetStringArray(resultInfoLocalSave, resultInfolist.ToArray()); if (UpdateResultEvent != null) { UpdateResultEvent(); } } #endregion #region 协议 public int curLuckValue { get; private set; } #endregion } } System/OpenServerActivity/LuckyTreasureModel.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: ed5d42ea068242740b8b79e77b49e3de timeCreated: 1544241553 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/LuckyTreasureWin.cs
New file @@ -0,0 +1,157 @@ using System; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class LuckyTreasureWin : Window { [SerializeField] ScrollerController awardsCtrl; [SerializeField] ScrollerController resultCtrl; [SerializeField] Text remainMoneyText; [SerializeField] Text operationTimeText; [SerializeField] CommonItemBaisc luckAward_Item; [SerializeField] Button freeTreasureBtn; [SerializeField] Button goldTreasureBtn; [SerializeField] Button autoTreasureBtn; [SerializeField] Slider luckValueSlider; [SerializeField] Text luckValueText; [SerializeField] Text ruleText; [Header("滑动时间"), SerializeField] float sliderTime = 0.1f; [Header("滑动速度"), SerializeField] float sliderSpeed = 0.1f; OperationLuckyTreasure operation = null; LuckyTreasureModel luckyTreasureModel { get { return ModelCenter.Instance.GetModel<LuckyTreasureModel>(); } } ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { freeTreasureBtn.AddListener(ClickFreeTreasure); goldTreasureBtn.AddListener(ClickGoldTreasure); autoTreasureBtn.AddListener(ClickAutoTreasure); } protected override void OnPreOpen() { SetDisplay(); } protected override void OnAfterOpen() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerData; luckyTreasureModel.UpdateResultEvent += UpdateResultInfo; } protected override void LateUpdate() { base.LateUpdate(); UpdateLuckValue(); } protected override void OnPreClose() { luckyTreasureModel.UpdateResultEvent -= UpdateResultInfo; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerData; } protected override void OnAfterClose() { } #endregion private void SetDisplay() { operation = luckyTreasureModel.GetOperation(); if (operation == null) return; UpdateRemainMoney(); UpdateResultInfo(); operationTimeText.text = operation.ToDisplayTime(); luckValueSlider.value = luckyTreasureModel.curLuckValue; luckValueSlider.minValue = 0; luckValueSlider.maxValue = luckyTreasureModel.maxLuckValue; int luckAwardId = luckyTreasureModel.luckAwardId; ItemCellModel itemCellModel = new ItemCellModel(luckAwardId, true); luckAward_Item.Init(itemCellModel); luckAward_Item.cellBtn.RemoveAllListeners(); luckAward_Item.cellBtn.AddListener(() => { ItemAttrData attrData = new ItemAttrData(luckAwardId, true); tipsModel.SetItemTipsModel(attrData); }); } private void UpdateAwards() { awardsCtrl.Refresh(); for(int i = 0; i < 4; i++) { awardsCtrl.AddCell(ScrollerDataType.Header,i); } awardsCtrl.Restart(); } private void UpdateResultInfo() { var results = luckyTreasureModel.resultInfolist; resultCtrl.Refresh(); for(int i = 0; i < 5; i++) { resultCtrl.AddCell(ScrollerDataType.Header,i); } resultCtrl.Restart(); } private void UpdateLuckValue() { float offset = luckyTreasureModel.curLuckValue - luckValueSlider.value; if (offset < 0.01f) { luckValueSlider.value = luckyTreasureModel.curLuckValue; return; } luckValueSlider.value = Mathf.SmoothDamp(luckValueSlider.value,luckyTreasureModel.curLuckValue,ref sliderSpeed,sliderTime); } private void UpdatePlayerData(PlayerDataRefresh type) { switch(type) { case PlayerDataRefresh.Gold: UpdateRemainMoney(); break; } } private void UpdateRemainMoney() { ulong moneyNum = UIHelper.GetMoneyCnt(1); remainMoneyText.text = moneyNum.ToString(); } private void ClickAutoTreasure() { WindowCenter.Instance.Open<AutomaticTreasureWin>(); } private void ClickGoldTreasure() { } private void ClickFreeTreasure() { } } } System/OpenServerActivity/LuckyTreasureWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: ccf800a8024840e43a089b58339958f5 timeCreated: 1544240681 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/OperationLuckyTreasure.cs
New file @@ -0,0 +1,70 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI { public class OperationLuckyTreasure : OperationBase { public override void Reset() { base.Reset(); } public override string ToDisplayTime() { var textBuilder = OperationTimeHepler.textBuilder; textBuilder.Length = 0; textBuilder.Append(startDate.ToDisplay()); if (startDate != endDate) { textBuilder.Append("—"); textBuilder.Append(endDate.ToDisplay()); } return textBuilder.ToString(); } public int GetActivityDay() { int dayIndex = IndexOfDays(TimeUtility.ServerNow); if(resetType == 0) { return dayIndex + 1; } else if(resetType == 1) { if(IsLastDay) { return dayIndex; } else { return dayIndex + 1; } } return dayIndex + 1; } public int GetActivitySumDay() { if(resetType == 0) { return totalDays + 1; } else if(resetType == 1) { return totalDays; } return totalDays; } public void ParsePackage(HAA19_tagMCActWishingWellInfo package) { for (int i = 0; i < package.Count; i++) { } } } } System/OpenServerActivity/OperationLuckyTreasure.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: bf8497f0cbb6a0b428aa828120cd0768 timeCreated: 1544251132 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/Welfare/OperationTimeHepler.cs
@@ -330,6 +330,40 @@ } /// <summary> /// 幸运鉴宝 /// </summary> /// <param name="package"></param> public void UpdateLuckyTreasure(HAA19_tagMCActWishingWellInfo package) { OperationBase operationBase = null; operationDict.TryGetValue(Operation.LuckyTreasure, out operationBase); if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate)) { ForceStopOperation(Operation.LuckyTreasure); } else { if (operationBase == null) { operationBase = new OperationLuckyTreasure(); operationDict.Add(Operation.LuckyTreasure, operationBase); } var operation = operationBase as OperationLuckyTreasure; operation.Reset(); operation.limitLv = package.LimitLV; operation.startDate = ParseOperationDate(package.StartDate); operation.endDate = ParseOperationDate(package.EndtDate); operation.dayReset = package.IsDayReset == 1; operation.resetType = package.ResetType; operation.ParsePackage(package); if (operationTimeUpdateEvent != null) { operationTimeUpdateEvent(Operation.LuckyTreasure); } } } /// <summary> /// 限时礼包 /// </summary> /// <param name="package"></param> @@ -928,6 +962,7 @@ FlashRushToBuy, //限时抢购 WishingWellInfo, //许愿池 AccumulateRecharge,//累计充值 LuckyTreasure,//幸运鉴宝 LoginReward,//登录奖励 FestivalRedpack,//节日红包 NewYearFairyCeremony, //春节仙界盛典