46 lines
1.5 KiB
GDScript3
46 lines
1.5 KiB
GDScript3
|
tool
|
||
|
|
||
|
extends StaticBody2D
|
||
|
|
||
|
enum Direction { LEFT, RIGHT, UP, DOWN }
|
||
|
enum ComputerType { ShipCommand, Comms, Medical, Research, ShipEngine, Atmos }
|
||
|
|
||
|
export(Direction) var direction = Direction.DOWN setget set_direction
|
||
|
export(ComputerType) var computer_type = ComputerType.ShipCommand setget set_type
|
||
|
|
||
|
var screen_region_offset = Vector2.ZERO
|
||
|
|
||
|
func set_type(val):
|
||
|
computer_type = val
|
||
|
match computer_type:
|
||
|
ComputerType.ShipCommand:
|
||
|
screen_region_offset = Vector2(0, 0)
|
||
|
ComputerType.Comms:
|
||
|
screen_region_offset = Vector2(0, 32)
|
||
|
ComputerType.Medical:
|
||
|
screen_region_offset = Vector2(0, 64)
|
||
|
ComputerType.Research:
|
||
|
screen_region_offset = Vector2(128, 0)
|
||
|
ComputerType.ShipEngine:
|
||
|
screen_region_offset = Vector2(128, 224)
|
||
|
ComputerType.Atmos:
|
||
|
screen_region_offset = Vector2(0, 256)
|
||
|
# Refresh sprite
|
||
|
set_direction(direction)
|
||
|
|
||
|
func set_direction(dir):
|
||
|
direction = dir
|
||
|
match direction:
|
||
|
Direction.DOWN:
|
||
|
$computer.region_rect.position = Vector2(0, 0)
|
||
|
$computer/screen.region_rect.position = screen_region_offset + Vector2(0, 0)
|
||
|
Direction.UP:
|
||
|
$computer.region_rect.position = Vector2(0, 32)
|
||
|
$computer/screen.region_rect.position = screen_region_offset + Vector2(32, 0)
|
||
|
Direction.LEFT:
|
||
|
$computer.region_rect.position = Vector2(32, 32)
|
||
|
$computer/screen.region_rect.position = screen_region_offset + Vector2(96, 0)
|
||
|
Direction.RIGHT:
|
||
|
$computer.region_rect.position = Vector2(32, 0)
|
||
|
$computer/screen.region_rect.position = screen_region_offset + Vector2(64, 0)
|