(Race r1, Race r2)
| 439 | { |
| 440 | |
| 441 | @Override |
| 442 | public int compare(Race r1, Race r2) |
| 443 | { |
| 444 | final int BEFORE = -1; |
| 445 | final int AFTER = 1; |
| 446 | |
| 447 | if (r1 == r2) |
| 448 | { |
| 449 | return 0; |
| 450 | } |
| 451 | |
| 452 | boolean unselected1 = r1.isUnselected(); |
| 453 | boolean unselected2 = r2.isUnselected(); |
| 454 | if (unselected1 && !unselected2) |
| 455 | { |
| 456 | return BEFORE; |
| 457 | } |
| 458 | if (!unselected1 && unselected2) |
| 459 | { |
| 460 | return AFTER; |
| 461 | } |
| 462 | |
| 463 | final String PC_TYPE = "PC"; |
| 464 | if (r1.isType(PC_TYPE) && !r2.isType(PC_TYPE)) |
| 465 | { |
| 466 | return BEFORE; |
| 467 | } |
| 468 | if (!r1.isType(PC_TYPE) && r2.isType(PC_TYPE)) |
| 469 | { |
| 470 | return AFTER; |
| 471 | } |
| 472 | |
| 473 | final String HUMANOID = "Humanoid"; |
| 474 | if (r1.isType(HUMANOID) && !r2.isType(HUMANOID)) |
| 475 | { |
| 476 | return BEFORE; |
| 477 | } |
| 478 | if (!r1.isType(HUMANOID) && r2.isType(HUMANOID)) |
| 479 | { |
| 480 | return AFTER; |
| 481 | } |
| 482 | |
| 483 | // Check sort keys |
| 484 | String key1 = r1.get(StringKey.SORT_KEY); |
| 485 | if (key1 == null) |
| 486 | { |
| 487 | key1 = r1.getDisplayName(); |
| 488 | } |
| 489 | String key2 = r2.get(StringKey.SORT_KEY); |
| 490 | if (key2 == null) |
| 491 | { |
| 492 | key2 = r2.getDisplayName(); |
| 493 | } |
| 494 | final Collator collator = Collator.getInstance(); |
| 495 | return collator.compare(key1, key2); |
| 496 | } |
| 497 | |
| 498 | } |
no test coverage detected