Modularized doors and lightbridges

This commit is contained in:
Marco 2025-03-03 17:55:53 +01:00
commit 1a5bd1b6d8
27 changed files with 513 additions and 346 deletions

View file

@ -5,9 +5,9 @@ using Cirno.Scripts;
public partial class Door : Activable
{
protected AnimatedSprite2D _animatedSprite;
protected CollisionShape2D _collisionShape;
protected CollisionShape2D _solidShape;
// protected AnimatedSprite2D _animatedSprite;
//protected CollisionShape2D _collisionShape;
//protected CollisionShape2D _solidShape;
protected AudioStreamPlayer2D _activationSound;
protected AudioStreamPlayer2D _deactivationSound;
@ -21,12 +21,15 @@ public partial class Door : Activable
[Signal]
public delegate void DoorClosedEventHandler();
[Signal]
public delegate void DestroyedEventHandler();
public override void _Ready()
{
_animatedSprite = GetNode<AnimatedSprite2D>("AnimatedSprite2D");
_collisionShape = GetNode<CollisionShape2D>("CollisionShape2D");
_solidShape = GetNode<CollisionShape2D>("RigidBody2D/CollisionShape2D");
// _animatedSprite = GetNode<AnimatedSprite2D>("AnimatedSprite2D");
//_collisionShape = GetNode<CollisionShape2D>("CollisionShape2D");
//_solidShape = GetNode<CollisionShape2D>("RigidBody2D/CollisionShape2D");
_activationSound = GetNodeOrNull<AudioStreamPlayer2D>("ActivationSound");
_deactivationSound = GetNodeOrNull<AudioStreamPlayer2D>("DeactivationSound");
@ -41,35 +44,39 @@ public partial class Door : Activable
public virtual void Open()
{
_animatedSprite.Play("Opening");
// _animatedSprite.Play("Opening");
State = DoorState.Open;
CallDeferred(MethodName.DeferredDisableCollision, true);
_deactivationSound?.Play();
EmitSignal(SignalName.DoorOpened);
//_collisionShape.Disabled = true;
//_solidShape.Disabled = true;
}
public virtual void Close()
{
_animatedSprite.Play("Closing");
// _animatedSprite.Play("Closing");
State = DoorState.Closed;
CallDeferred(MethodName.DeferredDisableCollision, false);
_activationSound?.Play();
EmitSignal(SignalName.DoorClosed);
//_collisionShape.Disabled = false;
//_solidShape.Disabled = false;
}
public void Destroy()
{
_animatedSprite.Play("Destroyed");
// _animatedSprite.Play("Destroyed");
State = DoorState.Destroyed;
CallDeferred(MethodName.DeferredDisableCollision, true);
EmitSignal(SignalName.Destroyed);
}
private void DeferredDisableCollision(bool state)
{
_collisionShape.Disabled = state;
_solidShape.Disabled = state;
//_collisionShape.Disabled = state;
//_solidShape.Disabled = state;
}
public override void Activate(ActivationType activationType = ActivationType.Toggle)
@ -136,20 +143,20 @@ public partial class Door : Activable
}
}
public void _on_animated_sprite_2d_animation_changed()
{
switch (_animatedSprite.Animation)
{
case "Opening":
break;
case "Closing":
break;
default:
break;
}
}
// public void _on_animated_sprite_2d_animation_changed()
// {
// switch (_animatedSprite.Animation)
// {
// case "Opening":
//
// break;
// case "Closing":
//
// break;
// default:
// break;
// }
// }
}
public enum DoorState