Core/GameEngine/Common/Equation.cs
@@ -309,7 +309,7 @@ return UnityEngine.Random.Range((float)_leftValue, (float)_rightValue); } case OperatorType.Floor: return (int)_leftValue; return Math.Floor(_leftValue); case OperatorType.Ceil: return Math.Ceiling((float)_leftValue); case OperatorType.RandomInt: Lua/Gen/SnxxzUIFairyFeastModelWrap.cs
File was deleted Lua/Gen/SnxxzUIFairyFeastModelWrap.cs.meta
File was deleted Lua/Gen/XLuaGenAutoRegister.cs
@@ -348,9 +348,6 @@ translator.DelayWrapLoader(typeof(Snxxz.UI.FairyBossModel), SnxxzUIFairyBossModelWrap.__Register); translator.DelayWrapLoader(typeof(Snxxz.UI.FairyFeastModel), SnxxzUIFairyFeastModelWrap.__Register); translator.DelayWrapLoader(typeof(Snxxz.UI.FairyGrabBossModel), SnxxzUIFairyGrabBossModelWrap.__Register); System/Dungeon/DungeonFairyFeastHintWin.cs
@@ -11,7 +11,7 @@ namespace Snxxz.UI { [XLua.Hotfix] public class DungeonFairyFeastHintWin : Window { [SerializeField] Button m_FairyFeast; @@ -23,14 +23,16 @@ [SerializeField] FairyFeastRankBehaviour[] m_RankBehaviours; [SerializeField] FairyFeastRankBehaviour m_TopRank; [SerializeField] DungeonMultipleTaskWin.SelectEffect m_SelectEffect; [SerializeField] Button m_Transmit; [SerializeField] SmoothSlider m_TransmitSlider; [SerializeField] Text m_TransmitProgress; [SerializeField] Button m_OpenTransmit; [SerializeField] Button m_GotoFeast; DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } FairyFeastModel fairyFeastModel { get { return ModelCenter.Instance.GetModel<FairyFeastModel>(); } } FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } } int currentSelect = 0; bool nearNpc = false; #region Built-in protected override void BindController() { @@ -46,17 +48,19 @@ { Select(1); }); m_Transmit.onClick.AddListener(Transmit); m_OpenTransmit.onClick.AddListener(OpenTransmit); m_GotoFeast.onClick.AddListener(OnGotoFeast); } protected override void OnPreOpen() { nearNpc = false; Select(0); m_TransmitSlider.ResetValue(0); model.updateMissionEvent += UpdateMissionEvent; fairyFeastModel.selectTransmit += SelectTransmit; fairyFeastModel.transmitStateUpdate += TransmitStateUpdate; SelectTransmit(); GA_NpcCollect.OnArrive += OnArriveCollectNPC; GA_NpcCollect.OnLeave += OnLeaveCollectNpc; DisplayTransmit(); DisplayGotoFeast(); } @@ -67,35 +71,14 @@ protected override void OnPreClose() { model.updateMissionEvent -= UpdateMissionEvent; fairyFeastModel.selectTransmit -= SelectTransmit; fairyFeastModel.transmitStateUpdate -= TransmitStateUpdate; GA_NpcCollect.OnArrive -= OnArriveCollectNPC; GA_NpcCollect.OnLeave -= OnLeaveCollectNpc; } protected override void OnAfterClose() { } protected override void LateUpdate() { if (fairyFeastModel.transmiting) { if (!m_TransmitSlider.gameObject.activeSelf) { m_TransmitSlider.gameObject.SetActive(true); } var surplusTime = (fairyFeastModel.transmitCompleteTime - DateTime.Now).TotalSeconds; var progress = Mathf.Clamp01(1 - (float)surplusTime / fairyFeastModel.transmitCostSeconds); m_TransmitSlider.value = progress; m_TransmitProgress.text = StringUtility.Contact((int)(progress * 100), "%"); } else { if (m_TransmitSlider.gameObject.activeSelf) { m_TransmitSlider.gameObject.SetActive(false); } } } #endregion private void Select(int _index) @@ -129,6 +112,8 @@ { DisplayRank(); } DisplayTransmit(); DisplayGotoFeast(); } void DisplayRank() @@ -163,20 +148,57 @@ return x.rank.CompareTo(y.rank); } private void SelectTransmit() private void OnArriveCollectNPC(uint arg0, int _npcId) { m_Transmit.gameObject.SetActive(fairyFeastModel.selectPlayer != 0 && fairyFeastModel.allowTransmit && !fairyFeastModel.transmiting); if (_npcId == fairyModel.fairyFeastDeskNpc) { nearNpc = true; DisplayGotoFeast(); DisplayTransmit(); } } private void Transmit() private void OnLeaveCollectNpc(uint arg0, int _npcId) { fairyFeastModel.Transmit(); if (_npcId == fairyModel.fairyFeastDeskNpc) { nearNpc = false; DisplayGotoFeast(); DisplayTransmit(); } } private void TransmitStateUpdate() private void DisplayTransmit() { SelectTransmit(); var mission = model.mission; m_OpenTransmit.gameObject.SetActive(mission.hasSit == 0 && !nearNpc); } private void DisplayGotoFeast() { var mission = model.mission; m_GotoFeast.gameObject.SetActive(mission.hasCollect == 0 && !nearNpc); } private void OpenTransmit() { WindowCenter.Instance.Open<FairyFeastTransmitListWin>(); } private void OnGotoFeast() { SnxxzGame.Instance.StartCoroutine(Co_HeroMoveToActor(fairyModel.fairyFeastDeskNpc)); } IEnumerator Co_HeroMoveToActor(int _npcId) { var _hero = PlayerDatas.Instance.hero; while (_hero.SkillMgr.CurCastSkill != null && _hero.SkillMgr.CurCastSkill.SkillCompelete == false) { yield return null; } MapTransferUtility.Instance.MoveToNPC(_npcId); } } } System/Dungeon/DungeonModel.cs
@@ -557,6 +557,7 @@ inspireRemindEffective = false; inspireNoRemind = false; ModelCenter.Instance.GetModel<GatherSoulDungeonModel>().ResetDungeonMessage(); ModelCenter.Instance.GetModel<FairyFeastModel>().ResetHelpMessage(); } public void UpdateRecords(HA320_tagMCPlayerFBInfoData.tagMCFBInfo[] _serverInfos) @@ -795,6 +796,7 @@ { PlayerDatas.Instance.hero.ShowArrow(false); } ModelCenter.Instance.GetModel<FairyFeastModel>().OnReceiveHelpMessage(_mission); if (GetDungeonHintId(mapId, lineId) != 0) { if (!WindowCenter.Instance.IsOpen<DungeonMissionHintWin>()) System/FairyAu/FairyFeastBehaviour.cs
File was deleted System/FairyAu/FairyFeastBehaviour.cs.meta
File was deleted System/FairyAu/FairyFeastMemberCell.cs
@@ -33,8 +33,22 @@ m_PlayerName.text = fairyMember.Name; m_Level.text = fairyMember.LV.ToString(); m_Duty.text = Language.Get(string.Format("L102{0}", fairyMember.FamilyLV + 1)); m_State.text = fairyMember.Exattr2 == 0 ? Language.Get("L1025") : Language.Get("Offline"); m_State.color = UIHelper.GetUIColor(fairyMember.Exattr2 == 0 ? TextColType.Green : TextColType.Gray); if (fairyMember.Exattr2 != 0) { m_State.text = Language.Get("Offline"); m_State.color = UIHelper.GetUIColor(TextColType.White, true); } else if (!model.fairyFeastPlayers.Contains(fairyMember.PlayerID) && fairyMember.PlayerID != PlayerDatas.Instance.baseData.PlayerID) { m_State.text = Language.Get("FairyFeastFarFrom"); m_State.color = UIHelper.GetUIColor(TextColType.Red, true); } else { m_State.text = Language.Get("L1025"); m_State.color = UIHelper.GetUIColor(TextColType.Green, true); } var realmLevel = fairyMember.OfficialRank; var config = Config.Instance.Get<RealmConfig>(realmLevel); if (config != null) System/FairyAu/FairyFeastModel.cs
@@ -8,264 +8,75 @@ [XLua.LuaCallCSharp] public class FairyFeastModel : Model, IBeforePlayerDataInitialize { public uint selectPlayer { get; private set; } public bool allowTransmit { get; private set; } public bool nearNpc { get; private set; } public event Action selectTransmit; public event Action transmitStateUpdate; DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } } RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } } public List<uint> fairyFeastPlayers = new List<uint>(); public event Action fairyFeastPlayerUpdate; public int transmitCostSeconds { get; private set; } string expFormula { get; set; } public int riseLevel { get; private set; } public int expFlyStage { get; private set; } public int expFlyCount { get; private set; } public ulong totalExp { get; private set; } public override void Init() { ParseConfig(); GA_Player.s_OnSelected += OnSelected; GlobalTimeEvent.Instance.secondEvent += SecondEvent; StageManager.Instance.onStageLoadFinish += OnStageLoadFinish; dungeonModel.updateMissionEvent += UpdateMissionEvent; PrepareHandler.Instance.OnPrepareEndSuccess += OnPrepareEndSuccess; GA_NpcCollect.OnArrive += OnArriveNpc; GA_NpcCollect.OnLeave += OnLeaveNpc; roleParticularModel.viewPlayerUpdate += ViewPlayerUpdate; } public override void UnInit() { GA_Player.s_OnSelected -= OnSelected; GlobalTimeEvent.Instance.secondEvent -= SecondEvent; StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish; dungeonModel.updateMissionEvent -= UpdateMissionEvent; PrepareHandler.Instance.OnPrepareEndSuccess -= OnPrepareEndSuccess; GA_NpcCollect.OnArrive -= OnArriveNpc; GA_NpcCollect.OnLeave -= OnLeaveNpc; roleParticularModel.viewPlayerUpdate -= ViewPlayerUpdate; } public void OnBeforePlayerDataInitialize() { transmitCompleteTime = TimeUtility.ClientOriginalTime; if (transmitClock != null) { transmitClock.Stop(); transmitClock = null; } fairyFeastPlayers.Clear(); transmitPlayer = 0; } private void OnStageLoadFinish() { selectPlayer = 0; nearNpc = false; if (transmitClock != null) { transmitClock.Stop(); transmitClock = null; } } private void SecondEvent() { if (selectPlayer != 0) { var actor = GAMgr.Instance.GetBySID(selectPlayer); bool update = false; if (actor == null || !(actor is GA_Player)) { selectPlayer = 0; update = true; } else { var player = actor as GA_Player; var hero = PlayerDatas.Instance.hero; if (SatisfyTransmitState()) { var distance = MathUtility.CalDistance(player.Pos, hero.Pos); if (allowTransmit != (distance <= transmitDistance)) { allowTransmit = distance <= transmitDistance; update = true; } } else { if (allowTransmit) { allowTransmit = false; update = true; } } } if (update && selectTransmit != null) { selectTransmit(); } } } private void OnArriveNpc(uint arg0, int _npcId) { if (_npcId == fairyModel.fairyFeastDeskNpc) { nearNpc = true; SecondEvent(); } } private void OnLeaveNpc(uint arg0, int _npcId) { if (_npcId == fairyModel.fairyFeastDeskNpc) { nearNpc = false; SecondEvent(); } } float transmitDistance = 2f; public int transmitCostSeconds { get; private set; } void ParseConfig() { var config = Config.Instance.Get<FuncConfigConfig>("FairyFeastTransmit"); transmitCostSeconds = 15; expFlyCount = 3; expFlyStage = 3; if (config != null) { transmitDistance = float.Parse(config.Numerical1); transmitCostSeconds = int.Parse(config.Numerical2); } config = Config.Instance.Get<FuncConfigConfig>("FamilyPartySitAward"); expFormula = config.Numerical1; riseLevel = int.Parse(config.Numerical2); } bool SatisfyTransmitState() public void OnReceiveHelpMessage(string _mission) { var hero = PlayerDatas.Instance.hero; if (hero == null || hero.IsCollect() || hero.IsCollect() || hero.IsDaZuo() || nearNpc) var json = LitJson.JsonMapper.ToObject(_mission); if (json != null && json.Keys.Contains("familyPartyPlayer")) { return false; } return true; } private void OnSelected(uint serverInstId, bool select) { var mapId = PlayerDatas.Instance.baseData.MapID; if (mapId != 31230) { return; } if (transmiting) { return; } var mission = dungeonModel.mission; if (mission.hasSit == 1) { return; } selectPlayer = 0; allowTransmit = false; if (select) { var actor = GAMgr.Instance.GetBySID(serverInstId); if (actor != null && actor is GA_Player) fairyFeastPlayers.Clear(); var array = LitJson.JsonMapper.ToObject<uint[]>(json["familyPartyPlayer"].ToJson()); if (array != null) { var player = actor as GA_Player; var hero = PlayerDatas.Instance.hero; var distance = MathUtility.CalDistance(player.Pos, hero.Pos); if (SatisfyTransmitState()) { allowTransmit = distance <= transmitDistance; } selectPlayer = serverInstId; fairyFeastPlayers.AddRange(array); } } if (selectTransmit != null) { selectTransmit(); } } /// <summary> /// 仙盟宴会采集结束 /// </summary> private void OnPrepareEndSuccess() { var mapId = PlayerDatas.Instance.baseData.MapID; if (mapId != 31230) { return; } var mission = dungeonModel.mission; if (mission.hasSit == 1) { return; } if (!WindowCenter.Instance.IsOpen<MainInterfaceWin>() || WindowCenter.Instance.ExitAnyFullScreenOrMaskWin()) { return; } var list = GAMgr.Instance.GetTypeList(E_ActorClassType.Player); if (list != null) { var hero = PlayerDatas.Instance.hero; for (int i = 0; i < list.Count; i++) if (fairyFeastPlayerUpdate != null) { var player = list[i] as GA_Player; if (player != null) { var distance = MathUtility.CalDistance(player.Pos, hero.Pos); if (distance < transmitDistance) { player.OnClick(); return; } } fairyFeastPlayerUpdate(); } } } private void UpdateMissionEvent() public void ResetHelpMessage() { var mapId = PlayerDatas.Instance.baseData.MapID; if (mapId != 31230) { return; } var mission = dungeonModel.mission; if (mission.hasSit == 1 && selectPlayer != 0) { selectPlayer = 0; if (selectTransmit != null) { selectTransmit(); } } } #region 服务端数据 public DateTime transmitCompleteTime { get; private set; } public bool transmiting { get { return DateTime.Now < transmitCompleteTime; } } private Clock transmitClock = null; public void Transmit() { if (selectPlayer != 0) { CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction(); pak.ActionType = 0; pak.ActionInfo = selectPlayer; GameNetSystem.Instance.SendInfo(pak); } fairyFeastPlayers.Clear(); transmitPlayer = 0; } public void UpdateTransmitState(H0411_tagPlayerSit package) @@ -277,39 +88,34 @@ } if (package.Type == 0) { transmitCompleteTime = DateTime.Now.AddTicks(transmitCostSeconds * TimeSpan.TicksPerSecond); transmitClock = Clock.Create(transmitCostSeconds, TransmitComplete); } else { if (transmitClock != null) totalExp = 0; var level = PlayerDatas.Instance.baseData.LV; var worldLevel = PlayerDatas.Instance.worldLv; for (int i = 0; i < riseLevel; i++) { transmitClock.Stop(); transmitClock = null; var config = Config.Instance.Get<PlayerLVConfig>(level + 1); totalExp += (ulong)config.EXP1 * Constants.ExpPointValue + (ulong)config.EXP2; } transmitCompleteTime = TimeUtility.ClientOriginalTime; } if (transmitStateUpdate != null) { transmitStateUpdate(); var levelConfig = Config.Instance.Get<PlayerLVConfig>(level + riseLevel); Equation.Instance.Clear(); Equation.Instance.AddKeyValue("worldlv", worldLevel); Equation.Instance.AddKeyValue("reLV", level + riseLevel); Equation.Instance.AddKeyValue("reExp", levelConfig.ReExp); totalExp += Equation.Instance.Eval<ulong>(expFormula); FairyFeastTransmitShow.Instance.Open(); } } void TransmitComplete() public void TransmitComplete() { transmitClock = null; CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction(); pak.ActionType = 1; pak.ActionInfo = 0; GameNetSystem.Instance.SendInfo(pak); if (transmitStateUpdate != null) { transmitStateUpdate(); } } public List<PlayerFairyData.FairyMember> displayFairyMembers = new List<PlayerFairyData.FairyMember>(); public int transmitPlayer = 0; public uint transmitPlayer = 0; public void Transmit(PlayerFairyData.FairyMember fairyMember) { @@ -317,18 +123,35 @@ { return; } transmitPlayer = (int)fairyMember.PlayerID; //if (fairyMember.Exattr2 != 0) //{ // SysNotifyMgr.Instance.ShowTip("FairyFeastPlayerOffline"); // return; //} //if (!fairyFeastPlayers.Contains(fairyMember.PlayerID)) //{ // SysNotifyMgr.Instance.ShowTip("FairyFeastPlayerFarfrom"); // return; //} transmitPlayer = fairyMember.PlayerID; roleParticularModel.ViewFairyFeastTransmit((int)fairyMember.PlayerID); //CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction(); //pak.ActionType = 0; //pak.ActionInfo = transmitPlayer; //GameNetSystem.Instance.SendInfo(pak); } private void ViewPlayerUpdate(int type, RoleParticularModel.ViewPlayerData data) { if (type == 3) { FairyFeastTransmitShow.Instance.Open(); UpdateTransmitState(new H0411_tagPlayerSit() { PlayerID = PlayerDatas.Instance.baseData.PlayerID, Type = 0, }); } } #endregion } } System/FairyAu/FairyFeastTransmitListWin.cs
@@ -47,6 +47,7 @@ GameNetSystem.Instance.SendInfo(pak); PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += DisplayFairyMembers; fairyFeastModel.fairyFeastPlayerUpdate += FairyFeastPlayerUpdate; DisplayFairyMembers(); } @@ -57,6 +58,7 @@ protected override void OnPreClose() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= DisplayFairyMembers; fairyFeastModel.fairyFeastPlayerUpdate -= FairyFeastPlayerUpdate; fairyFeastModel.displayFairyMembers.Clear(); } @@ -78,6 +80,11 @@ fairyMemberCell.Display(cell.index); } private void FairyFeastPlayerUpdate() { m_ScrollerControl.m_Scorller.RefreshActiveCellViews(); } void DisplayFairyMembers() { fairyFeastModel.displayFairyMembers.Clear(); System/FairyAu/FairyFeastTransmitShow.cs
@@ -60,15 +60,12 @@ { get { return timer / TRANSMIT_LENGTH; return timer / model.transmitCostSeconds; } } float timer = 0f; int stage = 0; const float TRANSMIT_LENGTH = 15f; const int TRANSMIT_TOTAL_STAGE = 4; PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } } @@ -142,12 +139,12 @@ if (IsOpen) { timer += Time.deltaTime; if (timer >= TRANSMIT_LENGTH) if (timer >= model.transmitCostSeconds) { Stop(); return; } if (timer >= stage * TRANSMIT_LENGTH / TRANSMIT_TOTAL_STAGE) if (timer >= stage * model.transmitCostSeconds / (model.expFlyStage + 1)) { StepStage(); stage++; @@ -157,13 +154,17 @@ void StepStage() { if (stage != 0) if (stage > 0 && stage <= model.expFlyStage) { if (popUpExpEvent != null) { popUpExpEvent(12345); popUpExpEvent(12345); popUpExpEvent(12345); var exp = model.totalExp / (ulong)model.expFlyStage / (ulong)model.expFlyCount; for (int i = 0; i < model.expFlyCount; i++) { popUpExpEvent(exp); } } } } @@ -234,7 +235,7 @@ m_Hero.Show(data, m_ShowPoint2); m_Hero.SitDown(); var viewPlayerData = roleParticularModel.GetViewPlayerData(model.transmitPlayer); var viewPlayerData = roleParticularModel.GetViewPlayerData((int)model.transmitPlayer); if (viewPlayerData != null) { clothesId = 0; @@ -281,7 +282,7 @@ public void Stop() { IsOpen = false; model.TransmitComplete(); OpenUI(); WindowCenter.Instance.CloseImmediately<FairyFeastTransmitShowWin>(); CameraController.Instance.CameraObject.gameObject.SetActive(true); System/FairyAu/FairyFeastTransmitShowWin.cs
@@ -23,6 +23,7 @@ [SerializeField] Transform m_PopUpExpPoint; [SerializeField] SmoothSlider m_Slider; [SerializeField] Text m_Progress; [SerializeField] float m_PopUpInterval = 0.1f; [SerializeField] HeadUpName m_HeadUpHero; [SerializeField] HeadUpName m_HeadUpPlayer; @@ -36,6 +37,8 @@ { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } } int progressDisplay = 0; #region Built-in protected override void BindController() { @@ -75,7 +78,15 @@ protected override void LateUpdate() { m_Slider.value = Mathf.Clamp01(FairyFeastTransmitShow.Instance.progress); var progress = Mathf.Clamp01(FairyFeastTransmitShow.Instance.progress); m_Slider.value = progress; if ((int)(progress * 100) != progressDisplay) { progressDisplay = (int)(progress * 100); m_Progress.text = StringUtility.Contact(Language.Get("FeastTransmiting"), progressDisplay, "%"); } if (m_PopExpQueue.Count > 0) { if (Time.time - lastPopUpTime >= m_PopUpInterval) @@ -113,7 +124,7 @@ m_HeadUpPlayer.target = player.MP_Name; } m_HeadUpPlayer.offset = new Vector3(0, 0, 0); var viewPlayerData = roleParticularModel.GetViewPlayerData(model.transmitPlayer); var viewPlayerData = roleParticularModel.GetViewPlayerData((int)model.transmitPlayer); if (viewPlayerData != null) { realmLevel = (byte)viewPlayerData.rolePropData.RealmLV; System/MainInterfacePanel/ChatFrame.cs
@@ -34,7 +34,6 @@ [SerializeField] RedpointBehaviour m_RealmRed; [SerializeField] UIEffect m_RealmSfx; [SerializeField] FairyFeastBehaviour m_FairyFeast; List<int> OneKeyList = new List<int>(); TeamModel m_Model; TeamModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TeamModel>()); } } @@ -60,7 +59,6 @@ _TeamChatBtn.voiceRecordSuccessEvent += OnVoiceRecordTeamSuccessEvent; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;//数据的刷新(h0418) RedpointCenter.Instance.redpointValueChangeEvent += RedpointValueChangeEvent; m_FairyFeast.Init(); _MailBtn.onClick.AddListener(MailButton); _OneKeyBtn.onClick.AddListener(OneKeyButton); _AutoBtn.onClick.AddListener(AutoButton); @@ -242,7 +240,6 @@ MailAllModel.Instance.DeleteMailEvent -= MailCountChange; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;//数据的刷新(h0418) RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent; m_FairyFeast.UnInit(); m_RealmBtn.RemoveAllListeners(); _MailBtn.onClick.RemoveAllListeners(); _OneKeyBtn.onClick.RemoveAllListeners();