74 lines
2.5 KiB
Dart
74 lines
2.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:toolheim/data/warband_roster.dart';
|
|
|
|
class StatsWidget extends StatelessWidget {
|
|
Stats stats;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return GridView.count(
|
|
crossAxisCount: 10,
|
|
crossAxisSpacing: 0.0,
|
|
//padding: const EdgeInsets.all(10),
|
|
primary: false,
|
|
shrinkWrap: true,
|
|
children: <Widget>[
|
|
statsElement('M', stats.movement,
|
|
stats.movement > 3 ? (stats.movement > 5 ? 3 : 2) : 1),
|
|
statsElement('WS', stats.weaponSkill,
|
|
stats.weaponSkill > 3 ? (stats.weaponSkill > 5 ? 3 : 2) : 1),
|
|
statsElement(
|
|
'BS',
|
|
stats.ballisticSkill,
|
|
stats.ballisticSkill > 3
|
|
? (stats.ballisticSkill > 5 ? 3 : 2)
|
|
: 1),
|
|
statsElement('S', stats.strength,
|
|
stats.strength > 3 ? (stats.strength > 5 ? 3 : 2) : 1),
|
|
statsElement('T', stats.toughtness,
|
|
stats.toughtness > 3 ? (stats.toughtness > 5 ? 3 : 2) : 1),
|
|
statsElement('W', stats.wounds,
|
|
stats.wounds > 1 ? (stats.wounds > 2 ? 3 : 2) : 1),
|
|
statsElement('I', stats.initiative,
|
|
stats.initiative > 3 ? (stats.initiative > 5 ? 3 : 2) : 1),
|
|
statsElement('A', stats.attacks,
|
|
stats.attacks > 1 ? (stats.attacks > 2 ? 3 : 2) : 1),
|
|
statsElement('Ld', stats.leadership,
|
|
stats.leadership > 7 ? (stats.leadership > 9 ? 3 : 2) : 1),
|
|
statsElement('Sv', stats.save,
|
|
stats.save > 0 ? (stats.leadership > 1 ? 3 : 2) : 0),
|
|
]);
|
|
}
|
|
|
|
StatsWidget(this.stats);
|
|
|
|
Widget statsElement(stat, value, qualityFactor) {
|
|
TextStyle styles = TextStyle(fontSize: 14, fontWeight: FontWeight.normal);
|
|
String val = value.toString();
|
|
|
|
if (qualityFactor == 0) {
|
|
styles = styles.merge(TextStyle(color: Colors.black45));
|
|
val = '-';
|
|
}
|
|
|
|
if (qualityFactor > 1) {
|
|
styles = styles
|
|
.merge(TextStyle(color: Colors.red, fontWeight: FontWeight.bold));
|
|
}
|
|
|
|
if (qualityFactor > 2) {
|
|
styles = styles.merge(TextStyle(color: Colors.purple));
|
|
}
|
|
|
|
return Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: <Widget>[
|
|
Text(
|
|
stat,
|
|
style: TextStyle(fontSize: 9, color: Colors.grey),
|
|
),
|
|
Text(val, style: styles)
|
|
]);
|
|
}
|
|
}
|