//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, February 19, 2019
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using DG.Tweening;
|
using System;
|
|
namespace Snxxz.UI
|
{
|
|
public class MainPositionTween : MonoBehaviour
|
{
|
[Header("切换按钮旋转")]
|
public Vector3 Vec3 = new Vector3(0f, 0f, 225f);//切换旋转的角度
|
[SerializeField] Transform m_ImageRotation;//切换滚动
|
|
[Header("主界面顶部上下切换模块")]
|
public float rightTopSwitchTime = 1f;
|
[SerializeField] Transform m_RightTopFunction;
|
[SerializeField] Transform m_ContainerBossList;
|
[SerializeField] Transform m_RightTopPosition1;
|
[SerializeField] Transform m_RightTopPosition2;
|
|
[Header("主界面技能面板切换模块")]
|
public float rightBottomSwitchTime = 1.2f;
|
[SerializeField] Transform m_ContainerSkill;//技能面板
|
[SerializeField] Transform m_SkillPosition1;
|
[SerializeField] Transform m_SkillPosition2;
|
[SerializeField] RightBottomFadeInOut m_FunctionFadeInOut;//右下角按钮组
|
|
[Header("主界面任务模块")]
|
public float leftMiddleSwitchTime = 0.5f;//任务面板移动的速度
|
[SerializeField] Transform m_ContainerLeftMiddle;
|
[SerializeField] Transform m_LeftMiddlePosition1;
|
[SerializeField] Transform m_LeftMiddlePosition2;
|
[SerializeField] GameObject m_LeftImage;
|
[SerializeField] GameObject m_RightImg;
|
|
[SerializeField] ClickScreenOtherSpace m_RayMask;//便捷切换按钮
|
|
TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
|
|
public bool IsTaskAndPanelShow {
|
get {
|
return (m_ContainerLeftMiddle.localPosition - m_LeftMiddlePosition1.localPosition).sqrMagnitude < 3 * 3;
|
}
|
}
|
|
void Start()
|
{
|
m_RayMask.AddListener(MarkRayButton);
|
}
|
|
void LateUpdate()
|
{
|
if (resetToDefaultTimer > 0f)
|
{
|
resetToDefaultTimer -= Time.deltaTime;
|
if (resetToDefaultTimer <= 0f)
|
{
|
SwitchFunctions(new SwitchParam() { showDefault = true, immediately = false });
|
}
|
}
|
}
|
|
public void ShowTaskImmedidately(bool show)
|
{
|
m_LeftImage.SetActive(show);
|
m_RightImg.SetActive(!show);
|
m_ContainerLeftMiddle.localPosition = show ? m_LeftMiddlePosition1.localPosition : m_LeftMiddlePosition2.localPosition;
|
}
|
|
public void ShowTask(bool show)
|
{
|
m_LeftImage.SetActive(show);
|
m_RightImg.SetActive(!show);
|
|
var endX = show ? m_LeftMiddlePosition1.localPosition.x : m_LeftMiddlePosition2.localPosition.x;
|
m_ContainerLeftMiddle.DOLocalMoveX(endX, leftMiddleSwitchTime);
|
}
|
|
public static RightTopState rightTopState { get; private set; }
|
public static RightBottomState rightBottomState { get; private set; }
|
public static bool isDefaultState { get; private set; }
|
public static event Action<bool> switchFunctionStateEvent;
|
|
float resetToDefaultTimer = 0;
|
public void SwitchFunctions(SwitchParam switchParams)
|
{
|
ProcessSwitch(switchParams);
|
}
|
|
private void ProcessSwitch(SwitchParam switchParams)
|
{
|
var mapId = PlayerDatas.Instance.baseData.MapID;
|
var isDungeon = MapUtility.IsDungeon(mapId);
|
var isNeutralMap = false;
|
var isBossArea = PlayerDatas.Instance.hero != null && MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss);
|
var isGuiding = NewBieCenter.Instance.inGuiding;
|
|
if (GeneralDefine.neutralBossMaps.Contains(mapId))
|
{
|
isNeutralMap = true;
|
}
|
|
m_ContainerBossList.gameObject.SetActive(isNeutralMap);
|
|
rightTopState = RightTopState.Function;
|
if ((isDungeon || isNeutralMap || isBossArea || AdventureStage.Instance.IsInAdventureStage)
|
&& !isGuiding && switchParams.showDefault)
|
{
|
rightTopState = RightTopState.Boss;
|
}
|
else
|
{
|
rightTopState = RightTopState.Function;
|
}
|
|
switch (rightTopState)
|
{
|
case RightTopState.Function:
|
if (switchParams.immediately)
|
{
|
m_RightTopFunction.localPosition = m_RightTopPosition1.localPosition;
|
m_ContainerBossList.localPosition = m_RightTopPosition2.localPosition;
|
}
|
else
|
{
|
m_RightTopFunction.DOLocalMoveY(m_RightTopPosition1.localPosition.y, rightTopSwitchTime);
|
m_ContainerBossList.DOLocalMoveY(m_RightTopPosition2.localPosition.y, rightTopSwitchTime);
|
}
|
break;
|
case RightTopState.Boss:
|
if (switchParams.immediately)
|
{
|
m_ContainerBossList.localPosition = m_RightTopPosition1.localPosition;
|
m_RightTopFunction.localPosition = m_RightTopPosition2.localPosition;
|
}
|
else
|
{
|
m_ContainerBossList.DOLocalMoveY(m_RightTopPosition1.localPosition.y, rightTopSwitchTime);
|
m_RightTopFunction.DOLocalMoveY(m_RightTopPosition2.localPosition.y, rightTopSwitchTime);
|
}
|
break;
|
}
|
|
var rightBottomState = switchParams.showDefault && !isGuiding ? RightBottomState.Skill : RightBottomState.Function;
|
switch (rightBottomState)
|
{
|
case RightBottomState.Function:
|
if (switchParams.immediately)
|
{
|
m_FunctionFadeInOut.SwitchImmedidately(true);
|
m_ContainerSkill.localPosition = m_SkillPosition2.localPosition;
|
}
|
else
|
{
|
m_FunctionFadeInOut.Switch(true);
|
m_ContainerSkill.DOLocalMoveX(m_SkillPosition2.localPosition.x, rightBottomSwitchTime);
|
}
|
break;
|
case RightBottomState.Skill:
|
if (switchParams.immediately)
|
{
|
m_FunctionFadeInOut.SwitchImmedidately(false);
|
m_ContainerSkill.localPosition = m_SkillPosition1.localPosition;
|
}
|
else
|
{
|
m_FunctionFadeInOut.Switch(false);
|
m_ContainerSkill.DOLocalMoveX(m_SkillPosition1.localPosition.x, rightBottomSwitchTime);
|
}
|
break;
|
}
|
|
isDefaultState = rightBottomState == RightBottomState.Skill;
|
resetToDefaultTimer = !isDefaultState ? 7f : 0f;
|
m_RayMask.gameObject.SetActive(!isDefaultState);
|
|
if (switchParams.immediately)
|
{
|
m_ImageRotation.localEulerAngles = isDefaultState ? Vector3.zero : new Vector3(0, 0, 225);
|
}
|
else
|
{
|
m_ImageRotation.DOLocalRotate(isDefaultState ? Vector3.zero : new Vector3(0, 0, 225), rightBottomSwitchTime);
|
}
|
|
if (switchFunctionStateEvent != null)
|
{
|
switchFunctionStateEvent(switchParams.immediately);
|
}
|
}
|
|
private void MarkRayButton()
|
{
|
if (NewBieCenter.Instance.inGuiding)
|
{
|
return;
|
}
|
|
if (treasureModel.treasureStageUpShow || treasureModel.newGotShowing)
|
{
|
return;
|
}
|
|
SwitchFunctions(new SwitchParam()
|
{
|
immediately = false,
|
showDefault = true,
|
});
|
}
|
|
public enum RightTopState
|
{
|
Function,
|
Boss,
|
}
|
|
public enum RightBottomState
|
{
|
Function,
|
Skill,
|
}
|
|
public struct SwitchParam
|
{
|
public bool showDefault;
|
public bool immediately;
|
}
|
|
}
|
|
}
|