LootBoxGenerator/LootBoxSimulator/Program.cs
2024-12-20 09:33:17 +03:00

63 lines
2.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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("Не такой лютый текст");