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"))