parse.go 634 B

12345678910111213141516171819202122232425
  1. package gen7
  2. import (
  3. "fmt"
  4. p "github.com/ajswis/go-pkparse-server/pokemon"
  5. )
  6. // Parse accepts a raw pokemon (byte slice) and either returns a Pokemon struct
  7. // with all applicable fields populated or an error depicting the reason for
  8. // failure.
  9. func Parse(rawPokemon p.RawPokemon) (*p.Pokemon, error) {
  10. if l := len(rawPokemon); l < 232 {
  11. return nil, fmt.Errorf("Invalid length for generation 7 pokemon: %d bytes", l)
  12. }
  13. var pkmn p.Pokemon
  14. pkmn.PokedexNumber = uint(rawPokemon[0x08])
  15. pkmn.RawNickname = rawPokemon[0x40:0x58]
  16. pkmn.Nickname = string(pkmn.RawNickname)
  17. pkmn.RawPokemon = &rawPokemon
  18. return &pkmn, nil
  19. }