Skip to content

为地图创建预览图


1.使用

Pixmap pix = MapIO.generatePreview(map);
texture = new Texture(pix);

2.原理

原版mindustry.maps.Maps的createNewPreview方法。

private void createNewPreview(Map map, Cons<Exception> failed){
    try{
        //if it's here, then the preview failed to load or doesn't exist, make it
        //this has to be done synchronously!
        Pixmap pix = MapIO.generatePreview(map);
        map.texture = new Texture(pix);
        mainExecutor.submit(() -> {
            try{
                map.previewFile().writePng(pix);
                writeCache(map);
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                pix.dispose();
            }
        });
    }catch(Exception e){
        failed.get(e);
        Log.err("Failed to generate preview!", e);
    }
}
通过读取*.msav的二进制数据进行解析,具体原理不进行解释,可以查看generatePreview方法。

关于原版区块可以看看这个为区块创建预览图.md