{-# 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