mirror of
https://github.com/kwsch/PKHeX
synced 2024-12-20 17:33:25 +00:00
57 lines
1.8 KiB
C#
57 lines
1.8 KiB
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
|
||
|
namespace PKHeX.Core
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Generation 5 Evolution Branch Entries
|
||
|
/// </summary>
|
||
|
public class EvolutionSet5 : EvolutionSet
|
||
|
{
|
||
|
private static EvolutionMethod GetMethod(byte[] data, int offset)
|
||
|
{
|
||
|
int[] argEvos = { 6, 8, 16, 17, 18, 19, 20, 21, 22 };
|
||
|
int method = BitConverter.ToUInt16(data, offset + 0);
|
||
|
int arg = BitConverter.ToUInt16(data, offset + 2);
|
||
|
int species = BitConverter.ToUInt16(data, offset + 4);
|
||
|
|
||
|
if (method == 0)
|
||
|
return null;
|
||
|
|
||
|
var evo = new EvolutionMethod
|
||
|
{
|
||
|
Method = method,
|
||
|
Argument = arg,
|
||
|
Species = species,
|
||
|
Level = arg,
|
||
|
};
|
||
|
|
||
|
if (argEvos.Contains(evo.Method))
|
||
|
evo.Level = 0;
|
||
|
return evo;
|
||
|
}
|
||
|
public static List<EvolutionSet> GetArray(byte[] data)
|
||
|
{
|
||
|
var evos = new List<EvolutionSet>();
|
||
|
for (int i = 0; i <= Legal.MaxSpeciesIndex_5_B2W2; i++)
|
||
|
{
|
||
|
/* 42 bytes per species,
|
||
|
* for every species 7 evolutions with 6 bytes per evolution*/
|
||
|
int offset = i * 42;
|
||
|
var m_list = new List<EvolutionMethod>();
|
||
|
for (int j = 0; j < 7; j++)
|
||
|
{
|
||
|
EvolutionMethod m = GetMethod(data, offset);
|
||
|
if (m != null)
|
||
|
m_list.Add(m);
|
||
|
else
|
||
|
break;
|
||
|
offset += 6;
|
||
|
}
|
||
|
evos.Add(new EvolutionSet5 { PossibleEvolutions = m_list.ToArray() });
|
||
|
}
|
||
|
return evos;
|
||
|
}
|
||
|
}
|
||
|
}
|