Difference between revisions of "Template:BoM"

From ChatWars Wiki
Jump to: navigation, search
(16 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}} + {{#show: {{#var: recipeSource}} |?ManaCrafting}} }}{{Emoticon|emoticon=Mana}} (Ingredients: {{#var: totalMana}}{{Emoticon|emoticon=Mana}} / Item: {{#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 }} | {{#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>

Revision as of 03:54, 18 March 2019

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