37 lines
1.3 KiB
Plaintext
37 lines
1.3 KiB
Plaintext
module Screeps.Room where
|
|
import Prelude
|
|
import Effect (Effect)
|
|
import Data.Maybe ( Maybe )
|
|
import Screeps.Structure ( structureType )
|
|
import Screeps.Game as Game
|
|
import Screeps.Types
|
|
import Screeps.FFI ( runThisFn0, runThisFn1
|
|
, runThisFn2, runThisFn3
|
|
, unsafeField, toMaybe )
|
|
import Foreign.Object as F
|
|
|
|
-- | returns a list of sources given a room
|
|
--findSources ∷ ∀ a. Room → Array (RoomObject a)
|
|
--findSources room = find' room find_structures (\s → isSource s)
|
|
foreign import setRoomMem :: Room → Int → Int → Effect Unit
|
|
|
|
find ∷ ∀ a. Room → FindType a → Array a
|
|
find = runThisFn1 "find"
|
|
-- | returns find when we want to use optional filter
|
|
find' ∷ ∀ a. Room → FindType a → FilterFn a → Array a
|
|
find' room findType filter = runThisFn2 "find" room findType { filter }
|
|
|
|
room ∷ ∀ a. RoomObject a → Room
|
|
room = unsafeField "room"
|
|
|
|
storage ∷ Room → Storage
|
|
storage = unsafeField "storage"
|
|
|
|
getTerrain ∷ Room → Terrain
|
|
getTerrain = runThisFn0 "getTerrain"
|
|
|
|
getTerrainAt ∷ ∀ a. TargetPosition a → String → Terrain
|
|
getTerrainAt (TargetPt x y) roomName = runThisFn3 "getTerrainAt" Game.map x y roomName
|
|
getTerrainAt (TargetPos pos) roomName = runThisFn2 "getTerrainAt" Game.map pos roomName
|
|
getTerrainAt (TargetObj obj) roomName = runThisFn2 "getTerrainAt" Game.map obj roomName
|