aboutsummaryrefslogtreecommitdiff
path: root/client/player/character
diff options
context:
space:
mode:
Diffstat (limited to 'client/player/character')
-rw-r--r--client/player/character/character.gd63
1 files changed, 20 insertions, 43 deletions
diff --git a/client/player/character/character.gd b/client/player/character/character.gd
index 938c7c45..8479af2c 100644
--- a/client/player/character/character.gd
+++ b/client/player/character/character.gd
@@ -23,12 +23,6 @@ const CUSTOMER_MAIN_MESH = preload("res://player/character/customer_body.res")
const WALK_ANIM_STRENGTH := 0.05
const WALK_ANIM_SPEED:= 15.0
-enum CharacterKind {
- PERSON,
- BOT,
- TRAM
-}
-
var walking := false
var holding := false
var boosting := false
@@ -39,6 +33,7 @@ var current_animation := "idle"
@onready var hand_animations = $HandAnimations
@onready var main = $Main
+@onready var tram = $Tram
@onready var default_height = main.position.y
@onready var main_height_target = default_height
@onready var walking_particles = $Walking
@@ -48,8 +43,9 @@ var current_animation := "idle"
@onready var knife = $Main/HandRight/Knife
@onready var cat_ears: CatEars = $Main/HeadDefault/CatEars
-const NUM_COLORS = 5;
-const NUM_HAIRS = 3;
+const NUM_COLORS = 5
+const NUM_HAIRS = 3
+const NUM_HEADWEARS = 2
@onready var hairstyles := [$Main/HeadDefault/Hair, $Main/HeadDefault/Hair2, $Main/HeadDefault/Hair3]
const COLORS: Array[Color] = [
Color(0.204, 0.361, 0.624),
@@ -65,26 +61,6 @@ const COLORS: Array[Color] = [
@onready var step_sounds: PlayRandom = $Steps
@onready var boost_sounds: PlayRandom = $Boosts
-class ParsedStyle:
- var color: int
- var hair: int
- var kind: CharacterKind = CharacterKind.PERSON
- var customer: bool
- var cat_ears: bool
- func _init(n: int) -> void:
- customer = n < 0
- if customer: n *= -1
- if n == 51: kind = CharacterKind.BOT
- elif n == 52: kind = CharacterKind.TRAM
- else:
- hair = n % NUM_HAIRS
- color = n / NUM_HAIRS % NUM_COLORS
- cat_ears = floor(n / 4) % 2 == 0
- func pack() -> int:
- if CharacterKind.BOT: return 51
- elif CharacterKind.TRAM: return 52
- return (hair + color * NUM_HAIRS) * (-1 if customer else 1)
-
func _ready():
play_animation("idle")
@@ -117,22 +93,23 @@ func _process(delta):
boosting_particles.emitting = false
was_boosting = boosting and walking
-func set_style(id: int):
- var p := ParsedStyle.new(id)
- main.mesh = CUSTOMER_MAIN_MESH if p.customer else DEFAULT_MAIN_MESH
- if p.customer:
- tie.queue_free()
- head_robot.visible = p.kind == CharacterKind.BOT
- head_default.visible = p.kind == CharacterKind.PERSON
- $Main.visible = not p.kind == CharacterKind.TRAM
- $Tram.visible = p.kind == CharacterKind.TRAM
- cat_ears.visible = p.cat_ears
+func set_style(style: Dictionary, character_class: String):
+ var is_human := character_class == "customer" || character_class == "chef"
+
+ main.mesh = CUSTOMER_MAIN_MESH if character_class == "customer" else DEFAULT_MAIN_MESH
+ tie.visible = character_class != "customer"
+ head_robot.visible = character_class == "bot"
+ head_default.visible = is_human
+ main.visible = character_class != "tram"
+ tram.visible = character_class == "tram"
+ cat_ears.visible = style.headwear == 1
for h in hairstyles: h.hide()
- hairstyles[p.hair].show()
- $Main.get_active_material(0).albedo_color = Color(0.349, 0.349, 0.349) if p.kind == CharacterKind.BOT else COLORS[p.color]
- if p.cat_ears:
- cat_ears.set_inner_mat($Main.get_active_material(0))
- cat_ears.set_outer_mat(hairstyles[p.hair].get_active_material(0))
+ var my_hairstyle = hairstyles[G.rem_euclid(style.hairstyle, NUM_HAIRS)]
+ my_hairstyle.show()
+ main.get_active_material(0).albedo_color = Color(0.349, 0.349, 0.349) if character_class == "bot" else COLORS[G.rem_euclid(style.color, NUM_COLORS)]
+ if cat_ears.visible:
+ cat_ears.set_inner_mat(main.get_active_material(0))
+ cat_ears.set_outer_mat(my_hairstyle.get_active_material(0))
func play_animation(name_: String):
current_animation = name_