YiHe_AllVersion/YHWeb/Assets/YHElectric/Scripts/UIPanel/MainPanel.cs

184 lines
7.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XFrame.Core.UI;
using XFrame.Core.Tool;
using UnityEngine.EventSystems;
using DG.Tweening;
namespace YHElectric
{
public class MainPanel : XUIPanel
{
static Transform modelListTrans;
static Transform functionTrans;
static Transform strategyBgTrans;
static Transform topBarTrans;
private static float modelListTransX;
private static float functionTransX;
private Button roam;
private Slider moveSlider;
bool isFunctionShow = false;
bool isModelListTransShow = false;
bool isStrategyShow = false;
bool sliderTrigger = false;
public MainPanel() : base(UIType.Fixed, UIMode.None, UICollider.None)
{
uiPath = "UI/UIPanelPrefab/MainPanel";
}
public override void Awake(GameObject go)
{
topBarTrans = transform.Find("BG/topBar");
modelListTrans = transform.Find("BG/modelList");
strategyBgTrans = transform.Find("BG/strategy/bg");
functionTrans = transform.Find("BG/function");
moveSlider = transform.Find("BG/moveSlider").GetComponent<Slider>();
roam = transform.Find("BG/roam").GetComponent<Button>();
modelListTransX = modelListTrans.GetComponent<RectTransform>().position.x;
functionTransX = functionTrans.GetComponent<RectTransform>().localPosition.x;
strategyBgTrans.GetComponent<Button>().onClick.AddListener(StrategyClick);
modelListTrans.gameObject.AddComponent<EventTrigger>().AddListener(EventTriggerType.PointerDown, ModelListShow);
functionTrans.gameObject.AddComponent<EventTrigger>().AddListener(EventTriggerType.PointerDown, FunctionShow);
moveSlider.gameObject.AddComponent<EventTrigger>().AddListener(EventTriggerType.PointerExit, MoveSliderEnd);
moveSlider.onValueChanged.AddListener(MoveSlider);
transform.Find("BG/timeSky").GetComponent<Button>().onClick.AddListener(TimeSkyBtnClick);//天气按钮点击调用事件
roam.onClick.AddListener(RoamBtnClick);//漫游按钮点击调用事件
for (int i=0;i< strategyBgTrans.childCount-1; i++)
{
int index = i;
strategyBgTrans.GetChild(i).GetComponent<Button>().onClick.AddListener(() =>
StrategyBtnClick(strategyBgTrans.GetChild(index).GetComponent<Button>().name)
);
strategyBgTrans.GetChild(i).GetComponent<RectTransform>().localScale = Vector3.zero;
}
for(int i=0;i< topBarTrans.childCount; i++)
{
topBarTrans.GetChild(i).gameObject.AddComponent<EventTrigger>().AddListener(EventTriggerType.PointerDown, TopBarElemShow);
}
}
private void TopBarElemShow(PointerEventData eventData)
{
for(int i = 0; i < eventData.hovered.Count; i++)
{
if (eventData.hovered[i].CompareTag("TopBar"))
{
HideOtherTopBar(eventData.hovered[i].gameObject);
TopBarElement topBarElement = eventData.hovered[i].GetComponent<TopBarElement>();
topBarElement.isShow = !topBarElement.isShow;
if (topBarElement.isShow)
topBarElement.Enter();
else
topBarElement.Exit();
return;
}
}
}
void HideOtherTopBar(GameObject go)
{
for(int i = 0; i < topBarTrans.childCount; i++)
{
if (go != topBarTrans.GetChild(i).gameObject)
{
if (topBarTrans.GetChild(i).GetComponent<TopBarElement>().isShow)
{
topBarTrans.GetChild(i).GetComponent<TopBarElement>().isShow = false;
topBarTrans.GetChild(i).GetComponent<TopBarElement>().Exit();
}
}
}
}
private void ModelListShow(PointerEventData eventData)
{
isModelListTransShow = !isModelListTransShow;
if (isModelListTransShow)
modelListTrans.DOMoveX(0, 0.2f).SetEase(Ease.InOutQuad);
else
modelListTrans.DOMoveX(modelListTransX, 0.2f).SetEase(Ease.InOutQuad);
}
private void FunctionShow(PointerEventData eventData)
{
isFunctionShow = !isFunctionShow;
if(isFunctionShow)
functionTrans.DOLocalMoveX(Screen.width/2, 0.2f).SetEase(Ease.InOutQuad);
else
functionTrans.DOLocalMoveX(functionTransX, 0.2f).SetEase(Ease.InOutQuad);
}
private void StrategyShow(PointerEventData eventData)
{
//strategyTrans.DOMoveY(0, 0.2f).SetEase(Ease.InOutQuad);
}
private void StrategyHide(PointerEventData eventData)
{
//strategyTrans.DOMoveY(-100, 0.2f).SetEase(Ease.InOutQuad).OnComplete(() => { arrowUp.gameObject.SetActive(true); });
}
private void StrategyClick()
{
float speed = 0.2f;
isStrategyShow = !isStrategyShow;
for(int i=0;i< strategyBgTrans.childCount-1; i++)
{
if (isStrategyShow)
{
strategyBgTrans.GetChild(i).DOLocalRotate (new Vector3(0,0, -360), speed,RotateMode.FastBeyond360);
strategyBgTrans.GetChild(i).DOScale(Vector3.one, speed);
}
else
{
strategyBgTrans.GetChild(i).DOLocalRotate(new Vector3(0, 0, 360), speed, RotateMode.FastBeyond360);
strategyBgTrans.GetChild(i).DOScale(Vector3.zero, speed);
}
}
}
/// <summary>
/// 策略按钮点击事件
/// </summary>
/// <param name="name"></param>
private void StrategyBtnClick(string name)
{
Debug.Log(name);
}
/// <summary>
/// 天气时间点击调用事件
/// </summary>
private void TimeSkyBtnClick()
{
//DynamicSkyCanvas.instance.Show();
}
bool isBool = false;
/// <summary>
/// 漫游按钮点击事件
/// </summary>
private void RoamBtnClick()
{
//todo
//漫游
isBool = !isBool;
//roam.image.sprite = isBool?SpriteTool.SpriteCreate("Texture/暂停") : SpriteTool.SpriteCreate("Texture/漫游");
//CameraOperate.instance.CameraRoam(isBool);
}
private void MoveSlider(float f)
{
sliderTrigger = true;
}
private void MoveSliderEnd(PointerEventData eventData)
{
if (sliderTrigger)
{
sliderTrigger = false;
moveSlider.value = 0.5f;
}
}
}
}