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

23 lines
1011 B
Plaintext

module Screeps.Memory where
import Prelude
import Effect (Effect)
import Screeps.FFI (unsafeGetFieldEff, unsafeSetFieldEff)
import Data.Tuple (Tuple)
import Data.Argonaut.Core ( Json )
import Data.Argonaut.Decode (class DecodeJson, decodeJson, JsonDecodeError)
import Data.Argonaut.Encode (class EncodeJson, encodeJson)
import Data.Either (Either)
import Foreign.Object as F
foreign import data MemoryGlobal :: Type
foreign import getMemoryGlobal :: Effect MemoryGlobal
foreign import data RawMemoryGlobal :: Type
foreign import getRawMemoryGlobal :: Effect RawMemoryGlobal
foreign import setCreepsUtl :: String -> Int -> Effect Unit
foreign import getCreepsUtl :: Effect (Array Int)
set :: forall a. (EncodeJson a) => MemoryGlobal -> String -> a -> Effect Unit
set memoryGlobal key val = unsafeSetFieldEff key memoryGlobal $ encodeJson val
get :: forall a. (DecodeJson a) => MemoryGlobal -> String -> Effect (Either JsonDecodeError a)
get memoryGlobal key = decodeJson <$> unsafeGetFieldEff key memoryGlobal