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 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; } }