module Canopy.DipMap where

import Canopy.Graph (Graph)
import Data.List (List)
import Data.Maybe (Maybe)

newtype DipUnit c = DipUnit
  { nation :: c
  , isFleet :: Boolean
  }

newtype Territory c = Territory
  { isSea :: Boolean
  , unit :: Maybe (DipUnit c)
  }

type DipMap c = Graph (Territory c)

-- Index in some DipMap
type Loc = Int

data Move
  = Attack Loc
  | Support Loc Loc
  | Convoy Loc Loc
  | Hold

type DipMoves = List Move