Files
aibis-dream/Assets/Scripts/FixSystemNew/BodyModule/Modules/UFModule.cs
T

117 lines
2.4 KiB
C#

using UnityEngine;
using AibisDream.Framework;
using AibisDream;
using System;
public class UFModule : MonoBehaviour
{
private GameObject _ufCover;
private GameObject _ufModule;
private GameObject _ufColor;
private UFData _ufData=new ();
private void Awake()
{
// 将数据注册到数据容器内
GameLoopManager.FixDataContainer.Register(_ufData);
// 添加加载逻辑
_ufData.LoadEvent += LoadData;
_ufModule = transform.Find("Module Pic").gameObject;
_ufCover = _ufModule.transform.Find("Cover").gameObject;
_ufColor=_ufModule.transform.Find("Color").gameObject;
}
// Start is called before the first frame update
public void RemoveUFCover()
{
if (_ufCover.activeInHierarchy)
{
_ufCover.SetActive(false);
}
_ufData.isUFCoverRemoved = true;
}
public void RemoveUFModule()
{
if (_ufModule.activeInHierarchy)
{
_ufModule.SetActive(false);
}
_ufData.isUFRemoved = true;
}
public void InstallUFCover()
{
if (!_ufCover.activeInHierarchy)
{
_ufCover.SetActive(true);
}
_ufData.isUFCoverRemoved = false;
}
public void InstallUFModule()
{
if (!_ufModule.activeInHierarchy)
{
_ufModule.SetActive(true);
}
_ufData.isUFRemoved = false;
}
public void InstallUFColor()
{
if (!_ufColor.activeInHierarchy)
{
_ufColor.SetActive(true);
}
_ufData.isColorRemoved = false;
}
public void RemoveUFColor()
{
if (_ufColor.activeInHierarchy)
{
_ufColor.SetActive(false);
}
_ufData.isColorRemoved = true;
}
public void UFinit()
{
_ufModule.SetActive(!_ufData.isUFRemoved);
_ufCover.SetActive(!_ufData.isUFCoverRemoved);
_ufColor.SetActive(!_ufData.isColorRemoved);
}
private void LoadData(UFData ufData)
{
UFinit(); // 读取存档文件时触发,将当前系统恢复为目标状态
}
void Start()
{
UFinit();
}
}
public class UFData : IData
{
public bool isUFCoverRemoved = false;
public bool isUFRemoved = false;
public bool isColorRemoved = false;
public event Action<UFData> LoadEvent;
public void Load()
{
LoadEvent?.Invoke(this);
}
}