From e86327a32036ea96912413ab621e555e730e53de Mon Sep 17 00:00:00 2001 From: Graham Barber Date: Mon, 6 Oct 2025 12:19:08 -0700 Subject: [PATCH] make game more difficult --- audience_manager.gd | 25 ++++++++++++++++++------- desk.tscn | 2 ++ main.tscn | 3 +-- numpad.gd | 26 ++++++++++++++++++++++---- 4 files changed, 43 insertions(+), 13 deletions(-) diff --git a/audience_manager.gd b/audience_manager.gd index c42a00b..60f13b2 100644 --- a/audience_manager.gd +++ b/audience_manager.gd @@ -27,6 +27,8 @@ var currently_animated_collector = null var current_ask: int var latest_bidder: ArtCollector +var acceptable_raise = 0 + func _ready() -> void: desk.numpad.ask_proposed.connect(_handle_ask_proposed) timer.timeout.connect(_handle_bid_delay_timeout) @@ -35,7 +37,6 @@ func _ready() -> void: desk.gavel.gavel_hit.connect(try_clear_currently_animated_collector) func raise_paddle(): - #need to add in logic to animate paddle being raised game_manager.state = game_manager.bidding_state.BID print("Audience accepts the bid at $" + str(current_ask)) game_manager.current_bid = desk.numpad.proposed_ask @@ -65,7 +66,9 @@ func _handle_auctioneer_bark(): bark_critical = true timer.stop() timer.timeout.emit() - pass + else: + acceptable_raise += randi_range(100, 1000) + func _handle_bid_delay_timeout(): if game_manager.state == game_manager.bidding_state.ASKING: @@ -75,9 +78,17 @@ func _handle_bid_delay_timeout(): func _handle_ask_proposed(amount): current_ask = amount + + if acceptable_raise == 0: + acceptable_raise = randf_range(0.1, 0.2) * current_ask - if randf() <= think_chance: - timer.stop() - var ask_duration: float = randf_range(min_audience_think_time, max_audience_think_time) - timer.wait_time = ask_duration - timer.start() + if game_manager.current_bid == 0: + if randf() < think_chance: _start_bid_timer() + elif current_ask - game_manager.current_bid <= acceptable_raise: + _start_bid_timer() + +func _start_bid_timer(): + timer.stop() + var ask_duration: float = randf_range(min_audience_think_time, max_audience_think_time) + timer.wait_time = ask_duration + timer.start() diff --git a/desk.tscn b/desk.tscn index d7ceb35..fd78ab9 100644 --- a/desk.tscn +++ b/desk.tscn @@ -191,6 +191,8 @@ progress_bar = NodePath("../ProgressBar") reminder_timer = NodePath("ReminderTimer") error_audio_player = NodePath("ErrorSoundPlayer") success_audio_player = NodePath("SuccessSoundPlayer") +base_timer_duration = 10.0 +timer_reduction_step = 0.4 [node name="Sprite2D" type="Sprite2D" parent="Numpad"] texture_filter = 1 diff --git a/main.tscn b/main.tscn index 84fd2d9..0c95747 100644 --- a/main.tscn +++ b/main.tscn @@ -117,10 +117,9 @@ horizontal_alignment = 1 vertical_alignment = 1 script = ExtResource("10_ryguw") -[node name="AudienceManager" parent="." node_paths=PackedStringArray("desk", "game_manager", "bark_buttons") instance=ExtResource("6_272bh")] +[node name="AudienceManager" parent="." node_paths=PackedStringArray("desk", "game_manager") instance=ExtResource("6_272bh")] desk = NodePath("../Desk") game_manager = NodePath("../GameManager") -bark_buttons = NodePath("") [node name="TurnManager" parent="." node_paths=PackedStringArray("desk", "captions", "audience_manager") instance=ExtResource("7_272bh")] desk = NodePath("../Desk") diff --git a/numpad.gd b/numpad.gd index 5d0478f..97f6cb4 100644 --- a/numpad.gd +++ b/numpad.gd @@ -4,7 +4,6 @@ var numpad_buffer = Array() var proposed_ask: int signal ask_proposed(amount) -#var turn_manager: TurnManager var audience_manager: AudienceManager var game_manager: GameManager var turn_manager: TurnManager @@ -14,6 +13,11 @@ var turn_manager: TurnManager @export var error_audio_player: AudioStreamPlayer2D @export var success_audio_player: AudioStreamPlayer2D +@export var base_timer_duration = 7.0 +var timer_duration = base_timer_duration + +@export var timer_reduction_step = 0.3 + func _ready() -> void: progress_bar.max_value = reminder_timer.wait_time @@ -42,7 +46,9 @@ func keypad_submit(): success_audio_player.play() ask_proposed.emit(proposed_ask) print("starting the bidding at $" + str(proposed_ask)) - reminder_timer.start(-1) + + reset_timer() + start_timer() else: error_audio_player.play() game_manager.bidding_state.ASKING: @@ -50,7 +56,8 @@ func keypad_submit(): success_audio_player.play() ask_proposed.emit(proposed_ask) print("asking for $" + str(proposed_ask)) - reminder_timer.start(-1) + + start_timer() else: error_audio_player.play() game_manager.bidding_state.BID: @@ -59,7 +66,8 @@ func keypad_submit(): success_audio_player.play() ask_proposed.emit(proposed_ask) print("asking for $" + str(proposed_ask)) - reminder_timer.start(-1) + + start_timer() else: error_audio_player.play() _: @@ -68,3 +76,13 @@ func keypad_submit(): # need to avoid starting the reminder timer before # the auction starts numpad_buffer.clear() + +func reset_timer(): + timer_duration = base_timer_duration + +func start_timer(): + reminder_timer.stop() + progress_bar.max_value = timer_duration + reminder_timer.start(timer_duration) + + timer_duration -= timer_reduction_step