少年修仙传客户端代码仓库
client_Wu Xijin
2018-12-12 788075dce1d592877daa11f032f01fc5f81c5339
Merge branch 'Cross_Server' of http://192.168.0.87:10010/r/snxxz_scripts into Cross_Server
6个文件已添加
7个文件已修改
425 ■■■■ 已修改文件
Core/GameEngine/Model/Config/CrossServerArenaConfig.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerDayAwardsWin.cs 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerModel.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerRewardModel.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerRewardModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerWin.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossSeverDayAwardCell.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossSeverDayAwardCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/SegmentRewardCell.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/SegmentRewardWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/CrossServerArenaConfig.cs
New file
@@ -0,0 +1,50 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Wednesday, December 12, 2018
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class CrossServerArenaConfig : ConfigBase {
        public int DanLV { get ; private set ; }
        public string Name { get ; private set; }
        public int LVUpScore { get ; private set ; }
        public string DayAwardList { get ; private set; }
        public string SeasonAwardList { get ; private set; }
        public override string getKey()
        {
            return DanLV.ToString();
        }
        public override void Parse() {
            try
            {
                DanLV=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
                Name = rawContents[1].Trim();
                LVUpScore=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0;
                DayAwardList = rawContents[3].Trim();
                SeasonAwardList = rawContents[4].Trim();
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f10a2faba8659904ab5c13d1a770a7e2
timeCreated: 1544607874
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/ConfigManager.cs
@@ -213,6 +213,7 @@
        AddAsyncTask<DungeonHelpBattleConfig>();
        AddAsyncTask<FuncSwitchConfig>();
        AddAsyncTask<AncientRobotNameConfig>();
        AddAsyncTask<CrossServerArenaConfig>();
        while (!AllCompleted())
        {
System/CrossServerOneVsOne/CrossServerDayAwardsWin.cs
@@ -13,11 +13,10 @@
        [SerializeField] ScrollerController achieveCtrl;
        [SerializeField] Button closeBtn;
        HeavenBattleModel battleModel { get { return ModelCenter.Instance.GetModel<HeavenBattleModel>(); } }
        List<XMZZAchievementConfig> achievelist;
        CrossServerModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerModel>(); } }
        protected override void BindController()
        {
            achieveCtrl.OnRefreshCell += RefreshAchieveCell;
            achieveCtrl.lockType = EnhanceLockType.KeepVertical;
        }
@@ -28,7 +27,6 @@
        protected override void OnPreOpen()
        {
            battleModel.AchieveModel.achievementCompletedEvent += RefreshComplete;
            CreateCell();
        }
@@ -40,7 +38,7 @@
        protected override void OnPreClose()
        {
            battleModel.AchieveModel.achievementCompletedEvent -= RefreshComplete;
        }
        protected override void OnAfterClose()
@@ -48,56 +46,15 @@
        }
        private void RefreshComplete(int id)
        {
            if (achievelist != null)
            {
                for (int i = 0; i < achievelist.Count; i++)
                {
                    if (achievelist[i].AchieveID.Contains(id))
                    {
                        achievelist = battleModel.GetAchievelist();
                        CreateCell();
                    }
                }
            }
        }
        private void CreateCell()
        {
            achievelist = battleModel.GetAchievelist();
            achieveCtrl.Refresh();
            int i = 0;
            for (i = 0; i < achievelist.Count; i++)
            var dayAwards = crossServerModel.dayAwardTypelist;
            for(int i = 0; i < dayAwards.Count; i++)
            {
                Achievement achieve = null;
                battleModel.SetAchievement(achievelist[i].AchieveID, out achieve);
                if(achieve != null)
                {
                    if(!achieve.completed)
                    {
                        achieveCtrl.AddCell(ScrollerDataType.Header,achieve.id);
                    }
                    else
                    {
                        achieveCtrl.AddCell(ScrollerDataType.Normal,achieve.id);
                    }
                }
                achieveCtrl.AddCell(ScrollerDataType.Header,i);
            }
            achieveCtrl.Restart();
        }
        private void RefreshAchieveCell(ScrollerDataType type, CellView cell)
        {
            switch (type)
            {
                case ScrollerDataType.Header:
                    XMZZAchieveCell achieveCell = cell.GetComponent<XMZZAchieveCell>();
                    achieveCell.Init(cell.index);
                    break;
            }
        }
    }
}
System/CrossServerOneVsOne/CrossServerModel.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TableConfig;
using LitJson;
namespace Snxxz.UI
{
@@ -11,7 +13,7 @@
    {
        public override void Init()
        {
            ParseFuncConfig();
        }
        public void OnBeforePlayerDataInitialize()
@@ -34,14 +36,106 @@
        }
        public int GetMaxUpgradeScore()
        public bool TryGetMaxRank(out int upScore)
        {
            return 0;
            var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(curRank);
            upScore = arenaConfig.LVUpScore;
            return upScore == 0;
        }
        #region 表数据
        public int dayMaxMatchNum { get; private set; } //匹配次数上限
        public int dayMaxScore { get; private set; } //今日积分上限
        public List<AwardType> dayAwardTypelist { get; private set; }
        private void ParseFuncConfig()
        {
            var CrossRealmPKAward = Config.Instance.Get<FuncConfigConfig>("CrossRealmPKAward");
            var dayMatchAwardData = JsonMapper.ToObject(CrossRealmPKAward.Numerical1);
            var dayWinAwardData = JsonMapper.ToObject(CrossRealmPKAward.Numerical2);
            dayAwardTypelist = new List<AwardType>();
            foreach (var num in dayWinAwardData.Keys)
            {
                int times = int.Parse(num);
                var items = dayWinAwardData[num];
                var awardType = new AwardType(times,1);
                dayAwardTypelist.Add(awardType);
                if (items.IsArray)
                {
                    for(int i = 0; i < items.Count; i++)
                    {
                        var itemInfo = items[i];
                        if(itemInfo.IsArray && itemInfo.Count >= 3)
                        {
                            int id = 0;
                            int.TryParse(itemInfo[0].ToString(), out id);
                            int count = 0;
                            int.TryParse(itemInfo[1].ToString(), out count);
                            int isBind = 0;
                            int.TryParse(itemInfo[2].ToString(), out isBind);
                            AwardItem awardItem = new AwardItem(id, count, isBind);
                            awardType.SetAwardItems(awardItem);
                        }
                    }
                }
            }
            foreach (var num in dayMatchAwardData.Keys)
            {
                int times = int.Parse(num);
                var items = dayMatchAwardData[num];
                var awardType = new AwardType(times,2);
                dayAwardTypelist.Add(awardType);
                if (items.IsArray)
                {
                    for(int i = 0;i < items.Count; i++)
                    {
                        var itemInfo = items[i];
                        if (itemInfo.IsArray && itemInfo.Count >= 3)
                        {
                            int id = 0;
                            int.TryParse(itemInfo[0].ToString(), out id);
                            int count = 0;
                            int.TryParse(itemInfo[1].ToString(), out count);
                            int isBind = 0;
                            int.TryParse(itemInfo[2].ToString(), out isBind);
                            AwardItem awardItem = new AwardItem(id, count, isBind);
                            awardType.SetAwardItems(awardItem);
                        }
                    }
                }
            }
        }
        public class AwardType
        {
            public int type; //1 胜利奖励 2 匹配奖励
            public int num { get; private set;}
            public List<AwardItem> awardItems = new List<AwardItem>();
            public AwardType(int _num,int _type)
            {
                type = _type;
                num = _num;
                awardItems.Clear();
            }
            public void SetAwardItems(AwardItem awardItem)
            {
                awardItems.Add(awardItem);
            }
        }
        public struct AwardItem
        {
            public int itemId;
            public int itemCount;
            public int isBind;
            public AwardItem(int _id,int _count,int _isBind)
            {
                itemId = _id;
                itemCount = _count;
                isBind = _isBind;
            }
        }
        #endregion
        #region 协议
@@ -54,7 +148,6 @@
        public int dayMatchNum { get; private set; } //今日匹配次数
        public int dayGetScore { get; private set; } //今日获取积分
        #endregion
    }
}
System/CrossServerOneVsOne/CrossServerRewardModel.cs
New file
@@ -0,0 +1,79 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, December 12, 2018
//--------------------------------------------------------
using System;
using System.Collections.Generic;
using TableConfig;
using Snxxz.UI;
//跨服PK奖励信息
[XLua.LuaCallCSharp]
public class Item_Class
{
    public int ItemId;
    public int ItemNumber;
    public int Isbind;
}
public class SeasonAwardClass//赛季奖励
{
    public int DanLv;
    public string Name;
    public int Score;
    public List<Item_Class> ItemList;
}
public class CrossServerRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
{
    public Dictionary<int, SeasonAwardClass> SegmentRewardDic = new Dictionary<int, SeasonAwardClass>();
    public override void Init()
    {
        GetSeasonAward();
    }
    public void OnBeforePlayerDataInitialize()
    {
    }
    public void OnPlayerLoginOk()
    {
    }
    public override void UnInit()
    {
    }
    private void GetSeasonAward()
    {
        var config = Config.Instance.GetAllValues<CrossServerArenaConfig>();
        for (int i = 0; i < config.Count; i++)
        {
            var _config = config[i];
            if (!SegmentRewardDic.ContainsKey(_config.DanLV))
            {
                SeasonAwardClass seasonAwardClass = new SeasonAwardClass();
                seasonAwardClass.DanLv = _config.DanLV;
                seasonAwardClass.Name = _config.Name;
                seasonAwardClass.Score = _config.LVUpScore;
                var _jsonData = LitJson.JsonMapper.ToObject(_config.SeasonAwardList);
                List<Item_Class> itemClassList = new List<Item_Class>();
                for (int j = 0; j < _jsonData.Count; j++)
                {
                    Item_Class itemClass = new Item_Class();
                    itemClass.ItemId= int.Parse((_jsonData[j][0]).ToString());
                    itemClass.ItemNumber = int.Parse((_jsonData[j][1]).ToString());
                    itemClass.Isbind = int.Parse((_jsonData[j][2]).ToString());
                    itemClassList.Add(itemClass);
                }
                seasonAwardClass.ItemList = itemClassList;
                SegmentRewardDic.Add(_config.DanLV, seasonAwardClass);
            }
        }
    }
}
System/CrossServerOneVsOne/CrossServerRewardModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: aec18b1416fdc814c8a431de7f644a16
timeCreated: 1544602152
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/CrossServerOneVsOne/CrossServerWin.cs
@@ -1,6 +1,7 @@
using System;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI
{
@@ -82,14 +83,22 @@
            scoreSlider.minValue = 0;
            scoreSlider.maxValue = 1;
            UpdateScore();
            var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(crossServerModel.curRank);
            rankText.text = arenaConfig.Name;
        }
        private void UpdateScore()
        {
            curScoreText.text = crossServerModel.curScore.ToString();
            int maxScore = crossServerModel.GetMaxUpgradeScore();
            scorePerText.text = StringUtility.Contact(crossServerModel.curScore, "/", maxScore);
            scoreSlider.value = (float)crossServerModel.curScore/maxScore;
            int maxScore = 0;
            bool isMaxRank = crossServerModel.TryGetMaxRank(out maxScore);
            if(!isMaxRank)
            {
                scorePerText.text = StringUtility.Contact(crossServerModel.curScore, "/", maxScore);
                scoreSlider.value = (float)crossServerModel.curScore / maxScore;
            }
        }
        #region 点击事件
System/CrossServerOneVsOne/CrossSeverDayAwardCell.cs
New file
@@ -0,0 +1,58 @@
using UnityEngine;
using UnityEngine.UI;
using EnhancedUI.EnhancedScroller;
using System.Collections.Generic;
using System;
namespace Snxxz.UI
{
    public class CrossSeverDayAwardCell : ScrollerUI
    {
        [SerializeField] Text taskNameText;
        [SerializeField] Slider progressSlider;
        [SerializeField] Text progressText;
        [SerializeField] Button recieveBtn;
        [SerializeField] Image stateImg;
        [SerializeField] List<CommonItemBaisc> itemBaiscs = new List<CommonItemBaisc>();
        CrossServerModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerModel>(); } }
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        CrossServerModel.AwardType awardType;
        private void Awake()
        {
            recieveBtn.AddListener(ClickRecieve);
        }
        public override void Refresh(CellView cell)
        {
            awardType = null;
            if (cell.index >= crossServerModel.dayAwardTypelist.Count) return;
            awardType = crossServerModel.dayAwardTypelist[cell.index];
            var awardItems = awardType.awardItems;
            for(int i = 0; i < itemBaiscs.Count; i++)
            {
                var itemBasic = itemBaiscs[i];
                itemBasic.gameObject.SetActive(i < awardItems.Count);
                if(i < awardItems.Count)
                {
                    var awardItem = awardItems[i];
                    ItemCellModel cellModel = new ItemCellModel(awardItem.itemId,true,(ulong)awardItem.itemCount,awardItem.isBind);
                    itemBasic.Init(cellModel);
                    itemBasic.cellBtn.RemoveAllListeners();
                    itemBasic.cellBtn.AddListener(()=>
                    {
                        ItemAttrData attrData = new ItemAttrData(awardItem.itemId,true,(ulong)awardItem.itemCount,-1,awardItem.isBind);
                        tipsModel.SetItemTipsModel(attrData);
                    });
                }
            }
        }
        private void ClickRecieve()
        {
            if (awardType == null) return;
        }
    }
}
System/CrossServerOneVsOne/CrossSeverDayAwardCell.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 743cd652c9d18fe4d804d8b81724dbbf
timeCreated: 1544597776
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/CrossServerOneVsOne/SegmentRewardCell.cs
@@ -19,7 +19,9 @@
        [SerializeField] GameObject m_IsReachImage;//未达成
        [SerializeField] GameObject m_IsMissImage;//已错过
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        CrossServerRewardModel m_CrossServerRewardModel;
        CrossServerRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerRewardModel>()); } }
        public Button ReceiveBtn
        {
            get { return m_ReceiveBtn; }
@@ -28,24 +30,32 @@
        }
        public void SetReceive(int id)
        {
            ReceiveItem(id);
            if (crossServerRewardModel.SegmentRewardDic.ContainsKey(id))
            {
                var dic = crossServerRewardModel.SegmentRewardDic[id];
                m_Text_Segment.text = dic.Name;
                m_Text_Number.text = dic.Score.ToString();
                ReceiveItem(id);
            }
        }
        private void ReceiveItem(int Id)
        {
            int type = 3;
            var dic = crossServerRewardModel.SegmentRewardDic[Id];
            for (int i = 0; i < m_Itemlist.childCount; i++)
            {
                GameObject ObjChild = m_Itemlist.GetChild(i).gameObject;
                if (i < type)
                if (i < dic.ItemList.Count)
                {
                    ObjChild.SetActive(true);
                    Item_Class itemClass = dic.ItemList[i];
                    ItemCell _ItemCell = ObjChild.GetComponent<ItemCell>();
                    ItemCellModel cellModel = new ItemCellModel(191, true, (ulong)1);
                    ItemCellModel cellModel = new ItemCellModel(itemClass.ItemId, true, (ulong)itemClass.ItemNumber, itemClass.Isbind);
                    _ItemCell.Init(cellModel);
                    _ItemCell.cellBtn.SetListener(() =>
                    {
                        ItemAttrData attrData = new ItemAttrData(191, false, (ulong)1);
                        ItemAttrData attrData = new ItemAttrData(itemClass.ItemId, false, (ulong)itemClass.ItemNumber,-1, itemClass.Isbind);
                        itemTipsModel.SetItemTipsModel(attrData);
                    });
                }
System/CrossServerOneVsOne/SegmentRewardWin.cs
@@ -16,7 +16,9 @@
    [XLua.Hotfix]
    public class SegmentRewardWin : Window
    {
        [SerializeField] ScrollerController m_ScrollerController;
        [SerializeField] ScrollerController m_ScrollerController;
        CrossServerRewardModel m_CrossServerRewardModel;
        CrossServerRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerRewardModel>()); } }
        #region Built-in
        protected override void BindController()
        {
@@ -47,9 +49,9 @@
        void OnCreateGridLineCell(ScrollerController gridCtrl)
        {
            gridCtrl.Refresh();
            for (int i = 0; i < 10; i++)
            foreach (var key in crossServerRewardModel.SegmentRewardDic.Keys)
            {
                gridCtrl.AddCell(ScrollerDataType.Header, i);
                gridCtrl.AddCell(ScrollerDataType.Header, key);
            }
            gridCtrl.Restart();
        }
System/WindowBase/ModelCenter.cs
@@ -211,6 +211,8 @@
            RegisterModel<DungeonAssistModel>();
            RegisterModel<MysticalPurchaseModel>();
            RegisterModel<FuncSwitchModel>();
            RegisterModel<CrossServerModel>();
            RegisterModel<CrossServerRewardModel>();
            inited = true;
        }