2025-03-06 10:27:06 +01:00
|
|
|
|
using System;
|
|
|
|
|
|
using Cirno.Scripts.Enums;
|
|
|
|
|
|
using Godot;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Cirno.Scripts.Components.FSM.Elevator;
|
|
|
|
|
|
|
|
|
|
|
|
public partial class Bottom : BaseState<ElevatorState, ElevatorProxy>
|
|
|
|
|
|
{
|
|
|
|
|
|
public override ElevatorState StateId => ElevatorState.Bottom;
|
|
|
|
|
|
public override void EnterState()
|
|
|
|
|
|
{
|
|
|
|
|
|
MainObject.SetPosition(MainObject.Bottom);
|
|
|
|
|
|
|
|
|
|
|
|
MainObject.Activated += ElevatorActivated;
|
2025-03-11 15:03:44 +01:00
|
|
|
|
|
|
|
|
|
|
// Enable top body
|
|
|
|
|
|
MainObject.TopBody.Disabled = false;
|
|
|
|
|
|
|
2025-03-06 10:27:06 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ElevatorActivated(ActivationType type)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (type)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ActivationType.Use:
|
|
|
|
|
|
case ActivationType.Toggle:
|
|
|
|
|
|
MoveToTop();
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ActivationType.Enable:
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ActivationType.Disable:
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ActivationType.Destroy:
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ActivationType.Open:
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ActivationType.Close:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void MoveToTop()
|
|
|
|
|
|
{
|
|
|
|
|
|
StateMachine.SetState(ElevatorState.Ascending);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void ExitState()
|
|
|
|
|
|
{
|
|
|
|
|
|
MainObject.Activated -= ElevatorActivated;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|