screeps-purescript-bot/src/Screeps/Room.purs

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