mmorpg/Assets/HeroEditor4D/Common/Scripts/ExampleScripts/AppearanceExample.cs
2024-03-18 23:09:45 +05:30

84 lines
3.4 KiB
C#

using System.Linq;
using Assets.HeroEditor4D.Common.Scripts.CharacterScripts;
using Assets.HeroEditor4D.Common.Scripts.Enums;
using UnityEngine;
namespace Assets.HeroEditor4D.Common.Scripts.ExampleScripts
{
/// <summary>
/// An example of how to change character's appearance.
/// </summary>
public class AppearanceExample : MonoBehaviour
{
public CharacterAppearance Appearance = new CharacterAppearance();
public Character4D Character;
public AvatarSetup AvatarSetup;
public void Start()
{
Refresh();
}
public void Refresh()
{
Appearance.Setup(Character);
var helmetId = Character.SpriteCollection.Armor.SingleOrDefault(i => i.Sprites.Contains(Character.Front.Helmet))?.Id;
AvatarSetup.Initialize(Appearance, helmetId);
}
public void SetRandomAppearance()
{
Appearance.Hair = Random.Range(0, 3) == 0 ? null : Character.SpriteCollection.Hair[Random.Range(0, Character.SpriteCollection.Hair.Count)].Id;
Appearance.HairColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
Appearance.Eyebrows = Character.SpriteCollection.Eyebrows[Random.Range(0, Character.SpriteCollection.Eyebrows.Count)].Id;
Appearance.Eyes = Character.SpriteCollection.Eyes[Random.Range(0, Character.SpriteCollection.Eyes.Count)].Id;
Appearance.EyesColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
Appearance.Mouth = Character.SpriteCollection.Mouth[Random.Range(0, Character.SpriteCollection.Mouth.Count)].Id;
Appearance.Beard = Random.Range(0, 3) == 0 ? Character.SpriteCollection.Beard[Random.Range(0, Character.SpriteCollection.Beard.Count)].Id : null;
Refresh();
}
public void ResetAppearance()
{
Appearance = new CharacterAppearance();
Refresh();
}
public void SetRandomHair()
{
var randomIndex = Random.Range(0, Character.SpriteCollection.Hair.Count);
var randomItem = Character.SpriteCollection.Hair[randomIndex];
var randomColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
Character.SetBody(randomItem, BodyPart.Hair, randomColor);
}
public void SetRandomEyebrows()
{
var randomIndex = Random.Range(0, Character.SpriteCollection.Eyebrows.Count);
var randomItem = Character.SpriteCollection.Eyebrows[randomIndex];
Character.SetBody(randomItem, BodyPart.Eyebrows);
}
public void SetRandomEyes()
{
var randomIndex = Random.Range(0, Character.SpriteCollection.Eyes.Count);
var randomItem = Character.SpriteCollection.Eyes[randomIndex];
var randomColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
Character.SetBody(randomItem, BodyPart.Eyes, randomColor);
}
public void SetRandomMouth()
{
var randomIndex = Random.Range(0, Character.SpriteCollection.Mouth.Count);
var randomItem = Character.SpriteCollection.Mouth[randomIndex];
Character.SetBody(randomItem, BodyPart.Mouth);
}
}
}