Copyright | (c) Alexander Vieth 2015 |
---|---|
License | BSD3 |
Maintainer | aovieth@gmail.com |
Stability | experimental |
Portability | non-portable (GHC only) |
Safe Haskell | Safe |
Language | Haskell2010 |
- data Province
- = Bohemia
- | Budapest
- | Galicia
- | Trieste
- | Tyrolia
- | Vienna
- | Clyde
- | Edinburgh
- | Liverpool
- | London
- | Wales
- | Yorkshire
- | Brest
- | Burgundy
- | Gascony
- | Marseilles
- | Paris
- | Picardy
- | Berlin
- | Kiel
- | Munich
- | Prussia
- | Ruhr
- | Silesia
- | Apulia
- | Naples
- | Piedmont
- | Rome
- | Tuscany
- | Venice
- | Livonia
- | Moscow
- | Sevastopol
- | StPetersburg
- | Ukraine
- | Warsaw
- | Ankara
- | Armenia
- | Constantinople
- | Smyrna
- | Syria
- | Albania
- | Belgium
- | Bulgaria
- | Finland
- | Greece
- | Holland
- | Norway
- | NorthAfrica
- | Portugal
- | Rumania
- | Serbia
- | Spain
- | Sweden
- | Tunis
- | Denmark
- | AdriaticSea
- | AegeanSea
- | BalticSea
- | BarentsSea
- | BlackSea
- | EasternMediterranean
- | EnglishChannel
- | GulfOfBothnia
- | GulfOfLyon
- | HeligolandBight
- | IonianSea
- | IrishSea
- | MidAtlanticOcean
- | NorthAtlanticOcean
- | NorthSea
- | NorwegianSea
- | Skagerrak
- | TyrrhenianSea
- | WesternMediterranean
- adjacency :: Province -> [Province]
- adjacent :: Province -> Province -> Bool
- isSameOrAdjacent :: Province -> Province -> Bool
- neighbours :: ProvinceTarget -> [ProvinceTarget]
- isSameOrNeighbour :: ProvinceTarget -> ProvinceTarget -> Bool
- provinceCommonNeighbours :: Province -> Province -> [Province]
- provinceCommonCoasts :: Province -> Province -> [Province]
- commonNeighbours :: ProvinceTarget -> ProvinceTarget -> [ProvinceTarget]
- commonCoasts :: ProvinceTarget -> ProvinceTarget -> [ProvinceTarget]
- data ProvinceType
- provinceType :: Province -> ProvinceType
- supplyCentre :: Province -> Bool
- supplyCentres :: [Province]
- isCoastal :: Province -> Bool
- isInland :: Province -> Bool
- isWater :: Province -> Bool
- country :: Province -> Maybe GreatPower
- isHome :: GreatPower -> Province -> Bool
- data ProvinceCoast
- pcProvince :: ProvinceCoast -> Province
- provinceCoasts :: Province -> [ProvinceCoast]
- data ProvinceTarget
- isNormal :: ProvinceTarget -> Bool
- isSpecial :: ProvinceTarget -> Bool
- ptProvince :: ProvinceTarget -> Province
- provinceTargets :: Province -> [ProvinceTarget]
- provinceTargetCluster :: ProvinceTarget -> [ProvinceTarget]
- shortestPath :: Province -> Province -> [Province]
- distance :: Province -> Province -> Int
- distanceFromHomeSupplyCentre :: GreatPower -> Province -> Int
- parseProvince :: Parser Province
- parseProvinceTarget :: Parser ProvinceTarget
- printProvince :: IsString a => Province -> a
- printProvinceTarget :: IsString a => ProvinceTarget -> a
- paths :: (Province -> Bool) -> (Province -> Maybe t) -> [Province] -> [(t, Province, [Province])]
Documentation
Enumeration of the places on the diplomacy board.
adjacency :: Province -> [Province] Source #
A Province p
is adjacent to (borders) all Provinces in adjacency p
.
This is symmetric and antireflexive.
neighbours :: ProvinceTarget -> [ProvinceTarget] Source #
This is like adjacency but for ProvinceTargets
,
and takes into consideration the special cases of multi-coast Province
s.
isSameOrNeighbour :: ProvinceTarget -> ProvinceTarget -> Bool Source #
commonCoasts :: ProvinceTarget -> ProvinceTarget -> [ProvinceTarget] Source #
Common neighbours which are water provinces.
data ProvinceType Source #
provinceType :: Province -> ProvinceType Source #
supplyCentre :: Province -> Bool Source #
Indicates whether a Province is a supply centre.
supplyCentres :: [Province] Source #
All supply centres.
country :: Province -> Maybe GreatPower Source #
Some provinces belong to a country. This is useful in conjunction with supplyCentre to determine which provinces can be used by a given country to build a unit. It is distinct from the in-game notion of control. Although Brest belongs to France, it may be controlled by some other power.
data ProvinceCoast Source #
These are the special coasts, for Province
s which have more than one
coast.
pcProvince :: ProvinceCoast -> Province Source #
The Province
to which a ProvinceCoast
belongs.
provinceCoasts :: Province -> [ProvinceCoast] Source #
The ProvinceCoast
s which belong to a Province
.
data ProvinceTarget Source #
This type contains all places where some unit could be stationed.
isNormal :: ProvinceTarget -> Bool Source #
isSpecial :: ProvinceTarget -> Bool Source #
ptProvince :: ProvinceTarget -> Province Source #
provinceTargets :: Province -> [ProvinceTarget] Source #
All ProvinceTarget
s associated with a Province
. For Province
s with
0 or 1 coast, provinceTargets p = [Normal p]
.
provinceTargetCluster :: ProvinceTarget -> [ProvinceTarget] Source #
All ProvinceTarget
s which belong to the same Province
as this one.
distanceFromHomeSupplyCentre :: GreatPower -> Province -> Int Source #
printProvince :: IsString a => Province -> a Source #
printProvinceTarget :: IsString a => ProvinceTarget -> a Source #
paths :: (Province -> Bool) -> (Province -> Maybe t) -> [Province] -> [(t, Province, [Province])] Source #
A search from a list of Provinces, via 1 or more adjacent Provinces which satisfy some indicator, until another indicator is satisfied. This gives simple paths from those Provinces, via Provinces which satisfy the first indicator, to Provinces which satisfy the second indicator.
Example use case: convoy paths from a given Province.
convoyPaths :: Occupation -> Province -> [(Province, [Province])] convoyPaths occupation convoyingFrom = fmap ((x, y, zs) -> (x, y : zs)) (paths (occupiedByFleet occupation) (coastalIndicator) [convoyingFrom])