tool extends StaticBody enum { PLAIN, HILLS, MOUNTAINS, AIRPORT } enum { Y, X } # general cell variables var x : int = -1 var y : int = -1 var cell_type : int = PLAIN var orientation : int = 0 # 0 - 5 # airport variables var airport_number : int var airport_color : Color var airport_id : int var airport_name : String var runway_count : int var airport_closed : bool = false # cell offsets that describe valid approaches based on runways and surroundings # used to choose a takeoff position enum rotations { EAST, NORTHEAST, NORTHWEST, WEST, SOUTHWEST, SOUTHEAST } const bearings = [ [0,1] , [-1, 0], [-1, -1], [0, -1], [1, 0], [1, 1] ] var valid_departure_bearings = [] var valid_arrival_bearings = [] func _ready(): pass func reset(): $Hills.visible = false $Mountain.visible = false $Airport.visible = false $Airport/EasyRunway.visible = true # reset runways $Airport/MediumRunway.visible = true $Airport/AirportName.visible = false $Airport/AirportIcon.visible = false orientation = 0 self.rotation.y = 0 cell_type = PLAIN x = -1 y = -1 airport_closed = false func set_up(settings): x = settings["pos"][X] ; y = settings["pos"][Y] cell_type = settings["cell_type"] valid_departure_bearings.clear() valid_arrival_bearings.clear() if settings["orientation"]: # bearing according to E, NE, etc. orientation = settings["orientation"] self.global_rotation.y = orientation * deg2rad(60) if cell_type == HILLS: $Hills.visible = true elif cell_type == MOUNTAINS: $Mountain.visible = true elif cell_type == AIRPORT: $Airport.visible = true if settings["use_names"]: airport_name = settings["airport_name"] $Airport/AirportName.visible = true else: airport_number = settings["airport_number"] airport_color = settings["airport_color"] $Airport/AirportIcon.visible = true $Airport/AirportIcon.texture = load("res://textures/airport_indicator_%d.png" % airport_number) $Airport/AirportIcon.modulate = airport_color valid_departure_bearings = settings["valid_approach_offsets"] airport_id = settings["airport_id"] for departure_bearing in valid_departure_bearings: var bearing_i = bearings.find(departure_bearing) bearing_i = (bearing_i + 3) % 6 # opposite bearing valid_arrival_bearings.push_back(bearings[bearing_i]) runway_count = int(clamp(settings["runway_count"], 1, 3)) if runway_count < 3: $Airport/EasyRunway.visible = false if runway_count == 1: $Airport/MediumRunway.visible = false