aboutsummaryrefslogtreecommitdiff
path: root/client/player/character/character.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/player/character/character.gd')
-rw-r--r--client/player/character/character.gd17
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_