#map #level #celeste #tilemap #entities #object #decals

strawberride

Celeste地图序列化和反序列化工具

3个版本

0.1.2 2024年8月25日
0.1.1 2024年8月24日
0.1.0 2024年8月24日

#501编码

Download history 107/week @ 2024-08-19

每月下载量107

MIT 许可证

61KB
1.5K SLoC

strawberride

Passing Tests Documentation Repository Latest version License Maintenance

这是一个用于从文件中加载和保存Celeste地图的库,包括对地图对象(如关卡、实体、贴图、瓦片地图等)的高级表示!

此库专注于准确性和易用性,能够无损地加载和保存所需的任何地图。

/// Rotate all levels in the map 180 degrees
let mut f = File::options()
    .read(true)
    .write(true)
    .open("map.bin").unwrap();
let mut map = Map::load(&mut f, true).unwrap();

for level in map.levels.iter_mut() {
    let tilemap = &mut level.solids;
    let width = tilemap.width();
    let height = tilemap.height();

    for y in 0..(height / 2) {
        for x in 0..width {
            let src = tilemap[(x, y)];
            let dst = tilemap[(width - x - 1, height - y - 1)];
            tilemap[(x, y)] = dst;
            tilemap[(width - x - 1, height - y - 1)] = src;
        }
    }
}

f.seek(SeekFrom::Start(0)).unwrap();

map.store(&mut f, true).unwrap();

依赖项

~1.5MB
~25K SLoC