summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-27 23:55:57 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-27 23:56:00 +0200
commit9469650dd3102336330e574f1c2b38067c733a5e (patch)
tree4eb5219c47315ba1dd811ff91e82ff5e7ebd02be
parent1532ae28ba34915aae3f289a6b2f9f86fe5bd144 (diff)
downloadhurrycurry-9469650dd3102336330e574f1c2b38067c733a5e.tar
hurrycurry-9469650dd3102336330e574f1c2b38067c733a5e.tar.bz2
hurrycurry-9469650dd3102336330e574f1c2b38067c733a5e.tar.zst
character "main" color
-rw-r--r--client/menu/character.gd11
-rw-r--r--client/menu/hairstyle_preview.gd2
-rw-r--r--client/player/character/character.gd30
-rw-r--r--client/player/character/character.tscn8
-rw-r--r--client/player/player.gd2
5 files changed, 32 insertions, 21 deletions
diff --git a/client/menu/character.gd b/client/menu/character.gd
index 67087b76..dd3bc5cd 100644
--- a/client/menu/character.gd
+++ b/client/menu/character.gd
@@ -18,7 +18,6 @@
extends Menu
@onready var character: Character = $Node3D/Character
-@onready var num_hairstyles := character.hairstyles.keys().size()
@onready var back_button := $VBoxContainer/bottom_panel/back
@onready var map: Map = $Node3D/Map
@onready var username_edit = $VBoxContainer/top_panel/a/username
@@ -26,7 +25,7 @@ extends Menu
func _ready():
super()
$VBoxContainer/top_panel/a/username.text = Global.get_profile("username")
- character.select_hairstyle(Global.get_profile("character"))
+ character.set_style(Global.get_profile("character"))
init_map()
func init_map():
@@ -69,9 +68,9 @@ func _on_back_pressed():
replace_menu("res://menu/main.tscn")
func _on_character_back_pressed():
- Global.set_profile("character", (Global.get_profile("character") - 1) % num_hairstyles)
- character.select_hairstyle(Global.get_profile("character"))
+ Global.set_profile("character", max(Global.get_profile("character") - 1, 0))
+ character.set_style(Global.get_profile("character"))
func _on_character_forward_pressed():
- Global.set_profile("character", (Global.get_profile("character") + 1) % num_hairstyles)
- character.select_hairstyle(Global.get_profile("character"))
+ Global.set_profile("character", max(Global.get_profile("character") + 1, 0))
+ character.set_style(Global.get_profile("character"))
diff --git a/client/menu/hairstyle_preview.gd b/client/menu/hairstyle_preview.gd
index 5a9cce68..08b6aab9 100644
--- a/client/menu/hairstyle_preview.gd
+++ b/client/menu/hairstyle_preview.gd
@@ -19,7 +19,7 @@ extends VBoxContainer
signal selected(character: int)
func setup(character: int, group: ButtonGroup):
- $HairViewport/Node3D/Character.select_hairstyle(character)
+ $HairViewport/Node3D/Character.set_style(character)
$Select.button_group = group
$Select.text = tr("c.setup.uniform.value").format([character + 1])
$Select.pressed.connect(func(): selected.emit(character))
diff --git a/client/player/character/character.gd b/client/player/character/character.gd
index b919d27c..d3138c3e 100644
--- a/client/player/character/character.gd
+++ b/client/player/character/character.gd
@@ -42,11 +42,14 @@ var current_animation := "idle"
@onready var tie = $Main/Tie
@onready var knife = $Main/HandRight/Knife
-@onready var hairstyles := {
- "Brown": $Main/HeadDefault/Hair,
- "Blond": $Main/HeadDefault/Hair2,
- "E. Parsley": $Main/HeadDefault/Hair3
-}
+@onready var hairstyles := [$Main/HeadDefault/Hair, $Main/HeadDefault/Hair2, $Main/HeadDefault/Hair3]
+var colors = [
+ Color(0.204, 0.361, 0.624),
+ Color(0.568, 0.256, 0.602),
+ Color(0.575, 0.341, 0.117),
+ Color(0.3, 0.455, 0.221),
+ Color(0.101, 0.452, 0.521)
+]
@onready var head_default: MeshInstance3D = $Main/HeadDefault
@onready var head_robot: MeshInstance3D = $Main/HeadRobot
@@ -82,17 +85,20 @@ func _process(delta):
boosting_particles.emitting = false
was_boosting = boosting and walking
-
-func select_hairstyle(id: int):
+func set_style(id: int):
if id == 51: return set_robot(true)
if id < 0:
to_customer()
id *= -1
- var hairstyle_count = hairstyles.keys().size()
- id = id % hairstyle_count
- var target = hairstyles.keys()[id]
- for k in hairstyles.keys():
- hairstyles[k].visible = k == target
+
+ var hairstyle = id % hairstyles.size()
+ @warning_ignore("integer_division")
+ var color = id / hairstyles.size() % colors.size()
+
+ for h in hairstyles: h.hide()
+ hairstyles[hairstyle].show()
+
+ $Main.get_active_material(0).albedo_color = colors[color]
func to_customer():
main.mesh = CUSTOMER_MAIN_MESH
diff --git a/client/player/character/character.tscn b/client/player/character/character.tscn
index a7c09c01..aca0658a 100644
--- a/client/player/character/character.tscn
+++ b/client/player/character/character.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=27 format=3 uid="uid://b3hhir2fvnunu"]
+[gd_scene load_steps=28 format=3 uid="uid://b3hhir2fvnunu"]
[ext_resource type="Script" path="res://player/character/character.gd" id="1_12lbh"]
[ext_resource type="ArrayMesh" uid="uid://bnmm01yjwultj" path="res://player/character/default/main.res" id="2_uovyg"]
@@ -18,6 +18,11 @@
[ext_resource type="AudioStream" uid="uid://1jsqpnk3igj3" path="res://player/sounds/woosh1.ogg" id="14_ikcec"]
[ext_resource type="AudioStream" uid="uid://cwme7eatip0jc" path="res://player/sounds/woosh2.ogg" id="15_iv4wu"]
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7ojaw"]
+resource_local_to_scene = true
+resource_name = "main"
+cull_mode = 2
+
[sub_resource type="Animation" id="Animation_tdhvg"]
length = 0.001
tracks/0/type = "bezier"
@@ -729,6 +734,7 @@ script = ExtResource("1_12lbh")
transform = Transform3D(0.33, 0, 0, 0, 0.33, 0, 0, 0, 0.33, 0, 0.33, 0)
mesh = ExtResource("2_uovyg")
skeleton = NodePath("")
+surface_material_override/0 = SubResource("StandardMaterial3D_7ojaw")
[node name="HandRight" type="MeshInstance3D" parent="Main"]
transform = Transform3D(0.287144, 0.2864, -1.17785e-06, 0.402357, -0.133775, 0.337554, 0.292329, -0.0971941, -0.464603, -1.302, -0.17, 0)
diff --git a/client/player/player.gd b/client/player/player.gd
index 31a7a337..6ff28e81 100644
--- a/client/player/player.gd
+++ b/client/player/player.gd
@@ -79,7 +79,7 @@ func _init(_id: int, new_name: String, pos: Vector2, new_character_idx: int, new
is_customer = character_idx < 0
func _ready():
- character.select_hairstyle(character_idx)
+ character.set_style(character_idx)
clear_timer.timeout.connect(clear_message)
Settings.hook_changed_init("gameplay.usernames", false, update_username_tag)