Difference between revisions of "Template:BoM"

From ChatWars Wiki
Jump to: navigation, search
(remove thousands separator from the final bom mana and weight values of the resulting item to be in line with the total sums as they don't have thousands separators)
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{#vardefine: recipeSource | {{{source|{{PAGENAME}} }}} }}{{#vardefine: outputMode | {{{mode|all}}} }}<!--
+
{{#vardefine: recipeSource | {{{source|{{ReplaceNumericCharEncoding|string={{PAGENAME}} }} }}} }}{{#vardefine: outputMode | {{{mode|all}}} }}{{#vardefine: incomplete | {{#show: {{#var: recipeSource}} | ?BoolRecipeIncomplete }} }}<!--
 
-->{{#vardefine: resourceList|}}<includeonly><!--
 
-->{{#vardefine: resourceList|}}<includeonly><!--
 
--><div class="mw-collapsible mw-collapsed" style="width: 15%; overflow: visible;" data-expandtext="Show BoM" data-collapsetext="Hide BoM">
 
--><div class="mw-collapsible mw-collapsed" style="width: 15%; overflow: visible;" data-expandtext="Show BoM" data-collapsetext="Hide BoM">
Line 19: Line 19:
 
}}<!--
 
}}<!--
  
Tree style list of resources + intermediate steps-->
+
Tree style list of resources + intermediate steps-->{{#ifeq: {{#var: incomplete}} | true | <br>''ATTENTION: Recipe and thus Bill of Materials is incomplete!''<br> }}
 
{{#switch: {{#var: outputMode}}
 
{{#switch: {{#var: outputMode}}
 
   | tree | all = {{#var: outputBuffer}}
 
   | tree | all = {{#var: outputBuffer}}
Line 31: Line 31:
 
               -->{{#arrayslice: outputBufferList | outputBufferList | 1}} <!-- remove the one empty element that somehow makes it through the filter (dont know dont care)--><!--
 
               -->{{#arrayslice: outputBufferList | outputBufferList | 1}} <!-- remove the one empty element that somehow makes it through the filter (dont know dont care)--><!--
  
               -->{{#arraydefine: neededBasicResources}}{{#arraydefine: neededQuantities}}{{#vardefine: i | 0 }}<!--
+
               -->{{#arraydefine: neededBasicResources}}{{#arraydefine: neededQuantities}}{{#vardefine: totalMana | 0 }}{{#vardefine: totalStock | 0 }}{{#vardefine: i | 0 }}<!--
 
               -->{{#while:
 
               -->{{#while:
 
                   | {{#ifexpr: {{#var: i}} < {{#arraysize: outputBufferList}} | true }}
 
                   | {{#ifexpr: {{#var: i}} < {{#arraysize: outputBufferList}} | true }}
Line 41: Line 41:
 
                       -->{{#if: {{#var: arrayPos}} <!-- if resource is found (already exists in that array) no new element is added, old element is modified, if not in the array yet, added-->
 
                       -->{{#if: {{#var: arrayPos}} <!-- if resource is found (already exists in that array) no new element is added, old element is modified, if not in the array yet, added-->
 
                           |  
 
                           |  
                           | {{#arraydefine: newResource | {{#var: resource}} }}
+
                           | {{#arraydefine: newResource | {{#var: resource}} }}<!--
                            {{#arraymerge: neededBasicResources | neededBasicResources | newResource }}
+
                          -->{{#arraymerge: neededBasicResources | neededBasicResources | newResource }}<!--
                            {{#arraydefine: newQuantity | 0 }}
+
                          -->{{#arraydefine: newQuantity | 0 }}<!--
                            {{#arraymerge: neededQuantities | neededQuantities | newQuantity }}
+
                          -->{{#arraymerge: neededQuantities | neededQuantities | newQuantity }}<!--
                            {{#vardefine: arrayPos | {{#arraysearch: neededBasicResources | {{#var: resource}} }} }}
+
                          -->{{#vardefine: arrayPos | {{#arraysearch: neededBasicResources | {{#var: resource}} }} }}
                         }}
+
                         }}<!--
                        {{#vardefine: oldQuantitySum | {{#arrayindex: neededQuantities | {{#var: arrayPos}} }} }}
+
                      -->{{#vardefine: oldQuantitySum | {{#arrayindex: neededQuantities | {{#var: arrayPos}} }} }}<!--
                        {{#vardefine: newQuantity | {{#sub: {{#arrayindex: outputBufferList | {{#var: i}} }} | 0 | {{#pos: {{#arrayindex: outputBufferList | {{#var: i}} }} | x }} }} }} <!-- extract quantity from string-->
+
                      -->{{#vardefine: newQuantity | {{#sub: {{#arrayindex: outputBufferList | {{#var: i}} }} | 0 | {{#pos: {{#arrayindex: outputBufferList | {{#var: i}} }} | x }} }} }} <!-- extract quantity from string--><!--
                        {{#arraydefine: new | {{#expr: {{#var: oldQuantitySum}} + {{#var: newQuantity}} }} }}
+
                      -->{{#arraydefine: new | {{#expr: {{#var: oldQuantitySum}} + {{#var: newQuantity}} }} }}<!--
                        {{#arrayslice: quantitiesfront | neededQuantities | 0 | {{#var: arrayPos}} }}
+
                      -->{{#arrayslice: quantitiesfront | neededQuantities | 0 | {{#var: arrayPos}} }}<!--
                        {{#arrayslice: quantitiesback | neededQuantities | {{#expr: {{#var: arrayPos}} + 1 }} }}
+
                      -->{{#arrayslice: quantitiesback | neededQuantities | {{#expr: {{#var: arrayPos}} + 1 }} }}<!--
                        {{#arraymerge: neededQuantities | quantitiesfront | new }}
+
                      -->{{#arraymerge: neededQuantities | quantitiesfront | new }}<!--
                        {{#arraymerge: neededQuantities | neededQuantities | quantitiesback }}
+
                      -->{{#arraymerge: neededQuantities | neededQuantities | quantitiesback }}<!--
 +
                      -->{{#vardefine: totalStock | {{#expr: {{#var: totalStock}} + ( {{#var: newQuantity}} * {{#show: {{#var: resource}} |?Weight}} ) }} }}
 
                     }}
 
                     }}
 
                     {{#ifeq: {{#rpos: {{#arrayindex: outputBufferList | {{#var: i}} }} | Mana }} | -1 <!-- checks if the item uses mana to add to the mana tally-->
 
                     {{#ifeq: {{#rpos: {{#arrayindex: outputBufferList | {{#var: i}} }} | Mana }} | -1 <!-- checks if the item uses mana to add to the mana tally-->
Line 65: Line 66:
 
                 }}
 
                 }}
  
                {{#vardefine: n | 0 }}
+
 
                {{#while:
+
<!--          -->Basic resources sum:<br><!--
 +
              -->{{#vardefine: n | 0 }}<!--
 +
              -->{{#while:
 
                   | {{#ifexpr: {{#var: n}} < {{#arraysize: neededBasicResources}} | true }}
 
                   | {{#ifexpr: {{#var: n}} < {{#arraysize: neededBasicResources}} | true }}
 
                   | {{#arrayindex: neededQuantities | {{#var: n}} }}x [[{{#arrayindex: neededBasicResources | {{#var: n}} }}]]<br>
 
                   | {{#arrayindex: neededQuantities | {{#var: n}} }}x [[{{#arrayindex: neededBasicResources | {{#var: n}} }}]]<br>
 
                     {{#vardefine: n | {{#expr: {{#var: n}} + 1 }} }}
 
                     {{#vardefine: n | {{#expr: {{#var: n}} + 1 }} }}
 
                 }}<!--
 
                 }}<!--
               -->Mana Cost: {{#expr: {{#var: totalMana}} + {{#show: {{#var: recipeSource}} |?ManaCrafting}} }}{{Emoticon|emoticon=Mana}} (Ingredients: {{#var: totalMana}}{{Emoticon|emoticon=Mana}} / Item: {{#show: {{#var: recipeSource}} |?ManaCrafting}}{{Emoticon|emoticon=Mana}})
+
               -->[[Mana]] Cost: {{#expr: {{#var: totalMana}} + {{RemoveThousandSeparator|number={{#show: {{#var: recipeSource}} |?ManaCrafting}} }} }}{{Emoticon|emoticon=Mana}} (Ingredients: {{#var: totalMana}}{{Emoticon|emoticon=Mana}} / Item: {{RemoveThousandSeparator|number={{#show: {{#var: recipeSource}} |?ManaCrafting}} }}{{Emoticon|emoticon=Mana}})<br>
 +
<!--          -->Total [[stock]] weight of basic resources: {{#var: totalStock}}{{Emoticon|emoticon=Stock}}, stock weight of finished item: {{#if: {{#show: {{#var: recipeSource}} |?Weight }} | {{RemoveThousandSeparator|number={{#show: {{#var: recipeSource}} |?Weight }} }} | [[??]] }}{{Emoticon|emoticon=Stock}}
 
}}</div></div><!--
 
}}</div></div><!--
 
--></includeonly><noinclude>
 
--></includeonly><noinclude>
Generates a BoM (Bill of Materials) for an item. Has three modes:
+
Generates a BoM (Bill of Materials) for an item. Has three modes you can choose with the template parameter <code>outputMode</code>:
* Show the most basic resources with all amounts added up. (WIP)
+
* <code>outputMode = list</code> - Show the most basic resources with all amounts added up.
* Show a tree style list with all the needed resources as child of the intermediate ingredient with different levels of indentation (done)
+
* <code>outputMode = tree</code> - Show a tree style list with all the needed resources as child of the intermediate ingredient with different levels of indentation (done)
* Show both
+
* <code>outputMode = all</code> - Show both (Default mode in case parameter is left out)
  
 
Uses sub-template [[Template:ResourceBreakdown]]
 
Uses sub-template [[Template:ResourceBreakdown]]
 
[[Category:Template]]
 
[[Category:Template]]
 
<!-- needs empty lines removed-->
 
 
 
</noinclude>
 
</noinclude>

Latest revision as of 15:32, 31 October 2023

Generates a BoM (Bill of Materials) for an item. Has three modes you can choose with the template parameter outputMode:

  • outputMode = list - Show the most basic resources with all amounts added up.
  • outputMode = tree - Show a tree style list with all the needed resources as child of the intermediate ingredient with different levels of indentation (done)
  • outputMode = all - Show both (Default mode in case parameter is left out)

Uses sub-template Template:ResourceBreakdown