Files
loop/src/Dodge/Data/RightButtonOptions.hs
T
2022-08-21 10:58:19 +01:00

65 lines
1.8 KiB
Haskell

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.RightButtonOptions where
import Data.Binary
import Flat
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import Dodge.Data.Equipment.Misc
data RightButtonOptions
= NoRightButtonOptions
| EquipOptions
{ _opEquip :: [EquipPosition]
, _opSel :: Int
, _opCurInvPos :: Int
, _opAllocateEquipment :: AllocateEquipment
, _opActivateEquipment :: ActivateEquipment
}
deriving (Eq, Ord, Show, Read, Generic, Flat)
instance Binary RightButtonOptions
data ActivateEquipment
= ActivateEquipment {_activateEquipment :: Int}
| DeactivateEquipment {_deactivateEquipment :: Int}
| ActivateDeactivateEquipment {_activateEquipment :: Int, _deactivateEquipment :: Int}
| NoChangeActivateEquipment
deriving (Eq, Ord, Show, Read, Generic, Flat)
instance Binary ActivateEquipment
data AllocateEquipment
= DoNotMoveEquipment
| PutOnEquipment
{ _allocNewPos :: EquipPosition
}
| MoveEquipment
{ _allocNewPos :: EquipPosition
, _allocOldPos :: EquipPosition
}
| SwapEquipment
{ _allocNewPos :: EquipPosition
, _allocOldPos :: EquipPosition
, _allocSwapID :: Int
}
| ReplaceEquipment
{ _allocNewPos :: EquipPosition
, _allocRemoveID :: Int
}
| RemoveEquipment
{ _allocOldPos :: EquipPosition
}
deriving (Eq, Ord, Show, Read, Generic, Flat)
instance Binary AllocateEquipment
makeLenses ''RightButtonOptions
makeLenses ''AllocateEquipment
makeLenses ''ActivateEquipment
deriveJSON defaultOptions ''RightButtonOptions
deriveJSON defaultOptions ''ActivateEquipment
deriveJSON defaultOptions ''AllocateEquipment