Merge main

This commit is contained in:
Waldemar Tomme 2024-01-27 16:05:49 +01:00
commit 5c45ce6f01
11 changed files with 111 additions and 10 deletions

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://c12qb0t5fukxy"]
[ext_resource type="Texture2D" uid="uid://bt8qft2vpyl24" path="res://sprites/bodies/body_blue_1.svg" id="1_ppgo0"]
[node name="BodyBlue1" type="Sprite2D"]
texture = ExtResource("1_ppgo0")

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://b6r7nlhj70qxd"]
[ext_resource type="Texture2D" uid="uid://dqxv2u4xiwiup" path="res://sprites/bodies/body_blue_2.svg" id="1_qalxe"]
[node name="BodyBlue2" type="Sprite2D"]
texture = ExtResource("1_qalxe")

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://dnpviu6dbg4dr"]
[ext_resource type="Texture2D" uid="uid://7bw8nqowkthc" path="res://sprites/bodies/body_blue_3.svg" id="1_3emr7"]
[node name="BodyBlue3" type="Sprite2D"]
texture = ExtResource("1_3emr7")

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://bwxnhtolf1j26"]
[ext_resource type="Texture2D" uid="uid://baijihfhkfk0i" path="res://sprites/bodies/body_green_1.svg" id="1_cnx4p"]
[node name="BodyGreen1" type="Sprite2D"]
texture = ExtResource("1_cnx4p")

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://6504thpoeyiq"]
[ext_resource type="Texture2D" uid="uid://p557r4sksm4a" path="res://sprites/bodies/body_green_2.svg" id="1_31bmk"]
[node name="BodyGreen2" type="Sprite2D"]
texture = ExtResource("1_31bmk")

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://budkcly8pgpvt"]
[ext_resource type="Texture2D" uid="uid://bsy1pfhg1ante" path="res://sprites/bodies/body_green_3.svg" id="1_qcqxr"]
[node name="BodyGreen3" type="Sprite2D"]
texture = ExtResource("1_qcqxr")

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://5flf4apu2s33"]
[ext_resource type="Texture2D" uid="uid://b6211hcc6kclc" path="res://sprites/bodies/body_red_1.svg" id="1_0fjdh"]
[node name="BodyRed1" type="Sprite2D"]
texture = ExtResource("1_0fjdh")

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://dl3dhmyn6ba8r"]
[ext_resource type="Texture2D" uid="uid://c2cg5x7x14nd" path="res://sprites/bodies/body_red_2.svg" id="1_g6wgn"]
[node name="BodyRed2" type="Sprite2D"]
texture = ExtResource("1_g6wgn")

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cthh6v0gf4vqt"]
[ext_resource type="Texture2D" uid="uid://bahxyel8pbh40" path="res://sprites/bodies/body_red_3.svg" id="1_fq8cf"]
[node name="BodyRed3" type="Sprite2D"]
texture = ExtResource("1_fq8cf")

View File

@ -1,10 +1,13 @@
class_name AudienceMember
extends Sprite2D
extends Node2D
@export var mood : float = 0.
@export_enum("blue", "green", "red") var color
@export var head : Node2D
@export var face : Node2D
@export var body : Node2D
@export var body_shape : Node2D
@export var profile : AudienceProfile
@export_enum("angry", "neutral", "happy", "laugh") var expression
@ -17,6 +20,27 @@ var known_faces : Array[String] = [
# Add more scenes as needed
]
var known_bodies = {
"blue" : [
"res://scenes/bodies/body_blue_1.tscn",
"res://scenes/bodies/body_blue_2.tscn",
"res://scenes/bodies/body_blue_3.tscn",
# Add more scenes as needed
],
"green" : [
"res://scenes/bodies/body_green_1.tscn",
"res://scenes/bodies/body_green_2.tscn",
"res://scenes/bodies/body_green_3.tscn",
# Add more scenes as needed
],
"red" : [
"res://scenes/bodies/body_red_1.tscn",
"res://scenes/bodies/body_red_2.tscn",
"res://scenes/bodies/body_red_3.tscn",
# Add more scenes as needed
],
}
const laughter_duration : float = 2. # seconds
const laughter_bobs : int = 4
var laughter_left : float = 0.
@ -27,6 +51,9 @@ func _ready():
mood = randf_range(profile.lashout_threshold, profile.happy_threshold)
update_expression()
if body_shape == null:
set_random_body(color)
if face == null:
set_random_face()
@ -40,11 +67,20 @@ func _process(delta):
elif mood < profile.lashout_threshold * .9:
mood += profile.lashout_decay * delta
if Input.is_key_pressed(KEY_SPACE) and OS.is_debug_build():
update_mood(1.)
update_expression()
func _input(event):
var just_pressed = event.is_pressed() and not event.is_echo()
if just_pressed and OS.is_debug_build():
if Input.is_key_pressed(KEY_SPACE):
update_mood(1.)
elif Input.is_key_pressed(KEY_ENTER):
update_mood(-1.)
func hear_joke():
var change = randf_range(-3., 3.)
update_mood(change)
func update_mood(change: float):
if mood > profile.happy_threshold and change > 0 and laughter_left <= 0:
laughter_left = laughter_duration
@ -65,6 +101,16 @@ func update_expression():
expression = "angry"
else:
expression = "neutral"
func set_random_body(for_color):
if str(for_color) not in known_bodies:
var keys = known_bodies.keys()
for_color = keys[randi() % keys.size()]
print(keys.size())
var body_path = known_bodies[for_color][randi() % known_bodies[for_color].size()]
var body_res = load(body_path)
body_shape = body_res.instantiate()
body.add_child(body_shape)
func set_random_face():
var face_res = load(known_faces[randi() % known_faces.size()])

View File

@ -1,20 +1,21 @@
[gd_scene load_steps=5 format=3 uid="uid://cl4fax7fbh2g7"]
[gd_scene load_steps=4 format=3 uid="uid://cl4fax7fbh2g7"]
[ext_resource type="Script" path="res://scenes/crowd/person.gd" id="1_mx0i8"]
[ext_resource type="Script" path="res://scenes/crowd/audience_profile.gd" id="2_bsodr"]
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_kbo53"]
size = Vector2(20, 30)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_5rd5b"]
[node name="Person" type="Sprite2D" node_paths=PackedStringArray("head", "profile")]
texture = SubResource("PlaceholderTexture2D_kbo53")
[node name="Person" type="Node2D" node_paths=PackedStringArray("head", "body", "profile")]
script = ExtResource("1_mx0i8")
head = NodePath("Head")
body = NodePath("Body")
profile = NodePath("Profile")
expression = 1
[node name="Body" type="Node2D" parent="."]
position = Vector2(0, 15)
scale = Vector2(0.3, 0.3)
[node name="Head" type="Node2D" parent="."]
position = Vector2(0, -16)
scale = Vector2(0.3, 0.3)