hch
2 天以前 1bcd08e4f930d6e054080d6859fee8e23be8e304
351 【内政】红颜系统 - 游历
4个文件已修改
168 ■■■■■ 已修改文件
Main/System/BeautyMM/BeautyMMManager.Travel.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BeautyMM/BeautyMMManager.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BeautyMM/BeautyMMTravelCell.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BeautyMM/BeautyMMTravelWin.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BeautyMM/BeautyMMManager.Travel.cs
@@ -23,6 +23,7 @@
    public int maxGirds = 0;
    public Int2 clickGirdPos = new Int2();
    public bool isClickDoor = false;    // 是否点击过门,用于帮玩家自动重置
    public void UpdateTravelInfo(HB040_tagSCTravelInfo netPack)
    {
@@ -35,6 +36,11 @@
        m_SceneryLVInfo = netPack.SceneryLVInfo;
        m_Result = netPack.Result;
        openChangeGridList.Clear();
        if (m_Result == 5)
        {
            isClickDoor = false; //不需要帮忘记自动重置了
        }
        for (int i = 0; i < netPack.GridCnt; i++)
        {
@@ -114,6 +120,12 @@
        return false;
    }
    public int GetMaxEnergy()
    {
        var value = allMMTalentEffect.ContainsKey((int)TalentEffectType.Travel) ? allMMTalentEffect[(int)TalentEffectType.Travel] : 0;
        return baseTravelEnergy + value;
    }
    Redpoint redpointTravel = new Redpoint(MainRedDot.Redpoint_BeautyMM, MainRedDot.Redpoint_BeautyMM * 10 + 2);
    void UpdateTravelRedpoint()
Main/System/BeautyMM/BeautyMMManager.cs
@@ -27,6 +27,10 @@
    public int recoverTravelEnergyTime = 0;   // 数值2:恢复1点体力所需时间,分钟  
    public int[] travelRowCol = new int[2]; // 数值3:游历行列数  行|列
    public Dictionary<int, int> allMMTalentAttr = new Dictionary<int, int>();
    public Dictionary<int, int> allMMTalentEffect = new Dictionary<int, int>();
    public override void Init()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitialize;
@@ -44,6 +48,8 @@
        beautyMMDataDict.Clear();
        beautyMMSkinDataDict.Clear();
        m_GridDict.Clear();
        allMMTalentAttr.Clear();
        allMMTalentEffect.Clear();
    }
    void ParseConfig()
@@ -92,6 +98,7 @@
            }
        }
        UpdateRedpoint();
        RefreshAllTalen();
        OnBeautyMMDataUpdate?.Invoke();
    }
@@ -314,7 +321,7 @@
    }
    // 获取MM天赋效果
    public int GetMMTalentEffect(int mmID)
    public Dictionary<int, int> GetMMTalentEffect(int mmID)
    {
        int _effect = 0;
        if (beautyMMDataDict.ContainsKey(mmID))
@@ -335,10 +342,49 @@
                        _effect += _addLV * config.EffPerLVAdd;
                    }
                }
                return _effect;
                return new Dictionary<int, int>()
                {
                    {config.EffType, _effect}
                } ;
            }
        }
        return _effect;
        return new Dictionary<int, int>();
    }
    void RefreshAllTalen()
    {
        foreach (var key in beautyMMDataDict.Keys)
        {
            var _dict = GetMMTalentAttr(key);
            //加到allMMTalentAttr
            foreach (var _key in _dict.Keys)
            {
                if (allMMTalentAttr.ContainsKey(_key))
                {
                    allMMTalentAttr[_key] += _dict[_key];
                }
                else
                {
                    allMMTalentAttr.Add(_key, _dict[_key]);
                }
            }
            var _dict2 = GetMMTalentEffect(key);
            //加到allMMTalentEffect
            foreach (var _key in _dict2.Keys)
            {
                if (allMMTalentEffect.ContainsKey(_key))
                {
                    allMMTalentEffect[_key] += _dict2[_key];
                }
                else
                {
                    allMMTalentEffect.Add(_key, _dict2[_key]);
                }
            }
        }
    }
    #region 红点
@@ -548,8 +594,23 @@
    public ushort Exp;        //当前等级经验
    public ushort AwardLV;        //已经领取到的奖励等级记录
}
public class BeautyMMSkinData {
public class BeautyMMSkinData
{
    public byte State;        //是否已激活
    public byte Used;        //是否已穿戴该时装,某个红颜的所有时装穿戴可能都为0,则前端取默认时装进行展示,如果有同步已穿戴的则以后端为准
    public byte Star;        //时装星级,激活时为0星
}
}
// 1.主线战利品上限提高百分比        无    百分比
// 2.演武场挑战胜利,概率额外获得1个物品的概率    物品ID    概率
// 3.游历体力上限增加        无    增加上限
// 4.白骨盈野扫荡额外物品奖励        物品ID    个数
public enum TalentEffectType
{
    MainLine = 1,
    Arena = 2,
    Travel = 3,
    BoneField = 4,
}
Main/System/BeautyMM/BeautyMMTravelCell.cs
@@ -13,6 +13,7 @@
    [SerializeField] UIEffectPlayer openEffect;
    [SerializeField] UIEffectPlayer boomEffect;
    [SerializeField] UIEffectPlayer gateEffect;
    [SerializeField] RotationTween restartTween;
    public void Display(int index)
@@ -116,14 +117,19 @@
        if (grid.State == 0 || grid.State == 2)
        {
            SoundPlayer.Instance.PlayUIAudio(25);
            if (BeautyMMManager.Instance.m_Energy == 0)
            {
                SysNotifyMgr.Instance.ShowTip("BeautyMM4");
                return;
            }
        }
        if (grid.EventID == 100)
        if (grid.EventID == (int)GirdEventType.Empty)
        {
            // 空格子
            return;
        }
        if (grid.EventID < 99 && grid.EventID > 0)
        if (grid.EventID < (int)GirdEventType.Door && grid.EventID > 0)
        {
            //判断建筑是否都开全了没
            if (!BeautyMMManager.Instance.CanOpenBuild())
@@ -132,7 +138,7 @@
                return;
            }
        }
        if (grid.EventID == 101)
        if (grid.EventID == (int)GirdEventType.Horse)
        {
            boomEffect.Play();
        }
@@ -143,6 +149,11 @@
        pack.Col = (byte)girdPos.y;
        GameNetSystem.Instance.SendInfo(pack);
        BeautyMMManager.Instance.clickGirdPos = girdPos;
        if (grid.EventID == (int)GirdEventType.Door)
        {
            BeautyMMManager.Instance.isClickDoor = true;
        }
    }
}
Main/System/BeautyMM/BeautyMMTravelWin.cs
@@ -43,9 +43,11 @@
    protected override void OnPreOpen()
    {
        BeautyMMManager.Instance.OnTravelInfoUpdate += OnTravelInfoUpdate;
        GlobalTimeEvent.Instance.secondEvent += ShowEnergy;
        BeautyMMManager.Instance.openChangeGridList.Clear();
        BeautyMMManager.Instance.isClickDoor = false;
        BeautyMMManager.Instance.clickGirdPos = new Int2(0, 0);
        UIManager.Instance.OnCloseWindow += OnCloseWindow;
        rateTipRect.SetActive(false);
@@ -57,6 +59,7 @@
    {
        BeautyMMManager.Instance.OnTravelInfoUpdate -= OnTravelInfoUpdate;
        UIManager.Instance.OnCloseWindow -= OnCloseWindow;
        GlobalTimeEvent.Instance.secondEvent -= ShowEnergy;
    }
    void OnTravelInfoUpdate(int result)
@@ -65,7 +68,6 @@
        Display();
        if (result == 2)
        {
            //BeautyMMManager.Instance.clickGirdPos
            boomRowEffect.transform.localPosition = new Vector3(0,
            -((BeautyMMManager.Instance.clickGirdPos.x - 1) * gridHeight + gridHeight / 2), 0);
            boomRowEffect.Play();
@@ -120,6 +122,26 @@
                buildImgs[i].SetActive(false);
            }
        }
        ShowEnergy();
    }
    void ShowEnergy()
    {
        processImg.fillAmount = BeautyMMManager.Instance.m_Energy*1.0f / BeautyMMManager.Instance.GetMaxEnergy();
        processText.text = BeautyMMManager.Instance.m_Energy.ToString() + "/" + BeautyMMManager.Instance.GetMaxEnergy().ToString();
        if (processImg.fillAmount >= 1)
        {
            timeText.text = Language.Get("BeautyMM27");
        }
        else
        {
            //BeautyMM12
            var remainSeconds = BeautyMMManager.Instance.recoverTravelEnergyTime * 60 - (TimeUtility.AllSeconds - BeautyMMManager.Instance.m_EnergyTime);
            timeText.text = Language.Get("BeautyMM12", TimeUtility.SecondsToMS((int)remainSeconds));
        }
    }
    void DisplyRate()
@@ -145,8 +167,8 @@
    Dictionary<int, int> buildEffectDic = new Dictionary<int, int>()
    {
        {1, 1073},
        {2, 1078},
        {3, 1083}
        {4, 1078},
        {6, 1083}
    };
    void DisplayBuildResult()
    {
@@ -157,7 +179,43 @@
        }
        buildResultBtn.SetActive(true);
        var startEffectID = buildEffectDic[BeautyMMManager.Instance.m_SceneryType] + GetSuccessCnt();
        buildResultEffect.effectId = startEffectID;
        buildResultEffect.isPlaySpineLoop = true;
        buildResultEffect.Play(1);
        //public uint m_SceneryLVInfo;    //景观升级信息:0-还未处理景观升级;个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
        for (int i = 0; i < whatImgs.Length; i++)
        {
            //0显示问号 1 成功 2 失败
            var value = BeautyMMManager.Instance.m_SceneryLVInfo;
            for (int j = 0; j < i; j++)
            {
                value /= 10;
            }
            var result = value % 10;
            whatImgs[i].SetActive(result == 0);
            rightImgs[i].SetActive(result == 1);
            wrongImgs[i].SetActive(result == 2);
        }
    }
    //public uint m_SceneryLVInfo;    //景观升级信息:0-还未处理景观升级;个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
    int GetSuccessCnt()
    {
        uint value = BeautyMMManager.Instance.m_SceneryLVInfo;
        //总共4次
        var cnt = 0;
        for (int i = 0; i < 4; i++)
        {
            if (value % 10 == 1)
            {
                cnt++;
            }
            value /= 10;
        }
        return cnt;
    }
    void BuildLVUP()
@@ -189,7 +247,7 @@
        if (ui is CommonGetItemWin)
        {
            var gird = BeautyMMManager.Instance.GetGrid(BeautyMMManager.Instance.clickGirdPos);
            if (gird != null && gird.EventID == (int)GirdEventType.Door)
            if (BeautyMMManager.Instance.isClickDoor && gird != null && gird.EventID == (int)GirdEventType.Door)
            {
                //默认请求下一局
                var pack = new CB040_tagCSTravelClick();