Colours and practise dummy
This commit is contained in:
+35
-11
@@ -348,12 +348,27 @@ func get_texture_from_name(skin_color: SkinColor) -> CompressedTexture2D:
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func set_player_skin(skin_name: SkinColor) -> void:
|
||||
var texture = get_texture_from_name(skin_name)
|
||||
# Check if we're using the LilguyRigged model
|
||||
if _body is LilguyBody:
|
||||
# Use hue-based color system for Lilguy
|
||||
var hue = _get_hue_from_skin_color(skin_name)
|
||||
_body.set_character_color(hue)
|
||||
else:
|
||||
# Use texture-based system for 3DGodotRobot
|
||||
var texture = get_texture_from_name(skin_name)
|
||||
set_mesh_texture(_bottom_mesh, texture)
|
||||
set_mesh_texture(_chest_mesh, texture)
|
||||
set_mesh_texture(_face_mesh, texture)
|
||||
set_mesh_texture(_limbs_head_mesh, texture)
|
||||
|
||||
set_mesh_texture(_bottom_mesh, texture)
|
||||
set_mesh_texture(_chest_mesh, texture)
|
||||
set_mesh_texture(_face_mesh, texture)
|
||||
set_mesh_texture(_limbs_head_mesh, texture)
|
||||
## Convert SkinColor enum to hue value (0.0 to 1.0)
|
||||
func _get_hue_from_skin_color(skin_color: SkinColor) -> float:
|
||||
match skin_color:
|
||||
SkinColor.BLUE: return 0.6 # Blue hue
|
||||
SkinColor.GREEN: return 0.33 # Green hue
|
||||
SkinColor.RED: return 0.0 # Red hue
|
||||
SkinColor.YELLOW: return 0.16 # Yellow hue
|
||||
_: return 0.6 # Default to blue
|
||||
|
||||
func set_mesh_texture(mesh_instance: MeshInstance3D, texture: CompressedTexture2D) -> void:
|
||||
if mesh_instance:
|
||||
@@ -435,16 +450,25 @@ func _server_apply_damage(target_name: String, damage: float, attacker_id: int,
|
||||
if not multiplayer.is_server():
|
||||
return
|
||||
|
||||
# Get the target from the players container
|
||||
var level = get_tree().get_current_scene()
|
||||
if not level or not level.has_node("PlayersContainer"):
|
||||
if not level:
|
||||
return
|
||||
|
||||
var players_container = level.get_node("PlayersContainer")
|
||||
if not players_container.has_node(target_name):
|
||||
return
|
||||
var target = null
|
||||
|
||||
var target = players_container.get_node(target_name)
|
||||
# Check players container first
|
||||
if level.has_node("PlayersContainer"):
|
||||
var players_container = level.get_node("PlayersContainer")
|
||||
if players_container.has_node(target_name):
|
||||
target = players_container.get_node(target_name)
|
||||
|
||||
# If not found in players, check enemies container
|
||||
if not target and level.has_node("EnemiesContainer"):
|
||||
var enemies_container = level.get_node("EnemiesContainer")
|
||||
if enemies_container.has_node(target_name):
|
||||
target = enemies_container.get_node(target_name)
|
||||
|
||||
# Apply damage if target found
|
||||
if target and target is BaseUnit:
|
||||
target.take_damage(damage, attacker_id, knockback, attacker_pos)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user