CharacterExtensions.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using Assets.HeroEditor4D.Common.Scripts.Common;
  2. using Assets.HeroEditor4D.Common.Scripts.Enums;
  3. using UnityEngine;
  4. namespace Assets.HeroEditor4D.Common.Scripts.CharacterScripts
  5. {
  6. /// <summary>
  7. /// You can extend 'Character' class here.
  8. /// </summary>
  9. public static class CharacterExtensions
  10. {
  11. public static Color RandomColor => new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f), 1f);
  12. public static void Randomize(this Character4D character)
  13. {
  14. character.ResetEquipment();
  15. character.SetBody(character.Front.SpriteCollection.Eyes.Random(), BodyPart.Eyes);
  16. if (character.Front.SpriteCollection.Hair.Count > 0) character.SetBody(character.Front.SpriteCollection.Hair.Random(), BodyPart.Hair, RandomColor);
  17. if (character.Front.SpriteCollection.Eyebrows.Count > 0) character.SetBody(character.Front.SpriteCollection.Eyebrows.Random(), BodyPart.Eyebrows);
  18. if (character.Front.SpriteCollection.Eyes.Count > 0) character.SetBody(character.Front.SpriteCollection.Eyes.Random(), BodyPart.Eyes, RandomColor);
  19. if (character.Front.SpriteCollection.Ears.Count > 0) character.SetBody(character.Front.SpriteCollection.Ears.Random(), BodyPart.Ears);
  20. if (character.Front.SpriteCollection.Mouth.Count > 0) character.SetBody(character.Front.SpriteCollection.Mouth.Random(), BodyPart.Mouth);
  21. character.Equip(character.Front.SpriteCollection.Armor.Random(), EquipmentPart.Helmet);
  22. character.Equip(character.Front.SpriteCollection.Armor.Random(), EquipmentPart.Armor);
  23. switch (Random.Range(0, 5))
  24. {
  25. case 0:
  26. character.Equip(character.Front.SpriteCollection.MeleeWeapon1H.Random(), EquipmentPart.MeleeWeapon1H);
  27. character.UnEquip(EquipmentPart.Shield);
  28. break;
  29. case 1:
  30. character.Equip(character.Front.SpriteCollection.MeleeWeapon1H.Random(), EquipmentPart.MeleeWeapon1H);
  31. character.Equip(character.Front.SpriteCollection.Shield.Random(), EquipmentPart.Shield);
  32. break;
  33. case 2:
  34. character.Equip(character.Front.SpriteCollection.MeleeWeapon2H.Random(), EquipmentPart.MeleeWeapon2H);
  35. break;
  36. case 3:
  37. character.Equip(character.Front.SpriteCollection.Bow.Random(), EquipmentPart.Bow);
  38. break;
  39. case 4:
  40. character.Equip(character.Front.SpriteCollection.Firearm1H.Random(), EquipmentPart.SecondaryFirearm1H);
  41. break;
  42. }
  43. }
  44. }
  45. }