63 lines
2.3 KiB
C#
63 lines
2.3 KiB
C#
using System.Drawing;
|
||
using LootBoxSimulator.Models.DAO;
|
||
|
||
RemoteDatabaseContext databaseContext = new RemoteDatabaseContext();
|
||
|
||
|
||
var sum = databaseContext.Rates.Select(dsadsa => dsadsa.Rate).Sum();
|
||
|
||
var result = RandomizeRate();
|
||
var item = RandomizeItem(result);
|
||
Console.WriteLine($"{item?.Name} {item?.Id}");
|
||
|
||
ItemDao? RandomizeItem(RateDao? rateDao){
|
||
if(rateDao == null) return null;
|
||
var items = databaseContext.Items
|
||
.Where(item =>
|
||
item.Rate.Id == rateDao.Id
|
||
).ToList();
|
||
if(items.Count == 0) return null;
|
||
Random random = new Random();
|
||
int randomIndex = random.Next(0, items.Count);
|
||
return items[randomIndex];
|
||
}
|
||
|
||
|
||
RateDao? RandomizeRate()
|
||
{
|
||
var rates = databaseContext
|
||
.Rates
|
||
.OrderByDescending(item => item.Rate).ToList();
|
||
if (rates.Count == 0) return null;
|
||
decimal start = 0;
|
||
decimal end = rates[0].Rate;
|
||
Random random = new Random();
|
||
decimal number = Convert.ToDecimal(random.NextDouble());
|
||
for (var i = 0; i < rates.Count; i++)
|
||
{
|
||
if (number >= start && number <= end)
|
||
{
|
||
Console.WriteLine($"{number} {start} {end}");
|
||
return rates[i];
|
||
}
|
||
|
||
start = end;
|
||
end += rates[i].Rate;
|
||
}
|
||
return null;
|
||
}
|
||
//при выводе информации об предмете, который выпал необходимо окрашивать
|
||
//бэкграунд в цвет редкости
|
||
//поскольку консоль поддерживает только перечисление некоторых цветов
|
||
//необходимо сделать какой-нибудь конверт из hex формата в Console.Color формат
|
||
//для упрощения заменим hex выражения в бд на названия цветов
|
||
//пример работы с бэкграундом консоли:
|
||
var rates = databaseContext.Rates;
|
||
string colorName = "Yellow";
|
||
ConsoleColor color = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), colorName);
|
||
Console.BackgroundColor = color;
|
||
Console.WriteLine("Лютый текст");
|
||
Console.ResetColor();
|
||
Console.WriteLine("Не такой лютый текст");
|
||
Console.WriteLine("Не такой лютый текст");
|
||
Console.WriteLine("Не такой лютый текст"); |