-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
NordschleifeTrackdayConfiguration.cs
74 lines (65 loc) · 2.92 KB
/
NordschleifeTrackdayConfiguration.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using AssettoServer.Server.Configuration;
namespace NordschleifeTrackdayPlugin;
public class NordschleifeTrackdayConfiguration : IValidateConfiguration<NordschleifeTrackdayConfigurationValidator>
{
public string DatabasePath { get; init; } = "";
public List<ulong> Admins { get; init; } = [];
public List<ulong> ConvoyLeaders { get; init; } = [];
public Dictionary<string, int> Cars { get; init; } = [];
public List<string> StarterCars { get; init; } = [];
public Dictionary<int, int> CleanLapBonuses { get; init; } = [];
public MetricsConfiguration Metrics { get; init; } = new();
public ExtraCleanLapBonusConfiguration ExtraCleanLapBonus { get; init; } = new();
public AnnouncementsConfiguration Announcements { get; init; } = new();
public DiscordWebhookConfiguration DiscordWebhook { get; init; } = new();
public IdleKickConfiguration IdleKick { get; init; } = new();
public ExtraConfiguration Extra { get; init; } = new();
}
public class MetricsConfiguration
{
public int StartingPoints { get; set; } = 500;
public int PointsDeductLeavePits { get; set; } = 3;
public int PointsDeductInvalidLap { get; set; } = 250;
public int PointsDeductPitReEnter { get; set; } = 200;
public double PointsDeductBySpeedFactor { get; set; } = 1.4;
public int PointsDeductCollisionMax { get; set; } = 400;
public int PointsRewardPerLap { get; set; } = 30;
public int PointsRewardBeatPb { get; set; } = 50;
public int PointsRewardBeatOtherPb { get; set; } = 75;
public int PointsRewardConvoy { get; set; } = 150;
}
public class ExtraCleanLapBonusConfiguration
{
public bool Enabled { get; set; } = true;
public int NeededCleanLaps { get; set; } = 10;
public int BonusPoints { get; set; } = 100;
}
public class AnnouncementsConfiguration
{
public bool Enabled { get; set; } = true;
public int Interval { get; set; } = 600;
public List<string> Messages { get; init; } = [];
}
public class DiscordWebhookConfiguration
{
public bool Enabled { get; set; } = true;
public string WebhookURL { get; set; } = "";
}
public class IdleKickConfiguration
{
public bool Enabled { get; set; } = true;
public int DefaultMaxIdleTime { get; init; } = 600;
public int LongerMaxIdleTime { get; init; } = 900;
public int StarterMaxIdleTime { get; init; } = 3600;
public bool AllowLongerMaxIdleForCleanLaps { get; init; } = true;
public int LongerMaxIdleNeededCleanLaps { get; init; } = 5;
}
public class ExtraConfiguration
{
public bool DoublePointWeekend { get; init; } = true;
public bool ImmediateKickCarNotUnlocked { get; init; } = false;
public bool AssignConvoyLeadersByPoints { get; init; } = true;
public int Next2UnlockMaxEntries { get; init; } = 6;
public int ConvoyLeadersNeededPoints { get; init; } = 6500;
public bool CountCollisionsInPits { get; init; } = true;
}