存档功能

This commit is contained in:
2025-01-08 11:41:20 +08:00
parent c67366664c
commit 43b99f98e7
49 changed files with 2498 additions and 5762 deletions
@@ -1,5 +1,8 @@
using System;
using System.Collections;
using AibisDream.FixSystem;
using AibisDream.Framework;
using AibisDream.Utility;
using DG.Tweening;
using UnityEngine;
@@ -14,16 +17,35 @@ namespace AibisDream
public Vector3 pumpUpPos;
public Vector3 pumpDownPos;
public float pumpDuration;
private readonly ClinicData _clinicData;
private void Awake()
{
FixSystemCenter.SystemDic.Register(this);
GameLoopManager.FixDataContainer.Register(_clinicData);
character = transform.GetComponentInChildren<CharacterViewer>();
character.CharacterChangeEvent += OnCharacterChange;
_clinicData.LoadEvent += LoadData;
_pumpHead = transform.Find("正图").Find("近景").Find("桌上泵头");
_coolingScreen = transform.Find("正图").Find("近景").Find("桌面泵机运作时亮灯").gameObject;
}
private void LoadData(ClinicData data)
{
StartCoroutine(LoadDataAsync(data));
}
private IEnumerator LoadDataAsync(ClinicData data)
{
yield return character.CharacterInit(data.characterName);
character.SwitchFace(data.faceName);
character.SwitchPose(data.poseName);
}
public IEnumerator Indoor(float duration)
{
// 加载诊所场景
@@ -54,5 +76,32 @@ namespace AibisDream
// 熄灭屏幕
_coolingScreen.SetActive(false);
}
private void OnDestroy()
{
character.CharacterChangeEvent -= OnCharacterChange;
_clinicData.LoadEvent -= LoadData;
GameLoopManager.FixDataContainer.Unregister<ClinicData>();
FixSystemCenter.SystemDic.Unregister<ClinicSystem>();
}
private void OnCharacterChange(CharacterData characterData)
{
CommonUtil.CopyProperties(characterData, _clinicData);
}
}
public class ClinicData : IData
{
public string characterName;
public string faceName;
public string poseName;
public event Action<ClinicData> LoadEvent;
public void Load()
{
LoadEvent?.Invoke(this);
}
}
}