using Intrepid.Gameplay.Prototyping;
using Intrepid.Utilities;
using UnityEngine;

namespace Editor.GON.StageEditor
{
    [CreateAssetMenu(fileName = "New Prefab Table", menuName = "GON/Editor/Prefab Table")]
    public class PrefabTable : ScriptableObject
    {
        [GroupInjections("Ground"), SerializeField] private GroundSlabModelPrototype slabPrefab;
        [GroupInjections("Ground"), SerializeField] private GroundRampModelPrototype rampFrontPrefab;
        [GroupInjections("Ground"), SerializeField] private GroundRampModelPrototype rampLeftPrefab;
        [GroupInjections("Ground"), SerializeField] private GroundRampModelPrototype rampRightPrefab;
        [GroupInjections("Ground"), SerializeField] private GroundStairModelPrototype stairFrontPrefab;
        [GroupInjections("Ground"), SerializeField] private GroundStairModelPrototype stairLeftPrefab;
        [GroupInjections("Ground"), SerializeField] private GroundStairModelPrototype stairRightPrefab;
        [GroupInjections("Obstacle"), SerializeField] private ObstacleWallModelPrototype wallPrefab;
        [GroupInjections("Interactable"), SerializeField] private InteractableSocketModelPrototype socketEastPrefab;
        [GroupInjections("Interactable"), SerializeField] private InteractableSocketModelPrototype socketNorthPrefab;
        [GroupInjections("Interactable"), SerializeField] private InteractableSocketModelPrototype socketSouthPrefab;
        [GroupInjections("Interactable"), SerializeField] private InteractableSocketModelPrototype socketWestPrefab;

        public GroundSlabModelPrototype GroundSlabPrefab => slabPrefab;
        public GroundRampModelPrototype GroundRampFrontPrefab => rampFrontPrefab;
        public GroundRampModelPrototype GroundRampLeftPrefab => rampLeftPrefab;
        public GroundRampModelPrototype GroundRampRightPrefab => rampRightPrefab;
        public GroundStairModelPrototype GroundStairFrontPrefab => stairFrontPrefab;
        public GroundStairModelPrototype GroundStairLeftPrefab => stairLeftPrefab;
        public GroundStairModelPrototype GroundStairRightPrefab => stairRightPrefab;
        public ObstacleWallModelPrototype ObstacleWallPrefab => wallPrefab;
        public InteractableSocketModelPrototype InteractableSocketEastPrefab => socketEastPrefab;
        public InteractableSocketModelPrototype InteractableSocketNorthPrefab => socketNorthPrefab;
        public InteractableSocketModelPrototype InteractableSocketSouthPrefab => socketSouthPrefab;
        public InteractableSocketModelPrototype InteractableSocketWestPrefab => socketWestPrefab;
    }
}