175 lines
6.3 KiB
C#
175 lines
6.3 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 ClueBoardNotification;
|
|
ClueBaordNew clueBaord;
|
|
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 GeneratePunchTape(string clueName, string category, string memoryIndex,string mathCode=null,bool directlyAddToFavorites=false)
|
|
{
|
|
PunchTape punchTape = new PunchTape(category, clueName, memoryIndex,mathCode);
|
|
|
|
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;
|
|
}
|
|
// public void ShowClueBoardNotification()
|
|
// {
|
|
// clueBaord.CreateNode(currentClueInteraction.GetComponent<Clue>().ClueName);
|
|
// }
|
|
|
|
|
|
|
|
|
|
}
|