yyl
5 天以前 42cd1608acf5bb9f99ee16fa6db7d7e7fff072c6
125 防止重复注册事件的内容
3个文件已修改
84 ■■■■■ 已修改文件
Main/System/Battle/BattleField/StoryBattleField.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FuncPreset/FuncPresetManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/Extension.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/StoryBattleField.cs
@@ -62,7 +62,12 @@
        // LoadBattleMode();
        lastPresetID = TeamManager.Instance.GetMainTeamID();
        //  防止重复注册的问题
        TeamManager.Instance.OnTeamChange.RemoveCompletely(OnTeamChange);
        TeamManager.Instance.OnTeamChange += OnTeamChange;
        FuncPresetManager.Instance.OnFuncPresetUseDataEvent.RemoveCompletely(OnFuncPresetUseDataEvent);
        FuncPresetManager.Instance.OnFuncPresetUseDataEvent += OnFuncPresetUseDataEvent;
    }
Main/System/FuncPreset/FuncPresetManager.cs
@@ -15,7 +15,7 @@
    //所有预设方案的保存信息 全局方案ID :子功能类型(配表):子方案ID
    Dictionary<int, Dictionary<int, int>> m_FuncPresetSaveDict = new Dictionary<int, Dictionary<int, int>>();
    public event Action<int> OnFuncPresetUseDataEvent;  //0 更换子方案,1 更换全局方案,2 解锁/更改名
    public Action<int> OnFuncPresetUseDataEvent;  //0 更换子方案,1 更换全局方案,2 解锁/更改名
    public const int GlobalDefaultPresetID = 1; //默认全局方案ID
    public const int FuncDefaultPresetID = 1;   //默认子功能方案ID
Main/Utility/Extension.cs
@@ -1,4 +1,77 @@
class Extension
{
using System;
using System.Collections.Generic;
public static class Extension
{
    public static void RemoveCompletely<T>(this System.Action<T> action, Action<T> removeAction)
    {
        if (null == action)
        {
            return;
        }
        Delegate[] invocations = action.GetInvocationList();
        for (int i = 0; i < invocations.Length; i++)
        {
            if (invocations[i].Equals(removeAction))
            {
                action -= removeAction;
            }
        }
    }
    public static void RemoveCompletely<T, U>(this System.Action<T, U> action, Action<T, U> removeAction)
    {
        if (null == action)
        {
            return;
        }
        Delegate[] invocations = action.GetInvocationList();
        for (int i = 0; i < invocations.Length; i++)
        {
            if (invocations[i].Equals(removeAction))
            {
                action -= removeAction;
            }
        }
    }
    public static void RemoveCompletely(this System.Action action, Action removeAction)
    {
        if (null == action)
        {
            return;
        }
        Delegate[] invocations = action.GetInvocationList();
        for (int i = 0; i < invocations.Length; i++)
        {
            if (invocations[i].Equals(removeAction))
            {
                action -= removeAction;
            }
        }
    }
    public static void RemoveCompletely<T, U, V>(this System.Action<T, U, V> action, Action<T, U, V> removeAction)
    {
        if (null == action)
        {
            return;
        }
        Delegate[] invocations = action.GetInvocationList();
        for (int i = 0; i < invocations.Length; i++)
        {
            if (invocations[i].Equals(removeAction))
            {
                action -= removeAction;
            }
        }
    }
}