module Waldo.CityLoc where
import Control.Monad.Reader
import Data.Geo.Coord
import Data.Geo.Sphere
import Data.Geo.Haversine
import Waldo.Stalk
import Waldo.Story
data CityData = CityData {
cityLoc :: Coord
, cityInfluenceKm :: Double
}
mkCity :: Coord -> Double -> CityData
mkCity l i = CityData l i
closeTo :: CityData -> StoryGuard
closeTo c =
asks pdLatLon >>= guard . (maybe False (\latlon ->
let kmDist = (haversine earthMean (cityLoc c) latlon)/1000
in kmDist < (cityInfluenceKm c)))
atlanta, belfast, boston, brisbane, cambridge, chicago, christchurch, cnu, dallas, detroit, downtownNYC, greenBay, halifax, houston, jerusalem, lakeChamplain, lakeErie, lakeMead, lakeMichigan, lasVegas, london, losAngeles, melbourne, miami, montreal, nyc, ottawa, paris, philadelphia, richmond, rioDeJaneiro, riverside, sacramento, sanAntonio, sanDiego, sanFran, scotland, seattle, sendai, sydney, tampa, telAviv, tokyo, toronto, vaBeach :: CityData
atlanta = mkCity (( 33.755000) !.! ( 84.390000)) 20
belfast = mkCity (( 54.600000) !.! ( 5.916700)) 6
boston = mkCity (( 42.357778) !.! ( 71.061667)) 4
brisbane = mkCity ((27.466700) !.! ( 153.033300)) 180
cambridge = mkCity (( 42.373611) !.! ( 71.110556)) 40
chicago = mkCity (( 41.881944) !.! ( 87.627778)) 40
christchurch = mkCity ((43.500000) !.! ( 172.600000)) 13
cnu = mkCity (( 37.063800) !.! ( 76.494200)) 10
dallas = mkCity (( 32.782778) !.! ( 96.803889)) 73
detroit = mkCity (( 42.331389) !.! ( 83.045833)) 50
greenBay = mkCity (( 44.513333) !.! ( 88.015833)) 180
halifax = mkCity (( 44.654444) !.! ( 63.599167)) 17
houston = mkCity (( 29.762778) !.! ( 95.383056)) 20
jerusalem = mkCity (( 31.783300) !.! ( 35.216700)) 4
lakeChamplain= mkCity (( 44.533333) !.! ( 73.333333)) 58
lakeErie = mkCity (( 42.200000) !.! ( 81.200000)) 140
lakeMead = mkCity (( 36.250000) !.! (114.390000)) 50
lakeMichigan = mkCity (( 44.000000) !.! ( 87.000000)) 130
lasVegas = mkCity (( 36.175000) !.! (115.136389)) 20
london = mkCity (( 51.517100) !.! ( 0.106200)) 30
losAngeles = mkCity (( 34.050000) !.! (118.250000)) 65
melbourne = mkCity ((37.783300) !.! ( 144.966700)) 40
miami = mkCity (( 25.787778) !.! ( 80.224167)) 30
montreal = mkCity (( 45.500000) !.! ( 73.666667)) 45
downtownNYC = mkCity (( 40.664167) !.! ( 73.938611)) 20
nyc = mkCity (( 40.664167) !.! ( 73.938611)) 20
ottawa = mkCity (( 45.420833) !.! ( 75.690000)) 50
paris = mkCity (( 48.874200) !.! ( 2.347000)) 25
philadelphia = mkCity (( 39.953333) !.! ( 75.170000)) 20
richmond = mkCity (( 37.540972) !.! ( 77.432889)) 40
rioDeJaneiro = mkCity ((22.908300) !.! ( 43.243600)) 70
riverside = mkCity (( 33.948056) !.! (117.396111)) 15
sacramento = mkCity (( 38.555556) !.! (121.468889)) 45
sanAntonio = mkCity (( 29.416667) !.! ( 98.500000)) 23
sanDiego = mkCity (( 32.715000) !.! (117.162500)) 60
sanFran = mkCity (( 37.779300) !.! (122.419200)) 10
scotland = mkCity (( 57.100000) !.! ( 4.000000)) 250
seattle = mkCity (( 47.609722) !.! (122.333056)) 45
sendai = mkCity (( 31.816700) !.! ( 130.300600)) 35
sydney = mkCity ((33.868300) !.! ( 151.208600)) 60
tampa = mkCity (( 27.947222) !.! ( 82.458611)) 42
telAviv = mkCity (( 32.083300) !.! ( 34.800000)) 10
tokyo = mkCity (( 35.683300) !.! ( 139.766700)) 50
toronto = mkCity (( 43.716589) !.! ( 79.340686)) 30
vaBeach = mkCity (( 36.850600) !.! ( 75.977900)) 37