| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import 'dart:ui';
- import 'package:dio/dio.dart';
- import 'package:trackoffical_app/appcore/map_package.dart';
- import 'package:trackoffical_app/model/game_map.dart';
- import '../logger.dart';
- import '../model/m_net_image.dart';
- import 'package:trackoffical_app/service/image.dart';
- extension GameMapExtension on GameMap{
- Future<void> loadMemory({
- required ProgressCallback onReceiveProgress
- }) async{
- if (isLoaded){
- return;
- }
- final image = MNetImage()
- ..md5=md5
- ;
- data = await image.loadMemory(onReceiveProgress: onReceiveProgress);
- debug('[加载地图](${image.md5Hex}) \n文件类型:${image.ext}\n 文件大小${data?.length}');
- if(image.ext != 'zip'){
- throw const FormatException('不是zip');
- }
- final mp = MapPackage();
- await mp.loadMemory(data!);
- final size = await mp.dstSize;
- pic = await mp.mapImageData;
- debug('[加载地图]解压完成');
- data = null;
- height = size.height;
- width = size.width;
- mapPackage = mp;
- const p0Src = Offset(0, 0);
- final p1Src = Offset(width, 0);
- final mapTopLeftLocation = await pixelToWorld(p0Src);
- final mapTopRightLocation = await pixelToWorld(p1Src);
- mapWidth = mapTopLeftLocation.distance(mapTopRightLocation);
- isLoaded = true;
- debug('[加载地图] 加载完成\n尺寸: ($width, $height)\n宽度:$mapWidth');
- return;
- }
- }
|