Archean

Archean

Not enough ratings
Tank Drawing Function
By PyroChiliarch
A function for drawing tanks on a screen.
Customise colours, size and outline.
   
Award
Favorite
Favorited
Unfavorite
The Code
function @draw_tank($sc:screen, $level:number, $x:number, $y:number, $width:number, $height:number, $thickness:number, $frame_gap:number, $fluid_colour:number, $frame_colour:number, $back_colour:number) ; Truthy Value, 1 or 0 if $frame_gap != 0 $frame_gap = 1 ; Draw Tank if $frame_colour != 0 $sc.draw_rect($x, $y, $x+$width, $y+$height, $frame_colour, $frame_colour) ; Draw fluid outline ; if $frame_colour != 0 $sc.draw_rect($x+$thickness, $y+$thickness, $x+$width-$thickness, $y+$height-$thickness, $back_colour, $back_colour) ; Calc fluid fill level ; Adjust fill level for gap var $fluid_size = ($height - ($thickness * 2) - (($frame_gap*2)*$thickness) ) * $level ; Adjust this so code works, forget why its needed $frame_gap += 1 ; Draw fluid $sc.draw_rect($x+($thickness*$frame_gap), $y+$height-$fluid_size-($thickness*$frame_gap), $x+$width-($thickness*$frame_gap), $y+$height-($thickness*$frame_gap), $fluid_colour, $fluid_colour)
Examples
Call it like this on a screen object

var $screen = screen("dash_0", 8) var $blank_colour = color(0, 0, 0, 255) $screen.blank($blank_colour) $screen.@draw_tank(0.8, 143, 1, 40, 99, 2, 0, color(0, 0, 255), color(255, 255, 255), color(10, 10, 10))

This will give you a tank that looks like this.

Here's what the values mean
1: Tank level between 0 and 1
2: X (Sideways) Position on the screen
3: Y (Vertical) Position on the screen
4: Width of the tank
5: Height of the tank
6: Border Size, 0 will make it invisible
7: Fluid gap, 1 or 0, when set to one there will be a gap between the tank edges and the contents
8: Fluid Colour
9: Frame Colour, Optional
10: Background colour behind the fluid, Optional


















Heres another example
$screen.@draw_tank(0.5, 90, 1, 50, 50, 0, 0, color(0, 255, 0), color(0, 0, 0), color(0, 20, 0))

1-5: Fill Level, Position and Size, already explained
6: Border size has been set to 0, so there's no edges
7: Frame Gap, there no frame so this has no effect
8: Fluid Colour is a nice bright green
9: Frame Colour, No frame so this has no effect
10: Background Colour, made it a nice dark green












Here's a larger example of how Im currently displaying my oxygen tank levels.
First I get the average of each connected tank, they might not be the same if Fluid junctions have been daisy chained.
Notice the frame gap, the width is always the same as the frame width.
; Prepare Screen var $screen = screen("dash_0", 8) var $blank_colour = color(0, 0, 0, 255) $screen.blank($blank_colour) ; Get Tank values ; Oxygen var $oxy_level = 0 $oxy_level += input_number("tank_oxy_0", 0) $oxy_level += input_number("tank_oxy_1", 0) $oxy_level += input_number("tank_oxy_2", 0) $oxy_level /= 3 print("Oxygen: ", $oxy_level*100) ; Hydrogen var $hyd_level = 0 $hyd_level += input_number("tank_hyd_0", 0) $hyd_level += input_number("tank_hyd_1", 0) $hyd_level += input_number("tank_hyd_2", 0) $hyd_level += input_number("tank_hyd_3", 0) $hyd_level += input_number("tank_hyd_4", 0) $hyd_level += input_number("tank_hyd_5", 0) $hyd_level /= 6 print("Hydrogen: ", $hyd_level*100) ; Pre-mixed Fuel (Not connected yet) var $fuel_level = 0 print("Fuel: ", $fuel_level*100) ; Draw Tanks var $oxy_colour = color(20, 125, 125) var $hyd_colour = color(125, 125, 20) var $fuel_colour = color(50, 20, 20) var $frame_colour = color(40, 40, 40) var $tank_colour = color(10, 10, 10) var $tank_width = 20 var $tank_height = 198 var $tank_x = 185 var $tank_y = 1 var $tank_thinkness = 2 var $tank_framegap = $true var $tank_gap = $tank_thinkness $screen.@draw_tank($oxy_level, $tank_x + (0 * ($tank_width + $tank_gap)), $tank_y, $tank_width, $tank_height, $tank_thinkness, $tank_framegap, $oxy_colour, $frame_colour, $tank_colour) $screen.@draw_tank($hyd_level, $tank_x + (1 * ($tank_width + $tank_gap)), $tank_y, $tank_width, $tank_height, $tank_thinkness, $tank_framegap, $hyd_colour, $frame_colour, $tank_colour) $screen.@draw_tank($fuel_level, $tank_x + (2 * ($tank_width + $tank_gap)), $tank_y, $tank_width, $tank_height, $tank_thinkness, $tank_framegap, $fuel_colour, $frame_colour, $tank_colour)

1 Comments
_xShantix_ 14 Sep, 2024 @ 11:43am 
nice