module Diplomacy.Zone (
Zone(..)
, zoneProvinceTarget
) where
import Diplomacy.Province
newtype Zone = Zone ProvinceTarget
deriving instance Show Zone
instance Eq Zone where
Zone x == Zone y = case (x, y) of
(Normal p1, Normal p2) -> p1 == p2
(Special c1, Special c2) -> pcProvince c1 == pcProvince c2
(Normal p, Special c) -> p == pcProvince c
(Special c, Normal p) -> p == pcProvince c
instance Ord Zone where
Zone x `compare` Zone y = case (x, y) of
(Normal p1, Normal p2) -> p1 `compare` p2
(Special c1, Special c2) -> pcProvince c1 `compare` pcProvince c2
(Normal p, Special c) -> p `compare` pcProvince c
(Special c, Normal p) -> pcProvince c `compare` p
zoneProvinceTarget :: Zone -> ProvinceTarget
zoneProvinceTarget (Zone pt) = pt