TicTacToeExtreme/lucky_wheel.gd

95 lines
2.0 KiB
GDScript

extends Control
@export var is_spin: bool = false
@export var speed: int = 10
@export var power: int = 2
@export var reward_position = 0
@export var spun = false
@export var wheelActive = false
signal sig_reward
var vat_pham = [
{
"name": "Dark blue",
"from": 0,
"to": 45,
"ma_vat_pham": 200,
"ten_vat_pham": "Thanh Long"
},
{
"name": "Dark green",
"from": 45,
"to": 90,
"ma_vat_pham": 0,
"ten_vat_pham": "Gạch"
},
{
"name": "Blue",
"from": 90,
"to": 135,
"ma_vat_pham": 204,
"ten_vat_pham": "Chanh"
},
{
"name": "Yellow",
"from": 135,
"to": 180,
"ma_vat_pham": 203,
"ten_vat_pham": "Dưa Hấu"
},
{
"name": "Purple",
"from": 180,
"to": 225,
"ma_vat_pham": 201,
"ten_vat_pham": "Sầu Riêng"
},
{
"name": "Green",
"from": 225,
"to": 270,
"ma_vat_pham": 0,
"ten_vat_pham": "Gạch"
},
{
"name": "Orange",
"from": 270,
"to": 315,
"ma_vat_pham": 202,
"ten_vat_pham": "Vãi"
},
{
"name": "Pink",
"from": 315,
"to": 360,
"ma_vat_pham": 0,
"ten_vat_pham": "Gạch"
}
]
func _on_btn_spin_pressed():
if is_spin == true:
spun = true
var tween = get_tree().create_tween().set_parallel(true)
tween.connect("finished", func():
#after tween finish animation, this function is call
var old_rotation_degrees = %front.rotation_degrees
#set is_spin = false to tell for user can press again
is_spin = false
if old_rotation_degrees > 360:
#This part is to fix the error that when rotating the steamer once, it will not rotate counterclockwise
var rad_ = fmod(old_rotation_degrees, 360)
%front.rotation_degrees = rad_
)
reward_position = randi_range(0, 360)
for item in vat_pham:
if reward_position >= item.from - 22.5 and reward_position <= item.to - 22.5:
#signal for another scene
sig_reward.emit(item.ma_vat_pham)
tween.tween_property(%front, "rotation_degrees", reward_position + 360 * speed * power , 3).set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_CIRC)
tween.finished