Skip to content

Commit 9890334

Browse files
committed
add team 1 constants
1 parent 9948621 commit 9890334

File tree

4 files changed

+98
-33
lines changed

4 files changed

+98
-33
lines changed

src/dsstats.db8cli/Program.cs

Lines changed: 45 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -82,22 +82,38 @@ static void Main(string[] args)
8282
var context = scope.ServiceProvider.GetRequiredService<ReplayContext>();
8383
var logger = scope.ServiceProvider.GetRequiredService<ILogger<Program>>();
8484

85-
var playerService = scope.ServiceProvider.GetRequiredService<IPlayerService>();
86-
87-
//var result = playerService.GetPlayerPlayerIdSummary(new(226401, 1, 2), RatingType.Cmdr, RatingCalcType.Dsstats)
88-
// .GetAwaiter().GetResult();
85+
var minDate = new DateTime(2023, 1, 1);
86+
var query = from r in context.Replays
87+
from rp in r.ReplayPlayers
88+
from s in rp.Spawns
89+
from su in s.Units
90+
where r.GameTime > minDate && rp.Team == 1 && rp.Race == Commander.Zerg && s.Breakpoint == Breakpoint.All
91+
select su.Poss;
92+
var posString = query.ToList();
93+
94+
var allCoords = new List<(int x, int y)>();
95+
96+
foreach (var poss in posString)
97+
{
98+
var nums = poss
99+
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
100+
.Select(int.Parse)
101+
.ToList();
89102

90-
//PlayerDetailRequest request = new()
91-
//{
92-
// RequestNames = new("PAX", 226401, 2, 1),
93-
// TimePeriod = TimePeriod.Patch2_71,
94-
// RatingType = RatingType.Cmdr,
95-
//};
103+
for (int i = 0; i < nums.Count - 1; i += 2)
104+
{
105+
allCoords.Add((nums[i], nums[i + 1]));
106+
}
107+
}
96108

97-
//var details = playerService.GetPlayerIdPlayerDetails(request).GetAwaiter().GetResult();
109+
int xMin = allCoords.Min(p => p.x);
110+
int xMax = allCoords.Max(p => p.x);
111+
int yMin = allCoords.Min(p => p.y);
112+
int yMax = allCoords.Max(p => p.y);
98113

99-
var r = playerService.GetPlayerIdPlayerRatingDetails(new(226401, 1, 2), RatingType.Cmdr, RatingCalcType.Dsstats)
100-
.GetAwaiter().GetResult();
114+
// Output results
115+
Console.WriteLine($"xMin: {xMin}, xMax: {xMax}");
116+
Console.WriteLine($"yMin: {yMin}, yMax: {yMax}");
101117

102118
Console.ReadLine();
103119
}
@@ -106,22 +122,22 @@ public static async Task GetWinrate(ReplayContext context)
106122
{
107123
DateTime fromDate = new DateTime(2023, 07, 01);
108124
var group = from r in context.Replays
109-
from rp in r.ReplayPlayers
110-
join rr in context.ReplayRatings on r.ReplayId equals rr.ReplayId
111-
join rpr in context.RepPlayerRatings on rp.ReplayPlayerId equals rpr.ReplayPlayerId
112-
where r.GameTime > fromDate
113-
&& r.Duration > 300
114-
&& rr.RatingType == RatingType.Cmdr
115-
group new { rp, rr, rpr, r } by rp.Race into g
116-
select new AvgResult()
117-
{
118-
Commander = g.Key,
119-
Count = g.Count(),
120-
AvgRating = Math.Round(g.Average(a => a.rpr.Rating), 2),
121-
AvgGain = Math.Round(g.Average(a => a.rpr.RatingChange), 2),
122-
Wins = g.Sum(s => s.rp.PlayerResult == PlayerResult.Win ? 1 : 0),
123-
Replays = g.Select(s => s.r.ReplayId).Distinct().Count()
124-
};
125+
from rp in r.ReplayPlayers
126+
join rr in context.ReplayRatings on r.ReplayId equals rr.ReplayId
127+
join rpr in context.RepPlayerRatings on rp.ReplayPlayerId equals rpr.ReplayPlayerId
128+
where r.GameTime > fromDate
129+
&& r.Duration > 300
130+
&& rr.RatingType == RatingType.Cmdr
131+
group new { rp, rr, rpr, r } by rp.Race into g
132+
select new AvgResult()
133+
{
134+
Commander = g.Key,
135+
Count = g.Count(),
136+
AvgRating = Math.Round(g.Average(a => a.rpr.Rating), 2),
137+
AvgGain = Math.Round(g.Average(a => a.rpr.RatingChange), 2),
138+
Wins = g.Sum(s => s.rp.PlayerResult == PlayerResult.Win ? 1 : 0),
139+
Replays = g.Select(s => s.r.ReplayId).Distinct().Count()
140+
};
125141

126142
var data = await group.ToListAsync();
127143
data = data.Where(x => (int)x.Commander > 3).ToList();

src/dsstats.db8cli/dsstats.db8cli.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</ItemGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
10+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
1111
</ItemGroup>
1212

1313
<PropertyGroup>

src/dsstats.maui/dsstats.builder/dsstats.builder/BuildArea.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,28 @@ namespace dsstats.builder;
88
/// </summary>
99
public class BuildArea
1010
{
11-
private List<RlPoint> polygon =
11+
private List<RlPoint> polygon = [];
12+
private List<RlPoint> polygon2 =
1213
[
1314
new RlPoint(73, 82), // Left
1415
new RlPoint(84, 93), // Top
1516
new RlPoint(101, 76), // Right
1617
new RlPoint(90, 65), // Bottom
1718
];
19+
private List<RlPoint> polygon1 =
20+
[
21+
new RlPoint(154, 163), // Left
22+
new RlPoint(165, 174), // Top
23+
new RlPoint(182, 157), // Right
24+
new RlPoint(171, 146), // Bottom
25+
];
1826
private Dictionary<string, HashSet<RlPoint>> units = [];
1927

28+
public BuildArea(int team)
29+
{
30+
polygon = team == 1 ? polygon1 : polygon2;
31+
}
32+
2033
public List<InputEvent> GetBuildEvents(ScreenArea screenArea, CmdrBuild build)
2134
{
2235
List<InputEvent> events = [];

src/dsstats.maui/dsstats.builder/dsstats.builder/DsBuilder.cs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,45 @@ public static List<InputEvent> BuildArmy(Commander commander, int screenWidth, i
4040
return events;
4141
}
4242

43+
public static void Build(SpawnDto spawn, Commander commander, int team)
44+
{
45+
Thread.Sleep(2500);
46+
int screenWidth = User32Wrapper.GetSystemMetrics(User32Wrapper.SM_CXSCREEN);
47+
int screenHeight = User32Wrapper.GetSystemMetrics(User32Wrapper.SM_CYSCREEN);
48+
var build = CmdrBuildFactory.Create(commander);
49+
if (build is null)
50+
{
51+
return;
52+
}
53+
int workerKey = team == 1 ? 0x31 : 0x32;
54+
List<InputEvent> events = [];
55+
56+
// zoom out
57+
events.Add(new(InputType.KeyPress, 0, 0, User32Wrapper.VK_PRIOR, DelayMs));
58+
events.Add(new(InputType.KeyPress, 0, 0, User32Wrapper.VK_PRIOR, DelayMs));
59+
events.Add(new(InputType.KeyPress, 0, 0, User32Wrapper.VK_PRIOR, DelayMs));
60+
events.Add(new(InputType.KeyPress, 0, 0, User32Wrapper.VK_PRIOR, DelayMs));
61+
events.Add(new(InputType.KeyPress, 0, 0, User32Wrapper.VK_PRIOR, DelayMs));
62+
63+
// center worker
64+
events.Add(new(InputType.KeyPress, 0, 0, workerKey, DelayMs));
65+
events.AddRange(ScrollCenter(workerKey));
66+
67+
// setup
68+
events.AddRange(EnterString("Infinite"));
69+
events.AddRange(EnterString("Clear"));
70+
events.AddRange(EnterString($"Enemy {commander}"));
71+
72+
// build
73+
events.Add(new(InputType.KeyPress, 0, 0, 0x51, DelayMs));
74+
75+
events.AddRange(GetBuildEvents(spawn, build, team, screenWidth, screenHeight));
76+
BuildPlayer.ReplayInput(events);
77+
}
78+
4379
private static List<InputEvent> GetBuildEvents(SpawnDto spawn, CmdrBuild build, int team, int screenWidth, int screenHeight)
4480
{
45-
var buildArea = new BuildArea();
81+
var buildArea = new BuildArea(team);
4682
var screenArea = new ScreenArea(screenWidth, screenHeight);
4783
foreach (var unit in spawn.Units)
4884
{
@@ -65,7 +101,7 @@ private static List<InputEvent> BuildTestUnits(int screenWidth, int screenHeight
65101

66102
HashSet<RlPoint> rlPoints = [];
67103

68-
var buildArea = new BuildArea();
104+
var buildArea = new BuildArea(team);
69105
buildArea.PlaceUnits("Zergling", swarmlings, team);
70106
buildArea.PlaceUnits("Baneling", banelings, team);
71107

0 commit comments

Comments
 (0)