using System; namespace PKHeX.Core; public sealed class ItemStorage6AO : IItemStorage { public static readonly ItemStorage6AO Instance = new(); internal static ReadOnlySpan Pouch_TMHM_AO => new ushort[] { 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, // 01-92 618, 619, 620, // 93-95 690, 691, 692, 693, 694, // 96-100 420, 421, 422, 423, 424, // OR/AS 425, 737, }; private static ReadOnlySpan Pouch_Items_AO => new ushort[] { // Flutes moved to the Medicine pouch. 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 055, 056, 057, 058, 059, 060, 061, 062, 063, 064, 068, 069, 070, 071, 072, 073, 074, 075, 076, 077, 078, 079, 080, 081, 082, 083, 084, 085, 086, 087, 088, 089, 090, 091, 092, 093, 094, 099, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 116, 117, 118, 119, 135, 136, 213, 214, 215, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 492, 493, 494, 495, 496, 497, 498, 499, 500, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 571, 572, 573, 576, 577, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 639, 640, 644, 646, 647, 648, 649, 650, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 699, 704, 710, 711, 715, // OR/AS Additions 534, 535, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 767, 768, 769, 770, }; private static ReadOnlySpan Pouch_Key_AO => new ushort[] { 216, 445, 446, 447, 465, 466, 471, 628, 629, 631, 632, 638, 697, // Illegal // 716, 717, 723, 745, 746, 747, 748, 749, 750, 766, // ORAS 457, 474, 503, 718, 719, 720, 721, 722, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 738, 739, 740, 741, 742, 743, 744, 751, 765, 771, 772, 774, 775, }; private static ReadOnlySpan Pouch_Medicine_AO => new ushort[] { 017, 018, 019, 020, 021, 022, 023, 024, 025, 026, 027, 028, 029, 030, 031, 032, 033, 034, 035, 036, 037, 038, 039, 040, 041, 042, 043, 044, 045, 046, 047, 048, 049, 050, 051, 052, 053, 054, 134, 504, 565, 566, 567, 568, 569, 570, 571, 591, 645, 708, 709, // OR/AS -- Moved from Items pouch. 065, 066, 067, }; public static ushort[] GetAllHeld() { return ArrayUtil.ConcatAll(Pouch_Items_AO, Pouch_Medicine_AO, ItemStorage6XY.Pouch_Berry_XY); } public bool IsLegal(InventoryType type, int itemIndex, int itemCount) { if (type is InventoryType.KeyItems) return true; return ItemStorage6XY.Unreleased.BinarySearch((ushort)itemIndex) < 0; } public ReadOnlySpan GetItems(InventoryType type) => type switch { InventoryType.Items => Pouch_Items_AO, InventoryType.KeyItems => Pouch_Key_AO, InventoryType.TMHMs => Pouch_TMHM_AO, InventoryType.Medicine => Pouch_Medicine_AO, InventoryType.Berries => ItemStorage6XY.Pouch_Berry_XY, _ => throw new ArgumentOutOfRangeException(nameof(type), type, null), }; }