mirror of
				https://gitlab.com/Kwoth/nadekobot.git
				synced 2025-11-03 16:24:27 -05:00 
			
		
		
		
	- Added Cloneable deep clone source generator nuget package
- Configs are no cloned using generated clone, not by serializing/deserializing - Arrays/Lists (collections in geneeral) are still not cloned properly - Removed GetRawData from config as it is no longer needed, new clone is very fast - Added ICloneable<T> which all configs implement - Cleaned up config classes/code
This commit is contained in:
		@@ -1,5 +1,6 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Globalization;
 | 
			
		||||
using Cloneable;
 | 
			
		||||
using NadekoBot.Common.Yml;
 | 
			
		||||
using SixLabors.ImageSharp.PixelFormats;
 | 
			
		||||
using YamlDotNet.Core;
 | 
			
		||||
@@ -7,7 +8,8 @@ using YamlDotNet.Serialization;
 | 
			
		||||
 | 
			
		||||
namespace NadekoBot.Common.Configs
 | 
			
		||||
{
 | 
			
		||||
    public sealed class BotConfig
 | 
			
		||||
    [Cloneable]
 | 
			
		||||
    public sealed partial class BotConfig : ICloneable<BotConfig>
 | 
			
		||||
    {
 | 
			
		||||
        [Comment(@"DO NOT CHANGE")]
 | 
			
		||||
        public int Version { get; set; }
 | 
			
		||||
@@ -66,6 +68,7 @@ note: This setting is primarily used if you're afraid of raids, or you're runnin
 | 
			
		||||
      servers might get hundreds of people join at once. This is used to prevent the bot from getting ratelimited,
 | 
			
		||||
      and (slightly) reduce the greet spam in those servers.")]
 | 
			
		||||
        public bool GroupGreets { get; set; }
 | 
			
		||||
        
 | 
			
		||||
        [Comment(@"Whether the bot will rotate through all specified statuses.
 | 
			
		||||
This setting can be changed via .rots command.
 | 
			
		||||
See RotatingStatuses submodule in Administration.")]
 | 
			
		||||
@@ -127,7 +130,8 @@ See RotatingStatuses submodule in Administration.")]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class BlockedConfig
 | 
			
		||||
    [Cloneable]
 | 
			
		||||
    public sealed partial class BlockedConfig
 | 
			
		||||
    {
 | 
			
		||||
        public HashSet<string> Commands { get; set; }
 | 
			
		||||
        public HashSet<string> Modules { get; set; }
 | 
			
		||||
@@ -139,7 +143,8 @@ See RotatingStatuses submodule in Administration.")]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class ColorConfig
 | 
			
		||||
    [Cloneable]
 | 
			
		||||
    public partial class ColorConfig
 | 
			
		||||
    {
 | 
			
		||||
        [Comment(@"Color used for embed responses when command successfully executes")]
 | 
			
		||||
        public Rgba32 Ok { get; set; }
 | 
			
		||||
@@ -157,6 +162,7 @@ See RotatingStatuses submodule in Administration.")]
 | 
			
		||||
            Pending = Rgba32.ParseHex("faa61a");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public enum ConsoleOutputType
 | 
			
		||||
    {
 | 
			
		||||
        Normal = 0,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								src/NadekoBot/Common/ICloneable.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/NadekoBot/Common/ICloneable.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
namespace NadekoBot.Common
 | 
			
		||||
{
 | 
			
		||||
    public interface ICloneable<T> where T : new()
 | 
			
		||||
    {
 | 
			
		||||
        public T Clone();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user