1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-29 14:35:45 +00:00
AideDeJeu/aidedejeu_flutter/lib/models/items.dart

419 lines
12 KiB
Dart
Raw Normal View History

2020-02-29 01:40:05 +01:00
import 'package:aidedejeu_flutter/models/filters.dart';
2020-09-28 18:01:38 +02:00
import 'package:json_annotation/json_annotation.dart';
2020-02-27 17:24:45 +01:00
2020-09-28 18:01:38 +02:00
part 'items.g.dart';
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-02-19 15:50:44 +01:00
class Item {
2020-02-28 17:59:22 +01:00
String id;
String rootId;
String parentLink;
String name;
String normalizedName;
String parentName;
int nameLevel;
2020-09-29 15:01:47 +02:00
String altName;
String altNameText;
2020-02-28 17:59:22 +01:00
String normalizedAlias;
String source;
String markdown;
String fullText;
String itemType;
List<Item> children;
2020-09-29 15:01:47 +02:00
Item();
2020-09-28 18:01:38 +02:00
factory Item.fromJson(Map<String, dynamic> map) => _$ItemFromJson(map);
Map<String, dynamic> toJson() => _$ItemToJson(this);
}
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
class GenericItem extends Item {
GenericItem();
2020-09-29 15:01:47 +02:00
2020-09-28 18:01:38 +02:00
factory GenericItem.fromJson(Map<String, dynamic> map) => _$GenericItemFromJson(map);
Map<String, dynamic> toJson() => _$GenericItemToJson(this);
2020-02-19 15:50:44 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-02-19 15:50:44 +01:00
class MonsterItem extends Item {
2020-02-28 17:59:22 +01:00
String family;
String type;
String size;
String alignment;
String terrain;
String legendary;
String armorClass;
String hitPoints;
String speed;
String strength;
String dexterity;
String constitution;
String intelligence;
String wisdom;
String charisma;
String savingThrows;
String skills;
String damageVulnerabilities;
String damageImmunities;
String conditionImmunities;
String damageResistances;
String senses;
String languages;
String challenge;
int xp;
2020-02-19 15:50:44 +01:00
2020-09-28 18:01:38 +02:00
MonsterItem();
factory MonsterItem.fromJson(Map<String, dynamic> map) => _$MonsterItemFromJson(map);
Map<String, dynamic> toJson() => _$MonsterItemToJson(this);
2020-02-19 15:50:44 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-03-05 16:50:31 +01:00
class SpellItem extends Item {
String family;
String level;
String type;
String ritual;
String castingTime;
String range;
String components;
String verbalComponent;
String somaticComponent;
String materialComponent;
String concentration;
String duration;
String classes;
2020-09-28 18:01:38 +02:00
SpellItem();
2020-09-29 15:01:47 +02:00
2020-09-28 18:01:38 +02:00
factory SpellItem.fromJson(Map<String, dynamic> map) => _$SpellItemFromJson(map);
Map<String, dynamic> toJson() => _$SpellItemToJson(this);
2020-03-05 16:50:31 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-02-22 00:59:48 +01:00
class Items extends Item {
2020-09-28 18:01:38 +02:00
Items();
2020-09-29 15:01:47 +02:00
2020-09-28 18:01:38 +02:00
factory Items.fromJson(Map<String, dynamic> map) => _$ItemsFromJson(map);
Map<String, dynamic> toJson() => _$ItemsToJson(this);
2020-02-22 00:59:48 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-09-28 18:01:38 +02:00
class FilteredItems extends Items {
2020-02-28 17:59:22 +01:00
String family;
2020-02-22 00:59:48 +01:00
2020-09-28 18:01:38 +02:00
FilteredItems();
2020-09-29 15:01:47 +02:00
@JsonKey(ignore: true)
2020-09-28 18:01:38 +02:00
List<Filter> toFilterList() => [].toList();
2020-02-25 17:51:11 +01:00
2020-09-28 18:01:38 +02:00
factory FilteredItems.fromJson(Map<String, dynamic> map) => _$FilteredItemsFromJson(map);
Map<String, dynamic> toJson() => _$FilteredItemsToJson(this);
2020-02-26 17:20:09 +01:00
}
2020-02-25 17:51:11 +01:00
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-02-22 00:59:48 +01:00
class MonsterItems extends FilteredItems {
2020-09-29 15:01:47 +02:00
String types;
String challenges;
String sizes;
String sources;
String terrains;
2020-09-28 18:01:38 +02:00
@JsonKey(ignore: true)
2020-09-29 15:01:47 +02:00
Filter get typesFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Types",
displayName: "monstersTypes",
2020-03-01 01:44:08 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: types?.split("|"));
@JsonKey(ignore: true)
Filter get challengesFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Challenges",
displayName: "monstersChallenges",
2020-03-01 01:44:08 +01:00
type: FilterType.Range,
2020-09-29 15:01:47 +02:00
values: challenges?.split("|"));
@JsonKey(ignore: true)
Filter get sizesFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Sizes",
displayName: "monstersSizes",
2020-03-01 01:44:08 +01:00
type: FilterType.Range,
2020-09-29 15:01:47 +02:00
values: sizes?.split("|"));
@JsonKey(ignore: true)
Filter get sourcesFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Sources",
displayName: "monstersSources",
2020-03-01 01:44:08 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: sources?.split("|"));
@JsonKey(ignore: true)
Filter get terrainsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Terrains",
displayName: "monstersTerrains",
2020-03-01 01:44:08 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: terrains?.split("|"));
MonsterItems();
@JsonKey(ignore: true)
2020-02-26 17:20:09 +01:00
List<Filter> toFilterList() => {
2020-09-29 15:01:47 +02:00
typesFilter,
challengesFilter,
sizesFilter,
sourcesFilter,
terrainsFilter,
2020-03-01 01:44:08 +01:00
}.toList();
2020-09-28 18:01:38 +02:00
factory MonsterItems.fromJson(Map<String, dynamic> map) => _$MonsterItemsFromJson(map);
Map<String, dynamic> toJson() => _$MonsterItemsToJson(this);
2020-02-21 14:49:39 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-03-05 16:50:31 +01:00
class SpellItems extends FilteredItems {
2020-09-29 15:01:47 +02:00
String classes;
String levels;
String schools;
String rituals;
String castingTimes;
String ranges;
String verbalComponents;
String somaticComponents;
String materialComponents;
String concentrations;
String durations;
String sources;
2020-09-28 18:01:38 +02:00
2020-09-29 15:01:47 +02:00
@JsonKey(ignore: true)
Filter get classesFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Classes",
displayName: "spellsClasses",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: classes?.split("|"));
@JsonKey(ignore: true)
Filter get levelsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Levels",
displayName: "spellsLevels",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: levels?.split("|"));
@JsonKey(ignore: true)
Filter get schoolsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Schools",
displayName: "spellsSchools",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: schools?.split("|"));
@JsonKey(ignore: true)
Filter get ritualsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Rituals",
displayName: "spellsRituals",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: rituals?.split("|"));
@JsonKey(ignore: true)
Filter get castingTimesFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "CastingTimes",
displayName: "spellsCastingTimes",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: castingTimes?.split("|"));
@JsonKey(ignore: true)
Filter get rangesFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Ranges",
displayName: "spellsRanges",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: ranges?.split("|"));
@JsonKey(ignore: true)
Filter get verbalComponentsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "VerbalComponents",
displayName: "spellsVerbalComponents",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: verbalComponents?.split("|"));
@JsonKey(ignore: true)
Filter get somaticComponentsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "SomaticComponents",
displayName: "spellsSomaticComponents",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: somaticComponents?.split("|"));
@JsonKey(ignore: true)
Filter get materialComponentsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "MaterialComponents",
displayName: "spellsMaterialComponents",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: materialComponents?.split("|"));
@JsonKey(ignore: true)
Filter get concentrationsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Concentrations",
displayName: "spellsConcentrations",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: concentrations?.split("|"));
@JsonKey(ignore: true)
Filter get durationsFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Durations",
displayName: "spellsDurations",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: durations?.split("|"));
@JsonKey(ignore: true)
Filter get sourcesFilter => Filter(
2020-03-13 09:46:17 +01:00
name: "Sources",
displayName: "spellsSources",
2020-03-05 16:50:31 +01:00
type: FilterType.Choices,
2020-09-29 15:01:47 +02:00
values: sources?.split("|"));
SpellItems();
@JsonKey(ignore: true)
2020-03-05 16:50:31 +01:00
List<Filter> toFilterList() => {
2020-09-29 15:01:47 +02:00
classesFilter,
levelsFilter,
schoolsFilter,
ritualsFilter,
castingTimesFilter,
rangesFilter,
verbalComponentsFilter,
somaticComponentsFilter,
materialComponentsFilter,
concentrationsFilter,
durationsFilter,
sourcesFilter,
2020-03-05 16:50:31 +01:00
}.toList();
2020-09-28 18:01:38 +02:00
factory SpellItems.fromJson(Map<String, dynamic> map) => _$SpellItemsFromJson(map);
Map<String, dynamic> toJson() => _$SpellItemsToJson(this);
2020-03-05 16:50:31 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-02-29 02:36:15 +01:00
class RaceItem extends Item {
2020-03-01 01:44:08 +01:00
String fullName;
bool hasSubRaces;
String strengthBonus;
String dexterityBonus;
String constitutionBonus;
String intelligenceBonus;
String wisdomBonus;
String charismaBonus;
String dispatchedBonus;
String maxDispatchedStrengthBonus;
String maxDispatchedDexterityBonus;
String maxDispatchedConstitutionBonus;
String maxDispatchedIntelligenceBonus;
String maxDispatchedWisdomBonus;
String maxDispatchedCharismaBonus;
String abilityScoreIncrease;
String age;
String alignment;
String size;
String speed;
String darkvision;
String languages;
2020-02-29 02:36:15 +01:00
2020-09-28 18:01:38 +02:00
RaceItem();
factory RaceItem.fromJson(Map<String, dynamic> map) => _$RaceItemFromJson(map);
Map<String, dynamic> toJson() => _$RaceItemToJson(this);
2020-02-29 02:36:15 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-03-01 00:27:51 +01:00
class SubRaceItem extends RaceItem {
2020-03-01 01:44:08 +01:00
String parentRaceId;
2020-03-01 00:27:51 +01:00
2020-09-28 18:01:38 +02:00
SubRaceItem();
factory SubRaceItem.fromJson(Map<String, dynamic> map) => _$SubRaceItemFromJson(map);
Map<String, dynamic> toJson() => _$SubRaceItemToJson(this);
2020-03-01 00:27:51 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-02-29 02:36:15 +01:00
class RaceItems extends FilteredItems {
2020-09-28 18:01:38 +02:00
RaceItems();
2020-02-29 02:36:15 +01:00
2020-09-29 15:01:47 +02:00
@JsonKey(ignore: true)
2020-02-29 02:36:15 +01:00
@override
List<Filter> toFilterList() {
return [].toList();
}
2020-09-29 15:01:47 +02:00
2020-09-28 18:01:38 +02:00
factory RaceItems.fromJson(Map<String, dynamic> map) => _$RaceItemsFromJson(map);
Map<String, dynamic> toJson() => _$RaceItemsToJson(this);
2020-02-29 02:36:15 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-05-16 13:12:24 +02:00
class OriginItem extends Item {
String regionsOfOrigin;
String mainLanguages;
String aspirations;
String availableSkills;
2020-09-28 18:01:38 +02:00
OriginItem();
factory OriginItem.fromJson(Map<String, dynamic> map) => _$OriginItemFromJson(map);
Map<String, dynamic> toJson() => _$OriginItemToJson(this);
2020-05-16 13:12:24 +02:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-05-16 13:12:24 +02:00
class OriginItems extends FilteredItems {
2020-09-28 18:01:38 +02:00
OriginItems();
2020-05-16 13:12:24 +02:00
2020-09-29 15:01:47 +02:00
@JsonKey(ignore: true)
2020-05-16 13:12:24 +02:00
@override
List<Filter> toFilterList() {
return [].toList();
}
2020-09-28 18:01:38 +02:00
factory OriginItems.fromJson(Map<String, dynamic> map) => _$OriginItemsFromJson(map);
Map<String, dynamic> toJson() => _$OriginItemsToJson(this);
2020-05-16 13:12:24 +02:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-03-01 21:30:33 +01:00
class BackgroundItem extends Item {
String skillProficiencies;
String masteredTools;
String masteredLanguages;
String equipment;
2020-09-28 18:01:38 +02:00
BackgroundItem();
2020-09-29 15:01:47 +02:00
2020-09-28 18:01:38 +02:00
factory BackgroundItem.fromJson(Map<String, dynamic> map) => _$BackgroundItemFromJson(map);
Map<String, dynamic> toJson() => _$BackgroundItemToJson(this);
2020-03-01 21:30:33 +01:00
}
2020-09-29 15:01:47 +02:00
@JsonSerializable(explicitToJson: true, fieldRename: FieldRename.pascal)
2020-03-01 21:30:33 +01:00
class SubBackgroundItem extends BackgroundItem {
2020-09-28 18:01:38 +02:00
SubBackgroundItem();
2020-09-29 15:01:47 +02:00
2020-09-28 18:01:38 +02:00
factory SubBackgroundItem.fromJson(Map<String, dynamic> map) => _$SubBackgroundItemFromJson(map);
Map<String, dynamic> toJson() => _$SubBackgroundItemToJson(this);
2020-03-01 21:30:33 +01:00
}
2020-03-13 09:46:17 +01:00
Item itemFromMap(Map<String, dynamic> map) {
2020-09-29 15:01:47 +02:00
2020-03-01 01:44:08 +01:00
switch (map["ItemType"]) {
2020-09-28 18:01:38 +02:00
case "GenericItem":
return GenericItem.fromJson(map);
2020-03-01 01:44:08 +01:00
case "RaceItem":
2020-09-28 18:01:38 +02:00
return RaceItem.fromJson(map);
2020-03-01 01:44:08 +01:00
case "SubRaceItem":
2020-09-28 18:01:38 +02:00
return SubRaceItem.fromJson(map);
2020-03-01 01:44:08 +01:00
case "RaceItems":
2020-09-28 18:01:38 +02:00
return RaceItems.fromJson(map);
2020-05-16 13:12:24 +02:00
case "OriginItem":
2020-09-28 18:01:38 +02:00
return OriginItem.fromJson(map);
2020-05-16 13:12:24 +02:00
case "OriginItems":
2020-09-28 18:01:38 +02:00
return OriginItems.fromJson(map);
2020-03-01 21:30:33 +01:00
case "BackgroundItem":
2020-09-28 18:01:38 +02:00
return BackgroundItem.fromJson(map);
2020-03-01 21:30:33 +01:00
case "SubBackgroundItem":
2020-09-28 18:01:38 +02:00
return SubBackgroundItem.fromJson(map);
2020-03-01 01:44:08 +01:00
case "MonsterItem":
2020-09-28 18:01:38 +02:00
return MonsterItem.fromJson(map);
2020-03-01 01:44:08 +01:00
case "MonsterItems":
2020-09-28 18:01:38 +02:00
return MonsterItems.fromJson(map);
2020-03-05 16:50:31 +01:00
case "SpellItem":
2020-09-28 18:01:38 +02:00
return SpellItem.fromJson(map);
2020-03-05 16:50:31 +01:00
case "SpellItems":
2020-09-28 18:01:38 +02:00
return SpellItems.fromJson(map);
2020-02-19 15:50:44 +01:00
}
2020-09-28 18:01:38 +02:00
return Item.fromJson(map);
2020-02-19 15:50:44 +01:00
}
2020-03-13 09:46:17 +01:00
List<T> itemsFromMapList<T extends Item>(List<Map<String, dynamic>> mapList) {
2020-02-19 15:50:44 +01:00
return List.generate(mapList.length, (i) {
2020-03-13 09:46:17 +01:00
return itemFromMap(mapList[i]);
2020-02-19 15:50:44 +01:00
});
2020-03-01 00:27:51 +01:00
}