Prototype/StorageTank: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(Added prototype type to page)
(1.1.51: Prototype/EntityWithOwner added)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Basics ==
{{Prototype parent|Prototype/EntityWithOwner}}
Prototype type: '''storage-tank'''
A [[storage tank]].


A [[storage tank]]. Based on [[Prototype/EntityWithHealth]].
{{Prototype TOC|storage-tank}}


== Mandatory properties ==
== Mandatory properties ==
This prototype inherits all the properties from [[Prototype/EntityWithHealth]].
This prototype inherits all the properties from [[Prototype/EntityWithOwner]].


=== fluid_box ===
{{Prototype property|fluid_box|[[Types/FluidBox|FluidBox]]}}
'''Type''': [[Types/FluidBox]]


=== window_bounding_box ===
{{Prototype property|window_bounding_box|[[Types/BoundingBox|BoundingBox]]}}
'''Type''': [[Types/BoundingBox]]
The location of the window showing the contents. Note that for window_background the width and height are determined by the sprite and window_bounding_box only determines the drawing location. For fluid_background the width is determined by the sprite and the height and drawing location are determined by window_bounding_box.


=== pictures ===
{{Prototype property|pictures|[[Types/table|table]]}}
==== picture ====
Table with the following mandatory members:
'''Type''': [[Types/Sprite4Way]]
* picture - [[Types/Sprite4Way|Sprite4Way]]
* window_background - [[Types/Sprite|Sprite]]
* fluid_background - [[Types/Sprite|Sprite]]
* flow_sprite - [[Types/Sprite|Sprite]]
* gas_flow - [[Types/Animation|Animation]]


==== window_background ====
{{Prototype property|flow_length_in_ticks|[[Types/uint32|uint32]]}}
'''Type''': [[Types/Sprite]]
Must be positive.


==== fluid_background ====
Used for determining the x position inside the flow_sprite when drawing the storage tank. Does not affect gameplay.
'''Type''': [[Types/Sprite]]


==== flow_sprite ====
The x position of the sprite will be <code>((game.tick % flow_length_in_ticks) ÷ flow_length_in_ticks) × (flow_sprite.width - 32)</code>. This means, that over flow_length_in_ticks ticks, the part of the flow_sprite that is drawn in-game is incrementally moved from most-left to most-right inside the actual sprite, that part always has a width of 32px. After flow_length_in_ticks, the part of the flow_sprite that is drawn will start from the left again.
'''Type''': [[Types/Sprite]]


==== gas_flow ====
Diagram:
'''Type''': [[Types/Animation]]
<pre>
Example state:
  [ { }    ]
  [] <- flow_sprite
  {} <- the part that is drawn in-game, width is 32px


=== flow_length_in_ticks ===
This means:
'''Type''': [[Types/uint32]]
State at (tick % flow_length_in_ticks) == 0:
 
  [{ }      ]
Must be positive.
State at (tick % flow_length_in_ticks) == (flow_length_in_ticks ÷ 2):
  [    { }  ]
State at (tick % flow_length_in_ticks) == (flow_length_in_ticks - 1):
  [       { }]
</pre>


== Optional properties ==
== Optional properties ==


=== two_direction_only ===
{{Prototype property|two_direction_only|[[Types/bool|bool]]|false|optional=true}}
'''Type''': [[Types/bool]]


'''Default''': false
{{Prototype property|circuit_wire_max_distance|[[Types/double|double]]|0|optional=true}}


=== circuit_wire_max_distance ===
{{Prototype property|draw_copper_wires|[[Types/bool|bool]]|true|optional=true}}
'''Type''': [[Types/double]]


'''Default''': 0
{{Prototype property|draw_circuit_wires|[[Types/bool|bool]]|true|optional=true}}


=== circuit_wire_connection_points ===
{{Prototype property|circuit_wire_connection_points|[[Types/table|table]] of [[Types/WireConnectionPoint|WireConnectionPoint]]|optional=true}}
'''Type''': [[Types/table]] of [[Types/WireConnectionPoint]]
Mandatory if circuit_wire_max_distance  > 0.


{{Prototype property|circuit_connector_sprites|[[Types/table|table]] of [[Types/CircuitConnectorSprites|CircuitConnectorSprites]]|optional=true}}
Mandatory if circuit_wire_max_distance  > 0.
Mandatory if circuit_wire_max_distance  > 0.


=== circuit_connector_sprites ===
{{Prototype property|scale_info_icons|[[Types/bool|bool]]|true|optional=true}}
'''Type''': [[Types/table]] of [[Types/CircuitConnectorSprites]]
If the icons of fluids shown in alt-mode should be scaled to the storage tank's size.
 
Mandatory if circuit_wire_max_distance  > 0.

Latest revision as of 19:27, 21 January 2022

Prototype definitions » PrototypeBase » Prototype/Entity » Prototype/EntityWithHealth » Prototype/EntityWithOwner » Prototype/StorageTank


A storage tank.


Prototype/StorageTank — storage-tank
flow_length_in_ticks::uint32
fluid_box::FluidBox
pictures::table
window_bounding_box::BoundingBox
circuit_connector_sprites::table of CircuitConnectorSprites (optional)
circuit_wire_connection_points::table of WireConnectionPoint (optional)
circuit_wire_max_distance::double (optional)
draw_circuit_wires::bool (optional)
draw_copper_wires::bool (optional)
scale_info_icons::bool (optional)
two_direction_only::bool (optional)
Inherited from Prototype/EntityWithOwner
allow_run_time_change_of_is_military_target::bool (optional)
is_military_target::bool (optional)
Inherited from Prototype/EntityWithHealth
alert_when_damaged::bool (optional)
attack_reaction::AttackReaction (optional)
corpse::string or table of strings (optional)
create_ghost_on_death::bool (optional)
damaged_trigger_effect::TriggerEffect (optional)
dying_explosion::ExplosionDefinition or table of ExplosionDefinition (optional)
dying_trigger_effect::TriggerEffect (optional)
healing_per_tick::float (optional)
hide_resistances::bool (optional)
integration_patch::Sprite4Way (optional)
integration_patch_render_layer::RenderLayer (optional)
loot::Loot (optional)
max_health::float (optional)
random_corpse_variation::bool (optional)
repair_sound::Sound (optional)
repair_speed_modifier::float (optional)
resistances::Resistances (optional)
Inherited from Prototype/Entity
icons, icon, icon_size (IconSpecification)::IconSpecification
additional_pastable_entities::table of string (optional)
alert_icon_scale::float (optional)
alert_icon_shift::vector (optional)
allow_copy_paste::bool (optional)
autoplace::AutoplaceSpecification (optional)
build_base_evolution_requirement::double (optional)
build_grid_size::uint8 (optional)
build_sound::Sound (optional)
close_sound::Sound (optional)
collision_box::BoundingBox (optional)
collision_mask::CollisionMask (optional)
created_effect::Trigger (optional)
created_smoke::CreateTrivialSmokeEffectItem (optional)
drawing_box::BoundingBox (optional)
emissions_per_second::double (optional)
enemy_map_color::Color (optional)
fast_replaceable_group::string (optional)
flags::EntityPrototypeFlags (optional)
friendly_map_color::Color (optional)
hit_visualization_box::BoundingBox (optional)
map_color::Color (optional)
map_generator_bounding_box::BoundingBox (optional)
minable::MinableProperties (optional)
mined_sound::Sound (optional)
mining_sound::Sound (optional)
next_upgrade::string (optional)
open_sound::Sound (optional)
placeable_by::ItemToPlace or table of ItemToPlace (optional)
protected_from_tile_building::bool (optional)
radius_visualisation_specification::RadiusVisualisationSpecification (optional)
remains_when_mined::string or table of string (optional)
remove_decoratives::string (optional)
rotated_sound::Sound (optional)
selectable_in_game::bool (optional)
selection_box::BoundingBox (optional)
selection_priority::uint8 (optional)
shooting_cursor_size::double (optional)
sticker_box::BoundingBox (optional)
subgroup::string (optional)
tile_height::uint32 (optional)
tile_width::uint32 (optional)
trigger_target_mask::TriggerTargetMask (optional)
vehicle_impact_sound::Sound (optional)
water_reflection::WaterReflectionDefinition (optional)
working_sound::WorkingSound (optional)
Inherited from PrototypeBase
name::string
type::string
localised_description::LocalisedString (optional)
localised_name::LocalisedString (optional)
order::Order (optional)

Mandatory properties

This prototype inherits all the properties from Prototype/EntityWithOwner.

fluid_box

Type: FluidBox

window_bounding_box

Type: BoundingBox
The location of the window showing the contents. Note that for window_background the width and height are determined by the sprite and window_bounding_box only determines the drawing location. For fluid_background the width is determined by the sprite and the height and drawing location are determined by window_bounding_box.

pictures

Type: table
Table with the following mandatory members:

flow_length_in_ticks

Type: uint32
Must be positive.

Used for determining the x position inside the flow_sprite when drawing the storage tank. Does not affect gameplay.

The x position of the sprite will be ((game.tick % flow_length_in_ticks) ÷ flow_length_in_ticks) × (flow_sprite.width - 32). This means, that over flow_length_in_ticks ticks, the part of the flow_sprite that is drawn in-game is incrementally moved from most-left to most-right inside the actual sprite, that part always has a width of 32px. After flow_length_in_ticks, the part of the flow_sprite that is drawn will start from the left again.

Diagram:

Example state:
  [  { }     ]
  [] <- flow_sprite
  {} <- the part that is drawn in-game, width is 32px

This means:
State at (tick % flow_length_in_ticks) == 0:
  [{ }       ]
State at (tick % flow_length_in_ticks) == (flow_length_in_ticks ÷ 2):
  [    { }   ]
State at (tick % flow_length_in_ticks) == (flow_length_in_ticks - 1):
  [       { }]

Optional properties

two_direction_only

Type: bool
Default: false

circuit_wire_max_distance

Type: double
Default: 0

draw_copper_wires

Type: bool
Default: true

draw_circuit_wires

Type: bool
Default: true

circuit_wire_connection_points

Type: table of WireConnectionPoint
Mandatory if circuit_wire_max_distance > 0.

circuit_connector_sprites

Type: table of CircuitConnectorSprites
Mandatory if circuit_wire_max_distance > 0.

scale_info_icons

Type: bool
Default: true
If the icons of fluids shown in alt-mode should be scaled to the storage tank's size.