AppearanceExample.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System.Linq;
  2. using Assets.HeroEditor4D.Common.Scripts.CharacterScripts;
  3. using Assets.HeroEditor4D.Common.Scripts.Enums;
  4. using UnityEngine;
  5. namespace Assets.HeroEditor4D.Common.Scripts.ExampleScripts
  6. {
  7. /// <summary>
  8. /// An example of how to change character's appearance.
  9. /// </summary>
  10. public class AppearanceExample : MonoBehaviour
  11. {
  12. public CharacterAppearance Appearance = new CharacterAppearance();
  13. public Character4D Character;
  14. public AvatarSetup AvatarSetup;
  15. public void Start()
  16. {
  17. Refresh();
  18. }
  19. public void Refresh()
  20. {
  21. Appearance.Setup(Character);
  22. var helmetId = Character.SpriteCollection.Armor.SingleOrDefault(i => i.Sprites.Contains(Character.Front.Helmet))?.Id;
  23. AvatarSetup.Initialize(Appearance, helmetId);
  24. }
  25. public void SetRandomAppearance()
  26. {
  27. Appearance.Hair = Random.Range(0, 3) == 0 ? null : Character.SpriteCollection.Hair[Random.Range(0, Character.SpriteCollection.Hair.Count)].Id;
  28. Appearance.HairColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
  29. Appearance.Eyebrows = Character.SpriteCollection.Eyebrows[Random.Range(0, Character.SpriteCollection.Eyebrows.Count)].Id;
  30. Appearance.Eyes = Character.SpriteCollection.Eyes[Random.Range(0, Character.SpriteCollection.Eyes.Count)].Id;
  31. Appearance.EyesColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
  32. Appearance.Mouth = Character.SpriteCollection.Mouth[Random.Range(0, Character.SpriteCollection.Mouth.Count)].Id;
  33. Appearance.Beard = Random.Range(0, 3) == 0 ? Character.SpriteCollection.Beard[Random.Range(0, Character.SpriteCollection.Beard.Count)].Id : null;
  34. Refresh();
  35. }
  36. public void ResetAppearance()
  37. {
  38. Appearance = new CharacterAppearance();
  39. Refresh();
  40. }
  41. public void SetRandomHair()
  42. {
  43. var randomIndex = Random.Range(0, Character.SpriteCollection.Hair.Count);
  44. var randomItem = Character.SpriteCollection.Hair[randomIndex];
  45. var randomColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
  46. Character.SetBody(randomItem, BodyPart.Hair, randomColor);
  47. }
  48. public void SetRandomEyebrows()
  49. {
  50. var randomIndex = Random.Range(0, Character.SpriteCollection.Eyebrows.Count);
  51. var randomItem = Character.SpriteCollection.Eyebrows[randomIndex];
  52. Character.SetBody(randomItem, BodyPart.Eyebrows);
  53. }
  54. public void SetRandomEyes()
  55. {
  56. var randomIndex = Random.Range(0, Character.SpriteCollection.Eyes.Count);
  57. var randomItem = Character.SpriteCollection.Eyes[randomIndex];
  58. var randomColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
  59. Character.SetBody(randomItem, BodyPart.Eyes, randomColor);
  60. }
  61. public void SetRandomMouth()
  62. {
  63. var randomIndex = Random.Range(0, Character.SpriteCollection.Mouth.Count);
  64. var randomItem = Character.SpriteCollection.Mouth[randomIndex];
  65. Character.SetBody(randomItem, BodyPart.Mouth);
  66. }
  67. }
  68. }