rundumdiewelten/rund-um-die-welten/LevelSelectUtility/level_select_planet.gd
phantomvines d8eec1150e upload
2025-09-19 16:37:23 +02:00

142 lines
4.3 KiB
GDScript

extends Area2D
# for differentiating different planets
@export var planet_type: GlobalVariables.planets:
set(value):
planet_type = value
fit_planet_type(value)
@export var level_id: String
var size_scale
var planet_base_radius = 10
@export var grayscale = true
func _ready() -> void:
input_pickable = true
var shape = $CollisionShape2D.shape
# change size of collision area and animation based on which planet is chosen
fit_planet_type(planet_type)
GlobalVariables.level_done.connect(planet_won)
func fit_planet_type(new_planet_type):
# change size of collision area and animation based on which planet is chosen
match new_planet_type:
GlobalVariables.planets.DeathStar:
size_scale = 1.5
$death_star.play("default")
$death_star.visible = true
$goal/mars_goal.visible = true
$rotation_indicator.radius = 30
GlobalVariables.planets.Mars:
size_scale = 1.5
$mars.play("default")
$mars.visible = true
$goal/mars_goal.visible = true
$rotation_indicator.radius = 30
GlobalVariables.planets.Earth:
size_scale = 4.2
$earth.play("default")
$earth.visible = true
$goal/earth_goal.visible = true
$rotation_indicator.radius = 55
GlobalVariables.planets.Sun:
size_scale = 4.8
$sun.play("default")
$sun.visible = true
$goal/sun_goal.visible = true
$rotation_indicator.radius = 65
GlobalVariables.planets.Plant:
size_scale = 2.0
$plant.play("default")
$plant.visible = true
$goal/plant_goal.visible = true
$rotation_indicator.radius = 30
GlobalVariables.planets.Soap:
size_scale = 1.9
$soap.play("default")
$soap.visible = true
$goal/plant_goal.visible = true
$rotation_indicator.radius = 30
GlobalVariables.planets.Magma:
size_scale = 1.4
$magma.play("default")
$magma.visible = true
$goal/mars_goal.visible = true
$rotation_indicator.radius = 30
GlobalVariables.planets.Bowling:
size_scale = 1.5
$bowling.play("default")
$bowling.visible = true
$goal/mars_goal.visible = true
$rotation_indicator.radius = 30
var shape = $CollisionShape2D.shape
shape.radius = planet_base_radius* size_scale
if get_parent():
get_parent().scale_locations(planet_base_radius* size_scale * scale[0])
func planet_won(_win_message):
if GlobalVariables.selected_level == level_id:
grayscale = false
func _input_event(_viewport, event, _shape_idx):
if event is InputEventMouseButton and event.pressed:
print("Level " + GlobalVariables.planet_names[planet_type] + " with ID " + level_id)
GlobalVariables.target_planet_position = get_parent().position
GlobalVariables.player_speed = get_parent().planet_speed
GlobalVariables.player_clockwise = get_parent().clockwise
GlobalVariables.selected_level = level_id
func _physics_process(_delta: float) -> void:
# set target symbol to visible if current planet is targeted
if GlobalVariables.target_planet_position == global_position:
$target.visible = true
else:
$target.visible = false
if GlobalVariables.levels[level_id] == 1:
grayscale = false
if grayscale:
match planet_type:
GlobalVariables.planets.DeathStar:
$death_star.modulate = Color(0.3, 0.3, 0.3)
GlobalVariables.planets.Mars:
$mars.modulate = Color(0.3, 0.3, 0.3)
GlobalVariables.planets.Earth:
$earth.modulate = Color(0.3, 0.3, 0.3)
GlobalVariables.planets.Sun:
$sun.modulate = Color(0.3, 0.3, 0.3)
GlobalVariables.planets.Plant:
$plant.modulate = Color(0.3, 0.3, 0.3)
GlobalVariables.planets.Soap:
$soap.modulate = Color(0.3, 0.3, 0.3)
GlobalVariables.planets.Magma:
$magma.modulate = Color(0.3, 0.3, 0.3)
GlobalVariables.planets.Bowling:
$bowling.modulate = Color(0.3, 0.3, 0.3)
else:
match planet_type:
GlobalVariables.planets.DeathStar:
$death_star.modulate = Color(1.0, 1.0, 1.0)
GlobalVariables.planets.Mars:
$mars.modulate = Color(1.0, 1.0, 1.0)
GlobalVariables.planets.Earth:
$earth.modulate = Color(1.0, 1.0, 1.0)
GlobalVariables.planets.Sun:
$sun.modulate = Color(1.0, 1.0, 1.0)
GlobalVariables.planets.Plant:
$plant.modulate = Color(1.0, 1.0, 1.0)
GlobalVariables.planets.Soap:
$soap.modulate = Color(1.0, 1.0, 1.0)
GlobalVariables.planets.Magma:
$magma.modulate = Color(1.0, 1.0, 1.0)
GlobalVariables.planets.Bowling:
$bowling.modulate = Color(1.0, 1.0, 1.0)