class_name GameManager extends Node2D @export var audience_manager: AudienceManager @export var desk: Desk var paintings_sold = 0 @export var paintings_total = 7 var paintings: Array = Array() var current_painting = 0 # tracker variables for bid markers, proposing bids happens between numpad and audience var current_bid = 0 var starting_price = 0 var final_bid = 0 @export var current_bid_display: RichTextLabel var target_sales: int = 0 var total_sales: int = 0 @export var sales_magnitude = 100000 @export var single_painting_magnitude = 1000 @export var initial_value_reduction: float = 0.6 # state tracker for a given painting's auction var bidding_open: bool = false enum bidding_state {CLOSED, READY, ASKING, BID} var state: int = bidding_state.CLOSED signal new_painting_displayed func _ready() -> void: audience_manager.ask_accepted.connect(_handle_ask_accepted) desk.gavel.gavel_hit.connect(_handle_gavel_hit) #paintings_total = randi_range(7,10) target_sales = randi_range(2,5) * sales_magnitude var new_painting = 0 var new_painting_value: int while new_painting < paintings_total: new_painting_value = (target_sales/randf_range(paintings_total - 2, paintings_total + 2)) new_painting_value = snappedi(new_painting_value, single_painting_magnitude) print(str(new_painting_value)) paintings.append(new_painting_value) new_painting += 1 print(paintings) print("You have " + str(paintings_total) + " paintings. Sell them for at least $" + str(target_sales) + " or face the consequences!") print("Hit the gavel and input a starting bid to begin!") next_painting(0) #build out the initialization process, which should: # -- generate paintings and assign values # -- start the turn timer/auction timer # ---- also add an auction timer # -- have tts announcement of starting bid and start of auction func _handle_gavel_hit(): if state == bidding_state.CLOSED: state = bidding_state.READY print(str(state)) elif state == bidding_state.ASKING: if current_bid != 0: state = bidding_state.CLOSED sell_painting() print("Congrats on selling your painting for $" + str(current_bid) + "! You have made $" + str(total_sales) + " so far.") current_painting += 1 next_painting((current_painting)) print("The next painting is valued at $" + str(starting_price) + " (should be $" + str(paintings[current_painting]) + ")") (print(str(state))) else: pass func destroy_painting(): pass func sell_painting(): total_sales = total_sales + current_bid func next_painting(a: int): starting_price = paintings[a] current_bid = 0 # will need to add animation/image swap new_painting_displayed.emit() func _handle_ask_accepted(): current_bid_display.text = str(current_bid) # OTHER THINGS TO ADD: # UI elements for score # Bark manager