using System.Collections.Generic; using System.ComponentModel; using Godot; using Godot.Bridge; using Godot.NativeInterop; [ScriptPath("res://Scripts/UI/SavePrompt.cs")] public partial class SavePrompt : NinePatchRect { [Export(PropertyHint.None, "")] private Sprite2D soul; [Export(PropertyHint.None, "")] private RichTextLabel text; [Export(PropertyHint.None, "")] private RichTextLabel time; private static readonly Vector2[] pos = new Vector2[2] { new Vector2(47f, 70f), new Vector2(106f, 70f) }; private bool cancel; private bool saved; public override void _EnterTree() { text.Text = Texts.common[28].ToUpper() + " - " + Texts.common[91] + " " + Party.party[0].LV + "\n[center]" + SaveFile.GetRoomName(Room.current.id) + "\n\n[center]" + Texts.common[98] + "\t\t\t" + Texts.common[99]; time.Text = "[right]" + SaveFile.current.time[2].ToString().PadLeft(3, '0') + ":" + SaveFile.current.time[1].ToString().PadLeft(2, '0'); if (SaveFile.current.flags.Contains(SaveFile.Flags.IsInDW)) { base.Texture = GD.Load("res://Sprites/Menus/dwbox.png"); base.PatchMarginBottom = 13; base.PatchMarginTop = 13; base.PatchMarginLeft = 13; base.PatchMarginRight = 13; } } public override void _Process(double delta) { if (saved) { if (Input.IsActionJustPressed(Main.keys[4])) { QueueFree(); } } else if (Input.IsActionJustPressed(Main.keys[3]) || Input.IsActionJustPressed(Main.keys[2])) { cancel = !cancel; soul.Position = pos[cancel ? 1u : 0u]; Audio.PlaySound(Audio.commonSounds[0]); } else { if (!Input.IsActionJustPressed(Main.keys[4])) { return; } if (!cancel) { soul.Visible = false; time.Visible = false; saved = true; if (SaveFile.Save()) { Audio.PlaySound(Audio.commonSounds[3]); base.Modulate = Main.colorYellow; text.Text = "[center]\n" + Texts.common[96]; } else { Audio.PlaySound("snd_error.wav"); base.Modulate = Main.colorRed; text.Text = "[center][color=red]\n" + Texts.common[97]; } } else { QueueFree(); } } } }