{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Data.LoadAction where
import Sound.Data
import Dodge.Item.Data
import Control.Lens
data LoadAction
    = LoadEject  {_actionTime :: Int, _actionSound :: SoundID}
    | LoadInsert {_actionTime :: Int, _actionSound :: SoundID}
    | LoadAdd    {_actionTime :: Int, _actionSound :: SoundID, _insertMax :: Int }
    | LoadPrime  {_actionTime :: Int, _actionSound :: SoundID}
  deriving (Eq,Ord,Show)
data InvSel = InvSel {_iselPos :: Int, _iselAction :: InvSelAction }
data InvSelAction
    = NoInvSelAction
    | ReloadAction { _actionProgress :: Int, _reloadAction :: LoadAction, _actionHammer :: HammerType}
  deriving (Eq,Ord,Show)
makeLenses ''LoadAction
makeLenses ''InvSel
makeLenses ''InvSelAction
