@@ -126,9 +126,34 @@ public void ProcessReplayData(ReplayDataTTRM data, List<TetrLoader.JsonClass.Eve
126
126
127
127
if ( events != null )
128
128
{
129
- for ( var index = 0 ; index < events . Count ; index ++ )
129
+ /*bool fullFlag = false;
130
+ bool startFlag = false;
131
+ foreach (var ev in events)
130
132
{
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 ] ;
132
157
if ( @event . type == EventType . Ige )
133
158
{
134
159
dynamic eventDynamic = @event ;
@@ -162,7 +187,7 @@ public void ProcessReplayData(ReplayDataTTRM data, List<TetrLoader.JsonClass.Eve
162
187
var newEvent = new EventIge ( null , eventDynamic . frame , EventType . Ige , igeData ) ;
163
188
164
189
165
- events [ index ] = newEvent ;
190
+ events [ eventIndex ] = newEvent ;
166
191
}
167
192
else if ( @event . type == EventType . Full )
168
193
{
@@ -225,11 +250,17 @@ public string GetUsername(int playerIndex, int version)
225
250
{
226
251
foreach ( var rawEventbyPlayer in data ? [ replayIndex ] . replays )
227
252
{
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 ) ;
233
264
if ( eventUserName == username )
234
265
return rawEventbyPlayer . events ;
235
266
}
0 commit comments