Переходы между днями

This commit is contained in:
Евгений Титаренко 2024-08-25 13:17:20 +03:00
parent 71502b0653
commit 26db1ea66d
4 changed files with 42 additions and 25 deletions

View file

@ -17,20 +17,26 @@ public partial class Day : Node2D
private Player _player;
private ColorRect _colorRect;
private AudioStreamPlayer _music;
private double _transitionTimeout = 0;
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
_player = (Player)FindChild("Player");
_colorRect = (ColorRect)FindChild("ColorRect");
_colorRect = _player.CRect;
_music = (AudioStreamPlayer)FindChild("Music");
_colorRect.Color = new Color(0, 0, 0, 1f);
_music.VolumeDb = -40;
_player.CurrentState = Player.State.Wait;
}
public void ChangeDay()
{
_state = State.TransitionOut;
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
@ -60,7 +66,7 @@ public partial class Day : Node2D
}
else
{
GetNode<SceneManager>("/root/SceneManager").SwitchScene("Day1");
GetNode<SceneManager>("/root/SceneManager").SwitchScene(NextScene);
}
}
}

View file

@ -101,6 +101,8 @@ public partial class Player : CharacterBody2D
private PackedScene _dialogBox = GD.Load<PackedScene>("res://prefabs/Dialog.tscn");
public ColorRect CRect { get; private set; }
public override void _Ready()
{
_sprite = (AnimatedSprite2D)FindChild("AnimatedSprite2D");
@ -111,6 +113,7 @@ public partial class Player : CharacterBody2D
_camera = (Camera2D)FindChild("Camera2D");
_footsteps = (AudioCollection)FindChild("Footsteps");
_doorSounds = (AudioCollection)FindChild("DoorSounds");
CRect = (ColorRect)FindChild("ColorRect");
}
public override void _PhysicsProcess(double delta)
@ -119,19 +122,7 @@ public partial class Player : CharacterBody2D
{
case State.Normal:
if (_camera.Offset != _cameraDefaultPosition)
{
if (_currentCameraTransitionTime < CameraTransitionTime)
{
_camera.Offset = _cameraChatLogPosition.Lerp(_cameraDefaultPosition,
(float)(_currentCameraTransitionTime * 1 / CameraTransitionTime));
_currentCameraTransitionTime += delta;
}
else
{
_currentCameraTransitionTime = 0;
}
}
HideChatLog(delta);
Vector2 velocity = Velocity;
@ -179,12 +170,30 @@ public partial class Player : CharacterBody2D
ShowChatLog(delta);
break;
case State.Wait:
_camera.Offset = _cameraDefaultPosition;
break;
default:
throw new ArgumentOutOfRangeException();
}
}
private void HideChatLog(double delta)
{
if (_camera.Offset != _cameraDefaultPosition)
{
if (_currentCameraTransitionTime < CameraTransitionTime)
{
_camera.Offset = _cameraChatLogPosition.Lerp(_cameraDefaultPosition,
(float)(_currentCameraTransitionTime * 1 / CameraTransitionTime));
_currentCameraTransitionTime += delta;
}
else
{
_currentCameraTransitionTime = 0;
}
}
}
private void ShowChatLog(double delta)
{
if (_camera.Offset != _cameraChatLogPosition)