Skip to content

Commit 9ca89b4

Browse files
author
CSDotNET0211
committedMar 27, 2024
latest
1 parent 7e6dd2e commit 9ca89b4

File tree

7 files changed

+63
-39
lines changed

7 files changed

+63
-39
lines changed
 

‎ConsoleApp/Program.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77

88
START: ;
99
string jsonString = string.Empty;
10-
//string fileName = Console.ReadLine();
11-
string fileName = @"C:\Users\CSDotNET\Downloads\config.ttc";
12-
fileName = fileName.Replace("\"",
10+
string fileName = Console.ReadLine();
11+
//string fileName = @"C:\Users\CSDotNET\Downloads\config.ttc";
12+
/*fileName = fileName.Replace("\"",
1313
var json=JsonSerializer.Deserialize<ConfigDataTTC>(File.ReadAllText(fileName));
14-
"");
14+
"");*/
1515

1616
using (StreamReader reader = new StreamReader(fileName, Encoding.UTF8))
1717
{

‎TetrLoader/IReplayData.cs

+12-18
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,19 @@ namespace TetrLoader
77
{
88
public interface IReplayData
99
{
10-
List<Event>? GetReplayEvents(string username, int gameIndex);
11-
int GetPlayerCount();
12-
Stats GetReplayStats(string username, int replayIndex);
13-
int GetGameTotalFrames(int replayIndex);
14-
string GetUsername(int playerIndex,int version);
15-
int GetGamesCount();
16-
17-
int? GetEndEventFrame(string username, int replayIndex);
18-
19-
EndContext GetEndContext(int playerIndex);
20-
string[] GetUsernames();
21-
22-
GameType? GetGameType();
23-
24-
10+
List<Event>? GetReplayEvents(string username, int gameIndex);
11+
int GetPlayerCount();
12+
Stats GetReplayStats(string username, int replayIndex);
13+
int GetGameTotalFrames(int replayIndex);
14+
string GetUsername(int playerIndex, int version);
2515

16+
int GetGamesCount();
2617

18+
//EventFullData GetEventFullData(string rawEvents);
19+
int? GetEndEventFrame(string username, int replayIndex);
20+
EndContext GetEndContext(int playerIndex);
21+
string[] GetUsernames();
2722

23+
GameType? GetGameType();
2824
}
29-
30-
31-
}
25+
}

‎TetrLoader/JsonClass/Event/EventEnd.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ public EventEnd(int? id, int frame, EventType? type, EventEndData data) : base(i
1515
public class EventEndData
1616
{
1717
public string? reason { get; set; } = null;
18-
public Export? export { get; set; } = null;
18+
public EventFullData? export { get; set; } = null;
1919
}
2020
}

‎TetrLoader/JsonClass/Event/EventFull.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ public EventFull(int? id,int frame,EventType? type, EventFullData data) : base(i
88
{
99
this.data = data;
1010
}
11-
1211
public new EventFullData data { get; set; }
1312
}
1413

@@ -24,5 +23,7 @@ public class EventFullData
2423
public EventFullOptionsData? options { get; set; } = null;
2524
public EventFullStatsData? stats { get; set; } = null;
2625
public EventFullGameData? game { get; set; } = null;
26+
27+
public AggregateStats? aggregatestats { get; set; } = null;
2728
}
2829
}

‎TetrLoader/JsonClass/Event/EventFullOptions.cs

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class EventFullOptionsData
3232
public bool? physical { get; set; }
3333
public bool? display_username { get; set; }
3434
public string? username { get; set; }
35+
public User? user { get; set; }
3536
public int? nextcount { get; set; }
3637
public int? stock { get; set; }
3738
public bool? hasgarbage { get; set; }

‎TetrLoader/JsonClass/ReplayDataTTRM.cs

+39-8
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,34 @@ public void ProcessReplayData(ReplayDataTTRM data, List<TetrLoader.JsonClass.Eve
126126

127127
if (events != null)
128128
{
129-
for (var index = 0; index < events.Count; index++)
129+
/*bool fullFlag = false;
130+
bool startFlag = false;
131+
foreach (var ev in events)
130132
{
131-
var @event = events[index];
133+
if (ev.type == EventType.Start)
134+
{
135+
startFlag = true;
136+
}
137+
138+
//TODO:fullを追加してfullとendの強制対応を消す
139+
if (ev.type == EventType.Full)
140+
{
141+
fullFlag = true;
142+
}
143+
}
144+
145+
if (!fullFlag)
146+
{
147+
var eventEnd = (events.LastOrDefault(ev => ev.type == EventType.End) as EventEnd).data;
148+
events.Insert(0, new Event.EventFull(0, 0, EventType.Full, eventEnd.export));
149+
}
150+
151+
if (!startFlag)
152+
events.Insert(0, new Event.Event(0, 0, EventType.Start));
153+
*/
154+
for (var eventIndex = 0; eventIndex < events.Count; eventIndex++)
155+
{
156+
var @event = events[eventIndex];
132157
if (@event.type == EventType.Ige)
133158
{
134159
dynamic eventDynamic = @event;
@@ -162,7 +187,7 @@ public void ProcessReplayData(ReplayDataTTRM data, List<TetrLoader.JsonClass.Eve
162187
var newEvent = new EventIge(null, eventDynamic.frame, EventType.Ige, igeData);
163188

164189

165-
events[index] = newEvent;
190+
events[eventIndex] = newEvent;
166191
}
167192
else if (@event.type == EventType.Full)
168193
{
@@ -225,11 +250,17 @@ public string GetUsername(int playerIndex, int version)
225250
{
226251
foreach (var rawEventbyPlayer in data?[replayIndex].replays)
227252
{
228-
var eventFull = rawEventbyPlayer.events?.FirstOrDefault(ev => ev.type == EventType.Full);
229-
if (eventFull == null)
230-
return null;
231-
string eventFullStr = eventFull.data.ToString();
232-
var eventUserName = Util.GetUsername(ref eventFullStr);
253+
var options = (rawEventbyPlayer.events?.FirstOrDefault(ev => ev.type == EventType.Full) as EventFull)?.data
254+
.options;
255+
256+
options ??= JsonSerializer
257+
.Deserialize<EventEndData>(rawEventbyPlayer.events?.LastOrDefault(ev => ev.type == EventType.End).data
258+
.ToString()).export.options;
259+
260+
if (options == null)
261+
throw new Exception("not full or end event detected");
262+
263+
var eventUserName = Util.GetUsernameFromFullData(options);
233264
if (eventUserName == username)
234265
return rawEventbyPlayer.events;
235266
}

‎TetrLoader/Util.cs

+4-7
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,11 @@ public static string GetIgeDataType(ref string igeJsonString)
3030
throw new Exception("unknown type");
3131
}
3232

33-
public static string GetUsername(ref string fullDataString)
33+
public static string GetUsernameFromFullData(EventFullOptionsData fullDataOptionsData)
3434
{
35-
JsonDocument json = JsonDocument.Parse(fullDataString);
36-
JsonElement usernameString;
37-
if (!json.RootElement.GetProperty("options").TryGetProperty("username", out usernameString))
38-
json.RootElement.GetProperty("options").GetProperty("user").TryGetProperty("username", out usernameString);
39-
40-
return usernameString.GetString();
35+
string? username = fullDataOptionsData.username;
36+
username ??= fullDataOptionsData.user.username;
37+
return username;
4138
}
4239

4340
/// <summary>

0 commit comments

Comments
 (0)