game_map.dart 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'dart:typed_data';
  2. import 'package:flutter/material.dart';
  3. import 'package:trackoffical_app/appcore/map_package.dart';
  4. import 'package:trackoffical_app/utils.dart';
  5. import 'package:trackoffical_app/pb.dart' as pb;
  6. import 'package:trackoffical_app/model/m_position.dart' as m;
  7. class GameMap {
  8. String url = '';
  9. Uint8List md5 = Uint8List(0);
  10. Uint8List? data;
  11. Uint8List? pic;
  12. MapPackage? mapPackage;
  13. double width = 0;
  14. double height = 0;
  15. bool isLoaded = false;
  16. Distance mapWidth=0.meter;
  17. String? get md5Hex {
  18. if (md5.isEmpty) {
  19. return null;
  20. } else {
  21. return md5.toHexString();
  22. }
  23. }
  24. Future<Offset> worldToPixel(m.MPosition position) async{
  25. var d = await mapPackage?.positionToPic(position);
  26. return d?? Offset.zero;
  27. }
  28. Future<m.MPosition> pixelToWorld(Offset offset) async{
  29. final d = await mapPackage?.picToPosition(offset);
  30. return d??m.MPosition();
  31. }
  32. }
  33. extension PbNetImageExtension2 on pb.NetImage {
  34. GameMap toGameMap() {
  35. return GameMap()
  36. ..url = url
  37. ..md5 = Uint8List.fromList(md5);
  38. }
  39. }