feat: 新增矿池机制

This commit is contained in:
chenchun
2024-10-15 18:32:50 +08:00
parent 1c6a795061
commit e8fcab4c6b
13 changed files with 313 additions and 20 deletions

View File

@@ -0,0 +1,16 @@
using System.ComponentModel.DataAnnotations;
using System.Reflection;
using Yi.Framework.DigitalCollectibles.Domain.Shared.Consts;
namespace Yi.Framework.DigitalCollectibles.Domain.Shared.Attributes;
public class ProbabilityAttribute : Attribute
{
public double Value { get; set; }
public ProbabilityAttribute(double value)
{
this.Value = value;
}
}

View File

@@ -0,0 +1,9 @@
namespace Yi.Framework.DigitalCollectibles.Domain.Shared.Consts;
public class CacheConst
{
/// <summary>
/// 矿池
/// </summary>
public const string MiningPoolContent = "MiningPool";
}

View File

@@ -1,4 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.Reflection;
using Yi.Framework.DigitalCollectibles.Domain.Shared.Attributes;
namespace Yi.Framework.DigitalCollectibles.Domain.Shared.Consts;
@@ -7,9 +9,50 @@ namespace Yi.Framework.DigitalCollectibles.Domain.Shared.Consts;
/// </summary>
public enum RarityEnum
{
[Display(Name = "普通")] Ordinary = 0,
[Display(Name = "高级")] Senior = 1,
[Display(Name = "稀有")] Rare = 2,
[Display(Name = "珍品")] Gem = 3,
[Display(Name = "传说")] Legend = 4
[Display(Name = "普通")][Probability(0.8f)] Ordinary = 0,
[Display(Name = "高级")][Probability(0.1f)] Senior = 1,
[Display(Name = "稀有")][Probability(0.06f)] Rare = 2,
[Display(Name = "珍品")][Probability(0.039f)] Gem = 3,
[Display(Name = "传说")][Probability(0.001f)] Legend = 4
}
public static class RarityEnumExtensions
{
private static T GetAttribute<T>(RarityEnum rarity) where T : Attribute
{
var fieldInfo = typeof(RarityEnum).GetField(rarity.ToString());
var attribute = fieldInfo.GetCustomAttribute<T>();
return attribute!;
}
public static decimal GetProbabilityValue(this RarityEnum rarity)
{
var attribute = GetAttribute<ProbabilityAttribute>(rarity);
return attribute.Value.To<decimal>();
}
public static string GetDisplayValue(this RarityEnum rarity)
{
var display = GetAttribute<DisplayAttribute>(rarity);
return display.Name!;
}
public static decimal[] GetProbabilityValues()
{
List<decimal> probabilityList = new List<decimal>();
foreach (var field in typeof(RarityEnum).GetFields())
{
// 获取特性
var attribute = field.GetCustomAttribute<ProbabilityAttribute>();
if (attribute != null)
{
// 将特性值添加到列表
probabilityList.Add(attribute.Value.To<decimal>());
}
}
return probabilityList.ToArray();
}
}

View File

@@ -0,0 +1,50 @@
namespace Yi.Framework.DigitalCollectibles.Domain.Shared.Dtos;
/// <summary>
/// 矿池内容
/// </summary>
public class MiningPoolContent
{
public MiningPoolContent(DateTime startTime, DateTime endTime)
{
StartTime = startTime;
EndTime = endTime;
}
/// <summary>
/// 普通藏品剩余数量
/// </summary>
public int I0_OrdinaryNumber { get; set; }
/// <summary>
/// 高级藏品剩余数量
/// </summary>
public int I1_SeniorNumber { get; set; }
/// <summary>
/// 稀有藏品剩余数量
/// </summary>
public int I2_RareNumber { get; set; }
/// <summary>
/// 珍品藏品剩余数量
/// </summary>
public int I3_GemNumber { get; set; }
/// <summary>
/// 传说藏品剩余数量
/// </summary>
public int I4_LegendNumber { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime StartTime{ get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime EndTime{ get; set; }
}

View File

@@ -10,7 +10,6 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Dtos\" />
<Folder Include="Enums\" />
<Folder Include="Etos\" />
</ItemGroup>