選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

47 行
1.5 KiB

  1. -- 保存已经生成过的文件,
  2. -- 如果当前要生成的文件在列表里面已经存在了,
  3. -- 则表示文件重名
  4. g_files = {};
  5. -- 生成一个文件
  6. function linkFile(sourceFile , targetPath, targetFile , versionInfo)
  7. print("linkFile" , sourceFile);
  8. local pathName , baseName , ext = string.splitFilename(sourceFile);
  9. if isIgnoreFile(pathName , baseName , ext) then
  10. return;
  11. end
  12. --print("链接文件" .. sourceFile)
  13. local fileInfo = g_files[baseName];
  14. if fileInfo then
  15. error("文件重名:[" .. sourceFile .. "] 与 [" .. fileInfo.origin .. "]");
  16. end
  17. fileInfo = xml.new("file");
  18. versionInfo.files[baseName] = fileInfo;
  19. -- 保存全局文件列表
  20. g_files[baseName] = fileInfo;
  21. local cacheFile = compileFile(sourceFile, targetPath);
  22. fileInfo.origin = cacheFile.origin;
  23. fileInfo.name = cacheFile.name;
  24. fileInfo.md5 = cacheFile.md5;
  25. fileInfo.size = cacheFile.compileSize;
  26. fileInfo.preload = false -- 是否新手期文件
  27. if not hasCmdArg("-onlyServer") then
  28. -- 保存加密文件到客户端
  29. local assetFileName = targetPath .. "/assets/" .. fileInfo.md5
  30. local targetClientFile = io.open(assetFileName, "wb");
  31. targetClientFile:write(loadFile(cacheFile.encryptFile));
  32. targetClientFile:close();
  33. end
  34. -- 保存加密并压缩后的文件到服务端
  35. fileInfo.offset = targetFile:seek();
  36. local compressedData = loadFile(cacheFile.compressedFile);
  37. targetFile:write(compressedData);
  38. fileInfo.compressedSize = string.len(compressedData)
  39. end