1
0
mirror of synced 2025-02-12 08:52:57 +01:00
2022-06-18 22:11:14 +08:00

105 lines
3.3 KiB
C#

using SharedProject.models;
using GenFu;
using SharedProject.enums;
namespace MudAdmin.Utils;
public class MockDataRepo
{
private static readonly MockDataRepo INSTANCE = new MockDataRepo();
public List<User> Users { get; }
public List<UserDetail> UserDetails { get; private set; } = null!;
public List<SongPlayData> SongPlayDataList { get; private set; } = null!;
private MockDataRepo()
{
ConfigureGenFu();
Users = GenFu.GenFu.ListOf<User>(10);
GenerateUserDetails();
GenerateSongPlayData();
}
private void GenerateSongPlayData()
{
SongPlayDataList = GenFu.GenFu.ListOf<SongPlayData>();
foreach (var songPlayData in SongPlayDataList)
{
var subDataList = new List<SongPlayDetailData>();
var random = new Random();
foreach (var difficulty in Enum.GetValues<Difficulty>())
{
if (random.Next() <= int.MaxValue / 2)
{
continue;
}
var subData = GenFu.GenFu.New<SongPlayDetailData>();
subData.Difficulty = difficulty;
if (subData.ClearState == ClearState.Perfect)
{
subData.ClearState = ClearState.FullChain;
}
subDataList.Add(subData);
}
songPlayData.SongPlaySubDataList = subDataList;
}
}
private void GenerateUserDetails()
{
UserDetails = new List<UserDetail>();
foreach (var user in Users)
{
var detail = GenFu.GenFu.New<UserDetail>();
detail.CardId = user.CardId;
detail.PlayerName = user.PlayerName;
detail.PlayOption = new PlayOption
{
CardId = user.CardId,
FeverTrance = PlayOptions.FeverTranceShow.Show,
FastSlowIndicator = PlayOptions.FastSlowIndicator.NotUsed
};
detail.AverageScore = 900000;
detail.TotalScore = 10000000;
detail.TotalSongCount = 123;
detail.TotalStageCount = 390;
UserDetails.Add(detail);
}
}
public static MockDataRepo GetMockDataRepo()
{
return INSTANCE;
}
private void ConfigureGenFu()
{
GenFu.GenFu.Configure<User>()
.Fill(user => user.CardId, () => new Random().NextInt64(7000000000000000, 8000000000000000));
GenFu.GenFu.Configure<UserDetail>()
.Fill(detail => detail.PlayedSongCount).WithinRange(100, 123)
.Fill(detail => detail.ClearedStageCount).WithinRange(300, 390)
.Fill(detail => detail.NoMissStageCount).WithinRange(200, 300)
.Fill(detail => detail.FullChainStageCount).WithinRange(100, 200)
.Fill(detail => detail.PerfectStageCount).WithinRange(0, 100)
.Fill(detail => detail.SAboveStageCount).WithinRange(200, 300)
.Fill(detail => detail.SPlusAboveStageCount).WithinRange(100, 200)
.Fill(detail => detail.SPlusPlusAboveStageCount).WithinRange(0, 100);
GenFu.GenFu.Configure<SongPlayDetailData>()
.Fill(data => data.Score).WithinRange(0, 1000001);
GenFu.GenFu.Configure<SongPlayData>()
.Fill(data => data.ShowDetails, false);
}
}