aboutsummaryrefslogtreecommitdiff
path: root/date_picker/date_picker.gd
blob: fb9cca24d8a6fcbf8236dc1a29af6a7c20cf5815 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
extends Control
class_name DatePicker

const days_per_month: Dictionary = {
	1: 31,
	2: 28,
	3: 31,
	4: 30,
	5: 31,
	6: 30,
	7: 31,
	8: 31,
	9: 30,
	10: 31,
	11: 30,
	12: 31,
}

onready var year_picker: ValuePicker	= get_node("year")
onready var month_picker: ValuePicker	= get_node("month")
onready var day_picker: ValuePicker		= get_node("day")


func _process(delta: float):
	var year := year_picker.value
	var month := month_picker.value
	var day := day_picker.value
	var days_on_month: int = days_per_month[month]
	
	var is_leap_year := (year % 4 == 0 && year % 100 != 0) || year % 400 == 0
	if is_leap_year && month == 2:
		days_on_month = 29
	
	if day > days_on_month:
		day_picker.value = days_on_month
	day_picker.max_value = days_on_month


func get_day() -> int:
	return day_picker.value


func get_month() -> int:
	return month_picker.value


func get_year() -> int:
	return year_picker.value


func get_date() -> Dictionary:
	return {
		year = year_picker.value,
		month = month_picker.value,
		day = day_picker.value,
	}


func set_date(new_year: int, new_month: int, new_day: int):
	year_picker.value = new_year
	month_picker.value = new_month
	day_picker.value = new_day