66 lines
1.8 KiB
GDScript
66 lines
1.8 KiB
GDScript
extends Node2D
|
|
|
|
var spinning = false
|
|
|
|
var maxLaunchSpeed = 1300
|
|
var minLaunchSpeed = 600
|
|
|
|
var spinSpeed = 0
|
|
var acceleration = -100
|
|
|
|
var rng = RandomNumberGenerator.new()
|
|
|
|
var prizes = []
|
|
|
|
var ticketItem = load("res://Items/Paper/FaireTicket.gd")
|
|
|
|
func _ready():
|
|
initialize_prizes()
|
|
|
|
func _process(delta):
|
|
if spinning:
|
|
%SpinningWheel.rotation_degrees += spinSpeed * delta
|
|
spinSpeed += acceleration * delta
|
|
|
|
while %SpinningWheel.rotation_degrees >= 360:
|
|
%SpinningWheel.rotation_degrees -= 360
|
|
|
|
if spinSpeed <= 0:
|
|
spinning = false
|
|
give_prize()
|
|
|
|
func give_prize():
|
|
var prize = prizes[floor(%SpinningWheel.rotation_degrees/30)]
|
|
|
|
if prize != null:
|
|
var newPrize = prize.new()
|
|
InventoryManager.add_item_to_inventory(newPrize)
|
|
LevelManager.add_XP("gaming", newPrize.get_value())
|
|
|
|
MessageManager.item_popup(prize.new())
|
|
|
|
func spin():
|
|
if !spinning:
|
|
if InventoryManager.spend_item(ticketItem.new(), 2):
|
|
spinning = true
|
|
spinSpeed = rng.randf_range(minLaunchSpeed, maxLaunchSpeed)
|
|
LevelManager.add_XP("gaming", 5)
|
|
else:
|
|
MessageManager.addMessage("You need two faire tickets to spin the wheel.", null, "System", Color.MIDNIGHT_BLUE,
|
|
true, false)
|
|
|
|
func initialize_prizes():
|
|
prizes.append(load("res://Items/Foods/Fruits/Watermelon.gd"))
|
|
prizes.append(load("res://Items/Foods/Snack/Lollipop.gd"))
|
|
prizes.append(null)
|
|
prizes.append(load("res://Items/Toys/Instruments/Trumpet.gd"))
|
|
prizes.append(null)
|
|
prizes.append(load("res://Items/Paper/FaireTicket.gd"))
|
|
prizes.append(load("res://Items/Toys/Puppets/MarlowPuppet.gd"))
|
|
prizes.append(null)
|
|
prizes.append(load("res://Items/Foods/Snack/OnionRing.gd"))
|
|
prizes.append(load("res://Items/Foods/Meal/Burrito.gd"))
|
|
prizes.append(null)
|
|
prizes.append(load("res://Items/Foods/Snack/Churro.gd"))
|
|
|