packages feed

swarm-0.4: src/Swarm/TUI/Model/Name.hs

-- |
-- SPDX-License-Identifier: BSD-3-Clause
module Swarm.TUI.Model.Name where

data WorldEditorFocusable
  = BrushSelector
  | EntitySelector
  | AreaSelector
  | OutputPathSelector
  | MapSaveButton
  | ClearEntityButton
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

data FocusablePanel
  = -- | The panel containing the REPL.
    REPLPanel
  | -- | The panel containing the world view.
    WorldPanel
  | -- | The panel containing the world editor controls.
    WorldEditorPanel
  | -- | The panel showing robot info and inventory on the top left.
    RobotPanel
  | -- | The info panel on the bottom left.
    InfoPanel
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

data ScenarioConfigPanel
  = ScenarioConfigFileSelector
  | ScenarioConfigPanelControl ScenarioConfigPanelFocusable
  deriving (Eq, Ord, Show, Read)

data ScenarioConfigPanelFocusable
  = -- | The file selector for launching a scenario with a script
    ScriptSelector
  | SeedSelector
  | StartGameButton
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

data GoalWidget
  = ObjectivesList
  | GoalSummary
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

-- | Clickable buttons in modal dialogs.
data Button
  = CancelButton
  | KeepPlayingButton
  | StartOverButton
  | QuitButton
  | NextButton
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

-- | 'Name' represents names to uniquely identify various components
--   of the UI, such as forms, panels, caches, extents, lists, and buttons.
data Name
  = FocusablePanel FocusablePanel
  | -- | An individual control within the world editor panel.
    WorldEditorPanelControl WorldEditorFocusable
  | -- | The REPL input form.
    REPLInput
  | -- | The render cache for the world view.
    WorldCache
  | -- | The cached extent for the world view.
    WorldExtent
  | -- | The cursor/viewCenter display in the bottom left of the World view
    WorldPositionIndicator
  | -- | The list of possible entities to paint a map with.
    EntityPaintList
  | -- | The entity paint item position in the EntityPaintList.
    EntityPaintListItem Int
  | -- | The list of possible terrain materials.
    TerrainList
  | -- | The terrain item position in the TerrainList.
    TerrainListItem Int
  | -- | The list of inventory items for the currently
    --   focused robot.
    InventoryList
  | -- | The inventory item position in the InventoryList.
    InventoryListItem Int
  | -- | The list of main menu choices.
    MenuList
  | -- | The list of achievements.
    AchievementList
  | -- | An individual control within the scenario launch config panel
    ScenarioConfigControl ScenarioConfigPanel
  | -- | The list of goals/objectives.
    GoalWidgets GoalWidget
  | -- | The list of scenario choices.
    ScenarioList
  | -- | The scrollable viewport for the info panel.
    InfoViewport
  | -- | The scrollable viewport for any modal dialog.
    ModalViewport
  | -- | A clickable button in a modal dialog.
    Button Button
  deriving (Eq, Ord, Show, Read)