-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
material_file_model.dart
49 lines (38 loc) · 1.55 KB
/
material_file_model.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import 'package:freezed_annotation/freezed_annotation.dart';
import '../../../assets.dart';
import '../../../enums/material_type.dart';
part 'material_file_model.freezed.dart';
part 'material_file_model.g.dart';
@freezed
abstract class MaterialFileModel implements _$MaterialFileModel {
@late
String get fullImagePath => Assets.getMaterialPath(image, type);
@late
bool get isAnExperienceMaterial => type == MaterialType.expWeapon || type == MaterialType.expCharacter;
@late
ExperienceMaterialAttributesModel get experienceAttributes =>
isAnExperienceMaterial ? ExperienceMaterialAttributesModel.fromJson(attributes) : null;
factory MaterialFileModel({
@required String key,
@required int rarity,
@required String image,
@required bool isFromBoss,
@required bool isForCharacters,
@required bool isForWeapons,
@required MaterialType type,
@required List<int> days,
@required double level,
Map<String, dynamic> attributes,
}) = _MaterialFileModel;
MaterialFileModel._();
factory MaterialFileModel.fromJson(Map<String, dynamic> json) => _$MaterialFileModelFromJson(json);
}
@freezed
abstract class ExperienceMaterialAttributesModel implements _$ExperienceMaterialAttributesModel {
factory ExperienceMaterialAttributesModel({
@required double experience,
@required double pricePerUsage,
}) = _ExperienceMaterialAttributesModel;
ExperienceMaterialAttributesModel._();
factory ExperienceMaterialAttributesModel.fromJson(Map<String, dynamic> json) => _$ExperienceMaterialAttributesModelFromJson(json);
}