diff options
Diffstat (limited to 'client/player/character/character.gd')
| -rw-r--r-- | client/player/character/character.gd | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/client/player/character/character.gd b/client/player/character/character.gd index acdd1c1a..938c7c45 100644 --- a/client/player/character/character.gd +++ b/client/player/character/character.gd @@ -46,6 +46,7 @@ var current_animation := "idle" @onready var username_tag = $Username @onready var tie = $Main/Tie @onready var knife = $Main/HandRight/Knife +@onready var cat_ears: CatEars = $Main/HeadDefault/CatEars const NUM_COLORS = 5; const NUM_HAIRS = 3; @@ -69,6 +70,7 @@ class ParsedStyle: 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 @@ -77,6 +79,7 @@ class ParsedStyle: 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 @@ -88,9 +91,13 @@ func _ready(): var t := 0.0 func _process(delta): t += delta - if walking: main_height_target = default_height + sin(t * WALK_ANIM_SPEED) * WALK_ANIM_STRENGTH - else: t = 0 - main.position.y = main_height_target + if walking: + main_height_target = default_height + sin(t * WALK_ANIM_SPEED) * WALK_ANIM_STRENGTH + cat_ears.ear_target = sin(t * WALK_ANIM_SPEED) * 0.075 + else: + t = 0 + cat_ears.ear_target = 0. + main.position.y = G.interpolate(main.position.y, main_height_target, delta * 10.) # Update animation: var next_animation: String @@ -119,9 +126,13 @@ func set_style(id: int): 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 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)) func play_animation(name_: String): current_animation = name_ |