Skip to content
Snippets Groups Projects
Commit 4cda62e5 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Allow choose tileset division count

parent 66557b1c
No related branches found
No related tags found
1 merge request!12Resolve "Allow choose tileset size"
Pipeline #1243 passed
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.8 app.versionName=0.0.9
app.versionCode=8 app.versionCode=9
...@@ -4,6 +4,9 @@ import '../entities/tile.dart'; ...@@ -4,6 +4,9 @@ import '../entities/tile.dart';
class Data extends ChangeNotifier { class Data extends ChangeNotifier {
// application configuration
int _tilesCount = 3;
// application data // application data
List _images = []; List _images = [];
String _image = ''; String _image = '';
...@@ -19,6 +22,13 @@ class Data extends ChangeNotifier { ...@@ -19,6 +22,13 @@ class Data extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
int get tilesCount => _tilesCount;
set updateTilesCount(int value) {
_tilesCount = value;
notifyListeners();
}
List get images => _images; List get images => _images;
set updateImages(List value) { set updateImages(List value) {
......
...@@ -12,9 +12,6 @@ import '../utils/get_images_list.dart'; ...@@ -12,9 +12,6 @@ import '../utils/get_images_list.dart';
class Home extends StatelessWidget { class Home extends StatelessWidget {
static const String id = 'home'; static const String id = 'home';
int _linesCount = 4;
int _columnsCount = 4;
double _selectorImageSize = 200; double _selectorImageSize = 200;
double _tipImageSize = 100; double _tipImageSize = 100;
double _tileImageSize = 80; double _tileImageSize = 80;
...@@ -84,6 +81,43 @@ class Home extends StatelessWidget { ...@@ -84,6 +81,43 @@ class Home extends StatelessWidget {
); );
} }
FlatButton _buildTilesetSizeSelectorItem(Data myProvider, int value) {
BoxDecoration border =
myProvider.tilesCount == value
? BoxDecoration(
borderRadius: BorderRadius.circular(4),
border: Border.all(
color: Colors.blue[100],
width: 4,
),
)
: null;
return FlatButton(
child: Container(
padding: EdgeInsets.all(5),
decoration: border,
child: Text(value.toString()+'x'+value.toString()),
),
onPressed: () { myProvider.updateTilesCount = value; },
);
}
Container _buildTilesetSizeSelector(Data myProvider) {
return Container(
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
_buildTilesetSizeSelectorItem(myProvider, 3),
_buildTilesetSizeSelectorItem(myProvider, 4),
],
),
),
);
}
Future<List<Tile>> splitImageInTiles(Data myProvider) async { Future<List<Tile>> splitImageInTiles(Data myProvider) async {
String imageAsset = getImageAssetName(myProvider.image); String imageAsset = getImageAssetName(myProvider.image);
Uint8List imageData = (await rootBundle.load(imageAsset)) Uint8List imageData = (await rootBundle.load(imageAsset))
...@@ -92,12 +126,12 @@ class Home extends StatelessWidget { ...@@ -92,12 +126,12 @@ class Home extends StatelessWidget {
imglib.Image image = imglib.decodeImage(imageData); imglib.Image image = imglib.decodeImage(imageData);
int x = 0, y = 0; int x = 0, y = 0;
int width = (image.width / _linesCount).round(); int width = (image.width / myProvider.tilesCount).round();
int height = (image.height / _columnsCount).round(); int height = (image.height / myProvider.tilesCount).round();
List<Tile> tiles = List<Tile>(); List<Tile> tiles = List<Tile>();
for (int i = 0; i < _linesCount; i++) { for (int i = 0; i < myProvider.tilesCount; i++) {
for (int j = 0; j < _columnsCount; j++) { for (int j = 0; j < myProvider.tilesCount; j++) {
tiles.add( tiles.add(
Tile( Tile(
Image.memory( Image.memory(
...@@ -136,9 +170,9 @@ class Home extends StatelessWidget { ...@@ -136,9 +170,9 @@ class Home extends StatelessWidget {
width: 2, width: 2,
), ),
children: [ children: [
for (var row = 0; row < _linesCount; row++) for (var row = 0; row < myProvider.tilesCount; row++)
TableRow(children: [ TableRow(children: [
for (var col = 0; col < _columnsCount; col++) for (var col = 0; col < myProvider.tilesCount; col++)
Column(children: [tiles[tileIndex++].widget(myProvider)]), Column(children: [tiles[tileIndex++].widget(myProvider)]),
]), ]),
] ]
...@@ -236,9 +270,11 @@ class Home extends StatelessWidget { ...@@ -236,9 +270,11 @@ class Home extends StatelessWidget {
_myProvider.image == '' _myProvider.image == ''
? Text('') ? Text('')
: IconButton( : IconButton(
icon: const Icon(Icons.arrow_left_outlined), icon: const Icon(Icons.arrow_left_outlined),
onPressed: () => resetGame(_myProvider), onPressed: () => resetGame(_myProvider),
), )
,
_myProvider.image == '' ? _buildTilesetSizeSelector(_myProvider) : Text(''),
], ],
), ),
body: SafeArea( body: SafeArea(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment