87 lines
2.9 KiB
GDScript
87 lines
2.9 KiB
GDScript
class_name EditWindow extends Window
|
|
@onready var days_edit: SpinBox = $margin/VBoxContainer/ScrollContainer/Container/Ends/DaysEdit
|
|
@onready var years_edit: SpinBox = $margin/VBoxContainer/ScrollContainer/Container/Ends/YearsEdit
|
|
@onready var reason_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/Reason/Reason Edit"
|
|
@onready var uid_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/UID/UID Edit"
|
|
@onready var name_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/Name/Name Edit"
|
|
@onready var donebutton: Button = $margin/VBoxContainer/Done
|
|
@onready var delete_check: CheckBox = $margin/VBoxContainer/ScrollContainer/Container/DeleteCheck
|
|
@onready var delete_button: Button = $margin/VBoxContainer/ScrollContainer/Container/DeleteButton
|
|
@onready var type_button: OptionButton = $margin/VBoxContainer/ScrollContainer/Container/Type/TypeButton
|
|
|
|
@export var opened_from:PunishShowcase
|
|
@export var punishment:Punishment
|
|
|
|
const id_to_name:Dictionary = {Punishment.punishment_types.BAN:"BAN",
|
|
Punishment.punishment_types.MUTE:"MUTE"}
|
|
|
|
signal changed
|
|
|
|
func _ready() -> void:
|
|
close_requested.connect(close)
|
|
donebutton.pressed.connect(done)
|
|
delete_button.pressed.connect(delete_this)
|
|
for type in Punishment.punishment_types:
|
|
type_button.add_item(type)
|
|
|
|
func delete_this():
|
|
if opened_from:
|
|
opened_from.queue_free()
|
|
punishment = null
|
|
hide()
|
|
delete_check.button_pressed = false
|
|
changed.emit()
|
|
|
|
func _process(delta: float) -> void:
|
|
delete_button.disabled = !delete_check.button_pressed
|
|
|
|
func update(set_time:bool = false):
|
|
if !punishment:
|
|
printerr("!punishment is true")
|
|
return
|
|
name_edit.text = punishment.username
|
|
uid_edit.text = punishment.uid
|
|
reason_edit.text = punishment.punish_reason
|
|
var from_time:int = punishment.punish_end
|
|
var from_unix:Dictionary = Time.get_date_dict_from_unix_time(from_time)
|
|
@warning_ignore("integer_division")
|
|
var years:int = from_unix["year"]
|
|
@warning_ignore("integer_division")
|
|
var days:int = from_unix["day"]
|
|
years_edit.value = years
|
|
days_edit.value = days
|
|
type_button.select(punishment.what_punishment)
|
|
changed.emit()
|
|
|
|
func close():
|
|
punishment = null
|
|
opened_from = null
|
|
delete_check.button_pressed = false
|
|
hide()
|
|
changed.emit()
|
|
|
|
func done():
|
|
if opened_from:
|
|
opened_from.punishment = get_punish()
|
|
opened_from.update()
|
|
hide()
|
|
else:
|
|
hide()
|
|
delete_check.button_pressed = false
|
|
changed.emit()
|
|
|
|
func get_punish() -> Punishment:
|
|
var new_punishment:Punishment = Punishment.new()
|
|
new_punishment.username = name_edit.text
|
|
new_punishment.uid = uid_edit.text
|
|
new_punishment.punish_reason = reason_edit.text
|
|
var time:int = 0
|
|
time += years_edit.value * 31536000
|
|
time += days_edit.value *86400
|
|
var unixtime:float = Time.get_unix_time_from_datetime_dict({"year":years_edit.value,
|
|
"day":days_edit.value,})
|
|
new_punishment.punish_end = unixtime
|
|
new_punishment.what_punishment = type_button.selected
|
|
changed.emit()
|
|
return new_punishment
|