| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | using ET;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using UnityEngine;namespace GFGGame{    //所有副本关卡通用类    public class InstanceZonesController    {        public delegate void OnFinishStoryLevelCall(int levelCfgId, bool firstPass, bool success);        private static OnFinishStoryLevelCall _onFinishStoryLevelCall;        public static void ShowLevelView(int levelCfgId, OnFinishStoryLevelCall onFinishStoryLevelCall, int needitemId = 0, int needItemCount = 0)        {            _onFinishStoryLevelCall = onFinishStoryLevelCall;            InstanceZonesDataManager.currentLevelCfgId = levelCfgId;            StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(levelCfgId);            if (levelCfg.fightID.Length > 0)            {                StoryFightCfg storyFightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);                if (storyFightCfg == null)                {                    Debug.LogError(string.Format("战斗id:{0}  无配置", levelCfg.fightID));                    return;                }                ViewManager.Show(ViewName.STORY_LEVEL_INFO_VIEW, new object[] { levelCfgId, needitemId, needItemCount });            }            else if (!string.IsNullOrEmpty(levelCfg.storyStartID))            {                List<StoryDialogCfg> storyDialogCfg = StoryDialogCfgArray.Instance.GetCfgsByid(levelCfg.storyStartID);                if (storyDialogCfg.Count <= 0)                {                    Debug.LogError(string.Format("剧情id:{0}  无配置", levelCfg.storyStartID));                    return;                }                object[] gobackparams;                if (levelCfg.type == ConstInstanceZonesType.Studio && levelCfg.subType == ConstInstanceZonesSubType.Hard3)                {                    gobackparams = new object[] { typeof(StudioFilingView).FullName };                }                else                {                    gobackparams = new object[] { typeof(StoryChapterView).FullName, MainStoryDataManager.currentChapterCfgId };                }                //, new object[] { typeof(StoryChapterView).FullName, MainStoryDataManager.currentChapterCfgId }                bool skipable = MainStoryDataManager.CheckCurrentLevelPass();                ViewManager.Show(ViewName.STORY_DIALOG_VIEW, new object[] { levelCfg.storyStartID, skipable, new OnCompleteStoryDialogCall(OnCompleteChapterStoryDialog) }, gobackparams, true);            }        }        public static async ETTask CheckStoryFightResult()        {            StoryLevelCfg storyLevelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);            if (storyLevelCfg.type == ConstInstanceZonesType.Studio && storyLevelCfg.subType == ConstInstanceZonesSubType.Hard3)            {                StudioCfg filingCfg = StudioCfgArray.Instance.GetCfg(StudioDataManager.Instance.filingChapterId);                float addition = StudioDataManager.Instance.GetAdditionBySuitId(filingCfg.suitId);                addition = addition / 10000 * FightDataManager.Instance.totalScore;                FightDataManager.Instance.totalScore += (int)Math.Round(addition);            }            var score = FightDataManager.Instance.totalScore;            //客户端先做判断,成功和失败处理不同            var success = InstanceZonesDataManager.GetFightResult(score, out var npcScore);            if (success)            {                await InstanceZonesSProxy.FinishStoryFightLevel(InstanceZonesDataManager.currentLevelCfgId, score, npcScore, InstanceZonesDataManager.usedRecommend);            }            else            {                ViewManager.Show(ViewName.STORY_FIGHT_RESULT_VIEW, new StoryFightResultData                {                    Result = false,                    Score = score,                    FirstPass = false,                    Star = 0                }, null, true);                //失败仅判断并更新最高分                if (score > InstanceZonesDataManager.GetScoreHighest(InstanceZonesDataManager.currentCardId))                {                    InstanceZonesSProxy.StoryFightLevelFail(InstanceZonesDataManager.currentLevelCfgId, score).Coroutine();                }            }        }        public static void OnCompleteChapterStoryDialog(bool isSkip, object param)        {            if (!MainStoryDataManager.CheckCurrentLevelPass())            {                InstanceZonesSProxy.FinishStoryDialogLevel(InstanceZonesDataManager.currentLevelCfgId).Coroutine();            }            else            {                OnFinishStoryLevel(InstanceZonesDataManager.currentLevelCfgId, false, false);            }        }        public static void OnFinishStoryLevel(int levelCfgId, bool firstPass, bool success)        {            _onFinishStoryLevelCall?.Invoke(levelCfgId, firstPass, success);        }    }}
 |