CharacterCusSliders.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace SoftKitty.MasterCharacterCreator
  5. {
  6. public class CharacterCusSliders : MonoBehaviour
  7. {
  8. public CharacterCusUI MainScript;
  9. public string SliderName;
  10. private Dictionary<int, SliderControl> SliderObjs = new Dictionary<int, SliderControl>();
  11. private Dictionary<int, CC_Thumb> ThumbObjs = new Dictionary<int, CC_Thumb>();
  12. public GameObject SliderItem;
  13. public GameObject TitleItem;
  14. private CharacterAppearance MyData;
  15. public string TurnOffAnimation;
  16. public enum SliderTypes
  17. {
  18. SliderList,
  19. AccessoryList,
  20. OutfitList
  21. }
  22. public SliderTypes Type;
  23. public CharacterDataSetting.CharacterBoneSliderNames[] MySliders;
  24. public int AccessoryList = -1;
  25. public OutfitSlots OutfitSlot;
  26. [HideInInspector]
  27. public int SelThumb = 0;
  28. public void InitData(CharacterAppearance _Data)
  29. {
  30. MyData = _Data;
  31. switch (Type)
  32. {
  33. case SliderTypes.SliderList:
  34. foreach (CharacterDataSetting.CharacterBoneSliderNames obj in MySliders)
  35. {
  36. if (!SliderObjs.ContainsKey((int)obj))
  37. {
  38. if (obj.ToString().Contains("Title_"))
  39. {
  40. GameObject newSlider = Instantiate(TitleItem) as GameObject;
  41. newSlider.transform.SetParent(TitleItem.transform.parent);
  42. newSlider.transform.localScale = TitleItem.transform.localScale;
  43. newSlider.GetComponent<SliderControl>().MyID = (int)obj;
  44. newSlider.GetComponent<SliderControl>().SetName(obj.ToString().Replace("_", " ").Replace("Title",""));
  45. newSlider.SetActive(true);
  46. SliderObjs.Add((int)obj, newSlider.GetComponent<SliderControl>());
  47. }
  48. else
  49. {
  50. GameObject newSlider = Instantiate(SliderItem) as GameObject;
  51. newSlider.transform.SetParent(SliderItem.transform.parent);
  52. newSlider.transform.localScale = SliderItem.transform.localScale;
  53. newSlider.GetComponent<SliderControl>().MyID = (int)obj;
  54. newSlider.GetComponent<SliderControl>().DefaultValue = _Data._CharacterData.DataFloat[(int)obj] * 0.01F;
  55. newSlider.GetComponent<SliderControl>().SetName(obj.ToString().Replace("_", " "));
  56. newSlider.GetComponent<SliderControl>().UpdateValue(_Data._CharacterData.DataFloat[(int)obj] * 0.01F);
  57. newSlider.SetActive(true);
  58. SliderObjs.Add((int)obj, newSlider.GetComponent<SliderControl>());
  59. }
  60. }
  61. else
  62. {
  63. if (!SliderObjs[(int)obj].isTitle)
  64. SliderObjs[(int)obj].UpdateValue(_Data._CharacterData.DataFloat[(int)obj] * 0.01F);
  65. }
  66. }
  67. break;
  68. case SliderTypes.AccessoryList:
  69. for (int i = 0; i < ThumbObjs.Count; i++)
  70. {
  71. Destroy(ThumbObjs[i].gameObject);
  72. }
  73. ThumbObjs.Clear();
  74. for (int i = 0; i <= GetAccessoryInfo(AccessoryList).MaxValue; i++)
  75. {
  76. if (!ThumbObjs.ContainsKey(i))
  77. {
  78. GameObject newSlider = Instantiate(SliderItem) as GameObject;
  79. newSlider.transform.SetParent(SliderItem.transform.parent);
  80. newSlider.transform.localScale = SliderItem.transform.localScale;
  81. newSlider.GetComponent<CC_Thumb>().MyID = i;
  82. if (i == 0)
  83. {
  84. newSlider.GetComponent<CC_Thumb>().Icon.texture = Resources.Load<Texture>("MasterCharacterCreator/Icons/Empty");
  85. }
  86. else
  87. {
  88. Texture _icon = Resources.Load<Texture>(GetAccessoryInfo(AccessoryList).ThumbPath + i.ToString());
  89. if (GetOutfitList()[i].Icon != null)
  90. newSlider.GetComponent<CC_Thumb>().Icon.texture = _icon;
  91. else
  92. newSlider.GetComponent<CC_Thumb>().Icon.texture = Resources.Load<Texture>("MasterCharacterCreator/Icons/Unknown");
  93. }
  94. newSlider.SetActive(true);
  95. ThumbObjs.Add(i, newSlider.GetComponent<CC_Thumb>());
  96. }
  97. }
  98. SelThumb = (int)GetAccessoryInfo(AccessoryList).Slot>9? MyData._OutfitID[(int)GetAccessoryInfo(AccessoryList).Slot-5] : MyData._CharacterData.DataInt[(int)GetAccessoryInfo(AccessoryList).Slot];
  99. break;
  100. case SliderTypes.OutfitList:
  101. for (int i = 0; i < ThumbObjs.Count; i++)
  102. {
  103. Destroy(ThumbObjs[i].gameObject);
  104. }
  105. ThumbObjs.Clear();
  106. for (int i = 0; i < GetOutfitList().Length; i++)
  107. {
  108. if (!ThumbObjs.ContainsKey(i))
  109. {
  110. GameObject newSlider = Instantiate(SliderItem) as GameObject;
  111. newSlider.transform.SetParent(SliderItem.transform.parent);
  112. newSlider.transform.localScale = SliderItem.transform.localScale;
  113. newSlider.GetComponent<CC_Thumb>().MyID = i;
  114. if (GetOutfitList()[i].Icon != null)
  115. newSlider.GetComponent<CC_Thumb>().Icon.texture = GetOutfitList()[i].Icon;
  116. else
  117. newSlider.GetComponent<CC_Thumb>().Icon.texture = Resources.Load<Texture>("MasterCharacterCreator/Icons/Unknown");
  118. newSlider.SetActive(true);
  119. ThumbObjs.Add(i, newSlider.GetComponent<CC_Thumb>());
  120. }
  121. }
  122. SelThumb = MyData._OutfitID[(int)OutfitSlot];
  123. break;
  124. }
  125. }
  126. public AccessoryInfo GetAccessoryInfo(int _id)
  127. {
  128. return MyData._CharacterData.Sex == 0 ? CharacterDataSetting.instance.MaleAccessorySettings[_id] : CharacterDataSetting.instance.FemaleAccessorySettings[_id];
  129. }
  130. private OutfitInfo[] GetOutfitList()
  131. {
  132. switch (OutfitSlot)
  133. {
  134. case OutfitSlots.Armor:
  135. return MyData._CharacterData.Sex == 0 ? CharacterDataSetting.instance.MaleArmorSetting : CharacterDataSetting.instance.FemaleArmorSetting;
  136. case OutfitSlots.Helmet:
  137. return MyData._CharacterData.Sex == 0 ? CharacterDataSetting.instance.MaleHelmetSetting : CharacterDataSetting.instance.FemaleHelmetSetting;
  138. case OutfitSlots.Gauntlet:
  139. return MyData._CharacterData.Sex == 0 ? CharacterDataSetting.instance.MaleGloveSetting : CharacterDataSetting.instance.FemaleGloveSetting;
  140. case OutfitSlots.Pants:
  141. return MyData._CharacterData.Sex == 0 ? CharacterDataSetting.instance.MalePantsSetting : CharacterDataSetting.instance.FemalePantsSetting;
  142. default:
  143. return MyData._CharacterData.Sex == 0 ? CharacterDataSetting.instance.MaleBootSetting : CharacterDataSetting.instance.FemaleBootSetting;
  144. }
  145. }
  146. public void ThumbSelect(int _id)
  147. {
  148. SelThumb = _id;
  149. if (Type == SliderTypes.AccessoryList)
  150. {
  151. if ((int)GetAccessoryInfo(AccessoryList).Slot > 9)
  152. {
  153. MyData._OutfitID[(int)GetAccessoryInfo(AccessoryList).Slot-5] = (byte)SelThumb;
  154. }
  155. else
  156. {
  157. MyData._CharacterData.DataInt[(int)GetAccessoryInfo(AccessoryList).Slot] = (byte)SelThumb;
  158. }
  159. MainScript.MyCharacter.UpdateMaterialData();
  160. }
  161. else if (Type == SliderTypes.OutfitList)
  162. {
  163. MainScript.SwitchOutfit(OutfitSlot, _id);
  164. }
  165. }
  166. private void UpdateData(CharacterData _Data)
  167. {
  168. MyData._CharacterData = _Data;
  169. for (int i=0;i< _Data.DataFloat.Length;i++)
  170. {
  171. if (SliderObjs.ContainsKey(i) && !SliderObjs[i].isTitle)
  172. {
  173. SliderObjs[i].UpdateValue(_Data.DataFloat[i] * 0.01F);
  174. }
  175. }
  176. if (AccessoryList > -1)
  177. {
  178. if ((int)GetAccessoryInfo(AccessoryList).Slot > 9)
  179. {
  180. SelThumb = MyData._OutfitID[(int)GetAccessoryInfo(AccessoryList).Slot-5];
  181. }
  182. else
  183. {
  184. SelThumb = MyData._CharacterData.DataInt[(int)GetAccessoryInfo(AccessoryList).Slot];
  185. }
  186. }
  187. }
  188. private void SliderValueChanged(int _id)
  189. {
  190. if (SliderObjs.ContainsKey(_id) && !SliderObjs[_id].isTitle)
  191. MyData._CharacterData.DataFloat[_id]= (byte)Mathf.FloorToInt(SliderObjs[_id].SliderScript.value*100);
  192. if (_id>=78 && _id<=80) {
  193. MainScript.MyCharacter.SetEmotion("OpenMouth", 3F);
  194. }
  195. if (_id == 87)
  196. {
  197. MainScript.MyCharacter.UpdateBreastSize();
  198. }
  199. }
  200. public void FadeAway()
  201. {
  202. GetComponent<Animation>().Play(TurnOffAnimation);
  203. }
  204. public void TurnOff()
  205. {
  206. gameObject.SetActive(false);
  207. }
  208. }
  209. }