loadSaveMeta 加载存档元数据列表
loadSaveMeta
类型: MethodDeclaration
定义位置: data.ts
描述
加载存档元数据列表
返回值:存档元数据列表
返回值
类型: Promise<Array<SaveMeta>>
存档元数据列表
源代码
位置: 第 824 行
public async loadSaveMeta(): Promise<Array<SaveMeta>> {
    const filenames: Array<string> = []
    const promises = []
    const metaname = /^save\d{2}\.meta$/
    const extname = /\.meta$/
    switch (Stats.shell) {
      case 'electron': {
        const saveDir = Loader.routeSave('Save')
        const fsp = require('fs').promises
        // 如果不存在存档文件夹,获取空文件列表
        const files = await fsp.readdir(
          saveDir, {withFileTypes: true},
        ).catch((error: Error) => [])
        for (const file of files) {
          // 获取所有的meta文件名
          if (file.isFile() && metaname.test(file.name)) {
            filenames.push(file.name)
          }
        }
        // 加载所有meta文件
        for (const filename of filenames) {
          const filepath = Loader.routeSave(`Save/${filename}`)
          promises.push(
            fsp.readFile(filepath, 'utf8').then(
              (string: string) => JSON.parse(string)
          ))
        }
        break
      }
      case 'browser':
        for (const key of await IDB.getKeys()) {
          if (metaname.test(key)) {
            filenames.push(key)
          }
        }
        for (const filename of filenames.sort()) {
          promises.push(IDB.getItem(filename))
        }
        break
    }
    return Promise.all(promises).then(data => {
      const list: Array<SaveMeta> = []
      const length = data.length
      for (let i = 0; i < length; i++) {
        // 如果meta数据有效,添加到列表中返回
        if (data[i]) {
          const name = filenames[i].replace(extname, '')
          const index = parseInt(name.slice(-2))
          list.push({
            index: index,
            name: name,
            data: data[i],
          })
        }
      }
      return list
    })
  }
文档生成时间:2025/7/21 20:53:39