SHOW:
|
|
- or go back to the newest paste.
1 | // Replaces the existing calcTotalrecursive-Method | |
2 | function calcTotalRecursive() { | |
3 | var type, id, req, i, j; | |
4 | try { | |
5 | - | var trackingHandle = tracking.start("berater", "calcTotalRecursive", [recursionCount]); |
5 | + | |
6 | var trackingHandle = tracking.start("berater", "calcTotalRecursive", []); | |
7 | } | |
8 | ||
9 | - | var type = 1; |
9 | + | |
10 | // Type is set to '1', so only forestry products are inspected | |
11 | - | for (var i = prodNameSort[type].length - 1; i >= 0; i--) { |
11 | + | type = 1; |
12 | ||
13 | - | var id = prodNameSort[type][i]; |
13 | + | |
14 | for (i = prodNameSort[type].length - 1; i >= 0; i--) { | |
15 | // Id of currently inspected product | |
16 | id = prodNameSort[type][i]; | |
17 | ||
18 | // If this product is directly or recursivly needed... | |
19 | - | for (var j = 0; j < prodRequire[type][id].length; j++) { |
19 | + | |
20 | // If this product requires other products... (e.g. tree logs DON'T!) | |
21 | - | var req = prodRequire[type][id][j]; |
21 | + | |
22 | // Iterate over pre-products | |
23 | for (j = 0; j < prodRequire[type][id].length; j++) { | |
24 | // Cache the currently inspected pre-product | |
25 | req = prodRequire[type][id][j]; | |
26 | if (!totalRecursive[req[0]][req[1]]) { | |
27 | - | Some magic is done here: |
27 | + | |
28 | - | - At first, we add the directly and recursivly needed products. If the latter not initialized, we assume 0. |
28 | + | |
29 | - | - Second, we divide the sum by the amount yielded product per production cycle, e.g. a 'Waschzuber' is 1 and 'Bretter (Gemeine Fichte)' is 5. |
29 | + | |
30 | - | - Third, we (should) multiply the result by the amount of products needed to initiate the production process. |
30 | + | |
31 | - | - Fourth, we round up to the next integer, because we can't spend fractions of pre-products. |
31 | + | |
32 | - | - At last, we sometimes don't want to round to the next integer, but to the next number e.g. dividable by 5. For instance, the |
32 | + | * Some real magic is done here: We calculate, how many pre-products are recursivly needed! |
33 | - | production process of 30 'Bonbons' needs 5 'Honig' to start. The formula therefore would be: Math.ceil(x / 5) * 5, where |
33 | + | * - At first, we add the directly and recursivly needed products. If the latter not initialized, we assume 0. |
34 | - | x is our result of third. As the mathematicians might have recognized, we can reduce req[2] (amount of products needed to |
34 | + | * - Second, we divide the sum by the amount yielded product per production cycle, e.g. a 'Waschzuber' is 1 and 'Bretter (Gemeine |
35 | - | initiate the production process). |
35 | + | * Fichte)' is 5. |
36 | - | */ |
36 | + | * - Third, we (should) multiply the result by the amount of products needed to initiate the production process. |
37 | * - Fourth, we round up to the next integer, because we can't spend fractions of pre-products. | |
38 | * - At last, we sometimes don't want to round to the next integer, but to the next number e.g. dividable by 5. For instance, the | |
39 | * production process of 30 'Bonbons' needs 5 'Honig' to start. The formula therefore would be: Math.ceil(x / 5) * 5, where | |
40 | * x is our result of third. As the mathematicians might have recognized, we can reduce req[2] (amount of products needed to | |
41 | * initiate the production process). | |
42 | */ | |
43 | totalRecursive[req[0]][req[1]] += Math.ceil((prodMinRack[type][id] + (totalRecursive[type][id] ? totalRecursive[type][id] : 0)) / prodYield[type][id]) * req[2]; // Anzahl rekursiv benötigte Stämme = (direkt + rekursiv benötigte Bretter) / Bretter je Stamm | |
44 | } | |
45 | } | |
46 | - | GM_logError("calcTotalRecursive\ntype=" + type + " iProd=" + iProd + " help=" + implode(help) + " i=" + i + "\n" + err); |
46 | + | |
47 | } | |
48 | if (DEVMODE_FUNCTION) { | |
49 | tracking.end("berater", trackingHandle); | |
50 | } | |
51 | } catch (err) { | |
52 | GM_logError("calcTotalRecursive\ntype=" + type + " id=" + id + " req=" + implode(req) + " i=" + i + " j=" + j + "\n" + err); | |
53 | } | |
54 | } | |
55 | ||
56 | // In 'function calcProdMinRack(caller)', the call of calcTotalRecursive must be fitted to the new signiture | |
57 | if (valMinRackRecursive) { | |
58 | calcTotalRecursive(); // recursive need products calculation | |
59 | // Some iteration over variable totalRecursive to adjust prodMinRack | |
60 | } | |
61 | ||
62 | // German menu-item translation in function startScript() | |
63 | texte["de"]["settings_valMinRackRecursive"] = ["Rekursive Produkte", "Berechne die rekursiv benötigten Produkte (in der Baumerei) und addiere sie zur Liste der (direkt) benötigten Produkte hinzu."]; |