Files
DanhengServer-OpenSource/GameServer/Game/Scene/Component/EraFlipperSceneComponent.cs
2025-08-23 20:32:54 +08:00

57 lines
1.8 KiB
C#

using EggLink.DanhengServer.GameServer.Server.Packet.Send.EraFlipper;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Game.Scene.Component;
public class EraFlipperSceneComponent(SceneInstance scene) : BaseSceneComponent(scene)
{
public int CurRegionId { get; set; }
public int RegionState { get; set; }
public override async ValueTask Initialize()
{
CurRegionId = SceneInst.Player.SceneData!.EraFlipperData.CurRegionId;
if (CurRegionId != 0)
{
RegionState = SceneInst.Player.SceneData!.EraFlipperData.RegionState.GetValueOrDefault(CurRegionId, 0);
await SceneInst.Player.SendPacket(
new PacketEraFlipperDataChangeScNotify(SceneInst.FloorId, CurRegionId, RegionState));
}
}
public void EnterEraFlipperRegion(int regionId, int state)
{
CurRegionId = regionId;
RegionState = state;
SceneInst.Player.SceneData!.EraFlipperData.CurRegionId = regionId;
SceneInst.Player.SceneData!.EraFlipperData.RegionState[CurRegionId] = state;
}
public void LeaveFlipperRegion()
{
CurRegionId = 0;
RegionState = 0;
SceneInst.Player.SceneData!.EraFlipperData.CurRegionId = 0;
}
public void ChangeEraFlipperState(int state)
{
if (CurRegionId == 0) return;
RegionState = state;
// save
SceneInst.Player.SceneData!.EraFlipperData.RegionState[CurRegionId] = state;
}
public void ChangeEraFlipperStates(List<EraFlipperData> dataList)
{
foreach (var data in dataList)
{
SceneInst.Player.SceneData!.EraFlipperData.RegionState[(int)data.EraFlipperRegionId] = (int)data.State;
if (data.EraFlipperRegionId == CurRegionId) RegionState = (int)data.State;
}
}
}