123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using MaidStatus;
- using UnityEngine;
- using UnityEngine.Events;
- using UnityEngine.UI;
- public class VRVIPMenu : MonoBehaviour
- {
- private void Update()
- {
- for (int i = 0; i < this.m_VIPElementDataArray.Count; i++)
- {
- VRVIPMenu.ElementData elementData = this.m_VIPElementDataArray[i];
- if (elementData.isEnable)
- {
- MaskableGraphic[] componentsInChildren = elementData.Element.GetComponentsInChildren<MaskableGraphic>();
- Color color = Color.white;
- if (elementData.isPointerDown)
- {
- color *= 0.78f;
- color.a = 1f;
- for (int j = 0; j < componentsInChildren.Length; j++)
- {
- componentsInChildren[j].CrossFadeColor(color, 0.1f, false, true);
- }
- return;
- }
- if (elementData.isPointerStay)
- {
- for (int k = 0; k < componentsInChildren.Length; k++)
- {
- componentsInChildren[k].CrossFadeColor(color, 0.1f, false, true);
- }
- }
- else
- {
- color *= 0.75f;
- color.a = 1f;
- for (int l = 0; l < componentsInChildren.Length; l++)
- {
- componentsInChildren[l].CrossFadeColor(color, 0.1f, false, true);
- }
- }
- }
- }
- }
- private void UpdateVIPUI()
- {
- this.m_PrefabElement.SetActive(false);
- string text = "vrcom_vip.nei";
- if (!GameUty.FileSystem.IsExistentFile(text))
- {
- NDebug.Assert("表がありません。" + text, false);
- }
- using (AFileBase afileBase = GameUty.FileSystem.FileOpen(text))
- {
- using (CsvParser csvParser = new CsvParser())
- {
- bool condition = csvParser.Open(afileBase);
- NDebug.Assert(condition, text + "\nopen failed.");
- for (int i = 1; i < csvParser.max_cell_y; i++)
- {
- if (csvParser.IsCellToExistData(0, i))
- {
- int num = 0;
- int cellAsInteger = csvParser.GetCellAsInteger(num++, i);
- string cellAsString = csvParser.GetCellAsString(num++, i);
- string cellAsString2 = csvParser.GetCellAsString(num++, i);
- string cellAsString3 = csvParser.GetCellAsString(num++, i);
- string cellAsString4 = csvParser.GetCellAsString(num++, i);
- string cellAsString5 = csvParser.GetCellAsString(num++, i);
- string cellAsString6 = csvParser.GetCellAsString(num++, i);
- string cellAsString7 = csvParser.GetCellAsString(num++, i);
- string cellAsString8 = csvParser.GetCellAsString(num++, i);
- string cellAsString9 = csvParser.GetCellAsString(num++, i);
- string scriptName = csvParser.GetCellAsString(num++, i);
- string cellAsString10 = csvParser.GetCellAsString(num++, i);
- string cellAsString11 = csvParser.GetCellAsString(num++, i);
- string cellAsString12 = csvParser.GetCellAsString(num++, i);
- string cellAsString13 = csvParser.GetCellAsString(num++, i);
- string cellAsString14 = csvParser.GetCellAsString(num++, i);
- if (string.IsNullOrEmpty(cellAsString10) || GameMain.Instance.CharacterMgr.status.GetFlag(cellAsString10) > 0)
- {
- VRVIPMenu.ElementData data = this.CreateElement();
- data.TextName.text = cellAsString;
- data.TextFlag1.text = cellAsString3;
- data.TextFlag2.text = cellAsString4;
- data.TextFlag3.text = cellAsString5;
- data.TextFlag4.text = cellAsString6;
- data.TextHowToVIP.text = cellAsString9;
- data.TextFlag1.gameObject.SetActive(!string.IsNullOrEmpty(cellAsString3));
- data.TextFlag2.gameObject.SetActive(!string.IsNullOrEmpty(cellAsString4));
- data.TextFlag3.gameObject.SetActive(!string.IsNullOrEmpty(cellAsString5));
- data.TextFlag4.gameObject.SetActive(!string.IsNullOrEmpty(cellAsString6));
- Maid maid = GameMain.Instance.CharacterMgr.GetMaid(0);
- bool flag = true;
- if (maid)
- {
- if (!string.IsNullOrEmpty(cellAsString7))
- {
- flag &= (GameMain.Instance.CharacterMgr.status.GetFlag(cellAsString7) > 0);
- }
- if (!string.IsNullOrEmpty(cellAsString8))
- {
- flag &= (maid.status.GetFlag(cellAsString8) > 0);
- }
- if (cellAsString11.Equals("×"))
- {
- flag &= (maid.status.seikeiken != Seikeiken.No_No);
- }
- if (cellAsString12.Equals("×"))
- {
- flag &= (maid.status.seikeiken != Seikeiken.Yes_No);
- }
- if (cellAsString13.Equals("×"))
- {
- flag &= (maid.status.seikeiken != Seikeiken.No_Yes);
- }
- if (cellAsString14.Equals("×"))
- {
- flag &= (maid.status.seikeiken != Seikeiken.Yes_Yes);
- }
- }
- else
- {
- flag = false;
- }
- data.isEnable = flag;
- if (flag)
- {
- VRVIPMenuElement component = data.Element.GetComponent<VRVIPMenuElement>();
- VRVIPMenuElement vrvipmenuElement = component;
- vrvipmenuElement.m_CallbackPointerClick = (UnityAction)Delegate.Combine(vrvipmenuElement.m_CallbackPointerClick, new UnityAction(delegate
- {
- this.EventElementClick(data, scriptName);
- GameMain.Instance.SoundMgr.PlaySystem(SoundMgr.SeType.Click);
- }));
- VRVIPMenuElement vrvipmenuElement2 = component;
- vrvipmenuElement2.m_CallbackPointerDown = (UnityAction)Delegate.Combine(vrvipmenuElement2.m_CallbackPointerDown, new UnityAction(delegate
- {
- data.isPointerDown = true;
- }));
- VRVIPMenuElement vrvipmenuElement3 = component;
- vrvipmenuElement3.m_CallbackPointerUp = (UnityAction)Delegate.Combine(vrvipmenuElement3.m_CallbackPointerUp, new UnityAction(delegate
- {
- data.isPointerDown = false;
- }));
- VRVIPMenuElement vrvipmenuElement4 = component;
- vrvipmenuElement4.m_CallbackPointerEnter = (UnityAction)Delegate.Combine(vrvipmenuElement4.m_CallbackPointerEnter, new UnityAction(delegate
- {
- data.isPointerStay = true;
- GameMain.Instance.SoundMgr.PlaySystem(SoundMgr.SeType.Hover);
- }));
- VRVIPMenuElement vrvipmenuElement5 = component;
- vrvipmenuElement5.m_CallbackPointerExit = (UnityAction)Delegate.Combine(vrvipmenuElement5.m_CallbackPointerExit, new UnityAction(delegate
- {
- data.isPointerStay = false;
- data.isPointerDown = false;
- }));
- }
- else
- {
- MaskableGraphic[] componentsInChildren = data.Element.GetComponentsInChildren<MaskableGraphic>();
- Color color = Color.white;
- color *= 0.66f;
- color.a = 0.75f;
- for (int j = 0; j < componentsInChildren.Length; j++)
- {
- componentsInChildren[j].CrossFadeColor(color, 0f, false, true);
- }
- }
- string path = this.m_uGUIAtlasPath + cellAsString2;
- base.StartCoroutine(this.Coroutine_Load<Sprite>(path, delegate(ResourceRequest req)
- {
- data.ImageThumbnail.sprite = (req.asset as Sprite);
- }));
- this.m_VIPElementDataArray.Add(data);
- }
- }
- }
- }
- }
- }
- private VRVIPMenu.ElementData CreateElement()
- {
- GameObject gameObject = UnityEngine.Object.Instantiate<GameObject>(this.m_PrefabElement);
- gameObject.SetActive(true);
- gameObject.transform.SetParent(this.m_Content, false);
- return new VRVIPMenu.ElementData
- {
- Element = gameObject.GetComponent<RectTransform>(),
- TextName = gameObject.transform.Find("Text VIP Name").GetComponent<Text>(),
- ImageThumbnail = gameObject.transform.Find("Image VIP thumnail").GetComponent<Image>(),
- TextFlag1 = gameObject.transform.Find("Text VIP Flag 1").GetComponent<Text>(),
- TextFlag2 = gameObject.transform.Find("Text VIP Flag 2").GetComponent<Text>(),
- TextFlag3 = gameObject.transform.Find("Text VIP Flag 3").GetComponent<Text>(),
- TextFlag4 = gameObject.transform.Find("Text VIP Flag 4").GetComponent<Text>(),
- TextHowToVIP = gameObject.transform.Find("Text VIP Comment").GetComponent<Text>()
- };
- }
- private void EventElementClick(VRVIPMenu.ElementData element, string scriptName)
- {
- Debug.Log("項目がクリックされた。\n" + element.Element.name);
- VRDialogMenu dialog = VRDialogMenu.CreateDialog();
- VRDialogMenu.TYPE_STYLE style = (VRDialogMenu.TYPE_STYLE)12;
- dialog.OpenDialog("「" + element.TextName.text + "」を\n行います。", style, delegate(VRDialogMenu.TYPE_STYLE type)
- {
- dialog.CloseDialog();
- if (type == VRDialogMenu.TYPE_STYLE.OK)
- {
- VRCanvasManager.Instance.ClearCanvasStack();
- VRCanvasManager.Instance.OpenVRCanvas(VRCanvasManager.VRCanvasType.MainMenu);
- GameMain.Instance.ScriptMgr.LoadAdvScenarioScript(scriptName + ".ks", string.Empty);
- GameMain.Instance.ScriptMgr.adv_kag.Exec();
- }
- else
- {
- VRCanvasManager.Instance.ClearCanvasStack();
- VRCanvasManager.Instance.OpenVRCanvas(VRCanvasManager.VRCanvasType.VIP);
- }
- });
- }
- private void OnEnable()
- {
- this.UpdateVIPUI();
- }
- private void OnDisable()
- {
- if (base.gameObject == null)
- {
- return;
- }
- if (this.m_Content == null)
- {
- return;
- }
- if (this.m_PrefabElement == null)
- {
- return;
- }
- this.m_VIPElementDataArray.Clear();
- for (int i = 0; i < this.m_Content.childCount; i++)
- {
- GameObject gameObject = this.m_Content.GetChild(i).gameObject;
- if (!(gameObject == this.m_PrefabElement))
- {
- UnityEngine.Object.Destroy(gameObject);
- }
- }
- }
- public void ButtonEvent_Close()
- {
- SceneVRCommunication sceneVRCom = SceneVRCommunication.Instance;
- if (sceneVRCom == null)
- {
- return;
- }
- VRSelectorMenu selector = VRSelectorMenu.CreateSelector();
- selector.SetSelectType(VRChoices.SelectPair.Type.Text);
- List<VRChoices.SelectPair> list = new List<VRChoices.SelectPair>();
- list.Add(new VRChoices.SelectPair("VIPを続ける", "0", 0, VRChoices.SelectPair.Type.Text, 0, -1f));
- list.Add(new VRChoices.SelectPair("翌日ヘ進む", "1", 0, VRChoices.SelectPair.Type.Text, 0, -1f));
- selector.SelectStart(list, delegate(VRChoices.SelectPair choice)
- {
- selector.SelectFinalize(null);
- if (choice.strLabel == "0")
- {
- VRCanvasManager.Instance.OpenVRCanvas(VRCanvasManager.VRCanvasType.VIP);
- }
- else
- {
- VRCanvasManager.Instance.OpenVRCanvas(VRCanvasManager.VRCanvasType.MainMenu);
- sceneVRCom.KagDoNextTime();
- }
- });
- }
- private IEnumerator Coroutine_Load<T>(string path, UnityAction<ResourceRequest> callback) where T : UnityEngine.Object
- {
- ResourceRequest res = Resources.LoadAsync<T>(path);
- while (!res.isDone)
- {
- yield return null;
- }
- callback(res);
- yield break;
- }
- [SerializeField]
- [Tooltip("VIPの概要を表示する要素(プレハブ)")]
- private GameObject m_PrefabElement;
- [SerializeField]
- [Tooltip("説明する要素を並べるUI")]
- private RectTransform m_Content;
- private string m_uGUIAtlasPath = "SceneVRCommunication\\Tablet\\Sprite\\";
- private List<VRVIPMenu.ElementData> m_VIPElementDataArray = new List<VRVIPMenu.ElementData>();
- private class ElementData
- {
- public ElementData()
- {
- this.Element = null;
- this.TextName = null;
- this.ImageThumbnail = null;
- this.TextFlag1 = null;
- this.TextFlag2 = null;
- this.TextFlag3 = null;
- this.TextFlag4 = null;
- this.TextHowToVIP = null;
- this.isPointerStay = false;
- this.isPointerDown = false;
- this.isEnable = false;
- }
- public RectTransform Element;
- public Text TextName;
- public Image ImageThumbnail;
- public Text TextFlag1;
- public Text TextFlag2;
- public Text TextFlag3;
- public Text TextFlag4;
- public Text TextHowToVIP;
- public bool isPointerStay;
- public bool isPointerDown;
- public bool isEnable;
- }
- }
|