prettifyCharacters function

List<Map<String, dynamic>> prettifyCharacters(
  1. dynamic data
)

Implementation

List<Map<String, dynamic>> prettifyCharacters(dynamic data) {
  List<Map<String, dynamic>> results = [];

  for (var i = 0; i < data.length; i++) {
    var d = data[i];
    Map<String, dynamic> player = data['icon'].includes('Player')
        ? {
            'traveler_name': data['icon'].includes('Boy') ? 'Aether' : 'Lumin',
          }
        : {};
    var character = {
      'name': d['name'],
      'rarity': d['rarity'] < 100
          ? d['rarity']
          : d['rarity'] - 100, // aloy has 105 stars
      'element': d['element'],
      'level': d['level'],
      'friendship': d['fetter'],
      'constellation': d['constellations']
          .where((value) => value['is_actived'] == true)
          .toList()
          .length,
      'icon': d['icon'],
      'image': d['image'],
      'id': d['id'],
      'collab': d['rarity'] >= 100,
      'traveler_name': data['icon'].includes('Boy') ? 'Aether' : 'Lumin',
      'weapon': {
        'name': d['weapon']['name'],
        'rarity': d['weapon']['rarity'],
        'type': d['weapon']['type_name'],
        'level': d['weapon']['level'],
        'ascension': d['weapon']['promote_level'],
        'refinement': d['weapon']['affix_level'],
        'description': d['weapon']['desc'],
        'icon': d['weapon']['icon'],
        'id': d['weapon']['id'],
      },
      'artifacts': [],
      'constellations': [],
      'outfits': [],
    };

    var artifacts = d['reliquaries'];
    for (var j = 0; j < artifacts.length; j++) {
      var a = artifacts[j];
      var regex = RegExp("UI_RelicIcon_(\\d+)_\\d+",
          caseSensitive: false, multiLine: true);
      var matches = regex.allMatches(a['icon']);
      var setId = int.parse(matches.first.toString());
      var artifact = {
        'name': a['name'],
        'pos_name': artifactType[a['pos'].toString()],
        'full_pos_name': a['pos_name'],
        'pos': a['pos'],
        'rarity': a['rarity'],
        'level': a['level'],
        'set': {
          'name': a['set']['name'],
          'effect_type': [
            'none',
            'single',
            'classic'
          ][a['set']['affixes'].length],
          'effects': [],
          'set_id': setId, // type: ignore
          'id': a['set']['id'],
        },
        'icon': a['icon'],
        'id': a['id'],
      };
      var affixes = a['set']['affixes'] ?? [];
      for (var j = 0; j < affixes.length; j++) {
        var e = a['set']['affixes'][j];
        artifact['set']['effects'].add({
          'pieces': e['activation_number'],
          'effect': e['effect'],
        });
      }
    }

    var constellations = d['constellations'] ?? [];
    for (var i = 0; i < constellations.length; i++) {
      var c = constellations[i];
      character['constellations'].add({
        'name': c['name'],
        'effect': c['effect'],
        'is_activated': c['is_actived'],
        'index': c['pos'],
        'icon': c['icon'],
        'id': c['id'],
      });
    }
    var costumes = d['costumes'] ?? [];
    for (var i = 0; i < costumes.length; i++) {
      var c = costumes[i];
      character['outfits'].add({
        'name': c['name'],
        'icon': c['icon'],
        'id': c['id'],
      });
    }
    results.add(character);
  }

  return results;
}