Files
bansonic_beta_main/Assets/scripts/UI/Panel/UI_Panel_Main.cs
T

148 lines
4.8 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class UI_Panel_Main : Singleton_Mono<UI_Panel_Main>
{
public int Character_Index
{
set
{
character_Index = value;
Set_Character_Illustration(Get_Character_Image_Data(character_Index).Image_Full);
}
get => character_Index;
}
public int character_Index = 1;
[SerializeField] List<Character_Data_Image_SO> data_List;
public List<Character_Data_Image_SO> Data_List => data_List;
[SerializeField] Button button_Character_Set;
[SerializeField] GameObject ui_Panel_Character;
[SerializeField] Button button_Encyclopendia;
[SerializeField] GameObject ui_Panel_Encyclopendia;
[SerializeField] Image image_Character;
[SerializeField] Button button_Mail;
[SerializeField] GameObject ui_Panel_Mail;
[SerializeField] Button button_Notice;
[SerializeField] GameObject ui_Panel_Notice;
[SerializeField] Button button_Level;
[SerializeField] GameObject ui_Panel_Level;
[SerializeField] MusicPlayer music_Player;
[SerializeField] GameObject ui_Panel_Music;
[SerializeField] Button button_Story;
[SerializeField] GameObject ui_Panel_Story;
[SerializeField] Button button_Setting;
[SerializeField] GameObject ui_Panel_Setting;
[SerializeField] Button button_Idol;
[SerializeField] Button button_Select_Music;
[SerializeField] string ui_Select_Music_Scene_Name= "selectYourSongFirst";
protected override void In_Init()
{
}
protected override bool Is_Singleton_Auto()
{
return true;
}
protected override void OnDestroy()
{
foreach (var item in data_List)
{
Destroy(item);
}
base.OnDestroy();
}
private void Start()
{
data_List = Resources.LoadAll<Character_Data_Image_SO>("Data").ToList();
List<Character_Data_Image_SO> data_List_New = new();
foreach (var item in data_List)
{
var so = Instantiate(item);
data_List_New.Add(so);
}
data_List = data_List_New;
Character_Index = character_Index;
if (button_Character_Set != null)
button_Character_Set.onClick.AddListener(
() => ui_Panel_Character.SetActive(true));
if (button_Mail != null)
button_Mail.onClick.AddListener(
() => ui_Panel_Mail.SetActive(true));
if (button_Notice != null)
button_Notice.onClick.AddListener(
() => ui_Panel_Notice.SetActive(true));
if (button_Level != null)
button_Level.onClick.AddListener(
() => ui_Panel_Level.SetActive(true));
Character_Index = character_Index;
if (button_Encyclopendia != null)
button_Encyclopendia.onClick.AddListener(
() => ui_Panel_Encyclopendia.SetActive(true));
if (button_Story != null)
button_Story.onClick.AddListener(
() => ui_Panel_Story.SetActive(true));
if (music_Player != null && music_Player.Button_List != null)
music_Player.Button_List.onClick.AddListener(
() => ui_Panel_Music.SetActive(true));
if (button_Setting != null)
button_Setting.onClick.AddListener(
() => ui_Panel_Setting.SetActive(true));
if (button_Select_Music != null)
button_Select_Music.onClick.AddListener(
() => SceneManager.LoadScene(ui_Select_Music_Scene_Name,LoadSceneMode.Single));
}
public Character_Data_Image_SO Get_Character_Image_Data(int index)
{
return data_List.Find(i => i.index == index);
}
public Character_Data_Image_SO Get_Character_Image_Data()
{
return data_List.Find(i => i.index == character_Index);
}
public void Set_Character_Illustration(Sprite sprite)
{
if (c_Character_Illustration_Anim != null)
{
StopCoroutine(c_Character_Illustration_Anim);
}
if (image_Character.TryGetComponent(out CanvasGroup canvasGroup))
{
c_Character_Illustration_Anim = StartCoroutine(C_Character_Illustration_Anim(canvasGroup, () =>
{
image_Character.sprite = sprite;
image_Character.SetNativeSize();
}));
}
}
Coroutine c_Character_Illustration_Anim;
[SerializeField] float character_Illustration_Time = 0.5f;
IEnumerator C_Character_Illustration_Anim(CanvasGroup canvasGroup, Action onHide)
{
float a = 1f / character_Illustration_Time;
while (canvasGroup.alpha > 0)
{
canvasGroup.alpha -= a * Time.deltaTime;
yield return null;
}
onHide?.Invoke();
while (canvasGroup.alpha < 1)
{
canvasGroup.alpha += a * Time.deltaTime;
yield return null;
}
}
}