using System.Collections; using System.Collections.Generic; using System.ComponentModel; using Godot; using Godot.Bridge; using Godot.NativeInterop; [ScriptPath("res://Scripts/Envirioment/Bench.cs")] public partial class Bench : Area2D, Interacteable { [Export(PropertyHint.None, "")] private SaveFile.Flags flag = SaveFile.Flags.None; [Export(PropertyHint.None, "")] private AudioStream sound; [Export(PropertyHint.None, "")] private float volume = 0.7f; private Vector2[] pos; public override void _EnterTree() { pos = new Vector2[GetChildCount() - 1]; for (int i = 0; i < pos.Length; i++) { pos[i] = GetChild(i + 1).GlobalPosition; } } public void Interact() { if (Player.instance.GlobalPosition.Y > base.GlobalPosition.Y) { Main.inEvent = Coroutine.Start(SitEvent()); } else { Player.instance.canInput = true; } } private IEnumerator SitEvent() { AudioStream m = Audio.music.Stream; Party.ChangeCollider(state: false); Audio.FadeSound(Audio.music, 1f); Party.MoveTo(pos, 0.5f, align: true, Entity.Direction.South); while (!Party.IsStopped()) { yield return null; } Party.UpdateFollowerEntities(); PartyAnim(); if (sound != null) { Audio.ChangeMusic(sound, 0.5f, volume); } for (float a = 0f; a < 60f; a += Main.deltaTime) { yield return null; } while (!Input.IsActionJustPressed(Main.keys[4])) { yield return null; } Audio.FadeSound(Audio.music, 0.5f); for (float a = 0f; a < 30f; a += Main.deltaTime) { yield return null; } Audio.ChangeMusic(m); Party.LookAt(Entity.Direction.South); Party.UpdateAnim(); Party.ChangeCollider(state: true); Player.instance.ResetFollowStep(); yield return null; } private static void PartyAnim() { for (int i = 0; i < SaveFile.current.activeParty.Count; i++) { Party.party[SaveFile.current.activeParty[i]].oEntity.sprite.FlipH = false; Entity.IDs id = Party.party[SaveFile.current.activeParty[i]].oEntity.id; if (id != Entity.IDs.Clover) { if (id == Entity.IDs.Axis) { Party.party[SaveFile.current.activeParty[i]].oEntity.anim.Play("TramSit"); continue; } } else if (Player.instance.animMod == Entity.AnimMods.Hat) { Party.party[SaveFile.current.activeParty[i]].oEntity.anim.Play("SitBenchHat"); continue; } if (SaveFile.HasFlag(SaveFile.Flags.IsInDW)) { Party.party[SaveFile.current.activeParty[i]].oEntity.anim.Play("SitBenchDW"); } else { Party.party[SaveFile.current.activeParty[i]].oEntity.anim.Play("SitBench"); } } } }