From 70108ce35f30cf2cddfab7357463d38e33f32dda Mon Sep 17 00:00:00 2001 From: Efrain Date: Sat, 27 Mar 2021 19:38:05 -0500 Subject: [PATCH] [Domain] Added some models for the monsters --- lib/domain/assets.dart | 6 +++++ lib/domain/enums/enums.dart | 2 ++ lib/domain/enums/monster_filter_type.dart | 3 +++ lib/domain/enums/monster_type.dart | 11 +++++++++ .../db/monsters/monster_file_model.dart | 24 +++++++++++++++++++ .../models/db/monsters/monsters_file.dart | 16 +++++++++++++ .../db/translations/translation_file.dart | 1 + .../translation_monster_file.dart | 16 +++++++++++++ lib/domain/models/models.dart | 4 ++++ .../models/monsters/monster_card_model.dart | 18 ++++++++++++++ lib/domain/services/genshin_service.dart | 6 +++++ 11 files changed, 107 insertions(+) create mode 100644 lib/domain/enums/monster_filter_type.dart create mode 100644 lib/domain/enums/monster_type.dart create mode 100644 lib/domain/models/db/monsters/monster_file_model.dart create mode 100644 lib/domain/models/db/monsters/monsters_file.dart create mode 100644 lib/domain/models/db/translations/translation_monster_file.dart create mode 100644 lib/domain/models/monsters/monster_card_model.dart diff --git a/lib/domain/assets.dart b/lib/domain/assets.dart index 662bdc515..ab0a98daf 100644 --- a/lib/domain/assets.dart +++ b/lib/domain/assets.dart @@ -9,6 +9,7 @@ class Assets { static String materialsDbPath = '$dbPath/materials.json'; static String elementsDbPath = '$dbPath/elements.json'; static String gameCodesDbPath = '$dbPath/game_codes.json'; + static String monstersDbPath = '$dbPath/monsters.json'; static String translationsBasePath = 'assets/i18n'; //General @@ -44,6 +45,9 @@ class Assets { //Others static String otherImgsBasePath = 'assets/others'; + //Monsters + static String monstersImgsBasePath = 'assets/monsters'; + static String getArtifactPath(String name) => '$artifactsBasePath/$name'; static String getCharacterPath(String name) => '$charactersBasePath/$name'; static String getCharacterFullPath(String name) => '$characterFullBasePath/$name'; @@ -56,6 +60,8 @@ class Assets { static String getOtherImgsPath(String name) => '$otherImgsBasePath/$name'; + static String getMonsterImgPath(String name) => '$monstersImgsBasePath/$name'; + static String getBowPath(String name) => '$bowsBasePath/$name'; static String getCatalystPath(String name) => '$catalystBasePath/$name'; static String getClaymorePath(String name) => '$claymoresBasePath/$name'; diff --git a/lib/domain/enums/enums.dart b/lib/domain/enums/enums.dart index 8a531ca3b..3d33d2566 100644 --- a/lib/domain/enums/enums.dart +++ b/lib/domain/enums/enums.dart @@ -16,6 +16,8 @@ export 'item_status_type.dart'; export 'item_type.dart'; export 'material_filter_type.dart'; export 'material_type.dart'; +export 'monster_filter_type.dart'; +export 'monster_type.dart'; export 'region_type.dart'; export 'sort_direction_type.dart'; export 'stat_type.dart'; diff --git a/lib/domain/enums/monster_filter_type.dart b/lib/domain/enums/monster_filter_type.dart new file mode 100644 index 000000000..1b6d5be08 --- /dev/null +++ b/lib/domain/enums/monster_filter_type.dart @@ -0,0 +1,3 @@ +enum MonsterFilterType { + name, +} diff --git a/lib/domain/enums/monster_type.dart b/lib/domain/enums/monster_type.dart new file mode 100644 index 000000000..d8065aff8 --- /dev/null +++ b/lib/domain/enums/monster_type.dart @@ -0,0 +1,11 @@ +enum MonsterType { + all, + abyssOrder, + elementalLifeForm, + human, + magicalBeast, + boss, + hilichurl, + fatui, + automaton, +} diff --git a/lib/domain/models/db/monsters/monster_file_model.dart b/lib/domain/models/db/monsters/monster_file_model.dart new file mode 100644 index 000000000..202354b41 --- /dev/null +++ b/lib/domain/models/db/monsters/monster_file_model.dart @@ -0,0 +1,24 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/enums/enums.dart'; + +part 'monster_file_model.freezed.dart'; +part 'monster_file_model.g.dart'; + +@freezed +abstract class MonsterFileModel implements _$MonsterFileModel { + @late + String get fullImagePath => Assets.getMonsterImgPath(image); + + factory MonsterFileModel({ + @required String key, + @required String image, + @required MonsterType type, + @required bool isComingSoon, + @required List drops, + }) = _MonsterFileModel; + + MonsterFileModel._(); + + factory MonsterFileModel.fromJson(Map json) => _$MonsterFileModelFromJson(json); +} diff --git a/lib/domain/models/db/monsters/monsters_file.dart b/lib/domain/models/db/monsters/monsters_file.dart new file mode 100644 index 000000000..c95c5ec03 --- /dev/null +++ b/lib/domain/models/db/monsters/monsters_file.dart @@ -0,0 +1,16 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:genshindb/domain/models/models.dart'; + +part 'monsters_file.freezed.dart'; +part 'monsters_file.g.dart'; + +@freezed +abstract class MonstersFile implements _$MonstersFile { + factory MonstersFile({ + @required List monsters, + }) = _MonstersFile; + + MonstersFile._(); + + factory MonstersFile.fromJson(Map json) => _$MonstersFileFromJson(json); +} diff --git a/lib/domain/models/db/translations/translation_file.dart b/lib/domain/models/db/translations/translation_file.dart index e09b9386c..6fa6a9fa0 100644 --- a/lib/domain/models/db/translations/translation_file.dart +++ b/lib/domain/models/db/translations/translation_file.dart @@ -15,6 +15,7 @@ abstract class TranslationFile implements _$TranslationFile { @required List debuffs, @required List reactions, @required List resonance, + @required List monsters, }) = _TranslationFile; factory TranslationFile.fromJson(Map json) => _$TranslationFileFromJson(json); diff --git a/lib/domain/models/db/translations/translation_monster_file.dart b/lib/domain/models/db/translations/translation_monster_file.dart new file mode 100644 index 000000000..e5e0043ad --- /dev/null +++ b/lib/domain/models/db/translations/translation_monster_file.dart @@ -0,0 +1,16 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'translation_monster_file.freezed.dart'; +part 'translation_monster_file.g.dart'; + +@freezed +abstract class TranslationMonsterFile implements _$TranslationMonsterFile { + factory TranslationMonsterFile({ + @required String key, + @required String name, + }) = _TranslationMonsterFile; + + const TranslationMonsterFile._(); + + factory TranslationMonsterFile.fromJson(Map json) => _$TranslationMonsterFileFromJson(json); +} diff --git a/lib/domain/models/models.dart b/lib/domain/models/models.dart index 19587136c..87791fa39 100644 --- a/lib/domain/models/models.dart +++ b/lib/domain/models/models.dart @@ -20,11 +20,14 @@ export 'db/elements/elements_file.dart'; export 'db/game_codes/game_codes_file.dart'; export 'db/materials/material_file_model.dart'; export 'db/materials/materials_file.dart'; +export 'db/monsters/monster_file_model.dart'; +export 'db/monsters/monsters_file.dart'; export 'db/translations/translation_artifact_file.dart'; export 'db/translations/translation_character_file.dart'; export 'db/translations/translation_element_file.dart'; export 'db/translations/translation_file.dart'; export 'db/translations/translation_material_file.dart'; +export 'db/translations/translation_monster_file.dart'; export 'db/translations/translation_weapon_file.dart'; export 'db/weapons/weapon_file_model.dart'; export 'db/weapons/weapons_file.dart'; @@ -36,6 +39,7 @@ export 'items/item_ascension_material_model.dart'; export 'items/item_experience_model.dart'; export 'language_model.dart'; export 'materials/material_card_model.dart'; +export 'monsters/monster_card_model.dart'; export 'settings/app_settings.dart'; export 'tierlist/tierlist_row_model.dart'; export 'weapons/weapon_card_model.dart'; diff --git a/lib/domain/models/monsters/monster_card_model.dart b/lib/domain/models/monsters/monster_card_model.dart new file mode 100644 index 000000000..7289ba079 --- /dev/null +++ b/lib/domain/models/monsters/monster_card_model.dart @@ -0,0 +1,18 @@ +import 'package:flutter/foundation.dart'; +import 'package:genshindb/domain/enums/enums.dart'; + +class MonsterCardModel { + final String key; + final String image; + final String name; + final MonsterType type; + final bool isComingSoon; + + MonsterCardModel({ + @required this.key, + @required this.image, + @required this.name, + @required this.type, + @required this.isComingSoon, + }); +} diff --git a/lib/domain/services/genshin_service.dart b/lib/domain/services/genshin_service.dart index d6f95c8ec..3c1bb4c4b 100644 --- a/lib/domain/services/genshin_service.dart +++ b/lib/domain/services/genshin_service.dart @@ -9,6 +9,7 @@ abstract class GenshinService { Future initMaterials(); Future initElements(); Future initGameCodes(); + Future initMonsters(); Future initTranslations(AppLanguageType languageType); List getCharactersForCard(); @@ -59,4 +60,9 @@ abstract class GenshinService { List getAllGameCodes(); List getUpcomingKeys(); + + MonsterFileModel getMonster(String key); + MonsterFileModel getMonsterByImg(String image); + List getAllMonstersForCard(); + MonsterCardModel getMonsterForCardByImg(String image); }