mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-30 23:16:09 +00:00 
			
		
		
		
	Background + clean
This commit is contained in:
		
							parent
							
								
									28fd23b2d1
								
							
						
					
					
						commit
						dece242a54
					
				
					 3 changed files with 169 additions and 82 deletions
				
			
		|  | @ -118,3 +118,26 @@ Future<List<SubRaceItem>> loadSubRaces(RaceItem race) async { | ||||||
|   } |   } | ||||||
|   return null; |   return null; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | Future<List<T>> loadTypedItems<T extends Item>({String itemType, Item item = null}) async { | ||||||
|  |   final db = await database; | ||||||
|  |   var response = await db.query( | ||||||
|  |       "Items", | ||||||
|  |       where: "ItemType = ?" + (item != null ? " AND ParentLink = ?" : ""), | ||||||
|  |       whereArgs: item != null ? [itemType, item.id] : [itemType], | ||||||
|  |       orderBy: "NormalizedName" | ||||||
|  |   ); | ||||||
|  |   if (response.isNotEmpty) { | ||||||
|  |     return itemsFromMapList(response); | ||||||
|  |   } | ||||||
|  |   return null; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Future<List<BackgroundItem>> loadBackgrounds() async { | ||||||
|  |   return loadTypedItems<BackgroundItem>(itemType: "BackgroundItem"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Future<List<SubBackgroundItem>> loadSubBackgrounds(Item item) async { | ||||||
|  |   return loadTypedItems<SubBackgroundItem>(itemType: "SubBackgroundItem", item: item); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -205,6 +205,26 @@ class RaceItems extends FilteredItems { | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | class BackgroundItem extends Item { | ||||||
|  | 
 | ||||||
|  |   String skillProficiencies; | ||||||
|  |   String masteredTools; | ||||||
|  |   String masteredLanguages; | ||||||
|  |   String equipment; | ||||||
|  | 
 | ||||||
|  |   BackgroundItem(Map<String, dynamic> map) : super(map) { | ||||||
|  |     this.skillProficiencies = map["SkillProficiencies"]; | ||||||
|  |     this.masteredTools = map["MasteredTools"]; | ||||||
|  |     this.masteredLanguages = map["MasteredLanguages"]; | ||||||
|  |     this.equipment = map["Equipment"]; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class SubBackgroundItem extends BackgroundItem { | ||||||
|  |   SubBackgroundItem(Map<String, dynamic> map) : super(map); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| Item itemFromMap(Map<String, dynamic> map) { | Item itemFromMap(Map<String, dynamic> map) { | ||||||
|   switch (map["ItemType"]) { |   switch (map["ItemType"]) { | ||||||
|     case "RaceItem": |     case "RaceItem": | ||||||
|  | @ -213,6 +233,10 @@ Item itemFromMap(Map<String, dynamic> map) { | ||||||
|       return SubRaceItem(map); |       return SubRaceItem(map); | ||||||
|     case "RaceItems": |     case "RaceItems": | ||||||
|       return RaceItems(map); |       return RaceItems(map); | ||||||
|  |     case "BackgroundItem": | ||||||
|  |       return BackgroundItem(map); | ||||||
|  |     case "SubBackgroundItem": | ||||||
|  |       return SubBackgroundItem(map); | ||||||
|     case "MonsterItem": |     case "MonsterItem": | ||||||
|       return MonsterItem(map); |       return MonsterItem(map); | ||||||
|     case "MonsterItems": |     case "MonsterItems": | ||||||
|  |  | ||||||
|  | @ -26,11 +26,18 @@ class _PCEditorPageState extends State<PCEditorPage> { | ||||||
|   List<RaceItem> _races; |   List<RaceItem> _races; | ||||||
|   List<SubRaceItem> _subRaces; |   List<SubRaceItem> _subRaces; | ||||||
| 
 | 
 | ||||||
|  |   BackgroundItem _background; | ||||||
|  |   SubBackgroundItem _subBackground; | ||||||
|  |   List<BackgroundItem> _backgrounds; | ||||||
|  |   List<SubBackgroundItem> _subBackgrounds; | ||||||
|  | 
 | ||||||
|  |   // inits | ||||||
|  | 
 | ||||||
|   @override |   @override | ||||||
|   void initState() { |   void initState() { | ||||||
|     // TODO: implement initState |  | ||||||
|     super.initState(); |     super.initState(); | ||||||
|     _initRaces(); |     _initRaces(); | ||||||
|  |     _initBackgrounds(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   void _initRaces() async { |   void _initRaces() async { | ||||||
|  | @ -47,6 +54,23 @@ class _PCEditorPageState extends State<PCEditorPage> { | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   void _initBackgrounds() async { | ||||||
|  |     var backgrounds = await loadBackgrounds(); | ||||||
|  |     setState(() { | ||||||
|  |       _backgrounds = backgrounds.map((e) => e as BackgroundItem).toList(); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void _initSubBackgrounds(BackgroundItem background) async { | ||||||
|  |     var subBackgrounds = await loadSubBackgrounds(background); | ||||||
|  |     setState(() { | ||||||
|  |       _subBackgrounds = | ||||||
|  |           subBackgrounds.map((e) => e as SubBackgroundItem).toList(); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // setters | ||||||
|  | 
 | ||||||
|   void _setRace(RaceItem race) { |   void _setRace(RaceItem race) { | ||||||
|     setState(() { |     setState(() { | ||||||
|       this._race = race; |       this._race = race; | ||||||
|  | @ -62,15 +86,46 @@ class _PCEditorPageState extends State<PCEditorPage> { | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   Widget _loadRacesWidget() { |   void _setBackground(BackgroundItem background) { | ||||||
|  |     setState(() { | ||||||
|  |       this._background = background; | ||||||
|  |       this._subBackground = null; | ||||||
|  |       this._subBackgrounds = null; | ||||||
|  |     }); | ||||||
|  |     _initSubBackgrounds(background); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void _setSubBackground(SubBackgroundItem subBackground) { | ||||||
|  |     setState(() { | ||||||
|  |       this._subBackground = subBackground; | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // widgets generics | ||||||
|  | 
 | ||||||
|  |   Widget _loadMarkdown(String markdown) { | ||||||
|  |     return MarkdownBody( | ||||||
|  |       data: markdown ?? "", | ||||||
|  |       onTapLink: (link) => Navigator.push( | ||||||
|  |         context, | ||||||
|  |         MaterialPageRoute(builder: (context) => LibraryPage(id: link)), | ||||||
|  |       ), | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Widget _loadItemsWidget<T extends Item>( | ||||||
|  |       {String hintText, | ||||||
|  |       List<T> items, | ||||||
|  |       T selectedItem, | ||||||
|  |       ValueChanged<T> onChanged}) { | ||||||
|     return DropdownButton( |     return DropdownButton( | ||||||
|       hint: Text("Race"), |       hint: Text(hintText), | ||||||
|       value: _races != null ? _race : "", |       value: items != null ? selectedItem : "", | ||||||
|       onChanged: (value) { |       onChanged: (value) { | ||||||
|         _setRace(value); |         onChanged(value); | ||||||
|       }, |       }, | ||||||
|       items: _races != null |       items: items != null | ||||||
|           ? _races |           ? items | ||||||
|               .map((e) => DropdownMenuItem( |               .map((e) => DropdownMenuItem( | ||||||
|                     value: e, |                     value: e, | ||||||
|                     child: Text(e.name), |                     child: Text(e.name), | ||||||
|  | @ -80,96 +135,76 @@ class _PCEditorPageState extends State<PCEditorPage> { | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   Widget _loadRaceSubRaceWidget() { |   // widgets specifics | ||||||
|  | 
 | ||||||
|  |   Widget _loadRacesWidget() { | ||||||
|  |     return _loadItemsWidget<RaceItem>( | ||||||
|  |       hintText: "Race", | ||||||
|  |       items: _races, | ||||||
|  |       selectedItem: _race, | ||||||
|  |       onChanged: (value) { | ||||||
|  |         _setRace(value); | ||||||
|  |       }, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Widget _loadSubRacesWidget() { | ||||||
|  |     return _subRaces != null | ||||||
|  |         ? _loadItemsWidget<SubRaceItem>( | ||||||
|  |             hintText: "Variante", | ||||||
|  |             items: _subRaces, | ||||||
|  |             selectedItem: _subRace, | ||||||
|  |             onChanged: (value) { | ||||||
|  |               _setSubRace(value); | ||||||
|  |             }, | ||||||
|  |           ) | ||||||
|  |         : SizedBox.shrink(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Widget _loadRaceDetailsWidget() { | ||||||
|     return _race != null |     return _race != null | ||||||
|         ? Column( |         ? Column( | ||||||
|             children: [ |             children: [ | ||||||
|               Text("Augmentation de caractéristiques"), |               Text("Augmentation de caractéristiques"), | ||||||
|               MarkdownBody( |               _loadMarkdown(_race?.abilityScoreIncrease), | ||||||
|                 data: (_race?.abilityScoreIncrease ?? "") + |               _loadMarkdown(_subRace?.abilityScoreIncrease), | ||||||
|                     "\n\n" + |  | ||||||
|                     (_subRace?.abilityScoreIncrease ?? ""), |  | ||||||
|                 onTapLink: (link) => Navigator.push( |  | ||||||
|                   context, |  | ||||||
|                   MaterialPageRoute( |  | ||||||
|                       builder: (context) => LibraryPage(id: link)), |  | ||||||
|                 ), |  | ||||||
|               ), |  | ||||||
|               Text("Âge"), |               Text("Âge"), | ||||||
|               MarkdownBody( |               _loadMarkdown(_race?.age), | ||||||
|                 data: _race?.age ?? "", |  | ||||||
|                 onTapLink: (link) => Navigator.push( |  | ||||||
|                   context, |  | ||||||
|                   MaterialPageRoute( |  | ||||||
|                       builder: (context) => LibraryPage(id: link)), |  | ||||||
|                 ), |  | ||||||
|               ), |  | ||||||
|               Text("Alignement"), |               Text("Alignement"), | ||||||
|               MarkdownBody( |               _loadMarkdown(_race?.alignment), | ||||||
|                 data: _race?.alignment ?? "", |  | ||||||
|                 onTapLink: (link) => Navigator.push( |  | ||||||
|                   context, |  | ||||||
|                   MaterialPageRoute( |  | ||||||
|                       builder: (context) => LibraryPage(id: link)), |  | ||||||
|                 ), |  | ||||||
|               ), |  | ||||||
|               Text("Taille"), |               Text("Taille"), | ||||||
|               MarkdownBody( |               _loadMarkdown(_race?.size), | ||||||
|                 data: _race?.size ?? "", |  | ||||||
|                 onTapLink: (link) => Navigator.push( |  | ||||||
|                   context, |  | ||||||
|                   MaterialPageRoute( |  | ||||||
|                       builder: (context) => LibraryPage(id: link)), |  | ||||||
|                 ), |  | ||||||
|               ), |  | ||||||
|               Text("Vitesse"), |               Text("Vitesse"), | ||||||
|               MarkdownBody( |               _loadMarkdown(_race?.speed), | ||||||
|                 data: _race?.speed ?? "", |  | ||||||
|                 onTapLink: (link) => Navigator.push( |  | ||||||
|                   context, |  | ||||||
|                   MaterialPageRoute( |  | ||||||
|                       builder: (context) => LibraryPage(id: link)), |  | ||||||
|                 ), |  | ||||||
|               ), |  | ||||||
|               Text("Vision dans le noir"), |               Text("Vision dans le noir"), | ||||||
|               MarkdownBody( |               _loadMarkdown(_race?.darkvision), | ||||||
|                 data: _race?.darkvision ?? "", |  | ||||||
|                 onTapLink: (link) => Navigator.push( |  | ||||||
|                   context, |  | ||||||
|                   MaterialPageRoute( |  | ||||||
|                       builder: (context) => LibraryPage(id: link)), |  | ||||||
|                 ), |  | ||||||
|               ), |  | ||||||
|               Text("Langues"), |               Text("Langues"), | ||||||
|               MarkdownBody( |               _loadMarkdown(_race?.languages), | ||||||
|                 data: _race?.languages ?? "", |  | ||||||
|                 onTapLink: (link) => Navigator.push( |  | ||||||
|                   context, |  | ||||||
|                   MaterialPageRoute( |  | ||||||
|                       builder: (context) => LibraryPage(id: link)), |  | ||||||
|                 ), |  | ||||||
|               ), |  | ||||||
|             ], |             ], | ||||||
|           ) |           ) | ||||||
|         : SizedBox.shrink(); |         : SizedBox.shrink(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   Widget _loadSubRacesWidget() { |   Widget _loadBackgroundsWidget() { | ||||||
|     return _subRaces != null |     return _loadItemsWidget<BackgroundItem>( | ||||||
|         ? DropdownButton( |       hintText: "Historique", | ||||||
|             hint: Text("Sous-Race"), |       items: _backgrounds, | ||||||
|             value: _subRaces != null ? _subRace : "", |       selectedItem: _background, | ||||||
|       onChanged: (value) { |       onChanged: (value) { | ||||||
|               _setSubRace(value); |         _setBackground(value); | ||||||
|  |       }, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Widget _loadSubBackgroundsWidget() { | ||||||
|  |     return _subBackgrounds != null | ||||||
|  |         ? _loadItemsWidget<SubBackgroundItem>( | ||||||
|  |             hintText: "Variante", | ||||||
|  |             items: _subBackgrounds, | ||||||
|  |             selectedItem: _subBackground, | ||||||
|  |             onChanged: (value) { | ||||||
|  |               _setSubBackground(value); | ||||||
|             }, |             }, | ||||||
|             items: _subRaces != null |  | ||||||
|                 ? _subRaces |  | ||||||
|                     .map((e) => DropdownMenuItem( |  | ||||||
|                           value: e, |  | ||||||
|                           child: Text(e.name), |  | ||||||
|                         )) |  | ||||||
|                     .toList() |  | ||||||
|                 : null, |  | ||||||
|           ) |           ) | ||||||
|         : SizedBox.shrink(); |         : SizedBox.shrink(); | ||||||
|   } |   } | ||||||
|  | @ -204,10 +239,15 @@ class _PCEditorPageState extends State<PCEditorPage> { | ||||||
|               children: <Widget>[ |               children: <Widget>[ | ||||||
|                 _loadRacesWidget(), |                 _loadRacesWidget(), | ||||||
|                 _loadSubRacesWidget(), |                 _loadSubRacesWidget(), | ||||||
|                 _loadRaceSubRaceWidget(), |                 _loadRaceDetailsWidget(), | ||||||
|  |               ], | ||||||
|  |             ), | ||||||
|  |             ListView( | ||||||
|  |               children: <Widget>[ | ||||||
|  |                 _loadBackgroundsWidget(), | ||||||
|  |                 _loadSubBackgroundsWidget(), | ||||||
|               ], |               ], | ||||||
|             ), |             ), | ||||||
|             Text(""), |  | ||||||
|             Text(""), |             Text(""), | ||||||
|           ], |           ], | ||||||
|         ), |         ), | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez