feat: 发布咸鱼喵喵全能助手,加入全收集地图与图文说明

This commit is contained in:
Kitasami_Nya
2026-10-24 01:37:15 +08:00
parent 8f6ac4ff04
commit 3823e38b07
39 changed files with 2918 additions and 194 deletions
+27
View File
@@ -0,0 +1,27 @@
const test=require('node:test');
const assert=require('node:assert/strict');
const vm=require('node:vm');
const {readWorldMap}=require('../lib/world-map');
test('world schematic preserves page boundaries, per-item collection and unexplored cells without writes',()=>{
const cells=[{x:1,y:2,page:1,mapId:7,regionId:2,l:true,pt:true},
{x:1,y:2,page:2,mapId:8,regionId:3,hidden:true}];
const locations=[{key:'a',type:'hpst',id:0,mapId:7,eventId:1,x:4,y:4,collected:true,official:true},
{key:'b',type:'hpst',id:0,mapId:7,eventId:2,x:4,y:4,collected:false,official:true},
{key:'c',type:'hpst',id:0,mapId:8,eventId:3,x:4,y:4,collected:null,official:false}];
const encyclopedia={items:[{type:'hpst',id:0,name:'强化',desc:'效果'}],locations};
const before=JSON.stringify({cells,encyclopedia});
const context=vm.createContext({encyclopedia,DataManager:{_thumbnailMapCell:{a:cells[0],b:cells[1]},
makePosKey:(x,y)=>x+':'+y,getThumbnailCell:(x,y,id)=>cells.find(c=>c.mapId===id),getCurrentThumbnailCell:()=>cells[1]},
$gameSystem:{isThumbnailActive:()=>false},$dataMapInfos:{},$dataRegion:{2:{name:'森林',exploreItem:[[7,1],[7,2],[7,9]]},3:{name:'里'}},
$gameMap:{mapId:()=>8},$gamePlayer:{_x:5,_y:6}});
const r=JSON.parse(vm.runInContext(`JSON.stringify((${readWorldMap.toString()})(encyclopedia))`,context));
assert.equal(r.cells.length,2);assert.equal(r.pages.length,2);
assert.deepEqual(r.markers.map(m=>m.collected),[true,false,null]);
assert.deepEqual(r.markers.map(m=>m.cellKey),['1:1:2','1:1:2','2:1:2']);
assert.equal(r.cells[0].walls.left,true);assert.equal(r.cells[0].exits.top,true);
assert.equal(r.cells[1].explored,false);assert.equal(r.cells[1].hidden,true);
assert.equal(r.player.cellKey,'2:1:2');assert.equal(r.markers[0].name,'强化');
assert.equal(r.coverage.mappedOfficial,2);assert.equal(r.coverage.officialTotal,3);assert.deepEqual(r.coverage.missing,['7:9']);
assert.equal(JSON.stringify({cells,encyclopedia}),before);
});