Difference between revisions of "Template:Recipe define"
From Captain of Industry Wiki
Thadius856 (talk | contribs) (Add ability for air/water polution in dumping and flaring) |
Thadius856 (talk | contribs) (Overhaul to reprecate Venting, DumpingLiq, and Flare params. Incorporate variables for code reuse and ease of reconfig. Detect building param from Template:Infobox machine. Some debug code included to find/fix errors once I submit this edit.) |
||
Line 1: | Line 1: | ||
<includeonly><templatestyles src="Template:Recipe/styles.css" /><!-- | <includeonly><templatestyles src="Template:Recipe/styles.css" /><!-- | ||
** Clear variables in case of multiple uses on one page ** | |||
-->{{#vardefine: accepts | no}}<!-- | |||
-->{{#vardefine: provides | no}}<!-- | |||
** Set up variables to specify desired settings and reuse code ** | |||
-->{{#vardefine: img_arrow | [[File:Icon arrow right.svg|30x45px]] }}<!-- | |||
-->{{#vardefine: imgsz_bldg | 72x72px }}<!-- | |||
-->{{#vardefine: imgsz_large | 64x64px }}<!-- | |||
-->{{#vardefine: imgsz_reg | 48x48px }}<!-- | |||
--><div class="recipe-wrapper"><!-- | --><div class="recipe-wrapper"><!-- | ||
-->{{#if: {{{Mining|}}} |<!-- | ** Special output for when `Mining = yes` ** | ||
-->{{#if: {{{Mining|}}} |<!-- | |||
--><div class="block">[[File:Mining.png{{!}}{{#var: imgsz_large}}{{!}}link=Mining]]</div><!-- | |||
--><div class="block">{{#var: img_arrow}}</div><!-- | |||
--><div class="block">[[File:{{{Output1Name}}}.png{{!}}{{#var: imgsz_large}}{{!}}link={{{Output1Name}}}]]</div><!-- | |||
-->}}<!-- | |||
** Special output for when `Dumping = yes` ** | |||
-->{{#if: {{{Dumping|}}} |<!-- | |||
--><div class="block">[[File:{{{Input1Name}}}.png{{!}}{{#var: imgsz_large}}{{!}}link={{{Input1Name}}}]]</div><!-- | |||
--><div class="block">{{#var: img_arrow}}</div><!-- | |||
--><div class="block">[[File:Dumping.png{{!}}{{#var: imgsz_large}}{{!}}link=Dumping]]</div><!-- | |||
-->}}<!-- | |||
** Stop output if we we drew Mining or Dumping ** | |||
-->{{#if: {{{Mining|}}}{{{Dumping|}}} ||<!-- | |||
** Check if Template:Infobox_machine already knows the building. If not, try the `Building` param. ** | |||
** Then if we still don't know the building, halt execution and display an error message. ** | |||
-->{{#if: {{#varexists: info_bldg}}||<!-- | |||
-->{{#if: {{{Building|}}}|<!-- | |||
-->{{#vardefine: bldg | {{{Building}}} }}|<!-- | |||
--><span style="font-size: 24px; color: red; font-weight: bold">Building not defined</span><!-- | |||
-->[[Category:Broken recipe template usage]]<!-- DEBUG DEBUG DEBUG | |||
-->}}<!-- | -->}}<!-- | ||
-->}}<!-- | |||
-->{{#if: {{{ | ** Main sequence starts here ** | ||
-->{{#if: {{#varexists: bldg}} |<!-- | |||
** Determine if we should display the "PROVIDES" or "ACCEPTS" text in the output ** | |||
-->{{#switch: {{#var: bldg}} | |||
| Flare | |||
| Smoke Stack | |||
| Liquid Dump = {{#vardefine: accepts | yes}} | |||
| Groundwater Pump | |||
| Air Separator | |||
| Seawater Pump | |||
| Oil Pump = {{#vardefine: provides | yes}} | |||
}}<!-- | |||
** Draw the building (and colon) unless the user or Template:Infobox_machine set it to hidden. ** | |||
-->{{#if: {{{HideBldg|}}}{{#varexists:hidebldg}} ||<!-- | |||
--><div class="block">[[File:{{{Building}}}.png{{!}}{{#var: imgsz_bldg}}{{!}}link={{{Building}}}]]</div><!-- | |||
--><div class="block colon">:</div><!-- | |||
-->}}<!-- | |||
** Draw "ACCEPTS" or "PROVIDES", if appropriate ** | |||
-->{{#ifeq: {{#var: accepts}} | yes | <div class="block accepts-provides">ACCEPTS</div> }}<!-- | |||
-->{{#ifeq: {{#var: provides}} | yes | <div class="block accepts-provides">PROVIDES</div> }}<!-- | |||
** Draw 1st input ** | |||
-->{{#if: {{{ | -->{{#if: {{{Input1Name|}}} |<!-- | ||
-- | --><div class="block"><!-- | ||
--><div class="upper">{{#if: {{{Input1Unit|}}} | | {{{Input1Qty|}}} {{{Input1Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input1Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input1Name}}}]]<!-- | |||
-->{{#if: {{{Input1Unit|}}} | <!-- | |||
--><div class="lower">{{{Input1Qty|}}} {{{Input1Unit|}}}</div>|<!-- | |||
--><div class=" | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input1Qty|}}} }}</div><!-- | --><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input1Qty|}}} }}</div><!-- | ||
-->}}<!-- | -->}}<!-- | ||
-->}}<!-- | --></div><!-- | ||
-->}}<!-- | |||
** Draw 2nd input ** | |||
-->{{#if: {{{Input2Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
-->{{# | --><div class="block"><!-- | ||
--><div class="upper">{{#if: {{{Input2Unit|}}} | | {{{Input2Qty|}}} {{{Input2Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input2Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input2Name}}}]]<!-- | |||
--><div class=" | -->{{#if: {{{Input2Unit|}}} | <!-- | ||
--><div class="lower">{{{Input2Qty|}}} {{{Input2Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input2Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 3rd input ** | |||
-->{{#if: {{{Input3Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Input3Unit|}}} | | {{{Input3Qty|}}} {{{Input3Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input3Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input3Name}}}]]<!-- | |||
-->{{#if: {{{Input3Unit|}}} | <!-- | |||
--><div class="lower">{{{Input3Qty|}}} {{{Input3Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input3Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 4th input ** | |||
-->{{#if: {{{Input4Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Input4Unit|}}} | | {{{Input4Qty|}}} {{{Input4Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input4Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input4Name}}}]]<!-- | |||
-->{{#if: {{{Input4Unit|}}} | <!-- | |||
--><div class="lower">{{{Input4Qty|}}} {{{Input4Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input4Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 5th input ** | |||
-->{{#if: {{{Input5Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Input5Unit|}}} | | {{{Input5Qty|}}} {{{Input5Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input5Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input5Name}}}]]<!-- | |||
-->{{#if: {{{Input5Unit|}}} | <!-- | |||
--><div class="lower">{{{Input5Qty|}}} {{{Input5Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input5Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 6th input ** | |||
-->{{#if: {{{Input6Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Input6Unit|}}} | | {{{Input6Qty|}}} {{{Input6Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input6Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input6Name}}}]]<!-- | |||
-->{{#if: {{{Input6Unit|}}} | <!-- | |||
--><div class="lower">{{{Input6Qty|}}} {{{Input6Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input6Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw the recipe times unless it has a unit defined (electricity). ** | |||
** Draw the arrow unless (accepts OR provides is set) AND output1 is empty (e.g., venting non-polluting gasses) ** | |||
-->{{#if: {{{Time|}}} |<!-- | |||
--><div class="block time"><!-- | |||
-->{{#ifeq: {{lc:{{{Time}}}}} | instant || <!-- | |||
--><div class="upper">/ {{{Time}}} [[File:Clock.png|link=|16x16px]]</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--> | |||
--><div><!-- | |||
-->{{#if: {{{Output1Name|}}} |<!-- | |||
-->{{#var: img_arrow}} |<!-- | |||
-->{{#ifeq: {{#var: accepts}} | yes | <br/>}}{{#ifeq: {{#var: provides}} | yes | <br/>}}<!-- | |||
-->}}<!-- | |||
--></div><!-- | |||
-->}}</ | |||
-->{{#ifeq: {{lc:{{{Time}}}}} | instant || <!-- | |||
--><div class="lower blue">/ 60 [[File:Clock 60s.png|link=|16x16px]]</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 1st output ** | |||
-->{{#if: {{{Output1Name|}}} |<!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output1Unit|}}} | | {{{Output1Qty|}}} {{{Output1Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output1Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output1Name}}}]]<!-- | |||
-->{{#if: {{{Output1Unit|}}} | <!-- | |||
--><div class="lower">{{{Output1Qty|}}} {{{Output1Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output1Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 2nd output ** | |||
-->{{#if: {{{Output2Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output2Unit|}}} | | {{{Output2Qty|}}} {{{Output2Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output2Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output2Name}}}]]<!-- | |||
-->{{#if: {{{Output2Unit|}}} | <!-- | |||
--><div class="lower">{{{Output2Qty|}}} {{{Output2Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output2Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 3rd output ** | |||
-->{{#if: {{{Output3Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output3Unit|}}} | | {{{Output3Qty|}}} {{{Output3Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output3Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output3Name}}}]]<!-- | |||
-->{{#if: {{{Output3Unit|}}} | <!-- | |||
--><div class="lower">{{{Output3Qty|}}} {{{Output3Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output3Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 4th output ** | |||
-->{{#if: {{{Output4Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output4Unit|}}} | | {{{Output4Qty|}}} {{{Output4Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output4Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output4Name}}}]]<!-- | |||
-->{{#if: {{{Output4Unit|}}} | <!-- | |||
--><div class="lower">{{{Output4Qty|}}} {{{Output4Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output4Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 5th output ** | |||
-->{{#if: {{{Output5Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output5Unit|}}} | | {{{Output5Qty|}}} {{{Output5Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output5Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output5Name}}}]]<!-- | |||
-->{{#if: {{{Output5Unit|}}} | <!-- | |||
--><div class="lower">{{{Output5Qty|}}} {{{Output5Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output5Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 6th output ** | |||
-->{{#if: {{{Output6Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output6Unit|}}} | | {{{Output6Qty|}}} {{{Output6Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output6Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output6Name}}}]]<!-- | |||
-->{{#if: {{{Output6Unit|}}} | <!-- | |||
--><div class="lower">{{{Output6Qty|}}} {{{Output6Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output6Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Debug code. Remove once completed. ** | |||
-->{{#if: {{{Venting|}}}{{{DumpingLiq|}}}{{{Flare|}}} | [[Category:Clean me up Scotty]]}}<!-- | |||
-->}}<!-- End of building check | |||
-->}}<!-- End of Mining/Dumping check | |||
--></div></includeonly><!-- | --></div></includeonly><!-- | ||
--><noinclude>{{documentation}}</noinclude> | --><noinclude>{{documentation}}</noinclude> |
Revision as of 12:34, 17 January 2022
Template documentation (for the above template, sometimes hidden or invisible) [view] [edit] [history] [refresh]
- Purpose
- This template provides a method to rapidly illustrate crafting recipes without in-depth knowledge of wiki syntax or manual repetition/copy-pasting.
- Basic usage
- The following 2 templates are provided for making a recipe.
- Template: Recipe define: Defines a recipe. The defined recipe can be called by Template: Recipe fetch from any page in this wiki. Usually, recipes are defined on the page of a building. This template only defines recipes but does not display anything.
- Template: Recipe draw: Only displays a written recipe. The recipe written with this template cannot be called by Template: Recipe fetch.
- Both templates can be used with the format written in #Examples in this document.
- Parameters
- The template accepts the following parameters:
Building
: Name of buildings (example: Blast Furnace). No need to specify on pages using Template:Infobox machine because the building is automatically detected.Input1Name
,Input2Name
, ...,Input6Name
: Name of materials (example: Iron Ore)Input1Name = Mining
(optional): Applies special format for mining.
Output1Name
,Output2Name
, ...Output6Name
: Name of products (example: Molten Iron)Output1Name = Dumping
(optional): Applies special format for dumping.
Input1Qty
, ...,Input6Qty
,Output1Qty
, ...,Output6Qty
: Amount of materials or products per 1 cycle of recipe.Time
: Cycle time of recipe.Input1Unit
, ...,Input6Unit
,Output1Unit
, ...,Output6Unit
(optional): Adds unit (for Electricity and Mechanical Power)HideBldg
(optional, rare): Hides building in recipe. No need to specify on pages using Template:Infobox machine (the building is automatically hidden).Unreleased = yes
(optional, rare): Applies special format for unreleased recipe
- Limitations
- This template can accept up to 6 inputs, 6 outputs, and 1 time value per recipe. The output can include only 1 pollution.
Examples
- Example usage for mining
Markup | Renders as |
---|---|
{{Recipe | Input1Name = Mining | Output1Name = Copper Ore }} |
|
- Example usage for dumping loose materials
Markup | Renders as |
---|---|
{{Recipe | Output1Name = Dumping | Input1Name = Rock }} |
|
- Example usage for a machine with both inputs and outputs without pollution (most recipes)
Markup | Renders as |
---|---|
{{Recipe | Building = Rotary Kiln | Input1Name = Limestone | Input1Qty = 12 | Input2Name = Coal | Input2Qty = 2 | Time = 10 | Output1Name = Cement | Output1Qty = 4 | Output2Name = Exhaust | Output2Qty = 8 }} |
|
- Example for buildings that "provide" materials (Groundwater Pump, Air Separator, etc.)
Markup | Renders as |
---|---|
{{Recipe | Building = Groundwater Pump | Time = 10 | Output1Name = Water | Output1Qty = 8 }} |
|
- Example usage for dumping/flaring/venting non-polluting liquids/gasses
Markup | Renders as |
---|---|
{{Recipe | Building = Smoke Stack | Input1Name = Oxygen | Input1Qty = 200 | Time = 20 }} |
|
- Example usage for recipe with pollution
Markup | Renders as |
---|---|
{{Recipe | Building = Liquid Dump | Input1Name = Waste Water | Input1Qty = 2 | Time = 2 | Output1Name = Water Pollution | Output1Qty = 2 }} |
|
{{Recipe | Building = Exhaust Scrubber | Input1Name = Exhaust | Input1Qty = 30 | Input2Name = Water | Input2Qty = 4 | Time = 10 | Output1Name = Sulfur | Output1Qty = 1 | Output2Name = Carbon Dioxide | Output2Qty = 12 | Output3Name = Steam Lo | Output3Qty = 4 | Output4Name = Air Pollution | Output4Qty = 4 }} |
|
- Example usage for Mechanical Power and Electricity recipes with units
Markup | Renders as |
---|---|
{{Recipe | Building = Low-pressure Turbine | Input1Name = Steam Lo | Input1Qty = 4 | Time = 5 | Output1Name = Mechanical Power | Output1Qty = 1 | Output1Unit = MW | Output2Name = Steam Depleted | Output2Qty = 4 }} |
|
- Example usage for instantaneous recipes
Markup | Renders as |
---|---|
{{Recipe | Building = Power Generator | Input1Name = Mechanical Power | Input1Qty = 500 | Input1Unit = KW | Time = 0 | Output1Name = Electricity | Output1Qty = 250 | Output1Unit = KW }} |
|
- Example usage for recipes with variable quantity
Markup | Renders as |
---|---|
{{Recipe | Building = Waste Collection | Time = 60 | Output1Name = Waste | Output1Unit = ? }} |
|
- Example usage for hiding the building (automatically happens on pages using Template:Infobox machine)
Markup | Renders as |
---|---|
{{Recipe | Building = Mixer | HideBldg = yes | Input1Name = Sand | Input1Qty = 18 | Input2Name = Limestone | Input2Qty = 4 | Input3Name = Salt | Input3Qty = 4 | Time = 20 | Output1Name = Glass Mix | Output1Qty = 14 }} |
|
- Example usage for unreleased recipe
Markup | Renders as |
---|---|
{{Recipe | Building = Crusher | Input1Name = Gravel | Input1Qty = 18 | Time = 20 | Output1Name = Gold | Output1Qty = 14 | Unreleased = yes }} |
|
The above text is transcluded from Template:Recipe draw/doc; you can change it or view its history. (How does this work?)
If you're done making changes, please refresh the text. (Why?)
You can experiment in this template's sandbox (create | mirror ) and testcases (create) pages.
Please add categories and interwikis to Template:Recipe draw/doc. (View all subpages of this page.)
If you're done making changes, please refresh the text. (Why?)
You can experiment in this template's sandbox (create | mirror ) and testcases (create) pages.
Please add categories and interwikis to Template:Recipe draw/doc. (View all subpages of this page.)