diff --git a/package.json b/package.json index f3c4fdf..90ede9b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "BlitzModder", - "version": "1.4.5", + "version": "1.5.0", "description": "Mod manager for World of Tanks Blitz(PC)", "main": "bin/core/core.js", "scripts": { @@ -23,12 +23,11 @@ "license": "MIT", "dependencies": { "bootstrap": "^4.0.0-alpha.6", + "denodeify": "^1.2.1", "fs-extra": "^2.1.2", "fstream": "^1.0.11", - "js-yaml": "^3.8.3", "jszip": "^3.1.3", "plist": "^2.0.1", - "promise": "^7.1.1", "readdirp": "^2.1.0", "request": "^2.81.0", "semver": "^5.3.0", diff --git a/src/core/applyMod.coffee b/src/core/applyMod.coffee index 7c95b43..b497f5f 100644 --- a/src/core/applyMod.coffee +++ b/src/core/applyMod.coffee @@ -4,7 +4,7 @@ {app} = require "electron" path = require "path" -Promise = require "promise" +denodeify = require "denodeify" fs = require "fs-extra" fstream = require "fstream" jszip = require "jszip" @@ -14,7 +14,7 @@ unzip = require "unzipper" config = require "./config" util = require "./util" -readFile = Promise.denodeify(fs.readFile) +readFile = denodeify(fs.readFile) TEMP_FOLDER = path.join(app.getPath("temp"), "BlitzModderPC") @@ -206,29 +206,9 @@ applyMod = (type, mod, callback) -> * @return {Promise} ### applyMods = (addMods, deleteMods, callback) -> - dLen = deleteMods.length - aLen = addMods.length - - deleteDeferArray = [] - for dmod in deleteMods - deleteDeferArray.push(applyMod("delete", dmod, callback)) - if dLen > 0 - if aLen > 0 - return Promise.all(deleteDeferArray).then( -> - addDeferArray = [] - for amod in addMods - addDeferArray.push(applyMod("add", amod, callback)) - return Promise.all(addDeferArray) - ) - else - return Promise.all(deleteDeferArray) - else if aLen > 0 - addDeferArray = [] - for amod in addMods - addDeferArray.push(applyMod("add", amod, callback)) - return Promise.all(addDeferArray) - else - return Promise.resolve() + return Promise.all(applyMod("delete", dmod, callback) for dmod in deleteMods).then( -> + return Promise.all(applyMod("add", amod, callback) for amod in addMods) + ) module.exports = applyMod: applyMod diff --git a/src/core/cache.coffee b/src/core/cache.coffee index 8f59ac3..682fc44 100644 --- a/src/core/cache.coffee +++ b/src/core/cache.coffee @@ -5,17 +5,17 @@ fs = require "fs-extra" path = require "path" {app} = require "electron" -Promise = require "promise" +denodeify = require "denodeify" ###* * キャッシュをおくフォルダ * @const ### -CACHE_FOLDER_PATH = path.join(app.getPath("userData"), "cache") +CACHE_FOLDER_PATH = path.join(app.getPath("userData"), "plistCache") -ensureFile = Promise.denodeify(fs.ensureFile) -readJson = Promise.denodeify(fs.readJson) -remove = Promise.denodeify(fs.remove) +ensureFile = denodeify(fs.ensureFile) +readJson = denodeify(fs.readJson) +remove = denodeify(fs.remove) ### * キャッシュファイルと実際のファイルのテーブル diff --git a/src/core/config.coffee b/src/core/config.coffee index 31c645d..1118077 100644 --- a/src/core/config.coffee +++ b/src/core/config.coffee @@ -5,7 +5,7 @@ fs = require "fs-extra" path = require "path" {app} = require "electron" -Promise = require "promise" +denodeify = require "denodeify" util = require "./util" os = require "os" @@ -34,8 +34,8 @@ BLITZ_PATH = MACSTEAM: path.join(os.homedir(), "Library/Application Support/Steam/SteamApps/common/World of Tanks Blitz/World of Tanks Blitz.app/Contents/Resources/") MACSTORE: "/Applications/World of Tanks Blitz.app/Contents/Resources/" -ensureFile = Promise.denodeify(fs.ensureFile) -readJson = Promise.denodeify(fs.readJson) +ensureFile = denodeify(fs.ensureFile) +readJson = denodeify(fs.readJson) ### * 設定のデータ @@ -103,12 +103,14 @@ init = -> data = Object.assign(data, content) else machineLang = app.getLocale() - if machineLang is "ja" - data.lang = "ja" - else if machineLang.includes("en") - data.lang = "en" - else - data.lang = "en" + switch true + when machineLang is "ja" then data.lang = "ja" + when machineLang is "ru" then data.lang = "ru" + when machineLang is "zh-TW" then data.lang = "zh_TW" + when machineLang is "zh-CN" then data.lang = "zh_CN" + when machineLang.includes("en") then data.lang = "en" + when machineLang.includes("zh") then data.lang = "zh_CN" + else data.lang = "en" _update() ) diff --git a/src/core/core.coffee b/src/core/core.coffee index 7ed9314..0848b7a 100644 --- a/src/core/core.coffee +++ b/src/core/core.coffee @@ -18,10 +18,11 @@ createWindow = -> height: 600, title: "BlitzModderPC", icon: path.join(app.getAppPath(), "gui/img/image.jpg"), - autoHideMenuBar: true + autoHideMenuBar: true, + show: false ) mainWindow.once("ready-to-show", -> - win.show() + mainWindow.show() return ) mainWindow.loadURL("file://#{app.getAppPath()}/gui/index.html") @@ -48,8 +49,9 @@ app.on("ready", -> app.on("window-all-closed", -> # キャッシュ削除 - session.defaultSession.clearCache(->) - # アプリ終了 - app.quit() + session.defaultSession.clearCache( -> + # アプリ終了 + app.quit() + ) return ) diff --git a/src/core/lang.coffee b/src/core/lang.coffee index ea01ec4..c3121cc 100644 --- a/src/core/lang.coffee +++ b/src/core/lang.coffee @@ -2,7 +2,6 @@ * @fileoverview 翻訳関連 ### {app} = require "electron" -yaml = require "js-yaml" config = require "./config" _langname = "" diff --git a/src/core/plistInfo.coffee b/src/core/plistInfo.coffee index 5aa393e..09188ff 100644 --- a/src/core/plistInfo.coffee +++ b/src/core/plistInfo.coffee @@ -1,14 +1,17 @@ +###* + * @fileoverview info.plistの読み込み + ### fs = require "fs-extra" path = require "path" plist = require "plist" -Promise = require "promise" +denodeify = require "denodeify" semver = require "semver" request = require "./request" cache = require "./cache" config = require "./config" util = require "./util" -readFile = Promise.denodeify(fs.readFile) +readFile = denodeify(fs.readFile) ###* * データ @@ -35,34 +38,23 @@ get = ({type: repoType, name: repoName}, force = false) -> if data[repoName]? and !force resolve(data[repoName]) return - cache.getStringFile(repoName, "info.plist", force).then( (content) -> - data[repoName] = plist.parse(content) - resolve(data[repoName]) - return - , (err) -> + isCatched = false + cache.getStringFile(repoName, "info.plist", force).catch( -> + isCatched = true if repoType is "remote" - request.getFromRemote(repoName, "info.plist").then( (content) -> - string = content.toString() - cache.setStringFile(repoName, "info.plist", string) - data[repoName] = plist.parse(string) - resolve(data[repoName]) - return - , (err) -> - reject(err) - return + return request.getFromRemote(repoName, "info.plist").then( (content) -> + return content.toString() ) else if repoType is "local" - readFile(path.join(repoName, "info.plist"), "utf8").then( (res) -> - cache.setStringFile(repoName, "info.plist", res) - data[repoName] = plist.parse(res) - resolve(data[repoName]) - return - , (err) -> - reject(err) - return - ) - else - reject() + return readFile(path.join(repoName, "info.plist"), "utf8") + return Promise.reject() + ).then( (res) -> + cache.setStringFile(repoName, "info.plist", res) if isCatched + data[repoName] = plist.parse(res) + resolve(data[repoName]) + return + ).catch( (err) -> + reject(err) return ) ) diff --git a/src/core/plistList.coffee b/src/core/plistList.coffee index 0350799..4d6e7e3 100644 --- a/src/core/plistList.coffee +++ b/src/core/plistList.coffee @@ -1,14 +1,17 @@ +###* + * @fileoverview 言語.plistの読み込み + ### fs = require "fs-extra" path = require "path" plist = require "plist" -Promise = require "promise" +denodeify = require "denodeify" semver = require "semver" request = require "./request" cache = require "./cache" config = require "./config" util = require "./util" -readFile = Promise.denodeify(fs.readFile) +readFile = denodeify(fs.readFile) ###* * データ @@ -56,7 +59,11 @@ parse = (plistObj) -> * @return {Object} plistのオブジェクト ### getUntilDone = (repo, lang, force = false) -> - return get(repo, lang, force).catch( -> + return get(repo, lang, force).catch(-> + if lang.includes("_") + return get(repo, lang.split("_")[0], force) + return Promise.reject() + ).catch( -> return get(repo, "en", force) ).catch( -> return get(repo, "ja", force) @@ -77,37 +84,24 @@ get = ({type: repoType, name: repoName}, lang, force = false) -> if data[repoName]?[lang]? and !force resolve(data[repoName][lang]) return - cache.getStringFile(repoName, "plist/#{lang}.plist", force).then( (content) -> - data[repoName] = {} if !data[repoName]? - data[repoName][lang] = parse(plist.parse(content)) - resolve(data[repoName][lang]) - return - , (err) -> + isCatched = false + cache.getStringFile(repoName, "plist/#{lang}.plist", force).catch( -> + isCatched = true if repoType is "remote" - request.getFromRemote(repoName, "plist/#{lang}.plist").then( (content) -> - string = content.toString() - cache.setStringFile(repoName, "plist/#{lang}.plist", string) - data[repoName] = {} if !data[repoName]? - data[repoName][lang] = parse(plist.parse(string)) - resolve(data[repoName][lang]) - return - , (err) -> - reject(err) - return + return request.getFromRemote(repoName, "plist/#{lang}.plist").then( (content) -> + return content.toString() ) else if repoType is "local" - readFile(path.join(repoName, "plist/#{lang}.plist"), "utf8").then( (res) -> - cache.setStringFile(repoName, "plist/#{lang}.plist", res) - data[repoName] = {} if !data[repoName]? - data[repoName][lang] = parse(plist.parse(res)) - resolve(data[repoName][lang]) - return - , (err) -> - reject(err) - return - ) - else - reject() + return readFile(path.join(repoName, "plist/#{lang}.plist"), "utf8") + return Promise.reject() + ).then( (res) -> + cache.setStringFile(repoName, "plist/#{lang}.plist", res) if isCatched + data[repoName] = {} if !data[repoName]? + data[repoName][lang] = parse(plist.parse(res)) + resolve(data[repoName][lang]) + return + ).catch( (err) -> + reject(err) return ) ) @@ -156,4 +150,3 @@ module.exports = getUntilDone: getUntilDone get: get filter: filter - diff --git a/src/core/request.coffee b/src/core/request.coffee index 63b15f3..bf83205 100644 --- a/src/core/request.coffee +++ b/src/core/request.coffee @@ -5,7 +5,6 @@ request = require "request" path = require "path" fs = require "fs-extra" -Promise = require "promise" ###* * リモートからファイルを取得します diff --git a/src/core/util.coffee b/src/core/util.coffee index 8bc202c..24cd5a1 100644 --- a/src/core/util.coffee +++ b/src/core/util.coffee @@ -3,10 +3,10 @@ fs = require "fs-extra" jszip = require "jszip" {shell} = require("electron") os = require "os" -Promise = require "promise" +denodeify = require "denodeify" config = require "./config" -readFile = Promise.denodeify(fs.readFile) +readFile = denodeify(fs.readFile) ###* * HTMLエスケープ @@ -92,7 +92,6 @@ getVersion = (useCache = false) -> resolve(ver) return ).catch( (err) -> - console.log err reject(err) return ) diff --git a/src/package.json b/src/package.json index df3a844..8b5aaa5 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "BlitzModder", - "version": "1.4.5", + "version": "1.5.0", "description": "Mod manager for World of Tanks Blitz(PC)", "main": "core/core.js", "author": "S(FV293b)", @@ -12,12 +12,11 @@ "license": "MIT", "dependencies": { "bootstrap": "^4.0.0-alpha.6", + "denodeify": "^1.2.1", "fs-extra": "^2.1.2", "fstream": "^1.0.11", - "js-yaml": "^3.8.3", "jszip": "^3.1.3", "plist": "^2.0.1", - "promise": "^7.1.1", "readdirp": "^2.1.0", "request": "^2.81.0", "semver": "^5.3.0",