using System;
using Robust.Shared.GameObjects;
using Robust.Shared.Serialization;

namespace Content.Shared.Paper
{
    [Virtual]
    public class SharedPaperComponent : Component
    {
        [Serializable, NetSerializable]
        public sealed class PaperBoundUserInterfaceState : BoundUserInterfaceState
        {
            public readonly string Text;
            public readonly PaperAction Mode;

            public PaperBoundUserInterfaceState(string text, PaperAction mode = PaperAction.Read)
            {
                Text = text;
                Mode = mode;
            }
        }

        [Serializable, NetSerializable]
        public sealed class PaperActionMessage : BoundUserInterfaceMessage
        {
            public readonly PaperAction Action;
            public PaperActionMessage(PaperAction action)
            {
                Action = action;
            }
        }

        [Serializable, NetSerializable]
        public sealed class PaperInputText : BoundUserInterfaceMessage
        {
            public readonly string Text;

            public PaperInputText(string text)
            {
                Text = text;
            }
        }

        [Serializable, NetSerializable]
        public enum PaperUiKey
        {
            Key
        }

        [Serializable, NetSerializable]
        public enum PaperAction
        {
            Read,
            Write,
            CrossOut,
            Stamp
        }

        [Serializable, NetSerializable]
        public enum PaperVisuals : byte
        {
            Status
        }

        [Serializable, NetSerializable]
        public enum PaperStatus : byte
        {
            Blank,
            Written
        }

    }
}
