86 lines
3.8 KiB
C#
Executable File
86 lines
3.8 KiB
C#
Executable File
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Assets.HeroEditor4D.Common.Scripts.Collections;
|
|
using UnityEngine;
|
|
|
|
namespace Assets.HeroEditor4D.Common.Scripts.CharacterScripts
|
|
{
|
|
public class AvatarSetup : MonoBehaviour
|
|
{
|
|
public List<SpriteCollection> SpriteCollections;
|
|
public SpriteRenderer Head;
|
|
public SpriteRenderer Hair;
|
|
public List<SpriteRenderer> Ears;
|
|
public SpriteRenderer Eyes;
|
|
public SpriteRenderer Eyebrows;
|
|
public SpriteRenderer Mouth;
|
|
public SpriteRenderer Beard;
|
|
public SpriteRenderer Helmet;
|
|
|
|
public void Initialize(CharacterAppearance appearance, string helmetId, string spriteCollectionName)
|
|
{
|
|
var humanoid = spriteCollectionName == "FantasyHeroes" || spriteCollectionName == "MilitaryHeroes" || spriteCollectionName == "UndeadHeroes";
|
|
var ear = SpriteCollections.SelectMany(i => i.Ears).Single(i => i.Id == appearance.Ears).Sprites[1];
|
|
|
|
Head.sprite = SpriteCollections.SelectMany(i => i.Body).Single(i => i.Id == appearance.Body).Sprites.Single(i => i.name == "FrontHead");
|
|
Head.color = Ears[0].color = Ears[1].color = appearance.BodyColor;
|
|
|
|
if (string.IsNullOrEmpty(appearance.Hair))
|
|
{
|
|
Hair.enabled = false;
|
|
}
|
|
else
|
|
{
|
|
var hair = SpriteCollections.SelectMany(i => i.Hair).Single(i => i.Id == appearance.Hair);
|
|
|
|
Hair.enabled = true;
|
|
Hair.sprite = hair.Sprites[1];
|
|
Hair.color = hair.Tags.Contains("NoPaint") ? (Color32) Color.white : appearance.HairColor;
|
|
}
|
|
|
|
Beard.sprite = string.IsNullOrEmpty(appearance.Beard) ? null : SpriteCollections.SelectMany(i => i.Beard).Single(i => i.Id == appearance.Beard).Sprite;
|
|
Beard.color = appearance.BeardColor;
|
|
Eyes.sprite = SpriteCollections.SelectMany(i => i.Eyes).Single(i => i.Id == appearance.Eyes).Sprite;
|
|
Eyes.color = appearance.EyesColor;
|
|
|
|
if (string.IsNullOrEmpty(appearance.Eyebrows))
|
|
{
|
|
Eyebrows.enabled = false;
|
|
}
|
|
else
|
|
{
|
|
Eyebrows.enabled = true;
|
|
Eyebrows.sprite = SpriteCollections.SelectMany(i => i.Eyebrows).Single(i => i.Id == appearance.Eyebrows).Sprite;
|
|
}
|
|
|
|
Mouth.sprite = SpriteCollections.SelectMany(i => i.Mouth).Single(i => i.Id == appearance.Mouth).Sprite;
|
|
Mouth.transform.localPosition = new Vector3(0, humanoid ? -0.1f : 0.25f);
|
|
|
|
if (helmetId == null)
|
|
{
|
|
Helmet.enabled = false;
|
|
Ears.ForEach(j => { j.sprite = ear; j.enabled = true; });
|
|
}
|
|
else
|
|
{
|
|
Helmet.enabled = true;
|
|
|
|
var entry = SpriteCollections.SelectMany(i => i.Armor).Single(i => i.Id == helmetId);
|
|
var showEars = entry.Tags.Contains("ShowEars");
|
|
var fullHair = entry.Tags.Contains("FullHair");
|
|
|
|
Helmet.sprite = entry.Sprites.Single(i => i.name == "FrontHead");
|
|
Ears.ForEach(j => { j.sprite = ear; j.enabled = showEars; });
|
|
|
|
if (!fullHair)
|
|
{
|
|
Hair.sprite = SpriteCollections.SelectMany(i => i.Hair).SingleOrDefault(i => i.Id == "Common.Basic.Hair.Default")?.Sprites[1];
|
|
Hair.enabled = Hair.sprite != null;
|
|
}
|
|
}
|
|
|
|
Ears[0].transform.localPosition = humanoid ? new Vector3(-1f, 0.5f) : new Vector3(-0.9f, 0.7f);
|
|
Ears[1].transform.localPosition = humanoid ? new Vector3(1f, 0.5f) : new Vector3(0.9f, 0.7f);
|
|
}
|
|
}
|
|
} |