module Mischief.ECS.Components.Common where

import Mischief.ECS.Components

-- | Special component inserted automatically on most entities.
--
-- Can be inserted manually to give each entity a custom name.
newtype Name = Name String
  deriving anyclass (Typeable Name
Set DefaultComponentType
Hooks Name
IsExclusive (RelExclusivity Name)
(Typeable Name, IsExclusive (RelExclusivity Name)) =>
Set DefaultComponentType -> Hooks Name -> Component Name
forall c.
(Typeable c, IsExclusive (RelExclusivity c)) =>
Set DefaultComponentType -> Hooks c -> Component c
$crequired :: Set DefaultComponentType
required :: Set DefaultComponentType
$chooks :: Hooks Name
hooks :: Hooks Name
Component)
  deriving newtype (Name -> Name -> Bool
(Name -> Name -> Bool) -> (Name -> Name -> Bool) -> Eq Name
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Name -> Name -> Bool
== :: Name -> Name -> Bool
$c/= :: Name -> Name -> Bool
/= :: Name -> Name -> Bool
Eq)

instance Show Name where
  show :: Name -> String
  show :: Name -> String
show (Name String
name) = ShowS
forall a. Show a => a -> String
show String
name