shawenguan 2 年 前
コミット
77989173d2
1 ファイル変更28 行追加10 行削除
  1. 28 10
      Scripts/gandart/gandartComposite.js

+ 28 - 10
Scripts/gandart/gandartComposite.js

@@ -69,8 +69,8 @@ const GCommonGandartHeads = {
     'Accept-Language': `zh-CN,zh-Hans;q=0.9`,
     'token': gandartToken
 };
-
-const gMaterialDetails = {};
+let gAllMaterialDetails = null;
+const gUsedMaterialDetails = {};
 let gFuncEnables = lk.getVal(GandartConstKey.CompositeFuncEnalbleList);
 if (!lk.isEmpty(gFuncEnables)) {
     gFuncEnables = gFuncEnables.split(',');
@@ -259,7 +259,7 @@ function printMaterialGroupsInfo(materialGroups) {
     lk.log(detailStr);
 }
 
-async function checkGetMaterialDetails(gMaterialDetails, materialDict) {
+async function checkGetMaterialDetails(gUsedMaterialDetails, materialDict) {
     let useCache = lk.getVal(GandartConstKey.CompositeMaterialCache);
     if (!lk.isEmpty(useCache)) {
         useCache = JSON.parse(useCache);
@@ -273,8 +273,9 @@ async function checkGetMaterialDetails(gMaterialDetails, materialDict) {
         if (!lk.isEmpty(jsonStr)) {
             try {
                 let data = JSON.parse(jsonStr);
+                gAllMaterialDetails = data;
                 for (let k in materialDict) {
-                    gMaterialDetails[k] = data[k];
+                    gUsedMaterialDetails[k] = data[k];
                 }
             } catch (error) {
                 lk.logErr(error);
@@ -289,10 +290,10 @@ async function checkGetMaterialDetails(gMaterialDetails, materialDict) {
     if (isReqServerData) {
         for (let k in materialDict) {
             let mInfo = materialDict[k];
-            gMaterialDetails[k] = await getDetailByCasting(mInfo.castingId, mInfo.collectionName);
+            gUsedMaterialDetails[k] = await getDetailByCasting(mInfo.castingId, mInfo.collectionName);
         }
     }
-    return gMaterialDetails;
+    return gUsedMaterialDetails;
 }
 
 async function tryToExecCompositeTask(taskId, taskInfo = {}) {
@@ -326,9 +327,9 @@ async function tryToExecCompositeTask(taskId, taskInfo = {}) {
         // printMaterialGroupsInfo(materialGroups);
         let materialDict = ret[1];
         // 获取用户材料拥有详情
-        await checkGetMaterialDetails(gMaterialDetails, materialDict);
+        await checkGetMaterialDetails(gUsedMaterialDetails, materialDict);
         // 找出可行的合成搭配
-        let validCompositeGroups = findValidGroupMaterialGroups(materialGroups, gMaterialDetails);
+        let validCompositeGroups = findValidGroupMaterialGroups(materialGroups, gUsedMaterialDetails);
         setCompositeTaskMateListForDisplay(validCompositeGroups);
         // printMaterialGroupsInfo(validCompositeGroups, '预估可行组合数');
 
@@ -338,7 +339,7 @@ async function tryToExecCompositeTask(taskId, taskInfo = {}) {
             for (let k in compositeCountDict) {
                 let mGroup = validCompositeGroups[k];
                 if (mGroup) {
-                    let arr = checkPickMaterialForComposite(mGroup, gMaterialDetails, compositeCountDict[k]);
+                    let arr = checkPickMaterialForComposite(mGroup, gUsedMaterialDetails, compositeCountDict[k]);
                     finalGroups = finalGroups.concat(arr);
                 }
             }
@@ -348,7 +349,7 @@ async function tryToExecCompositeTask(taskId, taskInfo = {}) {
             if (isExecFinalComposite()) {
                 if (finalGroups.length == 0) {
                     lk.log('暂无可行的合成组合,请检查');
-                    lk.appendNotifyInfo('⚠️暂无可行的合成组合');
+                    // lk.appendNotifyInfo('⚠️暂无可行的合成组合');
                     return;
                 }
                 await doExecFinalComposite(taskId, taskInfo, finalGroups);
@@ -409,11 +410,14 @@ async function doExecFinalComposite(taskId, taskInfo, finalGroups) {
         lk.log(`库存不足单数:${noStockCnt}`);
 
         // 从高的序号删除
+        let usedGroups = [];
         for (let i = retWillDelLst.length - 1; i >= 0; i--) {
             let idx = retWillDelLst[i];
+            usedGroups.push(finalGroups[idx]);
             finalGroups.splice(idx, 1);
         }
         setCompositeTaskFinalList(taskInfo, finalGroups);
+        refreshMaterialAfterComposite(usedGroups);
     } else {
         lk.log('合成成功单数:0');
     }
@@ -433,6 +437,20 @@ function setCompositeTaskFinalList(taskInfo, finalGroups) {
     lk.setVal(GandartConstKey.CompositeTaskFinalList, JSON.stringify(finalCacheData, null, 2));
 }
 
+function refreshMaterialAfterComposite(usedGroups) {
+    if (!gAllMaterialDetails) {
+        let jsonStr = lk.getVal(GandartConstKey.PrivCollectionDetail);
+        if (!lk.isEmpty(jsonStr)) {
+            try {
+                let data = JSON.parse(jsonStr);
+                gAllMaterialDetails = data;
+            } catch (error) {
+                lk.logErr(error);
+            }
+        }
+    }
+}
+
 function getCompositeTaskFinalList() {
     let data;
     let jsonStr = lk.getVal(GandartConstKey.CompositeTaskFinalList);