Skip to content

Commit

Permalink
Convert pack service to file system service, convert pack data to fil…
Browse files Browse the repository at this point in the history
…e data, improve grid
  • Loading branch information
CodeDoctorDE committed Aug 7, 2024
1 parent ed0c958 commit b469e28
Show file tree
Hide file tree
Showing 29 changed files with 493 additions and 385 deletions.
2 changes: 1 addition & 1 deletion FLUTTER_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.22.3
3.24.0
2 changes: 1 addition & 1 deletion app/android/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pluginManagement {

plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version '8.5.0' apply false
id "com.android.application" version '8.5.1' apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
}

Expand Down
6 changes: 5 additions & 1 deletion app/lib/bloc/board.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
));
});
on<CellSwitched>((event, emit) {
emit(state.copyWith(selectedCell: event.cell));
emit(state.copyWith(
selectedCell: event.cell,
selectedDeck: null,
showHand: true,
));
});
on<ObjectsSpawned>((event, emit) {
emit(state.copyWith.table.cells.replace(
Expand Down
9 changes: 4 additions & 5 deletions app/lib/board/game.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import 'package:quokka/board/grid.dart';
import 'package:quokka/board/hand/view.dart';
import 'package:quokka/helpers/asset.dart';
import 'package:quokka/helpers/scroll.dart';
import 'package:quokka/services/pack.dart';
import 'package:quokka/services/file_system.dart';

class BoardGame extends FlameGame with ScrollDetector {
final AssetManager assetManager;
Expand All @@ -22,9 +22,10 @@ class BoardGame extends FlameGame with ScrollDetector {
final BoardBloc bloc;

BoardGame({
PackService? packService,
QuokkaFileSystem? fileSystem,
required this.bloc,
}) : assetManager = AssetManager(packService: packService ?? PackService());
}) : assetManager =
AssetManager(fileSystem: fileSystem ?? QuokkaFileSystem());

@override
FutureOr<void> onLoad() async {
Expand Down Expand Up @@ -59,7 +60,5 @@ class BoardGame extends FlameGame with ScrollDetector {
.whereType<ScrollCallbacks>()
.firstOrNull;
component?.onScroll(info);
/*clampZoom(camera.viewfinder.zoom +
info.scrollDelta.global.y.sign * zoomPerScrollUnit);*/
}
}
6 changes: 6 additions & 0 deletions app/lib/board/grid.dart
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,10 @@ class BoardGrid extends PositionComponent with HasGameRef {
super.update(dt);
_updateGrid();
}

@override
void onParentResize(Vector2 maxSize) {
super.onParentResize(maxSize);
_updateGrid();
}
}
4 changes: 2 additions & 2 deletions app/lib/board/hand/deck.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import 'package:flame/components.dart';
import 'package:quokka/bloc/board_event.dart';
import 'package:quokka/board/cell.dart';
import 'package:quokka/board/hand/item.dart';
import 'package:quokka/models/definitions/deck.dart';
import 'package:quokka/models/definitions/pack.dart';
import 'package:quokka/models/deck.dart';
import 'package:quokka/models/data.dart';
import 'package:quokka/models/table.dart';

class DeckDefinitionHandItem extends HandItem<PackItem<DeckDefinition>> {
Expand Down
4 changes: 2 additions & 2 deletions app/lib/board/hand/figure.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import 'package:flame/widgets.dart';
import 'package:quokka/bloc/board_event.dart';
import 'package:quokka/board/cell.dart';
import 'package:quokka/board/hand/item.dart';
import 'package:quokka/models/definitions/object.dart';
import 'package:quokka/models/definitions/pack.dart';
import 'package:quokka/models/object.dart';
import 'package:quokka/models/data.dart';
import 'package:quokka/models/table.dart';

class FigureDefinitionHandItem
Expand Down
6 changes: 3 additions & 3 deletions app/lib/board/hand/view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import 'package:quokka/board/hand/figure.dart';
import 'package:quokka/board/hand/item.dart';
import 'package:quokka/board/hand/object.dart';
import 'package:quokka/helpers/scroll.dart';
import 'package:quokka/models/definitions/deck.dart';
import 'package:quokka/models/definitions/object.dart';
import 'package:quokka/models/definitions/pack.dart';
import 'package:quokka/models/deck.dart';
import 'package:quokka/models/object.dart';
import 'package:quokka/models/data.dart';
import 'package:quokka/models/table.dart';
import 'package:quokka/models/vector.dart';

Expand Down
23 changes: 12 additions & 11 deletions app/lib/helpers/asset.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,23 @@ import 'package:flame/game.dart';
import 'package:flame/sprite.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:quokka/models/definitions/pack.dart';
import 'package:quokka/models/data.dart';
import 'package:quokka/models/table.dart';
import 'package:quokka/services/pack.dart';
import 'package:quokka/services/file_system.dart';

class AssetManager {
final PackService packService;
final Map<String, PackData> _loadedPacks = {};
final QuokkaFileSystem fileSystem;
final Map<String, QuokkaData> _loadedPacks = {};
final Map<ItemLocation, Image> _cachedImages = {};

Iterable<MapEntry<String, PackData>> get loadedPacks => _loadedPacks.entries;
Iterable<MapEntry<String, QuokkaData>> get loadedPacks =>
_loadedPacks.entries;

AssetManager({
required this.packService,
required this.fileSystem,
});

Iterable<MapEntry<String, PackData>> get packs => _loadedPacks.entries;
Iterable<MapEntry<String, QuokkaData>> get packs => _loadedPacks.entries;

Uint8List? getTexture(String key) =>
getTextureFromLocation(ItemLocation.fromString(key));
Expand Down Expand Up @@ -76,13 +77,13 @@ class AssetManager {
);
}

PackData? getPack(String key) => _loadedPacks[key];
QuokkaData? getPack(String key) => _loadedPacks[key];

Future<PackData?> loadPack(String key,
{PackData? pack, bool force = false}) async {
Future<QuokkaData?> loadPack(String key,
{QuokkaData? pack, bool force = false}) async {
final oldPack = _loadedPacks[key];
if (!force && oldPack != null) return oldPack;
pack ??= await packService.loadPack(key);
pack ??= await fileSystem.getPack(key);
if (pack == null) return null;
unloadPack(key);
_loadedPacks[key] = pack;
Expand Down
3 changes: 2 additions & 1 deletion app/lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -99,5 +99,6 @@
"welcome": "Hey, this is Linwood Quokka",
"welcomeContent": "A free and open-source tabletop simulator",
"objects": "Objects",
"figures": "Figures"
"figures": "Figures",
"noGames": "There are no games available"
}
4 changes: 2 additions & 2 deletions app/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import 'package:quokka/pages/home/page.dart';
import 'package:quokka/pages/settings/data.dart';
import 'package:quokka/pages/settings/general.dart';
import 'package:quokka/pages/settings/personalization.dart';
import 'package:quokka/services/pack.dart';
import 'package:quokka/services/file_system.dart';
import 'package:quokka/theme.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
Expand Down Expand Up @@ -50,7 +50,7 @@ Future<void> main(List<String> args) async {
],
child: MultiRepositoryProvider(
providers: [
RepositoryProvider(create: (context) => PackService()),
RepositoryProvider(create: (context) => QuokkaFileSystem()),
],
child: QuokkaApp(),
),
Expand Down
43 changes: 27 additions & 16 deletions app/lib/models/definitions/pack.dart → app/lib/models/data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ import 'dart:convert';
import 'package:archive/archive.dart';
import 'package:collection/collection.dart';
import 'package:flutter/services.dart';
import 'package:quokka/models/definitions/deck.dart';
import 'package:quokka/models/definitions/meta.dart';
import 'package:quokka/models/definitions/object.dart';
import 'package:lw_file_system/lw_file_system.dart';
import 'package:quokka/models/deck.dart';
import 'package:quokka/models/meta.dart';
import 'package:quokka/models/object.dart';
import 'package:quokka/models/table.dart';

const kPackMetadataPath = 'pack.json';
Expand All @@ -15,26 +16,38 @@ const kPackBoardsPath = 'boards';
const kPackTexturesPath = 'textures';
const kPackTranslationsPath = 'translations';

class PackData {
final Archive archive;
const kGameTablePath = 'tables';

PackData(this.archive);
class QuokkaData extends ArchiveData<QuokkaData> {
QuokkaData(super.archive, {super.state});

factory PackData.fromData(Uint8List data) {
return PackData(ZipDecoder().decodeBytes(data));
factory QuokkaData.fromData(Uint8List data) {
return QuokkaData(ZipDecoder().decodeBytes(data));
}
static Future<PackData?> getCorePack() async => PackData.fromData(
static Future<QuokkaData?> getCorePack() async => QuokkaData.fromData(
(await rootBundle.load('assets/pack.qka')).buffer.asUint8List());

Uint8List? getAsset(String path) => archive.findFile(path)?.content;
void setAsset(String path, Uint8List data) {
archive.addFile(ArchiveFile(path, data.length, data));
}

PackMetadata? getMetadata() {
GameTable? getTable() {
final data = getAsset('$kGameTablePath/.json');
if (data == null) return null;
final content = utf8.decode(data);
return GameTableMapper.fromJson(content);
}

void setTable(GameTable table) {}

FileMetadata? getMetadata() {
final data = getAsset(kPackMetadataPath);
if (data == null) {
return null;
}
final content = utf8.decode(data);
return PackMetadataMapper.fromJson(content);
return FileMetadataMapper.fromJson(content);
}

Iterable<String> getAssets(String path, [bool removeExtension = false]) => {
Expand Down Expand Up @@ -121,12 +134,10 @@ class PackData {

String getTranslationOrKey(String path, String key) =>
getTranslation(path, key) ?? key;

Uint8List export() => Uint8List.fromList(ZipEncoder().encode(archive) ?? []);
}

final class PackItem<T> {
final PackData pack;
final QuokkaData pack;
final ItemLocation location;
final T item;

Expand All @@ -137,7 +148,7 @@ final class PackItem<T> {
});

factory PackItem.fromRaw(
{required PackData pack,
{required QuokkaData pack,
required String namespace,
required String path,
required T item}) =>
Expand All @@ -148,7 +159,7 @@ final class PackItem<T> {
);

static PackItem<T>? wrap<T>(
{required PackData pack,
{required QuokkaData pack,
required String namespace,
T? item,
String? id}) {
Expand Down
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit b469e28

Please sign in to comment.