Files
aibis-dream/Assets/Scripts/Clue/ClueManager.cs
T

189 lines
6.7 KiB
C#

using System.Collections.Generic;
using AibisDream;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
using Yarn.Unity;
using RainbowArt.CleanFlatUI;
using System;
public class ClueManager : MonoBehaviour
{
public GameObject punchTapecluePrefab; // 通用线索预制件
public GameObject imageCluePrefab;
public Canvas canvas; // UI画布
private ClueInteraction currentClueInteraction;
private GameObject currentClue;
//public Notification FavouriteNotification;
public Notification TopNotification;
//public Notification ClueBoardNotification;
ClueBaordNew clueBaord;
MouseCursorManager mouseManager;
void Start()
{
clueBaord=FindObjectOfType<ClueBaordNew>();
}
void Update()
{
if(Input.GetKeyDown(KeyCode.U))
{
DialogController.Instance.StartDialogNode("AddAllClueToFavorites");
//GenerateUFClue("错误绘制","UFView","can_grass_error","绿色");
}
// if(Input.GetKeyDown(KeyCode.M))
// {
// GenerateMemoryClue("草地","MemoryView","liuying1-2","绿色");
// }
// if(Input.GetKeyDown(KeyCode.V))
// {
// GeneratePunchTape("植物","EyeView","天空","绿色");
// }
// if(Input.GetKeyDown(KeyCode.E))
// {
// GenerateImageClue("错误绘制","UFView","can_grass_error");
// }
// if(Input.GetKeyDown(KeyCode.Keypad5))
// {
// GeneratePunchTape("海报","EyeView","天空");
// }
// if(Input.GetKeyDown(KeyCode.Keypad6))
// {
// GeneratePunchTape("植物","EyeView","天空");
// }
}
public void GetPunchTape()
{
// 动态生成打孔带的数据
string category = "视觉";
string name = "sky";
//Sprite image = GetRandomPunchTapeSprite();
string memoryIndex = "blue";
// 实例化打孔带线索
PunchTape punchTape = new PunchTape(category, name, memoryIndex);
GameObject clueGO = Instantiate(punchTapecluePrefab, canvas.transform);
ClueItem clueItem = clueGO.GetComponent<ClueItem>();
clueItem.Setup(punchTape);
}
//用于生成打孔带的函数
[YarnCommand("generate_PunchTape")]
public void GeneratePunchTapeWindow(string clueName, string category, string memoryIndex,bool directlyAddToFavorites=false)
{
PunchTape punchTape = new PunchTape(category, clueName, memoryIndex);
if(directlyAddToFavorites)
{
FavoritesManager.Instance.AddClue(punchTape);
return;
}
GameObject clueGO = Instantiate(punchTapecluePrefab, canvas.transform);
ClueItem clueItem = clueGO.GetComponent<ClueItem>();
ClueInteraction clueInteraction = clueGO.GetComponent<ClueInteraction>();
currentClue=clueGO;
clueItem.Setup(punchTape);
}
// [YarnCommand("generate_UFClue")]
// public void GenerateUFClue(string clueName, string imageName,bool directlyAddToFavorites=false)
// {
// Sprite UFSprite = Resources.Load<Sprite>("Art/Photos/" + imageName);
// ImageClue imageClue=new ImageClue("UFView", clueName, UFSprite);
// // if(directlyAddToFavorites)
// // {
// // FavoritesManager.Instance.AddClue(imageClue);
// // return;
// // }
// GameObject clueGO = Instantiate(imageCluePrefab, canvas.transform);
// ClueItem clueItem = clueGO.GetComponent<ClueItem>();
// currentClue=clueGO;
// clueItem.Setup(imageClue);
// // ClueInteraction clueInteraction = clueGO.GetComponent<ClueInteraction>();
// // clueInteraction.enabled=false;
// // currentClueInteraction=clueInteraction;
// // currentClueInteraction.OnInteraction+=ShowClueBoardNotification;
// }
// [YarnCommand("generate_MemoryClue")]
// public void GenerateMemoryClue(string nodeID, string imageName,string mathCode,bool directlyAddToFavorites=false)
// {
// Sprite UFSprite = Resources.Load<Sprite>("Art/Memory/" + imageName);
// ImageClue imageClue=new ImageClue("MemoryView", clueName, UFSprite,mathCode);
// if(directlyAddToFavorites)
// {
// FavoritesManager.Instance.AddClue(imageClue);
// return;
// }
// GameObject clueGO = Instantiate(imageCluePrefab, canvas.transform);
// ClueItem clueItem = clueGO.GetComponent<ClueItem>();
// ClueInteraction clueInteraction = clueGO.GetComponent<ClueInteraction>();
// clueInteraction.enabled=false;
// currentClueInteraction=clueInteraction;
// currentClueInteraction.OnInteraction+=ShowClueBoardNotification;
// clueItem.Setup(imageClue);
// }
[YarnCommand("CollectionClue")]
public void EnabeClueInteraction(string nodeID=null)
{ if(nodeID!=null)
{
Debug.Log("收藏线索版成功!");
clueBaord.CreateNode(nodeID);
return;
}
// if(currentClue==null)
// {
// Debug.Log("收藏线索版成功!");
// clueBaord.CreateNode(nodeID);
// return;
// }
ClueItem clueItem = currentClue.GetComponent<ClueItem>();
Clue clue=clueItem.GetClueData();
ClueInteraction clueInteraction=currentClue.GetComponent<ClueInteraction>();
if(clue.ClueType==ClueType.PunchTape)
{
FavoritesManager.Instance.AddClue(clueItem.GetClueData());
Destroy(currentClue.gameObject);
Debug.Log("收藏文件夹成功!");
clueInteraction.isFavorited=true;
currentClue=null;
}
else
{
Debug.Log("收藏线索版成功!");
clueBaord.CreateNode(clue.ClueName);
Destroy(currentClue.gameObject);
currentClue=null;
}
}
// public void ShowFavouriteNotification()
// {
// FavouriteNotification.ShowNotification();
// currentClueInteraction.OnInteraction-=ShowFavouriteNotification;
// }
[YarnCommand("ShowNotification")]
public void ShowNotification(string Title,string message)
{
TopNotification.TitleValue=Title;
TopNotification.DescriptionValue=message;
TopNotification.ShowNotification();
//currentClueInteraction.OnInteraction-=ShowFavouriteNotification;
}
// public void ShowClueBoardNotification()
// {
// clueBaord.CreateNode(currentClueInteraction.GetComponent<Clue>().ClueName);
// }
}