121 lines
4.6 KiB
C#
Raw Normal View History

2025-09-08 14:51:28 +08:00
/// <summary>
///********************************************************
/// 作者: DDG
/// 日期: 2024/12/13 11:54:37
/// 功能:
///********************************************************
/// <summary>
using BookCurlPro;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using ZXKFramework;
2025-09-08 17:37:12 +08:00
namespace DongWuYiXue.DaoNiaoShu
2025-09-08 14:51:28 +08:00
{
public class BookPanel : UIBase
{
public override string GroupName => "BookPanel";
public override string Name => "BookPanel";
public BookPro bookProPrefab;
BookPro bookPro;
public GameObject FrontPagePrefab;
public GameObject BackPagePrefab;
public GameObject FrontFengMian;
public GameObject BackFengMian;
Button next_Btn;
bool shangxiahuadong;
List<BookPanelData> bookPanelDatas;
public override void Init(IUIManager uictrl)
{
base.Init(uictrl);
next_Btn = transform.FindFirst<Button>("next_Btn");
next_Btn.onClick.AddListener(() =>
{
SetActive(false);
GameManager.Instance.fsm.nextState = true;
});
}
public void ShowBook(string group)
{
if(bookPro!=null)
{
Destroy(bookPro.gameObject);
bookPro = null;
}
SetActive(true);
bookPro = Instantiate(bookProPrefab);
bookPro.transform.SetParent(transform, false);
bookPro.gameObject.SetActive(true);
shangxiahuadong = false;
bookPro.OnFlip.AddListener(() =>
{
if (!shangxiahuadong)
{
shangxiahuadong = true;
bookPro.transform.FindFirst("上下滑动动画").SetActive(true);
}
});
bookPanelDatas = GetModel<GameModel>().excelData.allBookPanelData.FindAll(e=>e.group == group);
for (int i = 0; i < bookPanelDatas.Count; i++)
{
if (i % 2 != 0 && i > 0)
{
AddPaper_Txt(bookPro, bookPanelDatas[i - 1].txt.Replace("<br>","\n"), bookPanelDatas[i].txt.Replace("<br>", "\n"), i,i+1);
}
if(i == (bookPanelDatas.Count - 1) && (i % 2 == 0))
{
AddPaper_Txt(bookPro, bookPanelDatas[i].txt.Replace("<br>", "\n"), "",i+1,i+2);
}
}
AddPaper_FengMian(bookPro);
}
public void AddPaper_Txt(BookPro book,string frontTxt,string backTxt,int frontNum,int backNum)
{
GameObject frontPage = Instantiate(FrontPagePrefab);
frontPage.FindFirst<Text>("bookText").text = frontTxt;
frontPage.FindFirst<Text>("numText").text = frontNum.ToString();
GameObject backPage = Instantiate(BackPagePrefab);
backPage.FindFirst<Text>("bookText").text = backTxt;
backPage.FindFirst<Text>("numText").text = backNum.ToString();
frontPage.transform.SetParent(book.transform, false);
backPage.transform.SetParent(book.transform, false);
Paper newPaper = new Paper();
newPaper.Front = frontPage;
newPaper.Back = backPage;
Paper[] papers = new Paper[book.papers.Length + 1];
for (int i = 0; i < book.papers.Length; i++)
{
papers[i] = book.papers[i];
}
papers[papers.Length - 1] = newPaper;
book.papers = papers;
//update the flipping range to contain the new added paper
book.EndFlippingPaper = book.papers.Length - 1;
book.UpdatePages();
}
public void AddPaper_FengMian(BookPro book)
{
GameObject frontPage = Instantiate(FrontFengMian);
GameObject backPage = Instantiate(BackFengMian);
frontPage.transform.SetParent(book.transform, false);
backPage.transform.SetParent(book.transform, false);
Paper newPaper = new Paper();
newPaper.Front = frontPage;
newPaper.Back = backPage;
Paper[] papers = new Paper[book.papers.Length + 1];
for (int i = 0; i < book.papers.Length; i++)
{
papers[i] = book.papers[i];
}
papers[papers.Length - 1] = newPaper;
book.papers = papers;
//update the flipping range to contain the new added paper
book.EndFlippingPaper = book.papers.Length - 1;
book.UpdatePages();
}
}
}