diff --git a/audience_manager.gd b/audience_manager.gd index 93a0749..670aacf 100644 --- a/audience_manager.gd +++ b/audience_manager.gd @@ -37,7 +37,7 @@ func raise_paddle(): func _handle_bid_delay_timeout(): - if randf_range(1.2, 5.3) >= bid_threshold: + if randf_range(1.2, 5.3) >= bid_threshold and game_manager.state != game_manager.bidding_state.CLOSED: raise_paddle() timer.stop() diff --git a/game_manager.gd b/game_manager.gd index 915452e..d822d76 100644 --- a/game_manager.gd +++ b/game_manager.gd @@ -2,6 +2,7 @@ class_name GameManager extends Node2D @export var audience_manager: AudienceManager @export var desk: Desk +@export var turn_manager: TurnManager var paintings_sold = 0 @export var paintings_total = 7 @@ -46,7 +47,10 @@ func _ready() -> void: 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!") + print("Hit the gavel and input the starting price to begin!") + + DisplayServer.tts_speak("You have " + str(paintings_total) + " paintings. Sell them fast for at least $" + str(target_sales) + " or face the consequences!", turn_manager.voice_id, turn_manager.tts_volume, turn_manager.tts_pitch) + DisplayServer.tts_speak("Hit the gavel and input the starting price to begin!", turn_manager.voice_id, turn_manager.tts_volume, turn_manager.tts_pitch) next_painting(0) #build out the initialization process, which should: @@ -65,17 +69,27 @@ func _handle_gavel_hit(): elif state == bidding_state.ASKING: if current_bid != 0: state = bidding_state.CLOSED + desk.numpad.reminder_timer.stop() 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))) + if current_painting <= paintings_total - 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: + end_auction() + else: pass func destroy_painting(): - pass + # Painting destruction animation/particle effect + current_painting += 1 + DisplayServer.tts_speak("Oh nooooooo! Took too long!", turn_manager.voice_id, turn_manager.tts_volume, turn_manager.tts_pitch) + DisplayServer.tts_speak("Try to make it up on the next painting!", turn_manager.voice_id, turn_manager.tts_volume, turn_manager.tts_pitch) + desk.numpad.reminder_timer.stop() + next_painting(current_painting) func sell_painting(): total_sales = total_sales + current_bid @@ -88,7 +102,17 @@ func next_painting(a: int): new_painting_displayed.emit() func _handle_ask_accepted(): - current_bid_display.text = str(current_bid) + current_bid_display.set_text(str(current_bid)) + +func end_auction(): + #add in logic for displaying/transitioning to score screen + if total_sales >= target_sales: + #add context specific score text? + DisplayServer.tts_speak("Congratulations! The auction house will run another day.", turn_manager.voice_id, turn_manager.tts_volume, turn_manager.tts_pitch) + else: + #add context specific score text? + DisplayServer.tts_speak("You have failed. We must find a new auctioneer.", turn_manager.voice_id, turn_manager.tts_volume, turn_manager.tts_pitch) + # OTHER THINGS TO ADD: # UI elements for score # Bark manager diff --git a/main.tscn b/main.tscn index 0e393bd..f4bdae1 100644 --- a/main.tscn +++ b/main.tscn @@ -42,10 +42,11 @@ texture = ExtResource("2_7mycd") position = Vector2(640, 360) texture = ExtResource("3_272bh") -[node name="GameManager" type="Node2D" parent="." node_paths=PackedStringArray("audience_manager", "desk", "current_bid_display")] +[node name="GameManager" type="Node2D" parent="." node_paths=PackedStringArray("audience_manager", "desk", "turn_manager", "current_bid_display")] script = ExtResource("1_ig7tw") audience_manager = NodePath("../AudienceManager") desk = NodePath("../Desk") +turn_manager = NodePath("../TurnManager") current_bid_display = NodePath("../UI/RichTextLabel") [node name="Timer" type="Timer" parent="GameManager"] diff --git a/numpad.gd b/numpad.gd index 46803df..c951ad8 100644 --- a/numpad.gd +++ b/numpad.gd @@ -38,14 +38,14 @@ func keypad_submit(): game_manager.state = game_manager.bidding_state.ASKING success_audio_player.play() ask_proposed.emit(proposed_ask) - print("asking for $" + str(proposed_ask)) + print("starting the bidding at $" + str(proposed_ask)) else: error_audio_player.play() game_manager.bidding_state.ASKING: if proposed_ask == game_manager.starting_price or proposed_ask == game_manager.current_bid or proposed_ask == audience_manager.current_ask and proposed_ask != 0: success_audio_player.play() ask_proposed.emit(proposed_ask) - print("starting the bidding at $" + str(proposed_ask)) + print("asking for $" + str(proposed_ask)) else: error_audio_player.play() game_manager.bidding_state.BID: diff --git a/turn_manager.gd b/turn_manager.gd index 73093e3..b968015 100644 --- a/turn_manager.gd +++ b/turn_manager.gd @@ -7,7 +7,7 @@ class_name TurnManager extends Node2D @export var tts_pitch = 1.0 @export var desk: Desk -@export var timer: Timer +var timer: Timer @export var game_manager: GameManager @export var audience_manager: AudienceManager @@ -15,10 +15,11 @@ var voices = DisplayServer.tts_get_voices_for_language("en") var voice_id = voices[0] func _ready() -> void: - DisplayServer.tts_speak("Hello, world!", voice_id) audience_manager.ask_accepted.connect(_handle_ask_accepted) desk.numpad.ask_proposed.connect(_speak_ask_proposed) + timer = desk.numpad.reminder_timer timer.wait_time = turn_timer + desk.numpad.reminder_timer.timeout.connect(_handle_reminder_timer_timeout) func turn_timer_animation(): pass @@ -38,8 +39,8 @@ func _handle_ask_accepted(): timer.start() turn_timer_animation() -func _on_turn_timer_timeout() -> void: - if game_manager.bidding_open == true: - game_manager.bidding_open = false +func _handle_reminder_timer_timeout() -> void: + if game_manager.state == game_manager.bidding_state.ASKING or game_manager.state == game_manager.bidding_state.BID: + game_manager.state = game_manager.bidding_state.CLOSED game_manager.destroy_painting()