Пример #1
0
        private void RefreshListOfPatchOwners(string modId, bool reset = true)
        {
            if (reset || _modIdsToColor == null)
            {
                _modIdsToColor = new Dictionary <string, string>();
            }

            var rgbaValues = Enum.GetValues(typeof(RGBA));
            var rgbaCount  = rgbaValues.Length;

            foreach (Patch patch in Harmony.GetAllPatchedMethods().SelectMany(method => {
                Patches patches = Harmony.GetPatchInfo(method);
                return(patches.Prefixes.Concat(patches.Transpilers).Concat(patches.Postfixes));
            }))
            {
                if (!_modIdsToColor.ContainsKey(patch.owner))
                {
                    var  rgbaIndex   = Math.Abs(patch.owner.GetHashCode() % rgbaCount);
                    RGBA color       = (RGBA)rgbaValues.GetValue(rgbaIndex);
                    var  colorString = color.ToHtmlString();
                    _modIdsToColor[patch.owner] = colorString;

                    //_modIdsToColor[patch.owner] = ColorUtility.ToHtmlStringRGBA(UnityEngine.Random.ColorHSV(0f, 1f, 0.25f, 1f, 0.75f, 1f));
                }
            }
        }