using asap.core; using cfg; using game; using GameCore; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; public class FishingChallengeData { public bool FirstOpen; // 记录当前EventID public int EventId; // 已经通关轮数,完成之后更新, public int RankTierLevel; // 记录当前已经结算,防止改表的问题 public int Finished; // 记录当前的表单号,获取争取的 EventData public int RedirectID; // 积分 public int Score; // 未处理积分,进入场景后显示的积分增长 public int ProcessedScore; // 当前的阶段,完成了的部分 public int step; // 最多是7关 // 界面上显示 的部分 public int uiStep; public int index; // 根据权重判断的索引 public DateTime StartTime; // 结束时间 public DateTime EndTime; public List eliminateNumber; //每个阶段的排除人数 public List robotAccountList; //机器人列表 } public class FishingChallengeManager { // private const string SaveKey = "FishingChallengeData"; [Inject] public Tables _tables { get; set; } public string PrefabName { get; private set; } private int TopRankTier { get; set; } public int Rank { get; private set; } private FishingEvent CurFishingEventData { get; set; } public int EventItemId => eventChallengeConfig?.Item ?? 0; public int FullStep; // 全部竞赛玩家数量 public int PlayerFullNumber; // Btn 上显示用 public int PreScore; // 开始时间 private DateTime StartTime; // 结束时间 private DateTime EndTime; // public FishingChallengeData fishingChallengeData { get; private set; } public EventChallengeMain eventChallengeMain { get; private set; } public EventChallengeConfig eventChallengeConfig { get; private set; } public MapData challengeMapData { get; private set; } public List itemDataList { get; private set; } // private readonly List _stageDropList = new(); // // 打点数据 private List _eventTrackStageList; private List _eventTrackNormalRewardList; private bool IsInit { get; set; } = false; public bool IsFirstOpen { get { return fishingChallengeData.FirstOpen; } set { if (fishingChallengeData.FirstOpen) { fishingChallengeData.FirstOpen = false; DoSave(); } } } // 进入的第一步,设置数据 public void SetupEventData(FishingEvent fishingEvent) { Log($"SetupEventData -> {fishingEvent}"); if (CurFishingEventData == null || (CurFishingEventData.ID != fishingEvent?.ID)) { CurFishingEventData = fishingEvent; } //UpdateTimeData(); } public bool ShouldOpen() { Log("ShouldOpen"); if (fishingChallengeData == null) return false; // 是否时间允许 if (!IsTimeAllow()) { return false; } // 判断是否通关 if (IsClearAllLevel()) { return false; } return true; } public bool IsTimeAllow() { var now = ZZTimeHelper.UtcNow(); var startTime = fishingChallengeData.StartTime; var endTime = fishingChallengeData.EndTime; #if UNITY_EDITOR var timeOpened = (now - startTime).TotalSeconds; var timeEnded = ( endTime -now).TotalSeconds; Log($"StartTime: {startTime} Now: {now} EndTime:{endTime} TimeOpened:{timeOpened} TimeToEnd:{timeEnded} Other: {1800000- timeOpened} IsTimeAllow => {now <= endTime}"); #endif return now >= startTime && now <= endTime; } public void ClearFishingChallengeData() { fishingChallengeData = null; _stageDropList.Clear(); IsInit = false; DoSave(); } public bool IsStepFinished(int step) { var finalStep = _eliminateListScore.Count; var isFinish = step == finalStep; Log($"IsStepFinished() -> {step} {finalStep} {isFinish}"); return isFinish; } // 当前轮所有是否完成 private bool IsFinishCurLevel() { return IsStepFinished(fishingChallengeData.step); } // 是否全部通关 private bool IsClearAllLevel() { // 时间限制要不要加上,需要跟胡后续判定 if (fishingChallengeData.RankTierLevel <= TopRankTier) { return true; } return false; } public void InitChallengeData(string str) { Log($"InitChallengeData -> {str}"); fishingChallengeData = JsonConvert.DeserializeObject(str); } private void InitBaseData() { var limitedTime = (LimitedTime)CurFishingEventData.TimeDefinition; var startTime = GlobalUtils.TryParseDateTime(limitedTime.StartTime, ZZTimeHelper.UtcNow()); var endTime = GlobalUtils.TryParseDateTime(limitedTime.EndTime, ZZTimeHelper.UtcNow()); fishingChallengeData.FirstOpen = true; fishingChallengeData.RankTierLevel = int.MaxValue; fishingChallengeData.RedirectID = CurFishingEventData.RedirectID; fishingChallengeData.EventId = CurFishingEventData.ID; fishingChallengeData.StartTime = startTime; fishingChallengeData.EndTime = endTime; Log($"fishingChallengeData.EventId -> {fishingChallengeData.EventId}"); } public void CheckInit() { ProcessLastChallenge(); Init(); } public void Init() { Log("Init"); // 设置数据 TopRankTier = _tables.TbEventChallengeMain.DataList[0].RankTier; _stageDropList.Clear(); if (fishingChallengeData == null) { if (CurFishingEventData == null) // 不存在Event { return; } fishingChallengeData = new FishingChallengeData(); InitBaseData(); InitChallengeData(); } if (!IsInit) { // 设置比赛数据实体 UpdateChallengeMainAndConfig(); UpdateTimeData(); UpdateLocalData(); IsInit = true; } OnChallengeStatus();// 设置状态以及表现 } public void ProcessLastChallenge() { UpdateTimeData(); if (fishingChallengeData != null) { if(!IsTimeAllow()) { // 未完成 if (fishingChallengeData.Finished == 0) { UpdateChallengeMainAndConfig(); var status = ChallengeState(); OnFinish(status); } ClearFishingChallengeData(); } } } private void OnChallengeStatus() { var status = ChallengeState(); Log($"OnChallengeStatus -> {status}"); if (IsTimeAllow()) { if (status is 0 or 2) { // GContext.container.Resolve().AddFaceCustomUIData(UITypes.EventChallengeFacePopupPanel, true); } } else { OnFinish(status); } } // 结束的时候调用 // 倒计时结束最好也有个调用出发到这里 private async void OnFinish(int status) { Log($"OnFinish ->{status}"); if (status == 0) { Log("未开始比赛 -- 不应该进入"); } else if (status == 1) { Log($" RankTierLevel {fishingChallengeData.RankTierLevel} "); var rewardList = GetRewardByScore(fishingChallengeData.ProcessedScore,fishingChallengeData.Score); GContext.Publish(new DeferredRewardStashService.EventStashItems { Items = rewardList }); } else if (status == 2) { Log($" RankTierLevel {fishingChallengeData.RankTierLevel} "); // var rewardList = GetRewardByScore(fishingChallengeData.ProcessedScore,fishingChallengeData.Score); // GContext.Publish(new DeferredRewardStashService.EventStashItems { Items = rewardList }); } ClearFishingChallengeData(); } // 0- 6 阶段奖励 // 7 最终奖励 // 获得未处理的道具 private List GetRewardByScore(int processedScore,int score) { var playerItemData = GContext.container.Resolve(); var listItemDatas = new List(); var curIndex = GetStepByScore(processedScore,true); var endIndex = GetStepByScore(score,true); var minEndIndex = Math.Min(endIndex, GetFullStep() - 1); for (var i = curIndex; i < minEndIndex; ++i) { var itemDatas = playerItemData.GetItemDataByDropId(eventChallengeMain.StageReward[i]); listItemDatas.AddRange(itemDatas); } if (endIndex >= GetFullStep() - 1) { listItemDatas.AddRange(GetFinalReward()); } Log($"GetRewardByScore ->{processedScore} -> {score} {listItemDatas}"); return listItemDatas; } // 剩余人数 public int GetCurResidualNumber() { var newStep = fishingChallengeData.step; return CalcResidualNumber(newStep); } public int CalcResidualNumber(int step) { var eliminateNumber = fishingChallengeData.eliminateNumber; var newEliminate = 0; for (var i = step; i < eliminateNumber.Count; i++) { newEliminate += eliminateNumber[i]; } return newEliminate; } public void SetCurRank() { if (fishingChallengeData.Score == 0) { Rank = eventChallengeMain.RobotNumber + 1; return; } // var newStep = fishingChallengeData.step; //剩余人数 var eliminateNumber = fishingChallengeData.eliminateNumber; var newEliminate = CalcResidualNumber(newStep + 1); // newStep = Math.Min(newStep, eliminateNumber.Count - 1); var newRank = newEliminate + UnityEngine.Random.Range(1, eliminateNumber[newStep]); Rank = newRank < Rank ? newRank : Rank; Log($"SetCurRank -> {newStep} {Rank}"); } public int GetMaxScoreByStep(int curStep) { var eliminateListScore = _eliminateListScore; if (curStep >= 0 && curStep < eliminateListScore.Count) { return eliminateListScore[curStep]; } Log($"Error {curStep} : {eliminateListScore.Count}"); return 0; } public int GetFullStep() { var eliminateScore = eventChallengeMain.EliminateScore; return eliminateScore.Count; } public int GetNewStep() { var eliminateListScore = _eliminateListScore; var newStep = eliminateListScore.Count; var score = fishingChallengeData.Score; for (int i = 0; i < eliminateListScore.Count; i++) { if (score < eliminateListScore[i]) { newStep = i; break; } } Log($"GetNewStep() -> {newStep}"); return newStep; } public int GetBeginScore(int score,bool asNewLine) { int step = GetStepByScore(score,asNewLine); return GetMaxScoreByStep(step - 1); } public float GetFillAmount(int score,bool asNewLine) { int step = GetStepByScore(score,asNewLine); if (step < eventChallengeMain.EliminateScore.Count) { int beginScore = GetBeginScore(score, asNewLine); int diffScore = score - beginScore; return (float)diffScore / eventChallengeMain.EliminateScore[step]; } return 0f; } public int GetStepByScore(int score,bool asNewLine) { var newStep = _eliminateListScore.Count; for (int i = 0; i < _eliminateListScore.Count; i++) { if (asNewLine) { if (score < _eliminateListScore[i]) { newStep = i; break; } } else { if (score <= _eliminateListScore[i]) { newStep = i; break; } } } Log($"GetStepByScore() -> {newStep}"); return newStep; } public void CheckAutoOpenPanel() { // if (!IsOpen) // { // return; // } var status = ChallengeState(); if (status is 0 or 3) return; // 异常状态,直接进入结算 if ((status == 1 && !IsTimeAllow()) || status == 2) { InChallenge(); } } public async void InChallenge() { Log("InChallenge()"); var challengeState = ChallengeState(); if (challengeState == 0) { FishingChallengeAct.CloudType = 1; } else { FishingChallengeAct.CloudType = 0; } var loadResourceService = GContext.container.Resolve(); var isCanEnter = await loadResourceService.Load("FishingChallengeAct"); if (isCanEnter) { Log($"InChallenge() 开始挑战 -> {eventChallengeMain.ID}"); GContext.Publish(new UnloadActToNextAct("FishingChallengeAct", transitionPanel: new UIType(eventChallengeConfig.MatchPanel) )); } else { var panel = await UIManager.Instance.ShowUI(UITypes.CloudTransitionPanel); panel.GetComponent().SetBtn(true, () => GContext.Publish(new UnloadActToNextAct("FishingChallengeAct", transitionPanel: new UIType(eventChallengeConfig.MatchPanel)))); } } /// /// 刷新地图 /// /// private void SetupNextLevelDataAndSave() { Log("SetupNextLevelDataAndSave()"); InitChallengeData(); UpdateLocalData(); MatchComplete(); DoSave(); } private void ZeroChallengeData() { fishingChallengeData.uiStep = 0; fishingChallengeData.step = 0; fishingChallengeData.Score = 0; // fishingChallengeData.energy = 0; fishingChallengeData.ProcessedScore = 0; } // 重置 data 数据 private void InitChallengeData() { Log("InitChallengeData() -> "); ZeroChallengeData(); // fishingChallengeData.mapId = GetRandomMap(); } private void UpdateLocalData() { Log("UpdateLocalData() -> "); if (fishingChallengeData == null || eventChallengeConfig == null || eventChallengeMain == null) return; PreScore = fishingChallengeData.Score; // 记录积分 PlayerFullNumber = eventChallengeMain.RobotNumber + 1; PrefabName = eventChallengeConfig.ScenePanel; _stageDropList.Clear(); Rank = eventChallengeMain.RobotNumber + 1; } // 更新等级数据,确定开始 private void UpdateLevelData(bool isSuccess) { if (isSuccess) { fishingChallengeData.RankTierLevel = eventChallengeMain.RankTier; fishingChallengeData.Finished = fishingChallengeData.RankTierLevel <= TopRankTier ? 1 : 0; } } public void AddFlyEvent(float oldScore,float newScore) { GContext.Publish(new TargetAddData(eventChallengeConfig.Item,(int)oldScore,(int)newScore)); } public void AddScoreByQuality(int quality, float proficiencyExtra) { if (fishingChallengeData == null) return; // var challengeState = ChallengeState(); if (challengeState is 0 or 3) { return; } if (!IsTimeAllow()) return; var extra = GContext.container.Resolve().GetMagnification(); var qualityScore = GetQualityScoreWithExtra(quality, extra); var oldScore = fishingChallengeData.Score; if (qualityScore > 0) { fishingChallengeData.Score += qualityScore; // fishingChallengeData.energy += extra; Log($"AddScoreByQuality -> {quality} {proficiencyExtra},{qualityScore}"); AddFlyEvent(oldScore, fishingChallengeData.Score); DoSave(); } } #if UNITY_EDITOR private int _cheatingScore; public void SetQualityScore(int cheatingScore) { _cheatingScore = cheatingScore; } #endif private int GetQualityScoreWithExtra(int quality, float extra) { #if UNITY_EDITOR if (_cheatingScore != 0) { return _cheatingScore; } #endif return (int)(GetQualityScore(quality) * extra); } public List GetFinalReward() { var playerItemData = GContext.container.Resolve(); var itemList = playerItemData.GetItemDataByDropId(eventChallengeMain.WinnerReward); return itemList; } public int GetQualityScore(int quality) { var pointsGet = eventChallengeConfig?.PointsGet; if (pointsGet == null) return 0; if (quality > pointsGet.Count || quality < 1) // quality 在 1-5 之间有效, return 0; var qualityIndex = quality - 1; Log($"GetQualityScore({qualityIndex}, {pointsGet[qualityIndex]})"); return (pointsGet[qualityIndex]); } public ItemData GetStageRewardByStep(int step) { // // ItemData itemData; var playerItemData = GContext.container.Resolve(); if (step >= 0 && step < GetFullStep() - 1) { var itemDatas = playerItemData.GetItemDataByDropId(eventChallengeMain.StageReward[step]); return itemDatas.FirstOrDefault(); } return null; } public void AddStageReward(int stageIndex) { // stageIndex = newStep -1 == oldStep Log($"AddStageReward({stageIndex})"); if (stageIndex >= 0 && stageIndex < GetFullStep() - 1) { _stageDropList.Add(eventChallengeMain.StageReward[stageIndex]); _eventTrackStageList.Add(stageIndex + 1); } } public bool PlayGetStageReward() { Log("PlayGetStageReward -> "); var playerItemData = GContext.container.Resolve(); if (_stageDropList.Count > 0) { playerItemData.AddItemByDropList(_stageDropList,scope:1); GContext.Publish(new ShowData()); _stageDropList.Clear(); return true; } return false; } public void SetStep(int step) { fishingChallengeData.step = step; DoSave(); } public void SetUIStep(int step) { fishingChallengeData.uiStep = step; DoSave(); } public void SetProcessedScore(int score) { fishingChallengeData.ProcessedScore = score; DoSave(); } /// /// 当匹配完成的时候,开始倒计时 /// public void MatchComplete() { Log("MatchComplete()"); UpdateFishIndex(); // 最后剩余人数 var M = eventChallengeMain.FinalPlayer[fishingChallengeData.index]; int Count = eventChallengeMain.EliminateScore.Count; int first_number = UnityEngine.Random.Range(eventChallengeConfig.RandomSequenceConfig1[0], eventChallengeConfig.RandomSequenceConfig1[1]); int residualNumber = eventChallengeMain.RobotNumber + 1 - first_number - M; int RandomSequence = eventChallengeConfig.RandomSequenceConfig2; int a = 0; for (int i = 0; i < RandomSequence; i++) { a += i + 1; } residualNumber -= a; //中间淘汰人数 int eliminate; List eliminateNumber = new List { first_number }; List weight = new List(); for (int i = 0; i < RandomSequence; i++) { weight.Add(UnityEngine.Random.Range(residualNumber / Count, residualNumber)); } float allWeight2 = weight.Sum(); for (int i = 0; i < RandomSequence; i++) { eliminate = Mathf.FloorToInt((weight[i] / allWeight2) * residualNumber); residualNumber -= eliminate; eliminateNumber.Add(eliminate); } // eliminateNumber.Add(residualNumber); eliminateNumber.Sort((a, b) => b.CompareTo(a)); for (var i = 0; i < RandomSequence; i++) { eliminateNumber[i + 1] += (RandomSequence - i); } var leftNum = Count - 2 - RandomSequence; while (leftNum-- > 0) { var num = UnityEngine.Random.Range(1, residualNumber); eliminateNumber.Add(num); residualNumber -= num; } eliminateNumber.Add(residualNumber); //最后剩余人数 放到淘汰列表 所有淘汰之后 最后一个 eliminateNumber.Add(M); fishingChallengeData.eliminateNumber = eliminateNumber; fishingChallengeData.robotAccountList = new List(); //随机机器人 //随机位置 var robotAccountList = new List(eventChallengeMain.RobotAccountList); for (int i = 0; i < 30; i++) { if (robotAccountList.Count <= 0) { break; } var index = UnityEngine.Random.Range(0, robotAccountList.Count); fishingChallengeData.robotAccountList.Add(robotAccountList[index]); robotAccountList.RemoveAt(index); } ZeroChallengeData(); PreScore = fishingChallengeData.Score; Rank = eventChallengeMain.RobotNumber + 1; } private void UpdateFishIndex() { var finalWeight = eventChallengeMain.FinalWeight; var allWeight = finalWeight.Sum(); var rand = UnityEngine.Random.Range(0, allWeight); for (int i = 0; i < finalWeight.Count; i++) { rand -= finalWeight[i]; if (rand < 0) { fishingChallengeData.index = i; break; } } } /// /// 结算 /// public void OnSettle() { Log("OnSettle()"); itemDataList = null; if (fishingChallengeData != null) { Log($"OnSettle() -> 结算 -> {fishingChallengeData.RankTierLevel}"); SetCurRank(); var playerItemData = GContext.container.Resolve(); if (IsFinishCurLevel()) { //成功,瓜分奖励 itemDataList = playerItemData.GetItemDataByDropId(eventChallengeMain.FinalReward[fishingChallengeData.index]); playerItemData.AddItem(itemDataList); UpdateLevelData(true); } else { Log("失败了"); UpdateLevelData(false); } GContext.Publish(new ConditionTypeEvent { type = ConditionType.CompleteChallengeCount, count = 1 }); } } /// /// 全部结算处理逻辑的时候, /// public void OnSettleFinished(bool isSuccess) { Log($"OnSettleFinished() -> {isSuccess}"); if (!isSuccess) { fishingChallengeData = null; DoSave(); } else { UpdateChallengeMainAndConfig(); SetupNextLevelDataAndSave(); } } private static void Log(object t) { Debug.Log($"FishingChallengeManager -> {t} "); } public void EventTracking() { // _eventTrackNormalRewardList = _stageDropList.ToList(); var tier = eventChallengeMain?.RankTier ?? -1; var stageList = _eventTrackStageList; var maxStage = fishingChallengeData.step; var normalRewardList = _stageDropList.ToList();; var combineId = (6 - tier) * 100 + maxStage; #if AGG using (var e = GEvent.TackEvent("offer_challenge")) { e.AddContent("tier", tier); e.AddContent("stage_list",string.Join(",",stageList)); e.AddContent("max_stage", maxStage); e.AddContent("normal_reward_list", string.Join(',',normalRewardList)); if (IsFinishCurLevel()) { var finalRewardList = eventChallengeMain?.FinalReward? .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; var finalPlayer = eventChallengeMain?.FinalPlayer? .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; e.AddContent("final_reward_list", string.Join(',', finalRewardList)); e.AddContent("final_player", finalPlayer); } e.AddContent("combine_id", combineId); } #endif var sb = new StringBuilder(); sb.Append($"tier: {tier},") .Append($"max_stage: {maxStage}") .Append($"stage_list: {string.Join(',', stageList)}") .Append($"normal_reward_list:{string.Join(',', normalRewardList)}") .Append($"combine_id: {combineId}"); if (IsFinishCurLevel()) { var finalRewardList = eventChallengeMain?.FinalReward? .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; var finalPlayer = eventChallengeMain?.FinalPlayer? .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; sb.Append($"final_reward_list:{string.Join(',',finalRewardList)}"); sb.Append($"finalPlayer:{finalPlayer}"); } Log($"EventTracking: -> {sb}"); _eventTrackStageList.Clear(); // _eventTrackNormalRewardList.Clear(); } private void UpdateTimeData() { if (CurFishingEventData == null) { if (fishingChallengeData != null) { fishingChallengeData.StartTime = ZZTimeHelper.UtcNow(); fishingChallengeData.EndTime = ZZTimeHelper.UtcNow().AddDays(-1); } } else { var limitedTime = (LimitedTime)CurFishingEventData.TimeDefinition; var startTime = GlobalUtils.TryParseDateTime(limitedTime.StartTime, ZZTimeHelper.UtcNow()); var endTime = GlobalUtils.TryParseDateTime(limitedTime.EndTime, ZZTimeHelper.UtcNow().AddDays(-1)); StartTime = startTime; EndTime = endTime; if (fishingChallengeData != null ) { fishingChallengeData.StartTime = startTime; fishingChallengeData.EndTime = endTime; } } } // 获取当前可用的数值,以及初始化 private void UpdateChallengeMainAndConfig() { Log("UpdateChallengeMainAndConfig()"); var redirectId = fishingChallengeData.RedirectID; // 未满足的情况 // 选择当前 Config var configList = _tables.TbEventChallengeConfig.DataList; foreach (var eventChallenge in configList.Where(eventChallenge => eventChallenge.ID == redirectId)) { eventChallengeConfig = eventChallenge; break; } // 选择当前的 Main var challengeMatchMains = _tables.TbEventChallengeMain.DataList; var rankTierLevel = fishingChallengeData.RankTierLevel; eventChallengeMain = challengeMatchMains.LastOrDefault(); for (var i = challengeMatchMains.Count - 1; i >= 0; i--) { if (rankTierLevel > challengeMatchMains[i].RankTier) { eventChallengeMain = challengeMatchMains[i]; break; } } UpdateEliminateListScore(); } // private readonly List _eliminateListScore = new(); public void UpdateEliminateListScore() { _eliminateListScore.Clear(); var orElmScore = eventChallengeMain.EliminateScore; var elem = 0; foreach (var i in orElmScore) { elem += i; _eliminateListScore.Add(elem); } Log(_eliminateListScore); } public List GetEliminateListScore() { return _eliminateListScore; } public List GetOriEliminateListScore() { return eventChallengeMain.EliminateScore; } /// /// 当前钓鱼争霸赛的状态,进入此函数认为已经确认过时间 /// /// 0,未开始匹配 1,开始中 2,当前轮已经结算 3.关卡清空 public int ChallengeState() { // Log("ChallengeState"); int state; // 未开始|未到开始时间 if (fishingChallengeData == null) { state = 0; } else { if (IsClearAllLevel()) { state = 3; } else if (fishingChallengeData.eliminateNumber == null || fishingChallengeData.robotAccountList == null) { state = 0; } // 未完成当前轮 else if (!IsFinishCurLevel()) { state = 1; } else { state = 2; } } Log($"ChallengeState() -> {state}"); return state; } public bool IsSettleState() { var status = ChallengeState(); // 超时或者结束,都进入结算 return (status == 1 && !IsTimeAllow()) || status == 2; } /// /// 获取倒计时,距离截至时间 /// /// public TimeSpan GetTimeSpan() { if (fishingChallengeData != null) { return fishingChallengeData.EndTime - ZZTimeHelper.UtcNow(); } // 活动未开始 return EndTime - ZZTimeHelper.UtcNow(); } private void DoSave() { PlayFabMgr.Instance.UpdateUserDataValue(SaveKey, JsonConvert.SerializeObject(fishingChallengeData)); } public string GetOpenEventKey() { if (fishingChallengeData != null) { return fishingChallengeData?.EventId + "_LL_FIRST_OPEN"; } return ""; } public bool IfHasReward() { var step = fishingChallengeData.step; var newStep = GetStepByScore(fishingChallengeData.Score, true); return step != newStep; } public void OnChallengeSceneEnter() { _stageDropList.Clear(); _eventTrackStageList = new(); } //TODO:LF 调试用,暂时这么写 public async void InitHexMap() { var loadResourceService = GContext.container.Resolve(); var isCanEnter = await loadResourceService.Load("HexMapAct"); if (isCanEnter) { GContext.Publish(new UnloadActToNextAct("HexMapAct")); } else { var panel = await UIManager.Instance.ShowUI(UITypes.CloudTransitionPanel); panel.GetComponent().SetBtn(true, () => GContext.Publish(new UnloadActToNextAct("HexMapAct"))); } } }