17
17
using System . Collections . Generic ;
18
18
using System . IO ;
19
19
using System . Text ;
20
+ using System . Linq ;
20
21
using System . Threading . Tasks ;
21
22
using xivModdingFramework . Cache ;
22
23
using xivModdingFramework . Exd . Enums ;
@@ -190,7 +191,6 @@ public async Task<List<XivUi>> GetActionList()
190
191
var actionCategoryExData = await _ex . ReadExData ( XivEx . actioncategory ) ;
191
192
192
193
var actionList = new List < XivUi > ( ) ;
193
-
194
194
var actionNames = new List < string > ( ) ;
195
195
196
196
await Task . Run ( ( ) => Parallel . ForEach ( actionExData . Values , ( action ) =>
@@ -225,7 +225,8 @@ await Task.Run(() => Parallel.ForEach(actionExData.Values, (action) =>
225
225
xivUi . IconNumber = iconNumber ;
226
226
}
227
227
228
- if ( xivUi . Name . Equals ( string . Empty ) ) return ;
228
+ // The Cure icon is used as a placeholder so filter out all actions that aren't Cure but are using its icon as a placeholder
229
+ if ( xivUi . Name . Equals ( string . Empty ) || ( ! xivUi . Name . Equals ( "Cure" ) && xivUi . IconNumber == 405 ) ) return ;
229
230
if ( actionNames . Contains ( xivUi . Name ) ) return ;
230
231
231
232
var actionCategoryData = actionCategoryExData [ actionCategory ] ;
@@ -278,7 +279,8 @@ await Task.Run(() => Parallel.ForEach(generalActionExData.Values, (action) =>
278
279
279
280
var iconNumber = br . ReadUInt16 ( ) ;
280
281
281
- if ( iconNumber == 0 ) return ;
282
+ // Filter out any actions using placeholder icons
283
+ if ( iconNumber == 0 || iconNumber == 405 ) return ;
282
284
283
285
br . BaseStream . Seek ( 20 , SeekOrigin . Begin ) ;
284
286
@@ -288,6 +290,8 @@ await Task.Run(() => Parallel.ForEach(generalActionExData.Values, (action) =>
288
290
xivUi . IconNumber = iconNumber ;
289
291
}
290
292
293
+ if ( xivUi . Name . Equals ( string . Empty ) ) return ;
294
+
291
295
lock ( actionLock )
292
296
{
293
297
actionNames . Add ( xivUi . Name ) ;
@@ -318,7 +322,8 @@ await Task.Run(() => Parallel.ForEach(buddyActionExData.Values, (action) =>
318
322
319
323
var iconNumber = br . ReadUInt16 ( ) ;
320
324
321
- if ( iconNumber == 0 ) return ;
325
+ // Filter out any actions using placeholder icons
326
+ if ( iconNumber == 0 || iconNumber == 405 ) return ;
322
327
323
328
br . BaseStream . Seek ( 20 , SeekOrigin . Begin ) ;
324
329
@@ -328,7 +333,7 @@ await Task.Run(() => Parallel.ForEach(buddyActionExData.Values, (action) =>
328
333
xivUi . IconNumber = iconNumber ;
329
334
}
330
335
331
- if ( actionNames . Contains ( xivUi . Name ) ) return ;
336
+ if ( xivUi . Name . Equals ( string . Empty ) ) return ;
332
337
333
338
lock ( actionLock )
334
339
{
@@ -360,7 +365,8 @@ await Task.Run(() => Parallel.ForEach(companyActionExData.Values, (action) =>
360
365
361
366
var iconNumber = br . ReadUInt16 ( ) ;
362
367
363
- if ( iconNumber == 0 ) return ;
368
+ // Filter out any actions using placeholder icons
369
+ if ( iconNumber == 0 || iconNumber == 405 ) return ;
364
370
365
371
br . BaseStream . Seek ( 20 , SeekOrigin . Begin ) ;
366
372
@@ -370,7 +376,7 @@ await Task.Run(() => Parallel.ForEach(companyActionExData.Values, (action) =>
370
376
xivUi . IconNumber = iconNumber ;
371
377
}
372
378
373
- if ( actionNames . Contains ( xivUi . Name ) ) return ;
379
+ if ( xivUi . Name . Equals ( string . Empty ) ) return ;
374
380
375
381
lock ( actionLock )
376
382
{
@@ -402,7 +408,8 @@ await Task.Run(() => Parallel.ForEach(craftActionExData.Values, (action) =>
402
408
403
409
var iconNumber = br . ReadUInt16 ( ) ;
404
410
405
- if ( iconNumber == 0 ) return ;
411
+ // Filter out any actions using placeholder icons
412
+ if ( iconNumber == 0 || iconNumber == 405 ) return ;
406
413
407
414
br . BaseStream . Seek ( 60 , SeekOrigin . Begin ) ;
408
415
@@ -412,7 +419,7 @@ await Task.Run(() => Parallel.ForEach(craftActionExData.Values, (action) =>
412
419
xivUi . IconNumber = iconNumber ;
413
420
}
414
421
415
- if ( actionNames . Contains ( xivUi . Name ) ) return ;
422
+ if ( xivUi . Name . Equals ( string . Empty ) ) return ;
416
423
417
424
lock ( actionLock )
418
425
{
@@ -440,7 +447,8 @@ await Task.Run(() => Parallel.ForEach(eventActionExData.Values, (action) =>
440
447
441
448
var iconNumber = br . ReadUInt16 ( ) ;
442
449
443
- if ( iconNumber == 0 ) return ;
450
+ // Filter out any actions using placeholder icons
451
+ if ( iconNumber == 0 || iconNumber == 405 ) return ;
444
452
445
453
br . BaseStream . Seek ( 16 , SeekOrigin . Begin ) ;
446
454
@@ -452,7 +460,7 @@ await Task.Run(() => Parallel.ForEach(eventActionExData.Values, (action) =>
452
460
xivUi . IconNumber = iconNumber ;
453
461
}
454
462
455
- if ( actionNames . Contains ( xivUi . Name ) ) return ;
463
+ if ( xivUi . Name . Equals ( string . Empty ) ) return ;
456
464
457
465
lock ( actionLock )
458
466
{
@@ -480,7 +488,8 @@ await Task.Run(() => Parallel.ForEach(emoteExData.Values, (action) =>
480
488
481
489
var iconNumber = br . ReadUInt16 ( ) ;
482
490
483
- if ( iconNumber == 0 ) return ;
491
+ // Filter out any actions using placeholder icons
492
+ if ( iconNumber == 0 || iconNumber == 405 ) return ;
484
493
485
494
br . BaseStream . Seek ( 40 , SeekOrigin . Begin ) ;
486
495
@@ -493,7 +502,7 @@ await Task.Run(() => Parallel.ForEach(emoteExData.Values, (action) =>
493
502
xivUi . IconNumber = iconNumber ;
494
503
}
495
504
496
- if ( actionNames . Contains ( xivUi . Name ) ) return ;
505
+ if ( xivUi . Name . Equals ( string . Empty ) ) return ;
497
506
498
507
lock ( actionLock )
499
508
{
@@ -521,7 +530,8 @@ await Task.Run(() => Parallel.ForEach(markerExData.Values, (action) =>
521
530
522
531
var iconNumber = br . ReadUInt16 ( ) ;
523
532
524
- if ( iconNumber == 0 ) return ;
533
+ // Filter out any actions using placeholder icons
534
+ if ( iconNumber == 0 || iconNumber == 405 ) return ;
525
535
526
536
var nameLength = action . Length - 6 ;
527
537
@@ -531,7 +541,7 @@ await Task.Run(() => Parallel.ForEach(markerExData.Values, (action) =>
531
541
xivUi . IconNumber = iconNumber ;
532
542
}
533
543
534
- if ( actionNames . Contains ( xivUi . Name ) ) return ;
544
+ if ( xivUi . Name . Equals ( string . Empty ) ) return ;
535
545
536
546
lock ( actionLock )
537
547
{
@@ -559,7 +569,8 @@ await Task.Run(() => Parallel.ForEach(fieldMarkerExData.Values, (action) =>
559
569
560
570
var iconNumber = br . ReadUInt16 ( ) ;
561
571
562
- if ( iconNumber == 0 ) return ;
572
+ // Filter out any actions using placeholder icons
573
+ if ( iconNumber == 0 || iconNumber == 405 ) return ;
563
574
564
575
br . BaseStream . Seek ( 12 , SeekOrigin . Begin ) ;
565
576
@@ -571,7 +582,7 @@ await Task.Run(() => Parallel.ForEach(fieldMarkerExData.Values, (action) =>
571
582
xivUi . IconNumber = iconNumber ;
572
583
}
573
584
574
- if ( actionNames . Contains ( xivUi . Name ) ) return ;
585
+ if ( xivUi . Name . Equals ( string . Empty ) ) return ;
575
586
576
587
lock ( actionLock )
577
588
{
@@ -580,6 +591,8 @@ await Task.Run(() => Parallel.ForEach(fieldMarkerExData.Values, (action) =>
580
591
}
581
592
} ) ) ;
582
593
594
+ // Remove any duplicates and return the sorted the list
595
+ actionList = actionList . Distinct ( ) . ToList ( ) ;
583
596
actionList . Sort ( ) ;
584
597
585
598
return actionList ;
@@ -656,6 +669,8 @@ await Task.Run(() => Parallel.ForEach(statusExData.Values, (status) =>
656
669
}
657
670
} ) ) ;
658
671
672
+ // Remove any duplicates and return the sorted the list
673
+ statusList = statusList . Distinct ( ) . ToList ( ) ;
659
674
statusList . Sort ( ) ;
660
675
661
676
return statusList ;
0 commit comments