Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -164,6 +164,7 @@ Register(typeof(HA309_tagMCEquipPartSuiteLVInfo), typeof(DTCA309_tagMCEquipPartSuiteLVInfo)); //得到套装数据 Register(typeof(HA814_tagMCMakeItemAnswer), typeof(DTCA814_tagMCMakeItemAnswer)); //得到合成结果回应 Register(typeof(HA317_tagMCAllEquipAttrActiveInfo), typeof(DTCA317_tagMCAllEquipAttrActiveInfo)); //得到激活全身星级和全身强化的信息 Register(typeof(HA321_tagMCPrayElixirResult), typeof(DTCA321_tagMCPrayElixirResult)); //祈福丹药结果 #region 背包 Register(typeof(H0724_tagRolePackCanUseCount), typeof(DTC0724_tagRolePackCanUseCount)); Core/GameEngine/Model/Config/FunctionForecastConfig.cs
@@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, September 11, 2018 // [ Date ]: Wednesday, September 12, 2018 //-------------------------------------------------------- using UnityEngine; @@ -21,7 +21,10 @@ public string Icon { get ; private set; } public string Content { get ; private set; } public int DisplayLevel { get ; private set ; } public int Display { get ; private set ; } public int Display { get ; private set ; } public int RedPointLV { get ; private set ; } public int RedPointPercentage { get ; private set ; } public int FrameLevel { get ; private set ; } public override string getKey() { @@ -51,7 +54,13 @@ DisplayLevel=IsNumeric(rawContents[9]) ? int.Parse(rawContents[9]):0; Display=IsNumeric(rawContents[10]) ? int.Parse(rawContents[10]):0; Display=IsNumeric(rawContents[10]) ? int.Parse(rawContents[10]):0; RedPointLV=IsNumeric(rawContents[11]) ? int.Parse(rawContents[11]):0; RedPointPercentage=IsNumeric(rawContents[12]) ? int.Parse(rawContents[12]):0; FrameLevel=IsNumeric(rawContents[13]) ? int.Parse(rawContents[13]):0; } catch (Exception ex) { Core/GameEngine/Model/Config/FunctionForecastConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: bced258647f0fa940b752dd56e6a27e0 timeCreated: 1536670750 timeCreated: 1536737693 licenseType: Free MonoImporter: serializedVersion: 2 Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA514_tagCMPrayElixir.cs
New file @@ -0,0 +1,16 @@ using UnityEngine; using System.Collections; // A5 14 祈福丹药 #tagCMPrayElixir public class CA514_tagCMPrayElixir : GameNetPackBasic { public CA514_tagCMPrayElixir () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xA514; } public override void WriteToBytes () { } } Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA514_tagCMPrayElixir.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 5bde2875341bd7c49962b151d98e4195 timeCreated: 1536719781 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA321_tagMCPrayElixirResult.cs
New file @@ -0,0 +1,21 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // A3 21 祈福丹药结果 #tagMCPrayElixirResult public class DTCA321_tagMCPrayElixirResult : DtcBasic { PrayForDurgModel prayModel { get { return ModelCenter.Instance.GetModel<PrayForDurgModel>(); } } public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA321_tagMCPrayElixirResult vNetData = vNetPack as HA321_tagMCPrayElixirResult; prayModel.SetPrayResult(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA321_tagMCPrayElixirResult.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 0388f4972c8e8d84c93f7797c0ce87a2 timeCreated: 1536719781 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HA3_Function/HA321_tagMCPrayElixirResult.cs
New file @@ -0,0 +1,19 @@ using UnityEngine; using System.Collections; // A3 21 祈福丹药结果 #tagMCPrayElixirResult public class HA321_tagMCPrayElixirResult : GameNetPackBasic { public uint ItemID; // 物品ID public byte PrayCnt; // 今日祈福次数 public HA321_tagMCPrayElixirResult () { _cmd = (ushort)0xA321; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out ItemID, vBytes, NetDataType.DWORD); TransBytes (out PrayCnt, vBytes, NetDataType.BYTE); } } Core/NetworkPackage/ServerPack/HA3_Function/HA321_tagMCPrayElixirResult.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 047cdded69879da4181bd2c1bbd0e426 timeCreated: 1536719781 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Fight/MapTransferUtility.cs
@@ -80,7 +80,7 @@ if (mapID != PlayerDatas.Instance.baseData.MapID) { if (_model.IsMapUnLocked(mapID) == false) if (_model.IsMapUnlocked(mapID) == false) { SysNotifyMgr.Instance.ShowTip("Map_Delivery"); return; @@ -408,7 +408,7 @@ } // 判断地图是否解锁 if (_model.IsMapUnLocked(_npcLocation.mapId) == false) if (_model.IsMapUnlocked(_npcLocation.mapId) == false) { SysNotifyMgr.Instance.ShowTip("Map_Delivery"); return; @@ -642,7 +642,7 @@ return; } if (_model.IsMapUnLocked(npcLocation.mapId) == false) if (_model.IsMapUnlocked(npcLocation.mapId) == false) { SysNotifyMgr.Instance.ShowTip("Map_Delivery"); return; @@ -722,7 +722,7 @@ MapModel _model = ModelCenter.Instance.GetModel<MapModel>(); if (_model.IsMapUnLocked(mapID) == false) if (_model.IsMapUnlocked(mapID) == false) { SysNotifyMgr.Instance.ShowTip("Map_Delivery"); return; @@ -747,7 +747,7 @@ public static bool Send_WorldTransfer(int mapId, Vector3 position, MapTransferType type, byte lineID = 255, int _npcId = 0) { if (!AssetSource.sceneFromEditor && VersionConfig.Get().assetAccess != InstalledAsset.IngoreDownLoad && !AssetVersionUtility.unPriorAssetDownLoadDone) if (!AssetSource.sceneFromEditor && !AssetVersionUtility.IsUnpriorAssetDownLoadOk()) { var mapResConfig = DTCA127_tagMCStartChangeMap.GetMapResourcesConfig(mapId, 0); var assetVersion = AssetVersionUtility.GetAssetVersion(StringUtility.Contact("maps/", mapResConfig.MapResources.ToLower())); Fight/Stage/Dungeon/MapTransfer.cs
@@ -73,7 +73,7 @@ if (transportModel.TransportType == 1) { if (_model.IsMapUnLocked(transportModel.TargetMapID)) if (_model.IsMapUnlocked(transportModel.TargetMapID)) { C0807_tagCChangeMap _proto = new C0807_tagCChangeMap(); _proto.TransportID = TransportID; System/AssetVersion/AssetVersionUtility.cs
@@ -185,4 +185,15 @@ return path; } public static bool IsUnpriorAssetDownLoadOk() { if (VersionConfig.Get().assetAccess == InstalledAsset.IngoreDownLoad) { return true; } return unPriorAssetDownLoadDone; } } System/BlastFurnace/LingDanTips.cs
@@ -49,6 +49,7 @@ [SerializeField] private Button _makeDanBtn; [SerializeField] Button prayDurgBtn; [SerializeField] FurnaceFireChooseWin ChooseWin; [SerializeField] UIEffect bgEffect; @@ -95,6 +96,10 @@ _danDrugCtrl.lockType = EnhanceLockType.KeepVertical; _toggleGroup = _danDrugCtrl.GetComponent<ToggleGroup>(); _makeDanBtn.onClick.AddListener(OnClickMakeDan); prayDurgBtn.AddListener(()=> { WindowCenter.Instance.Open<PrayforDrugWin>(); }); FurnaceModel.RefreshStoveModelEvent += RefreshStoveModel; FurnaceModel.RefreshAddSpecMatEvent += SetSpecMatItemCell; _randomLineCtrl.OnRefreshCell += RefreshRandomLineCell; System/BlastFurnace/PrayDrugCell.cs
New file @@ -0,0 +1,55 @@ using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; using TableConfig; namespace Snxxz.UI { public class PrayDrugCell : MonoBehaviour { [SerializeField] CommonItemBaisc itemBaisc; [SerializeField] UIEffect effect; ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } PrayForDurgModel prayModel { get { return ModelCenter.Instance.GetModel<PrayForDurgModel>(); } } public void SetDisplayModel(int itemId) { ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(itemId); if(itemConfig == null) { itemBaisc.gameObject.SetActive(false); if(effect.IsPlaying) { effect.Stop(); } } else { int effectId = prayModel.GetEffectIdById(itemId); if(effectId != 0) { effect.effect = effectId; effect.Play(); } else { if(effect.IsPlaying) { effect.Stop(); } } itemBaisc.gameObject.SetActive(true); ItemCellModel cellModel = new ItemCellModel(itemId,false,0,1); itemBaisc.Init(cellModel); itemBaisc.cellBtn.RemoveAllListeners(); itemBaisc.cellBtn.AddListener(()=> { ItemAttrData attrData = new ItemAttrData(itemId,false,0,-1,1); tipsModel.SetItemTipsModel(attrData); }); } } } } System/BlastFurnace/PrayDrugCell.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: cf5babd996559ba41b01936b0a94c660 timeCreated: 1536667518 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/BlastFurnace/PrayForDurgModel.cs
New file @@ -0,0 +1,180 @@ using LitJson; using System; using System.Collections.Generic; using System.Linq; using TableConfig; namespace Snxxz.UI { public class PrayForDurgModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk { BlastFurnaceModel blastModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } } PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } Dictionary<int, int> prayDrugDict = new Dictionary<int, int>(); //丹药id 特效id public override void Init() { SetPrayDrugCondi(); SetPrayDrugDict(); } public override void UnInit() { } public void OnBeforePlayerDataInitialize() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= RefreshPlayeLv; FuncOpen.Instance.OnFuncStateChangeEvent -= UpdateFuncState; } public void OnAfterPlayerDataInitialize() { } public void OnPlayerLoginOk() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent += RefreshPlayeLv; FuncOpen.Instance.OnFuncStateChangeEvent += UpdateFuncState; UpdatePrayDanRedpoint(); } private void UpdateFuncState(int funcId) { if (funcId != (int)FuncOpenEnum.BlastFurnace) return; UpdatePrayDanRedpoint(); } private void RefreshPlayeLv(PlayerDataRefresh type) { if (type != PlayerDataRefresh.LV) return; UpdatePrayDanRedpoint(); } #region 读取本地配置 public int costMoney { get; private set; } public int everyDayNum { get; private set; } public int prayPushLv { get; private set;} private void SetPrayDrugCondi() { FuncConfigConfig func = Config.Instance.Get<FuncConfigConfig>("GodAlchemy"); costMoney = int.Parse(func.Numerical2); everyDayNum = int.Parse(func.Numerical3); func = Config.Instance.Get<FuncConfigConfig>("GodAlchemyShow"); prayPushLv = int.Parse(func.Numerical2); } /// <summary> /// 得到所有祈求丹药数据 /// </summary> private Dictionary<int, int> SetPrayDrugDict() { FuncConfigConfig funcConfig = Config.Instance.Get<FuncConfigConfig>("GodAlchemyShow"); JsonData jsonData = JsonMapper.ToObject(funcConfig.Numerical1); prayDrugDict.Clear(); if (jsonData.IsArray) { for (int i = 0; i < jsonData.Count; i++) { if (jsonData[i].IsArray) { int itemId = int.Parse(jsonData[i][0].ToString()); if (jsonData[i].Count > 1) { int effectId = int.Parse(jsonData[i][1].ToString()); prayDrugDict.Add(itemId, effectId); } else { prayDrugDict.Add(itemId, 0); } } } } return prayDrugDict; } #endregion #region 协议 public int itemId { get; private set; } public int alreadyPrayNum { get; private set;} public event Action RefreshPrayEvent; public void SetPrayResult(HA321_tagMCPrayElixirResult elixirResult) { itemId = (int)elixirResult.ItemID; alreadyPrayNum = elixirResult.PrayCnt; if(itemId != 0) { WindowCenter.Instance.Open<PrayforDrugGetItemWin>(); } UpdatePrayDanRedpoint(); if(RefreshPrayEvent != null) { RefreshPrayEvent(); } } public void SendPrayElixir() { CA514_tagCMPrayElixir prayElixir = new CA514_tagCMPrayElixir(); GameNetSystem.Instance.SendInfo(prayElixir); } #endregion List<int> prayIdlist = new List<int>(); public List<int> GetPrayDruglist() { prayIdlist.Clear(); List<AlchemyConfig> configs = blastModel.alchemyModellist; foreach(var key in prayDrugDict.Keys) { for (int i = 0; i < configs.Count; i++) { if (blastModel.StoveLV >= configs[i].BlastFurnaceLV) { List<int> idlist = blastModel.GetPreviewMakeDruglist(configs[i]).Keys.ToList(); if(idlist.Contains(key)) { AttrFruitConfig fruitConfig = Config.Instance.Get<AttrFruitConfig>(key); if (!playerPack.IsReachMaxUseDrug(fruitConfig)) { prayIdlist.Add(key); } break; } } } } return prayIdlist; } public int GetEffectIdById(int drugId) { int effectId = 0; prayDrugDict.TryGetValue(drugId,out effectId); return effectId; } #region 红点 public const int PRAYDRUGREDPOINT_KEY = 110011001; private Redpoint prayRedpoint = new Redpoint(BlastFurnaceModel.LINGDANREDPOINT_KEY, PRAYDRUGREDPOINT_KEY); public void UpdatePrayDanRedpoint() { if (PlayerDatas.Instance.baseData.LV < prayPushLv || !FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BlastFurnace) || alreadyPrayNum >= everyDayNum) { prayRedpoint.state = RedPointState.None; return; } prayRedpoint.state = RedPointState.Simple; } #endregion } } System/BlastFurnace/PrayForDurgModel.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 9daef4307100edf43a11679d8c407d48 timeCreated: 1536671165 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/BlastFurnace/PrayforDrugGetItemWin.cs
New file @@ -0,0 +1,54 @@ using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class PrayforDrugGetItemWin : Window { [SerializeField] Button sureBtn; [SerializeField] CommonItemBaisc itemBaisc; PrayForDurgModel prayModel { get { return ModelCenter.Instance.GetModel<PrayForDurgModel>(); } } ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } protected override void BindController() { } protected override void AddListeners() { sureBtn.AddListener(CloseClick); } protected override void OnPreOpen() { SetDisplayUI(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } private void SetDisplayUI() { ItemCellModel cellModel = new ItemCellModel(prayModel.itemId,false,1,1); itemBaisc.Init(cellModel); itemBaisc.cellBtn.RemoveAllListeners(); itemBaisc.cellBtn.AddListener(()=> { ItemAttrData attrData = new ItemAttrData(prayModel.itemId,false,1,-1,1); tipsModel.SetItemTipsModel(attrData); }); } } } System/BlastFurnace/PrayforDrugGetItemWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 2ce8b7c45f5b3964191f025f929f0399 timeCreated: 1536720996 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/BlastFurnace/PrayforDrugWin.cs
New file @@ -0,0 +1,132 @@ using System; using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; namespace Snxxz.UI { public class PrayforDrugWin : Window { [SerializeField] ScrollerController ctrl; [SerializeField] Button prayBtn; [SerializeField] Image prayBtnImg; [SerializeField] Text costText; [SerializeField] Button closeBtn; [Header("最大格子数")] [SerializeField] int gridCount = 100; [Header("每行数量")] [SerializeField] int columnCout = 5; PrayForDurgModel PrayModel { get { return ModelCenter.Instance.GetModel<PrayForDurgModel>(); } } List<int> praylist; protected override void BindController() { ctrl.OnRefreshCell += RefreshPrayDrug; } protected override void AddListeners() { closeBtn.AddListener(CloseClick); } protected override void OnPreOpen() { praylist = PrayModel.GetPrayDruglist(); PrayModel.RefreshPrayEvent += UpdatePrayBtn; UpdatePrayPack(); SetDisplayUI(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { PrayModel.RefreshPrayEvent -= UpdatePrayBtn; } protected override void OnAfterClose() { } private void SetDisplayUI() { costText.text = PrayModel.costMoney.ToString(); UpdatePrayBtn(); } private void UpdatePrayBtn() { prayBtn.RemoveAllListeners(); if (PrayModel.alreadyPrayNum >= PrayModel.everyDayNum) { prayBtnImg.material = MaterialUtility.GetDefaultSpriteGrayMaterial(); } else { prayBtn.AddListener(ClickPrayBtn); prayBtnImg.material = MaterialUtility.GetUIDefaultGraphicMaterial(); } } private void ClickPrayBtn() { if(PrayModel.alreadyPrayNum >= PrayModel.everyDayNum) { return; } if(UIHelper.GetMoneyCnt(1) >= (ulong)PrayModel.costMoney) { PrayModel.SendPrayElixir(); } else { WindowCenter.Instance.Open<RechargeTipWin>(); } } private void UpdatePrayPack() { if (ctrl.GetNumberOfCells(ctrl.m_Scorller) == 0) { ctrl.Refresh(); var _line = gridCount / columnCout; for (int i = 0; i < _line; i++) { ctrl.AddCell(ScrollerDataType.Header, i); } ctrl.Restart(); } else { ctrl.m_Scorller.RefreshActiveCellViews(); } } private void RefreshPrayDrug(ScrollerDataType type, CellView cell) { var _line = cell.index; int length = cell.transform.childCount; for (int i = 0; i < length; i++) { var _index = _line * length + i; PrayDrugCell prayCell = cell.transform.GetChild(i).GetComponent<PrayDrugCell>(); if(_index < praylist.Count) { prayCell.SetDisplayModel(praylist[_index]); } else { prayCell.SetDisplayModel(0); } } } } } System/BlastFurnace/PrayforDrugWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: e78dc3625a4636348b8ef7501bdb51a2 timeCreated: 1536667028 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/Chat/ChatCenter.cs
@@ -148,7 +148,6 @@ m_VoiceChatDict.Clear(); autoPlayVoices.Clear(); voicePlaying = false; netState = 0; } public void OnSwitchAccount() @@ -346,12 +345,6 @@ } var bytes = Convert.FromBase64String(speech.content); SaveSpeech(_player, tick, bytes); if (autoPlayVoices.Count > 0 && autoPlayVoices[0].playerId == _player && autoPlayVoices[0].tick == tick) { AutoPlayVoice(); } } catch (Exception e) { @@ -404,12 +397,20 @@ dict = new Dictionary<long, AudioClip>(); speechDict.Add(_decodec.playerId, dict); } if (dict.ContainsKey(_decodec.tick)) { return; } var clip = AudioClip.Create("Sound", _decodec.samples.Length, 1, VoiceSettings.frequency, false); clip.SetData(_decodec.samples, 0); dict.Add(_decodec.tick, clip); if (_decodec.playerId == cachePlayerId && cacheTick == _decodec.tick) { PlaySpeech(clip, cacheLength); } else if (autoPlayVoices.Count > 0) { AutoPlayVoice(); } if (speechDownloadSuccess != null) { @@ -520,12 +521,9 @@ return ChatInfoType.World; } int netState = 0; private void OnNetStatusChanged(NetworkReachability _state) { netState = (int)_state; if (netState != 1 && netState != 4) if ((int)SDKUtility.Instance.NetworkType == 0) { autoPlayVoices.Clear(); } @@ -536,9 +534,9 @@ public void CheckAutoPlayVoice(ChatData _chat) { var _netState = netState; var netType = (int)SDKUtility.Instance.NetworkType; #if UNITY_EDITOR _netState = 1; netType = 2; #endif if (!serverInited) { @@ -557,7 +555,7 @@ { return; } if (!ChatSetting.Instance.GetAutoPlayVoice(_chat.type, _netState)) if (!ChatSetting.Instance.GetAutoPlayVoice(_chat.type, netType)) { return; } @@ -626,7 +624,7 @@ case ChatBoolType.GradVoice4G: case ChatBoolType.GradVoiceWifi: if (!ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Fairy, 1) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Fairy, 4)) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Fairy, 2)) { RemoveAutoVoice(ChatInfoType.Fairy); } @@ -634,7 +632,7 @@ case ChatBoolType.PrivatChatVoice4G: case ChatBoolType.PrivateChatVoiceWifi: if (!ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Friend, 1) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Friend, 4)) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Friend, 2)) { RemoveAutoVoice(ChatInfoType.Friend); } @@ -642,7 +640,7 @@ case ChatBoolType.TeamVoice4G: case ChatBoolType.TeamVoiceWifi: if (!ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Team, 1) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Team, 4)) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Team, 2)) { RemoveAutoVoice(ChatInfoType.Team); } @@ -650,7 +648,7 @@ case ChatBoolType.WorldVoice4G: case ChatBoolType.WorldVoiceWifi: if (!ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.World, 1) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.World, 4)) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.World, 2)) { RemoveAutoVoice(ChatInfoType.World); } @@ -658,7 +656,7 @@ case ChatBoolType.AreaVoiceWifi: case ChatBoolType.AreaVoice4G: if (!ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Area, 1) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Area, 4)) && !ChatSetting.Instance.GetAutoPlayVoice(ChatInfoType.Area, 2)) { RemoveAutoVoice(ChatInfoType.Area); } System/Chat/ChatCtrl.cs
@@ -290,6 +290,8 @@ chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); CheckSendAssitChat(msg); } break; case ChatInfoType.Area: @@ -329,6 +331,8 @@ chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); CheckSendAssitChat(msg); } break; case ChatInfoType.Trumpet: @@ -442,6 +446,10 @@ { OnRefreshSelf(chatData); } } if (chatData.IsSound) { chatCenter.CheckAutoPlayVoice(chatData); } } private void AddPteChat(ChatFriendData chatData) @@ -905,6 +913,32 @@ } return string.Empty; } public bool needCheckAssitChat { get; set; } void CheckSendAssitChat(string message) { if (needCheckAssitChat) { bool requestTeam = false; for (int i = 0; i < 2; i++) { if (message.Equals(Language.Get(realmRandomChats[i]))) { requestTeam = true; break; } if (message.Equals(Language.Get(dungeonRandomChats[i]))) { requestTeam = true; break; } } if (requestTeam) { teamModel.RequestAssistAutoMatch(); } } } #endregion #region 宝石炫耀跳转 System/Chat/ChatWin.cs
@@ -60,6 +60,7 @@ if (ChatCtrl.Inst.openFromDaily) { AssitRandomChat(); ChatCtrl.Inst.needCheckAssitChat = true; } else if (ChatCtrl.Inst.openFromGem) { @@ -75,6 +76,7 @@ ChatCtrl.Inst.OpenPteChatEvent -= OpenPteChatEvent; ChatCtrl.Inst.openFromDaily = false; ChatCtrl.Inst.openFromGem = false; ChatCtrl.Inst.needCheckAssitChat = false; chatCenter.ChangeChatValue(string.Empty, false, true); } System/DailyQuest/DailyQuestModel.cs
@@ -30,31 +30,26 @@ public Redpoint trialExchangeRedpoint = new Redpoint(EVERYDAY_REDPOINTID, TRIALEXCHANGE_REDPOINTID); int m_DailyQuestTotalActiveValue = 150; public int dailyQuestTotalActiveValue { public int dailyQuestTotalActiveValue { get { return m_DailyQuestTotalActiveValue; } } int m_CurrentDailyQuest = 0; public int currentDailyQuest { public int currentDailyQuest { get { return this.m_CurrentDailyQuest; } set { this.m_CurrentDailyQuest = value; } } int m_CurrentRewardStageIndex = 0; public int currentRewardStageIndex { public int currentRewardStageIndex { get { return m_CurrentRewardStageIndex; } private set { m_CurrentRewardStageIndex = value; } } int m_TotalActiveValue = 0; public int totalActiveValue { public int totalActiveValue { get { return m_TotalActiveValue; } private set { private set { if (m_TotalActiveValue != value) { m_TotalActiveValue = value; @@ -68,11 +63,9 @@ } int m_GotableRealmPoint; public int gotableRealmPoint { public int gotableRealmPoint { get { return m_GotableRealmPoint; } private set { private set { if (m_GotableRealmPoint != value) { m_GotableRealmPoint = value; @@ -210,29 +203,26 @@ return false; } public bool TestDailyQuestUnLock(int _dailyQuestId) public bool IsDailyQuestUnLock(int _dailyQuestId) { var config = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId); var unlockFunctionId = config.UnLockFuncID; var defaultUnlock = unlockFunctionId == 0 || FuncOpen.Instance.IsFuncOpen(unlockFunctionId); switch ((DailyQuestType)_dailyQuestId) { case DailyQuestType.FairyFeast: case DailyQuestType.FairyTask: case DailyQuestType.FairyGrabBoss: var _dailyConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId); return PlayerDatas.Instance.baseData.Family > 0 && (_dailyConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(_dailyConfig.UnLockFuncID)); return defaultUnlock && PlayerDatas.Instance.baseData.Family > 0; case DailyQuestType.RuneTowerSweep: return ModelCenter.Instance.GetModel<RuneTowerModel>().yesterdayPassFloor > 0; case DailyQuestType.GuardSky: var _dailyGuardSkyConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId); bool _isGuardSkyOpen = _dailyGuardSkyConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(_dailyGuardSkyConfig.UnLockFuncID); return fairyModel.SatisfyGuardSkyFairyLv() && _isGuardSkyOpen; return defaultUnlock && fairyModel.SatisfyGuardSkyFairyLv(); case DailyQuestType.FairyLeague: var _dailyFairyLeagueConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId); bool _isFairyLeagueOpen = _dailyFairyLeagueConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(_dailyFairyLeagueConfig.UnLockFuncID); return fairyModel.SatisfyOpenFairyLeagueLv() && _isFairyLeagueOpen; return defaultUnlock && fairyModel.SatisfyOpenFairyLeagueLv(); default: var dailyConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId); return dailyConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(dailyConfig.UnLockFuncID); return defaultUnlock; } } @@ -267,14 +257,7 @@ case 16: return ModelCenter.Instance.GetModel<VipModel>().GetVipPrivilegeCnt(VipPrivilegeType.BossHomeAwardLimit); default: if (dailyQuestOpenTime.DayReKind > 0) { return dailyQuestOpenTime.DayTimes; } else { return dailyQuestOpenTime.WeekTimes; } return dailyQuestOpenTime.DayReKind > 0 ? dailyQuestOpenTime.DayTimes : dailyQuestOpenTime.WeekTimes; } } else @@ -705,8 +688,8 @@ private int TimeLimitQuestCompare(int _lhs, int _rhs) { var unLock1 = TestDailyQuestUnLock(_lhs); var unLock2 = TestDailyQuestUnLock(_rhs); var unLock1 = IsDailyQuestUnLock(_lhs); var unLock2 = IsDailyQuestUnLock(_rhs); if (unLock1 && !unLock2) { @@ -794,7 +777,7 @@ public DailyQuestState GetQuestState(int _dailyQuestId) { var isUnLocked = TestDailyQuestUnLock(_dailyQuestId); var isUnLocked = IsDailyQuestUnLock(_dailyQuestId); if (!isUnLocked) { return DailyQuestState.Locked; System/Dogz/DogzItemCell.cs
@@ -15,7 +15,6 @@ { dogzModel.GetDogzItemList(); ItemModel model = null; DebugEx.Log("Display:" + index + "数据长度:" + dogzModel.dogzItemList.Count); if (index < dogzModel.dogzItemList.Count) { model = dogzModel.dogzItemList[index]; System/Dungeon/DungeonModel.cs
@@ -1165,7 +1165,7 @@ public void RequestChallangeDungeon(int _dataMapId, int _lineId) { if (!AssetSource.sceneFromEditor && VersionConfig.Get().assetAccess != InstalledAsset.IngoreDownLoad && !AssetVersionUtility.unPriorAssetDownLoadDone) if (!AssetSource.sceneFromEditor && !AssetVersionUtility.IsUnpriorAssetDownLoadOk()) { var mapResConfig = DTCA127_tagMCStartChangeMap.GetMapResourcesConfig(_dataMapId, _lineId); var assetVersion = AssetVersionUtility.GetAssetVersion(StringUtility.Contact("maps/", mapResConfig.MapResources.ToLower())); System/FairyAu/FairyGrabBossModel.cs
@@ -414,7 +414,7 @@ var config = Config.Instance.Get<BossInfoConfig>(bossId); if (config != null) { if (!mapModel.IsMapUnLocked(config.MapID)) if (!mapModel.IsMapUnlocked(config.MapID)) { _error = 6; return false; System/FindPrecious/FindPreciousModel.cs
@@ -14,8 +14,7 @@ Redpoint findPreciousRedpoint = new Redpoint(FINDPRECIOUS_REDPOINTID); int m_ViewKillRecordsBoss = 0; public int ViewKillRecordsBoss { public int ViewKillRecordsBoss { get { return this.m_ViewKillRecordsBoss; } set { this.m_ViewKillRecordsBoss = value; } } @@ -24,11 +23,9 @@ List<int> bossNotifies = new List<int>(); int m_CurrentBossNotify = 0; public int currentBossNotify { public int currentBossNotify { get { return m_CurrentBossNotify; } private set { private set { if (m_CurrentBossNotify != value) { m_CurrentBossNotify = value; @@ -51,7 +48,6 @@ DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } } WorldBossModel worldBossModel { get { return ModelCenter.Instance.GetModel<WorldBossModel>(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } } PersonalBossModel personalBossModel { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } } @@ -60,7 +56,6 @@ { DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo += OnPreciousDropRecordUpdate; FindPreciousTimer.Instance.bossRebornNotifyEvent += OnBossRebornUpComing; RedpointCenter.Instance.redpointValueChangeEvent += UpdateRedpoint; } @@ -68,7 +63,6 @@ { DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo -= OnPreciousDropRecordUpdate; FindPreciousTimer.Instance.bossRebornNotifyEvent -= OnBossRebornUpComing; RedpointCenter.Instance.redpointValueChangeEvent -= UpdateRedpoint; } @@ -122,33 +116,23 @@ } bossDropRecords.Clear(); for (int i = 0; i < _serverInfo.Count; i++) foreach (var item in _serverInfo.UniversalGameRec) { var serverRecord = _serverInfo.UniversalGameRec[i]; bossDropRecords.Add(new DropRecord(serverRecord)); bossDropRecords.Add(new DropRecord(item)); } bossDropRecords.Sort(DropRecord.Compare); if (bossDropRecords.Count > 5) { var records1 = new List<DropRecord>(); for (int i = 0; i < 5; i++) { records1.Add(bossDropRecords[i]); } var records2 = new List<DropRecord>(); for (int i = 5; i < bossDropRecords.Count; i++) for (int i = bossDropRecords.Count - 1; i >= 5; i--) { records2.Add(bossDropRecords[i]); bossDropRecords.RemoveAt(i); } records2.Sort(DropRecord.Compare2); bossDropRecords.Clear(); bossDropRecords.AddRange(records1); bossDropRecords.AddRange(records2); } @@ -399,9 +383,12 @@ _redpointId == BossHomeModel.BOSSHOME_REDPOINT || _redpointId == PersonalBossModel.PERSONAL_REDPOINTID) { var count = worldBossModel.worldBossRedPoint.count + bossHomeModel.bossHomeRedpoint.count + personalBossModel.personalRedpoint.count; findPreciousRedpoint.state = count > 0 ? RedPointState.Quantity : RedPointState.None; findPreciousRedpoint.count = count; var worldBossRedpointCount = worldBossModel.worldBossRedPoint.count; var bossHomeRedpointCount = bossHomeModel.bossHomeRedpoint.count; var personalBossRedpointCount = personalBossModel.personalRedpoint.count; var totalCount = worldBossRedpointCount + bossHomeRedpointCount + personalBossRedpointCount; findPreciousRedpoint.state = totalCount > 0 ? RedPointState.Quantity : RedPointState.None; findPreciousRedpoint.count = totalCount; } } System/FindPrecious/FindPreciousTimer.cs
@@ -26,7 +26,6 @@ if (IsValidClockSetting(_rebornTime)) { clocks[_npcId] = new BossRebornClock(_npcId, _rebornTime); if (!bossIds.Contains(_npcId)) { bossIds.Add(_npcId); @@ -69,14 +68,7 @@ private bool IsValidClockSetting(DateTime _rebornTime) { if ((_rebornTime - DateTime.Now).TotalSeconds < FindPreciousModel.PREPOSE_SECONDS) { return false; } else { return true; } return (_rebornTime - DateTime.Now).TotalSeconds >= FindPreciousModel.PREPOSE_SECONDS; } public class BossRebornClock System/FindPrecious/WorldBossModel.cs
@@ -87,7 +87,7 @@ var bossId = sortedBossIds[i]; var config = Config.Instance.Get<WorldBossConfig>(bossId); var mapId = config.MapID; if (mapModel.IsMapUnLocked(mapId)) if (mapModel.IsMapUnlocked(mapId)) { activedBossIds.Add(bossId); } @@ -156,7 +156,7 @@ public bool isUnLocked { get { var config = Config.Instance.Get<WorldBossConfig>(id); var mapUnLocked = mapModel.IsMapUnLocked(config.MapID); var mapUnLocked = mapModel.IsMapUnlocked(config.MapID); return mapUnLocked; } } System/HappyXB/BestXBWin.cs
@@ -466,7 +466,7 @@ yield return new WaitForSeconds(xbSpeed1); break; case 9: if(cycle > 1 && remainIndex <= 4) if(cycle > cycleTimes && remainIndex <= 4) { xbSpeed2 += XbA2 * 0.05f; if (xbSpeed2 >= maxTimeInter) System/HappyXB/RuneXBWin.cs
@@ -475,7 +475,7 @@ yield return new WaitForSeconds(xbSpeed1); break; case 9: if (cycle > 1 && remainIndex <= 4) if (cycle > cycleTimes && remainIndex <= 4) { xbSpeed2 += XbA2 * 0.05f; if (xbSpeed2 >= maxTimeInter) System/MainInterfacePanel/FeatureNoticeModel.cs
New file @@ -0,0 +1,245 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, September 12, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using TableConfig; using System.Collections.Generic; using System; using Snxxz.UI; //功能预告红点 public class FeatureNoticeModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public List<FunctionForecastConfig> FunctionList = new List<FunctionForecastConfig>(); private const int Redpoint_key1 = 38; public Redpoint redPointStre1 = new Redpoint(Redpoint_key1); private int OpenFuncId = 0; private bool RedPointChange = false; private bool IsRedPoint = false; public override void Init() { AddList(); } public void OnBeforePlayerDataInitialize() { } public void OnPlayerLoginOk() { RedDotStatus(); PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= OnPlayersUpLV; FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; treasureModel.treasureStateChangeEvent -= treasureStateChangeEvent; treasureModel.treasureStageUpEvent -= treasureStageUpEvent; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += OnPlayersUpLV; treasureModel.treasureStateChangeEvent += treasureStateChangeEvent; treasureModel.treasureStageUpEvent += treasureStageUpEvent; } public override void UnInit() { } private void treasureStageUpEvent(int obj) { RedDotStatus(); } private void treasureStateChangeEvent(int obj) { RedDotStatus(); } private void OnFuncStateChangeEvent(int obj) { RedDotStatus(); } private void OnPlayersUpLV(PlayerDataRefresh obj) { if (obj == PlayerDataRefresh.LV) { RedDotStatus(); } } private void AddList()//添加列表信息 { if (FunctionList.Count <= 0) { var configs = Config.Instance.GetAllKeys<FunctionForecastConfig>(); foreach (var key in configs) { var functionForecastConfig = Config.Instance.Get<FunctionForecastConfig>(key); if (functionForecastConfig != null && functionForecastConfig.Display == 1) { FunctionList.Add(functionForecastConfig); } } } } private void RedDotStatus() { for (int i = 0; i < FunctionList.Count; i++) { if (!FuncOpen.Instance.IsFuncOpen(FunctionList[i].FuncId)) { redPointStre1.state = RedPointState.None; if (OpenFuncId != FunctionList[i].FuncId) { RedPointChange = false; } if (OpenFuncId != FunctionList[i].FuncId || !RedPointChange) { IsRedPoint = false; TrailerClassification(FunctionList[i].FuncId); } return; } } } private void TrailerClassification(int funcID) { FuncOpenLVConfig funcoPenConfig = Config.Instance.Get<FuncOpenLVConfig>(funcID); var functionForecastConfig = Config.Instance.Get<FunctionForecastConfig>(funcID); if (funcoPenConfig.LimitMagicWeapon != 0 || funcoPenConfig.LimitMissionID != 0) { if (funcoPenConfig.LimitMagicWeapon != 0)//法宝 { int faBaoID = funcoPenConfig.LimitMagicWeapon / 100; MagicWeapon(faBaoID, funcID); } else if (funcoPenConfig.LimitMissionID != 0)//任务 { if (functionForecastConfig.RedPointLV <= 0) { return; } if (PlayerDatas.Instance.baseData.LV - functionForecastConfig.RedPointLV >= funcoPenConfig.LimitLV) { RedPointChange = true; IsRedPoint = true; } if (IsRedPoint) { redPointStre1.state = RedPointState.Simple; } else { redPointStre1.state = RedPointState.None; } return; } } else//等级 { if (functionForecastConfig.RedPointLV <= 0) { return; } if (PlayerDatas.Instance.baseData.LV - functionForecastConfig.RedPointLV >= funcoPenConfig.LimitLV) { RedPointChange = true; IsRedPoint = true; } if (IsRedPoint) { redPointStre1.state = RedPointState.Simple; } else { redPointStre1.state = RedPointState.None; } return; } } TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } } private void MagicWeapon(int fabaoID,int funcID) { var functionForecastConfig = Config.Instance.Get<FunctionForecastConfig>(funcID); Treasure treasure; if (treasureModel.TryGetTreasure(fabaoID, out treasure) && treasure.state == TreasureState.Collected) { var list = treasure.treasureStages; var funcStage = 0; for (int i = 0; i < list.Count; i++) { if (list[i].unlockType == TreasureStageUnlock.Func && list[i].func == funcID) { funcStage = i; break; } } if (treasure.stage == funcStage - 1 || funcStage == 0) { float exp = (treasure.exp / treasure.treasureStages[funcStage].exp)*100; if (functionForecastConfig.RedPointPercentage > 0) { if (exp >= functionForecastConfig.RedPointPercentage) { RedPointChange = true; IsRedPoint = true; } if (IsRedPoint) { redPointStre1.state = RedPointState.Simple; } } else { redPointStre1.state = RedPointState.None; } } } } public void WhetherToPlayTheBox() { var inDungeon = IsDungeon(); var IsOpenMaininterface = WindowCenter.Instance.CheckOpen<MainInterfaceWin>(); if (NewBieCenter.Instance.inGuiding || ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing || inDungeon || !IsOpenMaininterface) { return; } for (int i = 0; i < FunctionList.Count; i++) { if (!FuncOpen.Instance.IsFuncOpen(FunctionList[i].FuncId)) { var functionForecastConfig = Config.Instance.Get<FunctionForecastConfig>(FunctionList[i].FuncId); if (functionForecastConfig.FrameLevel <= 0) { return; } string strKey = "FeatureNotice" + functionForecastConfig.FrameLevel; int type = LocalSave.GetInt(strKey); bool IsOpenMain = WindowCenter.Instance.CheckOpen<MainInterfaceWin>(); if (PlayerDatas.Instance.baseData.LV >= functionForecastConfig.FrameLevel && type == 0) { LocalSave.SetInt(strKey, functionForecastConfig.FrameLevel); WindowCenter.Instance.Open<FeatureNoticeWin>(); } } } } private bool IsDungeon() { var mapId = PlayerDatas.Instance.baseData.MapID; var mapConfig = Config.Instance.Get<MapConfig>(mapId); return mapConfig != null && mapConfig.MapFBType != 0; } } System/MainInterfacePanel/FeatureNoticeModel.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: e9c203c14c6a0b4419efaefdddbe4d89 timeCreated: 1536732400 licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/MainInterfacePanel/FeatureNoticeWin.cs
@@ -22,8 +22,14 @@ [SerializeField] Text m_TextShowD;//显示内容4 [SerializeField] ScrollerController m_ScrollerController; [SerializeField] Button m_CloseButton; List<FunctionForecastConfig> FunctionList = new List<FunctionForecastConfig>(); [SerializeField] Text m_TextTurnedOn;//已开启 [SerializeField] Text m_TextUnopened;//未开启 [SerializeField] Text m_Textschedule;//进度 [SerializeField] Button m_ButtonGoto; TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } } FeatureNoticeModel featureNoticeModel { get { return ModelCenter.Instance.GetModel<FeatureNoticeModel>(); } } #region Built-in private int ClickFuncID = 0; protected override void BindController() { } @@ -35,32 +41,70 @@ protected override void OnPreOpen() { AddList(); m_ScrollerController.OnRefreshCell += OnRefreshGridCell; DefaultSelection();//获取默认选择 m_ScrollerController.OnRefreshCell += OnRefreshGridCell; OnCreateGridLineCell(m_ScrollerController); ContentDisplay(); m_ScrollerController.JumpIndex(JumpIndex()); } protected override void OnAfterOpen() { } FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += OnPlayersUpLV; treasureModel.treasureStateChangeEvent += treasureStateChangeEvent; treasureModel.treasureStageUpEvent += treasureStageUpEvent; } protected override void OnPreClose() { m_ScrollerController.OnRefreshCell -= OnRefreshGridCell; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= OnPlayersUpLV; FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; m_ScrollerController.OnRefreshCell -= OnRefreshGridCell; treasureModel.treasureStateChangeEvent -= treasureStateChangeEvent; treasureModel.treasureStageUpEvent -= treasureStageUpEvent; if (featureNoticeModel.redPointStre1.state == RedPointState.Simple) { featureNoticeModel.redPointStre1.state = RedPointState.None; } } private void treasureStageUpEvent(int obj) { ContentDisplay(); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } private void treasureStateChangeEvent(int obj) { ContentDisplay(); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } private void OnFuncStateChangeEvent(int obj) { ContentDisplay(); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } private void OnPlayersUpLV(PlayerDataRefresh obj) { if (obj == PlayerDataRefresh.LV) { ContentDisplay(); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } } void OnCreateGridLineCell(ScrollerController gridCtrl) { gridCtrl.Refresh(); for (int i = 0; i < FunctionList.Count; i++) for (int i = 0; i < featureNoticeModel.FunctionList.Count; i++) { if (i == 0) { gridCtrl.AddCell(ScrollerDataType.Header, FunctionList[i].FuncId); gridCtrl.AddCell(ScrollerDataType.Header, featureNoticeModel.FunctionList[i].FuncId); } else { gridCtrl.AddCell(ScrollerDataType.Normal, FunctionList[i].FuncId); gridCtrl.AddCell(ScrollerDataType.Normal, featureNoticeModel.FunctionList[i].FuncId); } } gridCtrl.Restart(); @@ -72,11 +116,45 @@ { FeaturesType1 featuresType1 = cell.GetComponent<FeaturesType1>(); featuresType1.GetTheFeatureID(funcId); if (funcId == ClickFuncID) { featuresType1.ImageSelected.SetActive(true); } else { featuresType1.ImageSelected.SetActive(false); } featuresType1.Button.SetListener(()=> { if (funcId != ClickFuncID) { ClickFuncID = funcId; ContentDisplay(); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } }); } else if (type == ScrollerDataType.Normal) { FeaturesType2 featuresType2 = cell.GetComponent<FeaturesType2>(); featuresType2.GetTheFeatureID(funcId); if (funcId == ClickFuncID) { featuresType2.ImageSelected.SetActive(true); } else { featuresType2.ImageSelected.SetActive(false); } featuresType2.Button.SetListener(() => { if (funcId != ClickFuncID) { ClickFuncID = funcId; ContentDisplay(); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } }); } } @@ -84,20 +162,146 @@ { } #endregion private void AddList() private void DefaultSelection()//获取默认选择 { if (FunctionList.Count <= 0) var configs = Config.Instance.GetAllValues<FunctionForecastConfig>(); foreach (var config in configs) { var configs = Config.Instance.GetAllKeys<FunctionForecastConfig>(); foreach (var key in configs) int openTag = config.FuncId; if (!FuncOpen.Instance.IsFuncOpen(openTag)) { var functionForecastConfig = Config.Instance.Get<FunctionForecastConfig>(key); if (functionForecastConfig != null && functionForecastConfig.Display == 1) { FunctionList.Add(functionForecastConfig); } ClickFuncID = openTag; return; } } if (ClickFuncID == 0) { ClickFuncID = featureNoticeModel.FunctionList[0].FuncId; } } private int JumpIndex()//Jump选中 { int Index = 0; Index = featureNoticeModel.FunctionList.FindIndex((x)=> { return x.FuncId == ClickFuncID; }); return Index; } private void ContentDisplay()//内容显示 { var functionForecastConfig = Config.Instance.Get<FunctionForecastConfig>(ClickFuncID); if (functionForecastConfig == null) { return; } m_TextAdvanceName.text = functionForecastConfig.FuncName; m_FeaturesImage.SetSprite(functionForecastConfig.Icon); string[] StrList = ConfigParse.GetMultipleStr(functionForecastConfig.Content); if (StrList.Length > 0) { m_Text_ShowA.text = StrList[0]; m_TextShowB.text = StrList[1]; m_TextShowC.text = StrList[2]; m_TextShowD.text = StrList[3]; } if (FuncOpen.Instance.IsFuncOpen(ClickFuncID)) { m_TextTurnedOn.gameObject.SetActive(true); m_TextUnopened.gameObject.SetActive(false); m_Textschedule.gameObject.SetActive(false); m_ButtonGoto.gameObject.SetActive(false); } else { TrailerClassification(ClickFuncID); } } void TrailerClassification(int funcID)//预告分类 { m_TextTurnedOn.gameObject.SetActive(false); m_TextUnopened.gameObject.SetActive(false); m_Textschedule.gameObject.SetActive(false); m_ButtonGoto.gameObject.SetActive(false); FuncOpenLVConfig funcoPenConfig = Config.Instance.Get<FuncOpenLVConfig>(funcID); if (funcoPenConfig.LimitMagicWeapon != 0 || funcoPenConfig.LimitMissionID != 0) { if (funcoPenConfig.LimitMagicWeapon != 0)//法宝 { int faBaoID = funcoPenConfig.LimitMagicWeapon / 100; MagicWeapon(faBaoID); } else if (funcoPenConfig.LimitMissionID != 0)//任务 { m_TextUnopened.gameObject.SetActive(true); m_TextUnopened.text= string.Format(Language.Get("TaskFuncOpen"), funcoPenConfig.LimitLV); return; } } else//等级 { m_TextUnopened.gameObject.SetActive(true); m_TextUnopened.text= string.Format(Language.Get("FuncLevelOpen"), funcoPenConfig.LimitLV); return; } } private void MagicWeapon(int fabaoID) { m_ButtonGoto.gameObject.SetActive(true); Treasure treasure; TreasureConfig _treasure = Config.Instance.Get<TreasureConfig>(fabaoID); m_ButtonGoto.SetListener(()=> { var config = Config.Instance.Get<TreasureConfig>(fabaoID); treasureModel.selectedTreasure = fabaoID; treasureModel.currentCategory = (TreasureCategory)config.Category; WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.TreasureCollectSoul); }); if (treasureModel.TryGetTreasure(fabaoID, out treasure) && treasure.state == TreasureState.Collected) { m_Textschedule.gameObject.SetActive(true); var list = treasure.treasureStages; var funcStage = 0; for (int i = 0; i < list.Count; i++) { if (list[i].unlockType == TreasureStageUnlock.Func && list[i].func == ClickFuncID) { funcStage = i; break; } } if (treasure.stage < funcStage) { if (treasure.stage == funcStage - 1 || funcStage == 0) { if (treasure.exp >= treasure.treasureStages[funcStage].exp) { m_Textschedule.text = "100%"; } else { m_Textschedule.text = (float)treasure.exp / treasure.treasureStages[funcStage].exp + "%"; } } else { m_Textschedule.text = 0+" %"; } } } else { m_TextUnopened.gameObject.SetActive(true); m_TextUnopened.text = string.Format(Language.Get("FuncFBOpen"), _treasure.Name); } } } System/MainInterfacePanel/FeaturesType2.cs
@@ -38,6 +38,14 @@ m_FunctionName.text = functionForecastConfig.FuncName; m_FunctionalLevel.text = functionForecastConfig.DisplayLevel.ToString(); m_FeaturesTypeIcon.SetSprite(functionForecastConfig.FuncIconKey); if (FuncOpen.Instance.IsFuncOpen(funcId)) { m_SelectedBar.SetActive(true); } else { m_SelectedBar.SetActive(false); } } System/MainInterfacePanel/FunctionForecastTip.cs
@@ -115,7 +115,6 @@ void FunctionIconBtn()//面板开启 { // WindowCenter.Instance.Open<FunctionForecastWin>(); WindowCenter.Instance.Open<FeatureNoticeWin>(); } } System/MainInterfacePanel/LowSettingTip.cs
@@ -88,8 +88,8 @@ } private void GodBeastBtn() { SysNotifyMgr.Instance.ShowTip("FuncNextVersion");//信息提示 return; //SysNotifyMgr.Instance.ShowTip("FuncNextVersion");//信息提示 //return; WindowCenter.Instance.Close<MainInterfaceWin>(); WindowCenter.Instance.Open<DogzWin>(); } System/MainInterfacePanel/MainInterfaceWin.cs
@@ -136,6 +136,7 @@ DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } FeatureNoticeModel featureNoticeModel { get { return ModelCenter.Instance.GetModel<FeatureNoticeModel>(); } } #region Built-in protected override void BindController() @@ -342,7 +343,7 @@ m_HighSettingTip.AfterOpen(); m_ChatTip.OnAfterOpen(); HandleAchievement(); featureNoticeModel.WhetherToPlayTheBox(); } protected override void OnPreClose() @@ -889,6 +890,10 @@ void Updatefighting(PlayerDataRefresh _tCDBPlayerRefresh)//数据的刷新 { ArticleExperience();//关于经验条 if (_tCDBPlayerRefresh == PlayerDataRefresh.LV) { featureNoticeModel.WhetherToPlayTheBox(); } } void OnCollectBtnClick() System/MainInterfacePanel/TaskListTip.cs
@@ -448,10 +448,21 @@ int type = 0; if (jumpTask == 0)//跳到默认选中 { if (_list.Contains(taskmodel.GetNowTaskID)) if (taskmodel.GetNowTaskID != taskmodel.TaskupToDate)//默认的和最新选中的不一致时 { type = _list.IndexOf(taskmodel.GetNowTaskID); if (_list.Contains(taskmodel.TaskupToDate)) { type = _list.IndexOf(taskmodel.TaskupToDate); } taskmodel.TaskupToDate = taskmodel.GetNowTaskID; } else { if (_list.Contains(taskmodel.GetNowTaskID)) { type = _list.IndexOf(taskmodel.GetNowTaskID); } } } else { System/Message/RichMoveEvent.cs
@@ -145,7 +145,7 @@ return; } if (mapModel.IsMapUnLocked(_mapId) == false) if (mapModel.IsMapUnlocked(_mapId) == false) { SysNotifyMgr.Instance.ShowTip("Map_Delivery"); return; System/Rune/RuneModel.cs
@@ -691,10 +691,6 @@ } } } if (OnRefreshRuneHole != null) { OnRefreshRuneHole(); } for (int i = 0; i < RUNE_HOLE_COUNT; i++) { if (!serverInited) @@ -702,7 +698,7 @@ break; } int k = 1 << i; var oldOpen = (holeState & k) == k; var oldOpen = (oldHoleState & k) == k; if (!oldOpen && IsRuneHoleOpen(i)) { if (openNewHoleEvent != null) @@ -711,6 +707,10 @@ } } } if (OnRefreshRuneHole != null) { OnRefreshRuneHole(); } UpdateRedpoint(); UpdateBreakRedpoint(); UpdateSpecialHoleRedpoint(); System/Rune/RuneMosaicWin.cs
@@ -67,6 +67,8 @@ } bool m_IsRuneLvUp = false; int m_SpecialHoleUnlocking = -1; Coroutine m_CacheCoroutine; #region Built-in protected override void BindController() { @@ -102,6 +104,7 @@ m_ContainerSpecial.gameObject.SetActive(false); OpenOrCloseSelect(false); model.sltRuneHole = -1; m_SpecialHoleUnlocking = -1; foreach (var _hole in runeHoleDatas) { _hole.SetSelect(false); @@ -123,6 +126,14 @@ model.OnRefreshRuneHole -= OnRuneHoleRefresh; model.OnRefreshRuneExp -= OnUpdateRuneHoleInfo; model.openNewHoleEvent -= OpenNewHoleEvent; m_SpecialHoleUnlocking = -1; if (m_CacheCoroutine != null) { StopCoroutine(m_CacheCoroutine); m_CacheCoroutine = null; } } protected override void OnAfterClose() @@ -134,8 +145,17 @@ { if (model.IsSpeicalHole(hole)) { m_SpecialHoleUnlocking = hole; EffectMgr.Instance.PlayUIEffect(3068, 2500, runeHoleDatas[hole].Container.parent, false); m_CacheCoroutine = StartCoroutine(Co_RefreshHole()); } } IEnumerator Co_RefreshHole() { yield return WaitingForSecondConst.WaitMS800; m_SpecialHoleUnlocking = -1; OnRuneHoleRefresh(); } private void UnlockSpecialHole() @@ -227,7 +247,7 @@ void OnRuneHoleClick(int _hole) { if (model.IsRuneHoleOpen(_hole)) if (model.IsRuneHoleOpen(_hole) && m_SpecialHoleUnlocking != _hole) { for (int i = 0; i < runeHoleDatas.Count; i++) { @@ -284,6 +304,10 @@ model.runeLevelUpRedpoint.state = RedPointState.None; model.runeReplaceRedpoint.state = RedPointState.None; if (model.sltRuneHole == -1 || !model.IsRuneHoleOpen(model.sltRuneHole)) { return; } if (model.sltRuneHole == m_SpecialHoleUnlocking) { return; } @@ -403,7 +427,7 @@ for (int i = 0; i < runeHoleDatas.Count; i++) { RuneData data = model.GetHoleRune(i); runeHoleDatas[i].SetRuneHole(!model.IsRuneHoleOpen(i)); runeHoleDatas[i].SetRuneHole(!model.IsRuneHoleOpen(i) || m_SpecialHoleUnlocking == i); if (data == null || !model.IsRuneHoleOpen(i)) { runeHoleDatas[i].Display(0, 0); System/Store/StoreModel.cs
@@ -31,6 +31,7 @@ { public int[] normalBuyCoinsTypes { get; private set; } public string UNIONSTORESAVE_KEY { get; private set; } public string MUSTBUYSAVE_KEY { get; private set; } public string StoreEffectRecord_Key { get; private set; } public List<StoreConfig> shoplist; @@ -67,8 +68,8 @@ public void OnAfterPlayerDataInitialize() { UNIONSTORESAVE_KEY = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, LocalSaveStoreType.UnionStore); DebugEx.Log("UNIONSTORESAVE_KEY:" + UNIONSTORESAVE_KEY); StoreEffectRecord_Key = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "StoreEffectRecord"); MUSTBUYSAVE_KEY = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID,"MustBuy"); } public void OnPlayerLoginOk() @@ -662,7 +663,7 @@ public bool CheckWeekStoreIsShopBuy(out List<StoreConfig> buylist) { buylist = new List<StoreConfig>(); if (!IsNewDay()) return false; if (!IsNewDay(StoreEffectRecord_Key)) return false; List<StoreConfig> shoplist = StoreConfig.GetTypeStoreModel((int)StoreFunc.WeekStore); for(int i = 0; i < shoplist.Count; i++) @@ -700,16 +701,16 @@ } } private bool IsNewDay() private bool IsNewDay(string recordKey) { if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Store)) return false; if (PlayerPrefs.HasKey(StoreEffectRecord_Key)) if (PlayerPrefs.HasKey(recordKey)) { int day = LocalSave.GetInt(StoreEffectRecord_Key); int day = LocalSave.GetInt(recordKey); if(day != TimeUtility.ServerNow.Day) { LocalSave.SetInt(StoreEffectRecord_Key,TimeUtility.ServerNow.Day); LocalSave.SetInt(recordKey, TimeUtility.ServerNow.Day); return true; } else @@ -719,7 +720,7 @@ } else { LocalSave.SetInt(StoreEffectRecord_Key, TimeUtility.ServerNow.Day); LocalSave.SetInt(recordKey, TimeUtility.ServerNow.Day); return true; } } @@ -835,9 +836,45 @@ shopRedDict[storeConfig.ID].state = RedPointState.None; } } UpdateMustBuyRedpoint(storeConfig); } } public void UpdateMustBuyRedpoint(StoreConfig storeConfig) { if (CheckIsMustBuy(storeConfig)) { shopRedDict[storeConfig.ID].state = RedPointState.Simple; } else { shopRedDict[storeConfig.ID].state = RedPointState.None; } } public void ClearMustBuyRedpoint(StoreConfig storeConfig) { if(mustIdlist.Contains(storeConfig.ItemID)) { shopRedDict[storeConfig.ID].state = RedPointState.None; } } public List<int> mustIdlist = new List<int>() { 4741}; public bool CheckIsMustBuy(StoreConfig config) { if(mustIdlist.Contains(config.ItemID) && CheckShopIsCanBuy(config)) { if(IsNewDay(MUSTBUYSAVE_KEY)) { return true; } } return false; } public bool CheckScoreStoreIsCanBuy(StoreConfig storeConfig) { List<StoreConfig> list = StoreConfig.GetSellShoplist(); System/Store/StoreWin.cs
@@ -392,36 +392,9 @@ shopId = 0; shopItemCell.LoadGuidEffectCtrl(shopInfo.ID, shopId); } //if(shopItemCell.effect.IsPlaying) //{ // shopItemCell.effect.StopImediatly(); // if(m_storeModel.shoplist.Contains(shopInfo)) // { // m_storeModel.shoplist.Remove(shopInfo); // } //} m_storeModel.ClearMustBuyRedpoint(shopInfo); m_storeModel.OnClickShopCell(shopInfo); }); //if(m_storeModel.storeFuncType == StoreFunc.WeekStore) //{ // if(m_storeModel.shoplist.Contains(shopInfo)) // { // if(!shopItemCell.effect.IsPlaying) // { // shopItemCell.effect.Play(); // } // } // else // { // if (shopItemCell.effect.IsPlaying) // { // shopItemCell.effect.StopImediatly(); // } // } //} } else { System/SystemSetting/ChatSetting.cs
@@ -112,58 +112,57 @@ public bool GetAutoPlayVoice(ChatInfoType type, int netState) { if (netState == 0) { return false; } switch (type) { case ChatInfoType.World: if (netState == 1) if (netState == 2) { return GetBool(ChatBoolType.WorldVoiceWifi); } else if (netState == 4) else { return GetBool(ChatBoolType.WorldVoice4G); } break; case ChatInfoType.Area: if (netState == 1) if (netState == 2) { return GetBool(ChatBoolType.AreaVoiceWifi); } else if (netState == 4) else { return GetBool(ChatBoolType.AreaVoice4G); } break; case ChatInfoType.Team: if (netState == 1) if (netState == 2) { return GetBool(ChatBoolType.TeamVoiceWifi); } else if (netState == 4) else { return GetBool(ChatBoolType.TeamVoice4G); } break; case ChatInfoType.Fairy: if (netState == 1) if (netState == 2) { return GetBool(ChatBoolType.GradVoiceWifi); } else if (netState == 4) else { return GetBool(ChatBoolType.GradVoice4G); } break; case ChatInfoType.Friend: if (netState == 1) if (netState == 2) { return GetBool(ChatBoolType.PrivateChatVoiceWifi); } else if (netState == 4) else { return GetBool(ChatBoolType.PrivatChatVoice4G); } break; } return false; } System/Team/MyTeamWin.cs
@@ -178,7 +178,8 @@ } else { if (model.myTeam.mission.mapId == TeamModel.NONE_MISSION) var mission = model.myTeam.inTeam ? model.myTeam.mission : model.missionBuf; if (mission.mapId == TeamModel.NONE_MISSION) { SysNotifyMgr.Instance.ShowTip("AutoMatchingNoTarget"); } @@ -288,7 +289,8 @@ Teammate mate; if (model.myTeam.TryGetMember(i, out mate)) { sign.Display(mate.mapId == PlayerDatas.Instance.baseData.MapID ? TeammateNearByBehaviour.LocationState.NearBy : TeammateNearByBehaviour.LocationState.FarAway); var isNearBy = mate.mapId == PlayerDatas.Instance.baseData.MapID; sign.Display(isNearBy ? TeammateNearByBehaviour.LocationState.NearBy : TeammateNearByBehaviour.LocationState.FarAway); } else { System/Team/TeamData.cs
@@ -49,6 +49,11 @@ this.levelMax = _serverInfo.ReqMaxLV; } public static int Sort(TheirTeam lhs, TheirTeam rhs) { return lhs.memberCount < 4 && lhs.memberCount > rhs.memberCount ? -1 : 1; } } public class MyTeam @@ -108,7 +113,7 @@ for (int i = 0; i < members.Count; i++) { var member = members[i]; if (member.id != PlayerDatas.Instance.baseData.PlayerID if (member.id != PlayerDatas.Instance.baseData.PlayerID && member.mapId == PlayerDatas.Instance.baseData.MapID) { count++; System/Team/TeamModel.cs
@@ -596,6 +596,16 @@ GameNetSystem.Instance.SendInfo(sendInfo); } public void RequestAssistAutoMatch() { if (!myTeam.inTeam && !isMatching) { var sendInfo = new CB907_tagCGAutoMatchTeam(); sendInfo.TagMapID = 2; GameNetSystem.Instance.SendInfo(sendInfo); } } public void RequestCancelAutoMatchTeam() { var sendInfo = new CB908_tagCGCancelMatchTeam(); @@ -683,19 +693,12 @@ public void OnGetTheirTeams(HB904_tagGCSceneTeamRefresh _teamInfo) { theirTeams.Clear(); for (int i = 0; i < _teamInfo.SceneTeamList.Length; i++) { theirTeams.Add(new TheirTeam(_teamInfo.SceneTeamList[i])); } theirTeams.Sort( (TheirTeam a, TheirTeam b) => { return a.memberCount < 4 && a.memberCount > b.memberCount ? -1 : 1; } ); theirTeams.Sort(TheirTeam.Sort); if (theirTeamListRefreshEvent != null) { theirTeamListRefreshEvent(); @@ -705,19 +708,16 @@ public void OnGetTheirTeams(HB909_tagGCTagMapTeamList _teamInfo) { theirTeams.Clear(); for (int i = 0; i < _teamInfo.TeamList.Length; i++) { theirTeams.Add(new TheirTeam((int)_teamInfo.TagMapID, _teamInfo.IsTagEx == 1 ? _teamInfo.TagMapEx : -1, _teamInfo.MatchState == 1, _teamInfo.TeamList[i])); var mapId = (int)_teamInfo.TagMapID; var isTagEx = _teamInfo.IsTagEx == 1 ? _teamInfo.TagMapEx : -1; var matchState = _teamInfo.MatchState == 1; theirTeams.Add(new TheirTeam(mapId, isTagEx, matchState, _teamInfo.TeamList[i])); } theirTeams.Sort( (TheirTeam a, TheirTeam b) => { return a.memberCount < 4 && a.memberCount > b.memberCount ? -1 : 1; } ); theirTeams.Sort(TheirTeam.Sort); if (theirTeamListRefreshEvent != null) { theirTeamListRefreshEvent(); @@ -987,7 +987,7 @@ public void OnUpdateDungeonPrepareState(HB911_tagGCTeamEnterFBPrepare _serverInfo) { if (!AssetSource.sceneFromEditor && VersionConfig.Get().assetAccess != InstalledAsset.IngoreDownLoad && !AssetVersionUtility.unPriorAssetDownLoadDone) if (!AssetSource.sceneFromEditor && !AssetVersionUtility.IsUnpriorAssetDownLoadOk()) { RequestPrepareEnterDungeon(false); return; System/WindowBase/ModelCenter.cs
@@ -192,6 +192,8 @@ RegisterModel<TreasureSoulModel>(); RegisterModel<FairyGrabBossModel>(); RegisterModel<GodBeastModel>(); RegisterModel<PrayForDurgModel>(); RegisterModel<FeatureNoticeModel>(); inited = true; } System/WorldMap/LocalMapEventPointToggle.cs
@@ -38,14 +38,14 @@ m_LayoutLeft.gameObject.SetActive(mapConfig.MapFBType == (int)MapType.OpenCountry); DrawEventInfo(); OnSelected(model.selectedLocalMapEventPoint); model.selectLocalMapEventPointEvent += OnSelected; OnSelected(model.selectedMapEventPoint); model.selectMapEventPointEvent += OnSelected; } public override void Dispose() { base.Dispose(); model.selectLocalMapEventPointEvent -= OnSelected; model.selectMapEventPointEvent -= OnSelected; } private void Awake() @@ -89,8 +89,8 @@ private void MoveToNpc() { var mapNPCConfig = Config.Instance.Get<MapEventPointConfig>(m_EventId); MapTransferUtility.Instance.MissionFlyTo(PlayerDatas.Instance.baseData.MapID, mapNPCConfig.NPCID); var config = Config.Instance.Get<MapEventPointConfig>(m_EventId); MapTransferUtility.Instance.MissionFlyTo(PlayerDatas.Instance.baseData.MapID, config.NPCID); WindowCenter.Instance.Close<WorldMapWin>(); WindowCenter.Instance.Close<LocalMapWin>(); @@ -99,7 +99,7 @@ private void SelectEventPoint() { model.selectedLocalMapEventPoint = m_EventId; model.selectedMapEventPoint = m_EventId; } private void OnSelected(int _event) System/WorldMap/LocalMapFindPath.cs
@@ -64,11 +64,11 @@ DrawFunctionNPCs(); DrawEventPoints(); m_HeroHead.transform.SetAsLastSibling(); FoucsEventPoint(model.selectedLocalMapEventPoint); FoucsEventPoint(model.selectedMapEventPoint); m_BoundDrag.onBeginDrag.RemoveAllListeners(); m_BoundDrag.onBeginDrag.AddListener(OnBeginDrag); model.selectLocalMapEventPointEvent += FoucsEventPoint; model.selectMapEventPointEvent += FoucsEventPoint; var hero = PlayerDatas.Instance.hero; if (hero != null) @@ -95,7 +95,7 @@ hero.OnPathFindStop -= OnHeroStopMove; } model.selectLocalMapEventPointEvent -= FoucsEventPoint; model.selectMapEventPointEvent -= FoucsEventPoint; m_BoundDrag.onBeginDrag.RemoveAllListeners(); for (int i = 0; i < tagBehaviours.Count; i++) @@ -138,7 +138,7 @@ if (RectTransformUtility.RectangleContainsScreenPoint((RectTransform)this.transform, Input.mousePosition, CameraManager.uiCamera) && !RectTransformUtility.RectangleContainsScreenPoint(m_EventPointInstroduce.containerDetails, Input.mousePosition, CameraManager.uiCamera)) { model.selectedLocalMapEventPoint = -1; model.selectedMapEventPoint = -1; } } @@ -384,7 +384,7 @@ private void FoucsEventPoint(int _eventPoint) { if (model.selectedLocalMapEventPoint != -1) if (model.selectedMapEventPoint != -1) { var config = Config.Instance.Get<MapEventPointConfig>(_eventPoint); var monsterRefreshConfig = Config.Instance.Get<MonsterRefreshPointConfig>(config.NPCID); @@ -403,7 +403,7 @@ } m_EventPointInstroduce.gameObject.SetActive(true); m_EventPointInstroduce.Display(model.selectedLocalMapEventPoint, m_SelecteEventPointSign); m_EventPointInstroduce.Display(model.selectedMapEventPoint, m_SelecteEventPointSign); } else { @@ -447,7 +447,7 @@ private void OnBeginDrag() { model.selectedLocalMapEventPoint = -1; model.selectedMapEventPoint = -1; } public struct LocalMap System/WorldMap/LocalMapTag.cs
@@ -150,7 +150,7 @@ WindowCenter.Instance.Close<LocalMapWin>(); WindowCenter.Instance.Open<MainInterfaceWin>(); MapTransferUtility.Instance.MoveToNPC(npcId); model.selectedLocalMapEventPoint = -1; model.selectedMapEventPoint = -1; } break; } System/WorldMap/LocalMapWin.cs
@@ -143,12 +143,12 @@ var recommendHangPoint = model.GetRecommendHangPoint(mapId); if (recommendHangPoint == 0) { model.selectedLocalMapEventPoint = -1; model.selectedMapEventPoint = -1; } else { model.selectedLocalMapEventPoint = recommendHangPoint; m_EventPointToggleGroup.MoveToCenter(visableEventPoints.IndexOf(model.selectedLocalMapEventPoint)); model.selectedMapEventPoint = recommendHangPoint; m_EventPointToggleGroup.MoveToCenter(visableEventPoints.IndexOf(model.selectedMapEventPoint)); } } @@ -176,16 +176,16 @@ private void GotoHangUp() { if (model.selectedLocalMapEventPoint != -1) if (model.selectedMapEventPoint != -1) { var config = Config.Instance.Get<MapEventPointConfig>(this.model.selectedLocalMapEventPoint); var config = Config.Instance.Get<MapEventPointConfig>(this.model.selectedMapEventPoint); WindowCenter.Instance.Close<WorldMapWin>(); WindowCenter.Instance.Close<LocalMapWin>(); WindowCenter.Instance.Open<MainInterfaceWin>(); MapTransferUtility.Instance.MoveToNPC(config.NPCID); } model.selectedLocalMapEventPoint = -1; model.selectedMapEventPoint = -1; } private void GotoWorldMap() @@ -210,7 +210,7 @@ private void UnSelectedEventPoint() { model.selectedLocalMapEventPoint = -1; model.selectedMapEventPoint = -1; } private void DisplayLines(List<MapLine> _mapLines) System/WorldMap/MapModel.cs
@@ -13,50 +13,49 @@ public class MapModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk, IMapInitOk { int m_SelectedLocalMapEventPoint; public int selectedLocalMapEventPoint { get { return this.m_SelectedLocalMapEventPoint; } set { if (m_SelectedLocalMapEventPoint != value) { m_SelectedLocalMapEventPoint = value; if (selectLocalMapEventPointEvent != null) { selectLocalMapEventPointEvent(this.m_SelectedLocalMapEventPoint); } } } } Dictionary<int, WorldMapArea> worldMapAreas = new Dictionary<int, WorldMapArea>(); Dictionary<int, bool> worldMapUnLockStates = new Dictionary<int, bool>(); Dictionary<int, List<int>> localMapEventPoints = new Dictionary<int, List<int>>(); Dictionary<int, List<string>> mapFunctionNPCsToRefreshID = new Dictionary<int, List<string>>(); Dictionary<int, List<string>> mapCollectNPCsToRefreshID = new Dictionary<int, List<string>>(); Dictionary<int, List<MapLine>> mapLines = new Dictionary<int, List<MapLine>>(); Dictionary<int, List<MapLine>> allMapLines = new Dictionary<int, List<MapLine>>(); List<int> sortedMapEventPoints = new List<int>(); List<int> sortedHangUpPoints = new List<int>(); List<int> sortedMaps = new List<int>(); List<MapLine> sortedMapLines = new List<MapLine>(); int m_NewUnLockedMap = 0; public int newUnLockedMap { get { return m_NewUnLockedMap; } set { m_NewUnLockedMap = value; } PlayerTaskDatas taskModel { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } int m_NewUnlockedMap = 0; public int newUnlockedMap { get { return m_NewUnlockedMap; } set { m_NewUnlockedMap = value; } } public int newUnLockMapsTip { public int newUnlockMapTip { get { return LocalSave.GetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "NewUnLockMapsTip")); } set { LocalSave.SetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "NewUnLockMapsTip"), value); } } int m_SelectedMapEventPoint; public int selectedMapEventPoint { get { return this.m_SelectedMapEventPoint; } set { if (m_SelectedMapEventPoint != value) { m_SelectedMapEventPoint = value; if (selectMapEventPointEvent != null) { selectMapEventPointEvent(this.m_SelectedMapEventPoint); } } } } public int wannaLookLocalMap { get; set; } int mapUnLockIndex = 0; PlayerTaskDatas taskModel { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } public event Action<int> selectLocalMapEventPointEvent; public event Action<int> selectMapEventPointEvent; public event Action<int> mapLinesUpdateEvent; public override void Init() @@ -77,7 +76,7 @@ public void OnBeforePlayerDataInitialize() { mapUnLockIndex = 0; newUnLockedMap = 0; newUnlockedMap = 0; } public void OnAfterPlayerDataInitialize() @@ -86,15 +85,15 @@ public void OnPlayerLoginOk() { UpdateMapsUnLockedState(); newUnLockedMap = 0; UpdateMapsUnlockedState(); newUnlockedMap = 0; } public void OnMapInitOk() { if (newUnLockMapsTip == PlayerDatas.Instance.baseData.MapID) if (newUnlockMapTip == PlayerDatas.Instance.baseData.MapID) { newUnLockMapsTip = 0; newUnlockMapTip = 0; } } @@ -113,17 +112,14 @@ return; } if (worldMapUnLockStates.ContainsKey(_mapId)) if (!worldMapUnLockStates.ContainsKey(_mapId)) { if (!worldMapUnLockStates[_mapId]) { SysNotifyMgr.Instance.ShowTip("Map_Delivery"); return; } return; } else if (!worldMapUnLockStates[_mapId]) { //未知的地图 SysNotifyMgr.Instance.ShowTip("Map_Delivery"); return; } @@ -132,26 +128,13 @@ MapTransferUtility.Send_WorldTransfer(_mapId, position, MapTransferType.WorldTransport, (byte)_lineId, 0); } public void RequestFlyToEventPoint(int _eventPoint) { GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero != null) { _hero.Behaviour.StopHandupAI(); _hero.Behaviour.StopKillUntilDieAI(); } var mapNPCConfig = Config.Instance.Get<MapEventPointConfig>(_eventPoint); MapTransferUtility.Instance.MissionFlyTo(wannaLookLocalMap, mapNPCConfig.NPCID); } public void RequestSelectedLine(int _lineId) { GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero != null) var hero = PlayerDatas.Instance.hero; if (hero != null) { _hero.Behaviour.StopHandupAI(); _hero.Behaviour.StopKillUntilDieAI(); hero.Behaviour.StopHandupAI(); hero.Behaviour.StopKillUntilDieAI(); } if (PlayerDatas.Instance.baseData.FBID != _lineId) @@ -186,13 +169,13 @@ public List<MapLine> GetMapLines(int _mapId) { sortedMapLines.Clear(); if (mapLines.ContainsKey(_mapId)) var mapLines = new List<MapLine>(); if (allMapLines.ContainsKey(_mapId)) { sortedMapLines.AddRange(mapLines[_mapId]); CheckActivityLine(_mapId); sortedMapLines.Sort(SortMaplines); return sortedMapLines; mapLines.AddRange(allMapLines[_mapId]); CheckActivityLine(_mapId, mapLines); mapLines.Sort(SortMaplines); return mapLines; } else { @@ -200,27 +183,32 @@ } } void CheckActivityLine(int _mapId) void CheckActivityLine(int _mapId, List<MapLine> mapLines) { var activityLine = 0; fairyGrabBossModel.TryGetFairyGrabBossLine(out activityLine); if (activityLine != 0) { var index = sortedMapLines.FindIndex((x) => var index = mapLines.FindIndex((x) => { return activityLine + 1 == x.lineIndex; }); if (fairyGrabBossModel.InActivityTime || PlayerDatas.Instance.baseData.FBID == activityLine) bool needDisplayActivityLine = fairyGrabBossModel.InActivityTime || PlayerDatas.Instance.baseData.FBID == activityLine; if (index == -1) { if (index == -1) if (needDisplayActivityLine) { sortedMapLines.Add(new MapLine(_mapId, activityLine + 1, 0, 0)); mapLines.Add(new MapLine(_mapId, activityLine + 1, 0, 0)); } } else if (index != -1) else { sortedMapLines.RemoveAt(index); if (!needDisplayActivityLine) { mapLines.RemoveAt(index); } } } } @@ -231,10 +219,12 @@ { var mapState = _serverInfo.MapStateList[i]; var mapId = (int)mapState.MapID; var lines = mapLines[mapId] = new List<MapLine>(); var lines = allMapLines[mapId] = new List<MapLine>(); for (int j = 0; j < mapState.LineCnt; j++) { lines.Add(new MapLine(mapId, j + 1, (int)mapState.LineCurPlayerCntList[j], (int)mapState.LineMaxPlayerCntList[j])); var playerCount = (int)mapState.LineCurPlayerCntList[j]; var playerMaxCount = (int)mapState.LineMaxPlayerCntList[j]; lines.Add(new MapLine(mapId, j + 1, playerCount, playerMaxCount)); } if (mapLinesUpdateEvent != null) @@ -247,7 +237,7 @@ public void UpdateDungeonMapLines(HA007_tagGCFBLinePlayerCnt _serverInfo) { var mapId = (int)_serverInfo.MapID; var lines = mapLines[mapId] = new List<MapLine>(); var lines = allMapLines[mapId] = new List<MapLine>(); for (int i = 0; i < _serverInfo.Count; i++) { @@ -301,35 +291,6 @@ } return null; } public int GetNextMap(int _mapId) { for (int i = sortedMaps.Count - 1; i >= 0; i--) { int mapId = sortedMaps[i]; if (_mapId == mapId) { var nextMap = sortedMaps[Mathf.Clamp(i - 1, 0, sortedMaps.Count - 1)]; return nextMap; } } return -1; } public int GetLatestUnLockHangUpMap() { for (int i = 0; i < sortedMaps.Count; i++) { int mapId = sortedMaps[i]; if (GeneralConfig.Instance.autoOnHookMap.Contains(mapId) && IsMapUnLocked(mapId)) { return mapId; } } return GeneralConfig.Instance.autoOnHookMap[GeneralConfig.Instance.autoOnHookMap.Count - 1]; } public int GetRecommendHangPoint(int _mapId) @@ -414,7 +375,7 @@ for (int i = 0; i < sortedHangUpPoints.Count; i++) { var config = Config.Instance.Get<MapEventPointConfig>(sortedHangUpPoints[i]); if (IsMapUnLocked(config.MapID)) if (IsMapUnlocked(config.MapID)) { unLockedHangeUpPoints.Add(sortedHangUpPoints[i]); } @@ -476,11 +437,7 @@ return recommendPoint; } public void ConfirmNewMap(int _mapId) { } public bool IsMapUnLocked(int _mapId) public bool IsMapUnlocked(int _mapId) { if (worldMapUnLockStates.ContainsKey(_mapId)) { @@ -492,27 +449,29 @@ } } private void UpdateMapsUnLockedState() private void UpdateMapsUnlockedState() { foreach (var mapId in worldMapAreas.Keys) { var unLocked = CheckMapUnLocked(mapId); if (worldMapUnLockStates.ContainsKey(mapId) && !worldMapUnLockStates[mapId] && unLocked && mapId != 10010) var canUnlock = CanMapUnlock(mapId); if (worldMapUnLockStates.ContainsKey(mapId) && !worldMapUnLockStates[mapId] && canUnlock && mapId != 10010) { newUnLockedMap = mapId; newUnLockMapsTip = mapId; newUnlockedMap = mapId; newUnlockMapTip = mapId; } worldMapUnLockStates[mapId] = unLocked; worldMapUnLockStates[mapId] = canUnlock; } } private bool CheckMapUnLocked(int _mapId) private bool CanMapUnlock(int _mapId) { var config = Config.Instance.Get<MapConfig>(_mapId); var playerLevel = PlayerDatas.Instance.baseData.LV; var level = PlayerDatas.Instance.baseData.LV; if (playerLevel >= config.LV) if (level >= config.LV) { if (config.MainTaskID > 0) { @@ -534,7 +493,7 @@ switch (refreshType) { case PlayerDataRefresh.LV: UpdateMapsUnLockedState(); UpdateMapsUnlockedState(); break; } } @@ -552,7 +511,7 @@ mapUnLockIndex = 0; } UpdateMapsUnLockedState(); UpdateMapsUnlockedState(); } } @@ -563,7 +522,7 @@ { if (mapConfig.MapFBType == 0) { worldMapAreas.Add(mapConfig.MapID, new WorldMapArea(mapConfig.MapID, true, WorldMapCamp.Neutral)); worldMapAreas.Add(mapConfig.MapID, new WorldMapArea(mapConfig.MapID, true)); sortedMaps.Add(mapConfig.MapID); } } @@ -661,11 +620,12 @@ { var activityline = 0; fairyGrabBossModel.TryGetFairyGrabBossLine(out activityline); bool _isActivityLinex = activityline != 0 && x.lineIndex == activityline + 1; bool _isActivityLiney = activityline != 0 && y.lineIndex == activityline + 1; if (_isActivityLinex != _isActivityLiney) var isActivityLinex = activityline != 0 && x.lineIndex == activityline + 1; var isActivityLiney = activityline != 0 && y.lineIndex == activityline + 1; if (isActivityLinex != isActivityLiney) { return -_isActivityLinex.CompareTo(_isActivityLiney); return -isActivityLinex.CompareTo(isActivityLiney); } return x.lineIndex.CompareTo(y.lineIndex); } @@ -675,13 +635,11 @@ { public int id; public bool unLocked; public WorldMapCamp camp; public WorldMapArea(int _id, bool _unLocked, WorldMapCamp _camp) public WorldMapArea(int _id, bool _unLocked) { this.id = _id; this.unLocked = _unLocked; this.camp = _camp; } } System/WorldMap/WorldMapAreaBehaviour.cs
@@ -61,11 +61,11 @@ m_MapArea = _area; m_ScaleTween.SetStartState(); DrawArea(); m_PressTip.enabled = !model.IsMapUnLocked(m_MapArea.id); m_PressTip.enabled = !model.IsMapUnlocked(m_MapArea.id); if (m_NewUnLockTip != null) { m_NewUnLockTip.gameObject.SetActive(m_MapArea.id != model.newUnLockedMap && model.newUnLockMapsTip == m_MapArea.id); m_NewUnLockTip.gameObject.SetActive(m_MapArea.id != model.newUnlockedMap && model.newUnlockMapTip == m_MapArea.id); } CheckAchievementGuide(); @@ -85,7 +85,7 @@ { try { var unLocked = model.IsMapUnLocked(m_MapArea.id); var unLocked = model.IsMapUnlocked(m_MapArea.id); var mapConfig = Config.Instance.Get<MapConfig>(m_MapArea.id); m_AreaName.text = mapConfig.Name; m_AreaLevel.text = mapConfig.LV.ToString(); @@ -108,7 +108,7 @@ m_ScaleTween.Play(false); downTime = Time.time; var mapId = m_MapArea.id; if (!model.IsMapUnLocked(mapId)) if (!model.IsMapUnlocked(mapId)) { m_UnLockTip.Display(mapId); } @@ -121,7 +121,7 @@ private void OnPointerClick() { var isUnLocked = model.IsMapUnLocked(m_MapArea.id); var isUnLocked = model.IsMapUnlocked(m_MapArea.id); if (isUnLocked || Time.time - downTime < 0.3f) { if (isUnLocked) @@ -139,7 +139,6 @@ MapTransferUtility.Instance.Clear(); model.RequestMapTransport(m_MapArea.id); model.ConfirmNewMap(m_MapArea.id); } } } System/WorldMap/WorldMapWin.cs
@@ -115,11 +115,11 @@ } } if (model.newUnLockedMap != 0) if (model.newUnlockedMap != 0) { StopCoroutine("Co_MapUnLockShow"); StartCoroutine("Co_MapUnLockShow", model.newUnLockedMap); model.newUnLockedMap = 0; StartCoroutine("Co_MapUnLockShow", model.newUnlockedMap); model.newUnlockedMap = 0; } else { Utility/ComponentExtersion.cs
@@ -75,6 +75,17 @@ _button.onClick.RemoveAllListeners(); } public static void SetListener(this Button button, UnityAction action) { if (button == null) { return; } button.onClick.RemoveAllListeners(); button.AddListener(action); } public static void AddListener(this Toggle _toggle, UnityAction<bool> _action) { if (_toggle == null) @@ -82,6 +93,17 @@ return; } _toggle.onValueChanged.AddListener(_action); } public static void SetListener(this Toggle toggle, UnityAction<bool> action) { if (toggle == null) { return; } toggle.onValueChanged.RemoveAllListeners(); toggle.onValueChanged.AddListener(action); } public static void RemoveAllListeners(this Toggle _toggle) @@ -102,6 +124,17 @@ _slider.onValueChanged.AddListener(_action); } public static void SetListener(this Slider slider, UnityAction<float> action) { if (slider == null) { return; } slider.onValueChanged.RemoveAllListeners(); slider.onValueChanged.AddListener(action); } public static void RemoveAllListeners(this Slider _slider) { if (_slider == null) @@ -120,6 +153,17 @@ _inputField.onValueChanged.AddListener(_action); } public static void SetListener(this InputField inputField, UnityAction<string> action) { if (inputField == null) { return; } inputField.onValueChanged.RemoveAllListeners(); inputField.onValueChanged.AddListener(action); } public static void RemoveAllListeners(this InputField _inputField) { if (_inputField == null)