using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using JC.Unity.UI;
public class NewUserGuiderManager : MonoBehaviour
{
[SerializeField] GameObject prefab_NewUserGuider;
public static NewUserGuiderManager ins;
void Awake()
{
if (ins) {
Destroy(gameObject);
return;
}
ins = this;
DontDestroyOnLoad(gameObject);
}
void OnDestroy()
{
if (ins == this) ins = null;
if (onSceneLoaded_added) SceneManager.sceneLoaded -= onSceneLoaded;
}
void Start()
{
SceneManager.sceneLoaded += onSceneLoaded; onSceneLoaded_added = true;
if (!IsUserGuideFinished()) {
ExecuteCurConfig();
SaveUserGuideFinished(true);
}
}
bool onSceneLoaded_added = false;
void onSceneLoaded(Scene scene, LoadSceneMode loadSceneMode) { //初始话的场景不会触发
if (scene.name == "Game" && GameMgr.gameType == 1) {
switch (curConfigKey) {
case "开始-限时游戏":
OnClickedDestroyed(curConfigKey);
break;
case "限时游戏-选择距离":
ExecuteCurConfig();
break;
}
}
}
public void OnSkip()
{
curConfigKey = null;
SaveUserGuideFinished(true);
}
public void OnEnd()
{
curConfigKey = null;
SaveUserGuideFinished(true);
}
public void ReviewNewUserGuide()
{
int viewCount = PersistenHandler.ins.menuBackCtr.views.Count;
for (int i = 0; i < viewCount; i++) {
PersistenHandler.ins.menuBackCtr.OnOnceBack();
}
curConfigKey = "模块开机";
ExecuteCurConfig();
}
void SaveUserGuideFinished(bool finished) {
PlayerPrefs.SetInt("NewUserGuiderFinished", finished ? 1 : 0);
}
bool IsUserGuideFinished() {
return PlayerPrefs.GetInt("NewUserGuiderFinished", 0) == 1 ? true : false;
}
void InitConfigs()
{
if (configsInited) return;
configsInited = true;
NewUserGuiderConfig config = new NewUserGuiderConfig();
config.hitPosType = 1;
config.hitPos = new Vector2(-86.4f, -70.3f);
config.pointerRotZ = 120;
config.pointerPosType = 1;
config.pointerPos = new Vector2(-155, -31);
config.frameTipPosType = 1;
config.frameTipPos = new Vector2(-73.5f, 106);
config.frameTipText = "长按模块上的“开机”键,当绿灯闪烁时,即模块处于等待连接的状态。";
config.onStart = (g) => g.transform.Find("IconModule").gameObject.SetActive(true);
configs.Add("模块开机", config);
config = new NewUserGuiderConfig();
config.hitActive = false;
config.pointerActive = false;
config.frameTipPivot = "ct";
config.frameTipPosType = 1;
config.frameTipPos = Vector2.zero;
config.frameTipText = "恭喜您完成了本次新手教程,下次如果还\n要" +
"了解本教程请在游戏教程中选择新手指导。";
config.onStart = (g) => {
g.GetMaskClickedEvent().AddListener(() => {
OnEnd();
});
GameMode gameMode = GameMgr.ins.gameMode;
if (gameMode.GetType().Equals(typeof(TimeLimitGameMode))) {
gameMode.PauseTimeCounting(g);
g.action_OnDestroy += () => gameMode.ResumeTimeCounting(g);
}
};
configs.Add("教程结束", config);
config = new NewUserGuiderConfig();
config.frameTipPivot = "rb";
config.frameTipPos = Vector2.zero;
config.frameTipText = "点击视角归位按钮,按完按键后立刻以标准射箭姿势瞄准\n靶心," +
"3秒后完成视角的自动归位。";
config.onPrepare = (g) => {
if (!GameAssistUI.ins) {
g.customPreparePass = false;
return;
}
g.customPreparePass = true;
g.hollowOutMask.isTargetRectCanThrough = false;
RectTransform btn4 = GameAssistUI.ins.transform.Find("Button4") as RectTransform;
g.hollowOutMask.SetTarget(btn4);
RectTransform btn4_img = btn4.Find("Image") as RectTransform;
g.config.hitPos = btn4_img.position;
g.config.pointerRotZ = 120;
g.config.pointerPos = btn4_img.position + RectTransformUtils.CanvasV3ToScreenV3(new Vector3(-60, 60), btn4);
g.config.frameTipPos = btn4_img.position + RectTransformUtils.CanvasV3ToScreenV3(new Vector3(-120, 120), btn4);
// g.clickedWillPlayAudioBtn = false;
// g.GetMaskClickedEvent().AddListener(() => {
// btn4.GetComponent