1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-29 06:26:02 +00:00
This commit is contained in:
Yan Maniez 2020-05-16 13:12:24 +02:00
parent 49a46595d7
commit 8987e446a8
8 changed files with 132 additions and 6 deletions

View file

@ -19,6 +19,8 @@ class PlayerCharacterBloc
yield* _mapRaceEventToState(event);
} else if (event is SubRaceEvent) {
yield* _mapSubRaceEventToState(event);
} else if (event is OriginEvent) {
yield* _mapOriginEventToState(event);
} else if (event is BackgroundEvent) {
yield* _mapBackgroundEventToState(event);
} else if (event is SubBackgroundEvent) {
@ -33,11 +35,14 @@ class PlayerCharacterBloc
var subRaces = await _db.loadSubRaces(event.item);
yield state.copyWithClean(race: event.item, subRaces: subRaces);
}
Stream<PlayerCharacterState> _mapSubRaceEventToState(
SubRaceEvent event) async* {
yield state.copyWith(subRace: event.item);
}
Stream<PlayerCharacterState> _mapOriginEventToState(
OriginEvent event) async* {
yield state.copyWith(origin: event.item);
}
Stream<PlayerCharacterState> _mapBackgroundEventToState(
BackgroundEvent event) async* {
var subBackgrounds = await _db.loadSubBackgrounds(event.item);
@ -50,7 +55,8 @@ class PlayerCharacterBloc
Stream<PlayerCharacterState> _mapLoadEventToState(
LoadEvent event) async* {
var races = await _db.loadRaces();
var origins = await _db.loadOrigins();
var backgrounds = await _db.loadBackgrounds();
yield state.copyWith(races: races, backgrounds: backgrounds); // state;
yield state.copyWith(races: races, origins: origins, backgrounds: backgrounds); // state;
}
}

View file

@ -20,6 +20,10 @@ class SubRaceEvent extends SetItemEvent<SubRaceItem> {
SubRaceEvent(SubRaceItem item) : super(item);
}
class OriginEvent extends SetItemEvent<OriginItem> {
OriginEvent(OriginItem item) : super(item);
}
class BackgroundEvent extends SetItemEvent<BackgroundItem> {
BackgroundEvent(BackgroundItem item) : super(item);
}

View file

@ -8,6 +8,9 @@ class PlayerCharacterState extends Equatable {
final List<RaceItem> races;
final List<SubRaceItem> subRaces;
final OriginItem origin;
final List<OriginItem> origins;
final BackgroundItem background;
final SubBackgroundItem subBackground;
final List<BackgroundItem> backgrounds;
@ -18,6 +21,8 @@ class PlayerCharacterState extends Equatable {
this.races,
this.subRace,
this.subRaces,
this.origin,
this.origins,
this.background,
this.backgrounds,
this.subBackground,
@ -29,6 +34,8 @@ class PlayerCharacterState extends Equatable {
List<RaceItem> races,
SubRaceItem subRace,
List<SubRaceItem> subRaces,
OriginItem origin,
List<OriginItem> origins,
BackgroundItem background,
List<BackgroundItem> backgrounds,
SubBackgroundItem subBackground,
@ -39,6 +46,8 @@ class PlayerCharacterState extends Equatable {
races: races ?? this.races,
subRace: subRace ?? this.subRace,
subRaces: subRaces ?? this.subRaces,
origin: origin ?? this.origin,
origins: origins ?? this.origins,
background: background ?? this.background,
backgrounds: backgrounds ?? this.backgrounds,
subBackground: subBackground ?? this.subBackground,
@ -51,6 +60,8 @@ class PlayerCharacterState extends Equatable {
List<RaceItem> races,
SubRaceItem subRace,
List<SubRaceItem> subRaces,
OriginItem origin,
List<OriginItem> origins,
BackgroundItem background,
List<BackgroundItem> backgrounds,
SubBackgroundItem subBackground,
@ -61,6 +72,8 @@ class PlayerCharacterState extends Equatable {
races: races ?? this.races,
subRace: race != null ? null : subRace ?? this.subRace,
subRaces: race != null ? subRaces : subRaces ?? this.subRaces,
origin: origin ?? this.origin,
origins: origins ?? this.origins,
background: background ?? this.background,
backgrounds: backgrounds ?? this.backgrounds,
subBackground: background != null ? null : subBackground ?? this.subBackground,
@ -74,6 +87,8 @@ class PlayerCharacterState extends Equatable {
subRace,
races,
subRaces,
origin,
origins,
background,
subBackground,
backgrounds,

View file

@ -12,6 +12,8 @@ abstract class BaseDB {
Future<List<SubRaceItem>> loadSubRaces(RaceItem race);
Future<List<OriginItem>> loadOrigins();
Future<List<T>> loadTypedItems<T extends Item>({String itemType, Item item});
Future<List<BackgroundItem>> loadBackgrounds();

View file

@ -50,6 +50,12 @@ class SembastDB extends BaseDB {
throw UnimplementedError();
}
@override
Future<List<OriginItem>> loadOrigins() {
// TODO: implement loadOrigins
throw UnimplementedError();
}
@override
Future<List<BackgroundItem>> loadBackgrounds() {
// TODO: implement loadBackgrounds

View file

@ -152,6 +152,11 @@ class SqfliteDB extends BaseDB {
return null;
}
@override
Future<List<OriginItem>> loadOrigins() async {
return loadTypedItems<OriginItem>(itemType: "OriginItem");
}
@override
Future<List<BackgroundItem>> loadBackgrounds() async {
return loadTypedItems<BackgroundItem>(itemType: "BackgroundItem");

View file

@ -334,6 +334,29 @@ class RaceItems extends FilteredItems {
}
}
class OriginItem extends Item {
String regionsOfOrigin;
String mainLanguages;
String aspirations;
String availableSkills;
OriginItem(Map<String, dynamic> map) : super(map) {
this.regionsOfOrigin = map["RegionsOfOrigin"];
this.mainLanguages = map["MainLanguages"];
this.aspirations = map["Aspirations"];
this.availableSkills = map["AvailableSkills"];
}
}
class OriginItems extends FilteredItems {
OriginItems(Map<String, dynamic> map) : super(map);
@override
List<Filter> toFilterList() {
return [].toList();
}
}
class BackgroundItem extends Item {
String skillProficiencies;
String masteredTools;
@ -360,6 +383,10 @@ Item itemFromMap(Map<String, dynamic> map) {
return SubRaceItem(map);
case "RaceItems":
return RaceItems(map);
case "OriginItem":
return OriginItem(map);
case "OriginItems":
return OriginItems(map);
case "BackgroundItem":
return BackgroundItem(map);
case "SubBackgroundItem":

View file

@ -135,6 +135,64 @@ class PCEditorPage extends StatelessWidget {
: SizedBox.shrink();
}
Widget _buildOriginsWidget(BuildContext context, PlayerCharacterState state) {
return _buildItemsWidget<OriginItem>(
context,
state,
hintText: "Origine",
items: state.origins,
selectedItem: state.origin,
onChanged: (value) {
//state.setRace(value);
BlocProvider.of<PlayerCharacterBloc>(context).add(OriginEvent(value));
},
);
}
Widget _buildOriginDetailsWidget(
BuildContext context, PlayerCharacterState state) {
return state.origin != null
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildSubTitle(context, state,
"RegionsOfOrigin"),
//AppLocalizations.of(context).raceAbilityScoreIncrease),
_buildMarkdown(context, state, state.origin?.regionsOfOrigin),
Text(""),
_buildSubTitle(
context, state, "MainLanguages"), //AppLocalizations.of(context).raceAge),
_buildMarkdown(context, state, state.origin?.mainLanguages),
Text(""),
_buildSubTitle(
context, state, "Aspirations"), //AppLocalizations.of(context).raceAlignment),
_buildMarkdown(context, state, state.origin?.aspirations),
Text(""),
_buildSubTitle(
context, state, "AvailableSkills"), //AppLocalizations.of(context).raceSize),
_buildMarkdown(context, state, state.origin?.availableSkills),
//Text(""),
//_buildSubTitle(
// context, state, AppLocalizations.of(context).raceSpeed),
//_buildMarkdown(context, state, state.race?.speed),
//state.race?.darkvision != null ? Text("") : SizedBox.shrink(),
//state.race?.darkvision != null
// ? _buildSubTitle(context, state,
// AppLocalizations.of(context).raceDarkvision)
// : SizedBox.shrink(),
//state.race?.darkvision != null
// ? _buildMarkdown(context, state, state.race?.darkvision)
// : SizedBox.shrink(),
//Text(""),
//_buildSubTitle(
// context, state, AppLocalizations.of(context).raceLanguages),
//_buildMarkdown(context, state, state.race?.languages),
],
)
: SizedBox.shrink();
}
Widget _buildBackgroundsWidget(
BuildContext context, PlayerCharacterState state) {
return _buildItemsWidget<BackgroundItem>(
@ -204,7 +262,8 @@ class PCEditorPage extends StatelessWidget {
indicatorSize: TabBarIndicatorSize.label,
tabs: <Widget>[
Text(
AppLocalizations.of(context).raceTitle,
"Origine",
//AppLocalizations.of(context).raceTitle,
style: TextStyle(
fontSize: 25,
fontFamily: "Cinzel",
@ -247,9 +306,11 @@ class PCEditorPage extends StatelessWidget {
margin: EdgeInsets.all(10.0),
child: ListView(
children: <Widget>[
_buildRacesWidget(context, state),
_buildSubRacesWidget(context, state),
_buildRaceDetailsWidget(context, state),
//_buildRacesWidget(context, state),
//_buildSubRacesWidget(context, state),
//_buildRaceDetailsWidget(context, state),
_buildOriginsWidget(context, state),
_buildOriginDetailsWidget(context, state),
],
),
),