Bottles are now jokes

This commit is contained in:
Waldemar Tomme 2024-01-28 11:51:33 +01:00
parent b345937708
commit 64fcffb0f2
3 changed files with 26 additions and 11 deletions

View File

@ -44,10 +44,19 @@ func _on_joke_button_button_pressed(joke: Joke):
last_joke = joke last_joke = joke
stamina -= joke.required_stamina stamina -= joke.required_stamina
_disable_buttons() _disable_buttons()
_start_joke_for_audience() _start_joke_for_audience(false)
$AnimationPlayer.play("talking") $AnimationPlayer.play("talking")
func _get_targeted_audience_members() -> Array[AudienceMember]: func _get_targeted_audience_members(target_all: bool):
if target_all:
return _get_all_targeted_audience_members()
return _get_targeted_audience_members_in_target_area()
func _get_all_targeted_audience_members() -> Array[AudienceMember]:
var crowd = get_node("/root/IngameScene/Crowd")
return crowd.audience
func _get_targeted_audience_members_in_target_area() -> Array[AudienceMember]:
var arr: Array[AudienceMember] var arr: Array[AudienceMember]
for body in transmitter_area.get_overlapping_bodies(): for body in transmitter_area.get_overlapping_bodies():
var person = body.find_parent("Person") var person = body.find_parent("Person")
@ -56,12 +65,12 @@ func _get_targeted_audience_members() -> Array[AudienceMember]:
arr.append(person) arr.append(person)
return arr return arr
func _start_joke_for_audience(): func _start_joke_for_audience(target_all: bool):
for person in _get_targeted_audience_members(): for person in _get_targeted_audience_members(target_all):
person.on_joke_start() person.on_joke_start()
func _finish_joke_for_audience(joke: Joke): func _finish_joke_for_audience(joke: Joke, target_all: bool):
for person in _get_targeted_audience_members(): for person in _get_targeted_audience_members(target_all):
person.on_joke_finish(joke) person.on_joke_finish(joke)
func _on_stamina_empty(): func _on_stamina_empty():
@ -83,11 +92,13 @@ func _on_stamina_empty():
func ouch(): func ouch():
$Sprite2D.texture = ducking_texture $Sprite2D.texture = ducking_texture
_start_joke_for_audience(true)
await get_tree().create_timer(1).timeout await get_tree().create_timer(1).timeout
$Sprite2D.texture = default_texture $Sprite2D.texture = default_texture
_finish_joke_for_audience(Joke.get_bottle_joke(), true)
func _on_animation_player_animation_finished(anim_name): func _on_animation_player_animation_finished(anim_name):
_finish_joke_for_audience(last_joke) _finish_joke_for_audience(last_joke, false)
if stamina <= 0: if stamina <= 0:
_on_stamina_empty() _on_stamina_empty()
else: else:

View File

@ -39,9 +39,9 @@ var joke_mood_mapping: Dictionary
static func get_profile_data(index) -> ProfileData: static func get_profile_data(index) -> ProfileData:
var profiles = [ var profiles = [
ProfileData.new(3, -3, -10, 0.1, 0.1, {0: 1, 1: -0.25, 2: 0}), ProfileData.new(3, -3, -10, 0.1, 0.1, {0: 1, 1: -0.25, 2: 0, 3: 2}),
ProfileData.new(3, -3, -10, 0.1, 0.1, {0: 0, 1: 1, 2: -0.25}), ProfileData.new(3, -3, -10, 0.1, 0.1, {0: 0, 1: 1, 2: -0.25, 3: 2}),
ProfileData.new(3, -3, -10, 0.1, 0.1, {0: -0.25, 1: 0, 2: 1}), ProfileData.new(3, -3, -10, 0.1, 0.1, {0: -0.25, 1: 0, 2: 1, 3: 2}),
] ]
return profiles[index] return profiles[index]

View File

@ -3,12 +3,16 @@ class_name Joke
enum JokeType { enum JokeType {
Joke1 = 0, Joke1 = 0,
Joke2, Joke2,
Joke3 Joke3,
Bottle,
} }
var type: JokeType var type: JokeType
var required_stamina: int var required_stamina: int
static func get_bottle_joke():
return Joke.new(JokeType.Bottle, 0)
func _init(type, required_stamina): func _init(type, required_stamina):
self.type = type self.type = type
self.required_stamina = required_stamina self.required_stamina = required_stamina