102 lines
3.3 KiB
GDScript
102 lines
3.3 KiB
GDScript
extends Control
|
|
|
|
@onready var day_night: EnvironmentManagerRoot = $"../DayNight"
|
|
@onready var weather_event_label: Label = $WeatherEventLabel
|
|
@onready var day_time_label: Label = $DayTimeLabel
|
|
@onready var day_time_slider: HSlider = $DayTimeSlider
|
|
@onready var wind_slider: HSlider = $WindSlider
|
|
@onready var day_time_option: OptionButton = $DayTimeOptions
|
|
|
|
func _ready() -> void:
|
|
UIEvents.day_time_changed.connect(_on_day_time_changed)
|
|
UIEvents.day_time_option_changed.connect(_on_day_time_option_changed)
|
|
UIEvents.weather_event_changed.connect(_on_weather_event_changed)
|
|
if day_night != null and day_night.environment_config != null and wind_slider != null:
|
|
wind_slider.set_value_no_signal(day_night.environment_config.wind_strength)
|
|
_sync_day_time_ui()
|
|
_on_weather_event_changed("Weather: Clear")
|
|
|
|
func _on_rain_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_rain.emit(toggled_on)
|
|
|
|
func _on_snow_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_snow.emit(toggled_on)
|
|
|
|
func _on_wind_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_wind.emit(toggled_on)
|
|
|
|
func _on_wind_slider_value_changed(value: float) -> void:
|
|
UIEvents.wind_change.emit(value)
|
|
|
|
func _on_random_weather_pressed() -> void:
|
|
UIEvents.trigger_random_weather.emit(10.0)
|
|
|
|
func _on_fireflies_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_fireflies.emit(toggled_on)
|
|
|
|
func _on_storm_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_storm.emit(toggled_on)
|
|
|
|
func _on_day_time_slider_value_changed(value: float) -> void:
|
|
UIEvents.set_day_time.emit(value)
|
|
|
|
func _on_day_time_changed(value: float, time_string: String) -> void:
|
|
day_time_slider.set_value_no_signal(value)
|
|
var label_text: String = "Time %s" % time_string
|
|
if (
|
|
day_night != null
|
|
and day_night.environment_config != null
|
|
and day_night.environment_config.show_day_time_debug
|
|
):
|
|
label_text = "Time %s | nt %.3f | dt %.3f" % [time_string, value, day_night.day_time]
|
|
day_time_label.text = label_text
|
|
|
|
func _on_weather_event_changed(description: String) -> void:
|
|
if weather_event_label:
|
|
weather_event_label.text = description
|
|
|
|
func _on_fog_overlay_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_fog_overlay.emit(toggled_on)
|
|
|
|
func _on_dust_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_dust.emit(toggled_on)
|
|
|
|
func _on_blur_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_blur.emit(toggled_on)
|
|
|
|
func _on_pause_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_pause_daytime.emit(toggled_on)
|
|
|
|
func _on_shadows_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_shadows.emit(toggled_on)
|
|
|
|
func _sync_day_time_ui() -> void:
|
|
if day_night == null:
|
|
return
|
|
|
|
var day_night_controller: DayNightController = (
|
|
day_night.get_node_or_null("DayNightController") as DayNightController
|
|
)
|
|
if day_night_controller == null:
|
|
call_deferred("_sync_day_time_ui")
|
|
return
|
|
|
|
_on_day_time_changed(
|
|
day_night_controller.current_time,
|
|
day_night_controller.get_time_string()
|
|
)
|
|
_on_day_time_option_changed(
|
|
day_night_controller.get_time_option_index(day_night_controller.current_time)
|
|
)
|
|
|
|
func _on_day_time_option_changed(index: int) -> void:
|
|
if day_time_option == null:
|
|
return
|
|
day_time_option.select(index)
|
|
|
|
func _on_option_button_item_selected(index: int) -> void:
|
|
UIEvents.time_option_item_changed.emit(index)
|
|
|
|
func _on_fog_toggled(toggled_on: bool) -> void:
|
|
UIEvents.toggle_fog.emit(toggled_on)
|