123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340 |
- using System;
- using System.Collections.Generic;
- using UnityEngine;
- using wf;
- public class GravityControlWindow : BaseMaidPhotoWindow
- {
- public override void Awake()
- {
- base.Awake();
- this.selectGravityData = null;
- this.editSubWindow = this.subWindows[0];
- this.noCharaActive = base.GetComponentInChildren<PhotoNoCharaActive>();
- foreach (GravityControlWindow.GravityData gravityData in this.gravityDatas)
- {
- NDebug.Assert(!string.IsNullOrEmpty(gravityData.categoryName), "GravityControlWindow 初期化エラーcategoryNameが不正です");
- NDebug.Assert(0 < gravityData.slotIds.Length, "GravityControlWindow 初期化エラーslotIdsが不正です");
- EventDelegate.Add(gravityData.button.onClick, delegate()
- {
- for (int j = 0; j < this.gravityDatas.Length; j++)
- {
- if (this.gravityDatas[j].button == UIButton.current)
- {
- if (this.gravityDatas[j] == this.selectGravityData)
- {
- this.CloseEditSubWindow();
- }
- else
- {
- this.OnSelectCategoryButton(this.gravityDatas[j]);
- }
- break;
- }
- }
- });
- }
- this.checkBoxEnabledGravityControl.onClick.Add(delegate(WFCheckBox check_box)
- {
- if (base.mgr.select_maid == null || base.mgr.select_maid.boMAN || this.selectGravityData == null)
- {
- return;
- }
- GravityTransformControl gravityTransformControl = this.GetGravityTransformControl(base.mgr.select_maid, this.selectGravityData.categoryName);
- if (gravityTransformControl == null)
- {
- return;
- }
- gravityTransformControl.isEnabled = check_box.check;
- });
- this.UpdateChildren();
- }
- public override void Start()
- {
- base.Start();
- this.noCharaActive.ChangeMode(true, true);
- this.editSubWindow.SetButtonEnabled(BasePhotoSubWindow.BtnType.End, true, false);
- this.editSubWindow.GetButtonOnClickEventList(BasePhotoSubWindow.BtnType.End).Add(new Action(this.CloseEditSubWindow));
- this.editSubWindow.visible = false;
- }
- public override void OnMaidAddEvent(Maid maid, bool is_deserialize_load)
- {
- if (maid == null || maid.boMAN)
- {
- return;
- }
- Dictionary<string, GravityTransformControl> dictionary = new Dictionary<string, GravityTransformControl>();
- foreach (GravityControlWindow.GravityData gravityData in this.gravityDatas)
- {
- string text = "GravityDatas_" + maid.status.guid + "_" + gravityData.categoryName;
- Transform bone = maid.body0.GetBone("Bip01");
- Transform transform = bone.Find(text);
- if (transform == null)
- {
- GameObject gameObject = new GameObject();
- gameObject.name = text;
- gameObject.transform.SetParent(bone, false);
- gameObject.transform.SetParent(maid.transform, true);
- gameObject.transform.localScale = Vector3.one;
- gameObject.transform.rotation = Quaternion.identity;
- GameObject gameObject2 = new GameObject();
- gameObject2.transform.SetParent(gameObject.transform, false);
- gameObject2.name = text;
- transform = gameObject2.transform;
- }
- else
- {
- transform = transform.transform.GetChild(0);
- }
- GravityTransformControl gravityTransformControl = transform.gameObject.AddComponent<GravityTransformControl>();
- gravityTransformControl.transTargetObject = new PhotoTransTargetObject(transform.gameObject, text, string.Empty, PhotoTransTargetObject.Type.Prefab, Vector2.one);
- gravityTransformControl.SetTargetSlods(gravityData.slotIds);
- gravityTransformControl.forceRate = gravityData.forceRate;
- dictionary.Add(gravityData.categoryName, gravityTransformControl);
- Dictionary<string, string> maidStoreData = base.GetMaidStoreData(maid);
- string categoryName = gravityData.categoryName;
- if (gravityTransformControl.isValid)
- {
- if (maidStoreData.ContainsKey(categoryName))
- {
- gravityTransformControl.isEnabled = bool.Parse(maidStoreData[categoryName]);
- gravityTransformControl.transform.localPosition = Parse.Vector3(maidStoreData[categoryName + "pos"]);
- }
- }
- else if (maidStoreData != null && maidStoreData.ContainsKey(categoryName))
- {
- maidStoreData.Remove(categoryName);
- maidStoreData.Remove(categoryName + "pos");
- }
- }
- this.activeMaidControllerList.Add(maid.status.guid, dictionary);
- this.noCharaActive.ChangeMode(false, true);
- }
- public override void OnMaidRemoveEvent(Maid maid)
- {
- if (maid == null || maid.boMAN)
- {
- return;
- }
- foreach (GravityControlWindow.GravityData gravityData in this.gravityDatas)
- {
- GravityTransformControl gravityTransformControl = this.GetGravityTransformControl(maid, gravityData.categoryName);
- GameObject gameObject = gravityTransformControl.transform.parent.gameObject;
- if (gravityTransformControl.transTargetObject != null)
- {
- gravityTransformControl.transTargetObject.Delete();
- }
- UnityEngine.Object.DestroyImmediate(gameObject);
- }
- if (this.activeMaidControllerList.ContainsKey(maid.status.guid))
- {
- this.activeMaidControllerList.Remove(maid.status.guid);
- }
- if (this.activeMaidControllerList.Count <= 0)
- {
- this.noCharaActive.ChangeMode(true, true);
- }
- }
- public override void OnMaidChangeEvent(Maid maid)
- {
- base.OnMaidChangeEvent(maid);
- foreach (GravityControlWindow.GravityData gravityData in this.gravityDatas)
- {
- GravityTransformControl gravityTransformControl = (!(maid == null) && !maid.boMAN) ? this.GetGravityTransformControl(maid, gravityData.categoryName) : null;
- bool flag = !(gravityTransformControl == null) && gravityTransformControl.isValid;
- if (!flag)
- {
- gravityData.button.SetSelect(false);
- }
- gravityData.button.isEnabled = flag;
- }
- if (this.selectGravityData != null)
- {
- this.OnSelectCategoryButton(this.selectGravityData);
- }
- }
- public void OnChangeMekure()
- {
- if (base.mgr.select_maid == null || base.mgr.select_maid.boMAN)
- {
- return;
- }
- foreach (GravityControlWindow.GravityData gravityData in this.gravityDatas)
- {
- GravityTransformControl gravityTransformControl = this.GetGravityTransformControl(base.mgr.select_maid, gravityData.categoryName);
- if (!(gravityTransformControl == null))
- {
- gravityTransformControl.OnChangeMekure();
- }
- }
- }
- public override void OnSerializeEvent()
- {
- List<string> maidStoreGuidList = base.mgr.GetMaidStoreGuidList();
- foreach (string text in maidStoreGuidList)
- {
- Dictionary<string, string> maidStoreData = base.GetMaidStoreData(text);
- if (maidStoreData != null)
- {
- foreach (GravityControlWindow.GravityData gravityData in this.gravityDatas)
- {
- string categoryName = gravityData.categoryName;
- GravityTransformControl gravityTransformControl = this.GetGravityTransformControl(text, gravityData.categoryName);
- if (!(gravityTransformControl == null))
- {
- if (gravityTransformControl.isValid)
- {
- maidStoreData[categoryName] = gravityTransformControl.isEnabled.ToString();
- maidStoreData[categoryName + "pos"] = gravityTransformControl.transform.localPosition.ToString("G9");
- }
- else
- {
- maidStoreData[categoryName] = false.ToString();
- maidStoreData[categoryName + "pos"] = Vector3.zero.ToString("G9");
- }
- }
- }
- }
- }
- }
- public override void OnDeserializeEvent()
- {
- }
- private void OnSelectCategoryButton(GravityControlWindow.GravityData selectedData)
- {
- this.CloseEditSubWindow();
- if (base.mgr.select_maid == null || base.mgr.select_maid.boMAN || selectedData == null || !selectedData.button.isEnabled)
- {
- return;
- }
- GravityTransformControl gravityTransformControl = this.GetGravityTransformControl(base.mgr.select_maid, selectedData.categoryName);
- if (gravityTransformControl == null)
- {
- return;
- }
- this.transInput.SetTarget(gravityTransformControl.transform, Vector3.zero);
- this.checkBoxEnabledGravityControl.check = gravityTransformControl.isEnabled;
- gravityTransformControl.visibleTransTargetObject = true;
- this.editSubWindow.visible = true;
- selectedData.isSelectedButton = true;
- this.selectGravityData = selectedData;
- }
- private void CloseEditSubWindow()
- {
- if (this.selectGravityData != null)
- {
- this.selectGravityData.isSelectedButton = false;
- this.selectGravityData.button.SetSelect(false);
- this.editSubWindow.visible = false;
- }
- foreach (KeyValuePair<string, Dictionary<string, GravityTransformControl>> keyValuePair in this.activeMaidControllerList)
- {
- foreach (KeyValuePair<string, GravityTransformControl> keyValuePair2 in keyValuePair.Value)
- {
- keyValuePair2.Value.visibleTransTargetObject = false;
- }
- }
- this.selectGravityData = null;
- }
- private GravityTransformControl GetGravityTransformControl(Maid maid, string gravityCategoryName)
- {
- if (maid == null)
- {
- return null;
- }
- return this.GetGravityTransformControl(maid.status.guid, gravityCategoryName);
- }
- private GravityTransformControl GetGravityTransformControl(string maidGuid, string gravityCategoryName)
- {
- GravityTransformControl result = null;
- if (this.activeMaidControllerList.ContainsKey(maidGuid))
- {
- result = ((!this.activeMaidControllerList[maidGuid].ContainsKey(gravityCategoryName)) ? null : this.activeMaidControllerList[maidGuid][gravityCategoryName]);
- }
- return result;
- }
- [SerializeField]
- private GravityControlWindow.GravityData[] gravityDatas;
- [SerializeField]
- private WFCheckBox checkBoxEnabledGravityControl;
- [SerializeField]
- private PhotTransInput transInput;
- private GravityControlWindow.GravityData selectGravityData;
- private BasePhotoSubWindow editSubWindow;
- private PhotoNoCharaActive noCharaActive;
- private Dictionary<string, Dictionary<string, GravityTransformControl>> activeMaidControllerList = new Dictionary<string, Dictionary<string, GravityTransformControl>>();
- [Serializable]
- private class GravityData
- {
- public TBody.SlotID[] slotIds
- {
- get
- {
- if (this.slotIds_ == null && this.slotIdNames != null)
- {
- this.slotIds_ = new TBody.SlotID[this.slotIdNames.Length];
- for (int i = 0; i < this.slotIdNames.Length; i++)
- {
- this.slotIds_[i] = (TBody.SlotID)Enum.Parse(typeof(TBody.SlotID), this.slotIdNames[i]);
- }
- }
- return this.slotIds_;
- }
- }
- public bool isSelectedButton
- {
- get
- {
- return this.button.isSelected;
- }
- set
- {
- if (value)
- {
- BoxCollider component = this.button.GetComponent<BoxCollider>();
- Vector3 size = component.size;
- this.button.SetSelect(true);
- component.size = size;
- }
- else
- {
- this.button.SetSelect(false);
- }
- }
- }
- [SerializeField]
- public string categoryName;
- [SerializeField]
- public float forceRate;
- [SerializeField]
- public UIWFTabButton button;
- [SerializeField]
- private string[] slotIdNames;
- private TBody.SlotID[] slotIds_;
- }
- }
|