Skip to content

Commit

Permalink
Fix up imports
Browse files Browse the repository at this point in the history
  • Loading branch information
PPKFS committed Dec 31, 2024
1 parent 607163c commit 4e16e96
Show file tree
Hide file tree
Showing 62 changed files with 219 additions and 216 deletions.
1 change: 0 additions & 1 deletion yaifl-city/src/Yaifl/Gen/City/ApartmentTower.hs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import Yaifl.Model.Kinds.Direction
import Yaifl.Game.Create.RoomConnection
import Yaifl.Gen.City.Building
import Yaifl.Text.DynamicText
import Yaifl.Model.Kinds
import Yaifl.Core.Entity
import Yaifl.Model.Rules
import System.Random.Stateful
Expand Down
1 change: 0 additions & 1 deletion yaifl-city/src/Yaifl/Gen/City/Building.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import Yaifl.Prelude
import Yaifl.Core.Entity
import Yaifl.Model.Kinds.Region
import Yaifl.Model.WorldModel
import Yaifl.Model.Kinds
import Yaifl.Core.Effects
import Yaifl.Model.Rules.RuleEffects
import Yaifl.Core.HasProperty
Expand Down
5 changes: 3 additions & 2 deletions yaifl/src/Yaifl.hs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ import Yaifl.Game.ObjectSpecifics
import Yaifl.Model.Kinds.Container
import Yaifl.Model.Kinds.Door
import Yaifl.Core.Kinds.Enclosing
import Yaifl.Core.HasProperty
import Yaifl.Model.Kinds.Openable
import Yaifl.Model.WorldModel
import Yaifl.Model.Rules.RuleEffects
Expand All @@ -62,7 +61,6 @@ import Yaifl.Game.EffectHandlers
import Yaifl.Text.DynamicText
import Yaifl.Game.Actions.Collection
import Breadcrumbs
import Yaifl.Model.Query (failHorriblyIfMissing)
import Yaifl.Game.Actions.Examining
import Yaifl.Core.Store
import Yaifl.Game.Actions.Closing
Expand All @@ -87,6 +85,7 @@ import Yaifl.Game.Actions.Exiting (exitingAction)
import Yaifl.Game.Actions.GettingOff (gettingOffAction)
import Yaifl.Game.Accessibility
import Yaifl.Model.Kinds.Person
import Yaifl.Core.Effects

type PlainWorldModel = 'WorldModel ObjectSpecifics Direction () () ActivityCollection ResponseCollection DynamicText

Expand Down Expand Up @@ -317,6 +316,7 @@ addOutOfWorld cs e = forM_ cs $ \c ->

runTurnsFromBuffer ::
RuleEffects wm es
=> SayableValue (WMText wm) wm
=> State (WorldActions wm) :> es
=> Eff es ()
runTurnsFromBuffer = do
Expand All @@ -326,6 +326,7 @@ runTurnsFromBuffer = do
runTurn ::
forall wm es.
State (WorldActions wm) :> es
=> SayableValue (WMText wm) wm
=> RuleEffects wm es
=> Eff es ()
runTurn = do
Expand Down
1 change: 1 addition & 0 deletions yaifl/src/Yaifl/Core/Kinds/AnyObject.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ module Yaifl.Core.Kinds.AnyObject
, TaggedAnyEnclosing
, EnclosingThing
, asThingOrRoom
, unwrapAny
) where

import Yaifl.Prelude
Expand Down
17 changes: 5 additions & 12 deletions yaifl/src/Yaifl/Core/Query/Enclosing.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,15 @@ module Yaifl.Core.Query.Enclosing
, IsEnclosingObject(..)
, IsEnclosing(..)
, getEnclosingObject
, getDescribableContents
, enclosingContains
, getCommonAncestor
, getLocation
) where

import Yaifl.Prelude
import Breadcrumbs

import Data.List.NonEmpty as NE (cons)

import Yaifl.Core.Metadata
import Yaifl.Core.Kinds.Object
import Yaifl.Core.Effects
import Yaifl.Core.Entity
Expand All @@ -32,12 +29,7 @@ import Yaifl.Core.Kinds.AnyObject
import Yaifl.Core.Tag

import qualified Data.EnumSet as ES
import qualified Data.Set as S
import Yaifl.Model.Kinds.Region
import Yaifl.Core.HasProperty
import Yaifl.Core.Kinds.Enclosing
import Effectful.Error.Static (Error, throwError)
import Yaifl.Core.Refreshable
import Yaifl.Model.WorldModel
import Yaifl.Model.Query

Expand All @@ -57,15 +49,16 @@ getLocation t = do

getAllObjectsInRoom ::
RoomLike wm o
=> WMWithProperty wm Enclosing
=> NoMissingObjects wm es
=> IncludeScenery
-> IncludeDoors
-> RecurseAllObjects
-> o
-> Eff es [Thing wm]
getAllObjectsInRoom incScenery incDoors recurse r = do
r <- getRoom r
getAllObjectsInEnclosing incScenery incDoors recurse (tagRoomEntity r)
r' <- getRoom r
getAllObjectsInEnclosing incScenery incDoors recurse (coerceTag $ tagRoomEntity r')

getAllObjectsInEnclosing ::
NoMissingObjects wm es
Expand All @@ -75,7 +68,7 @@ getAllObjectsInEnclosing ::
-> RecurseAllObjects
-> EnclosingEntity
-> Eff es [Thing wm]
getAllObjectsInEnclosing incScenery incDoors _recurse r = do
getAllObjectsInEnclosing incScenery incDoors recurse r = do
e <- getEnclosingObject r
let e' = getEnclosing e
let allItemIDs = ES.toList $ e' ^. #contents
Expand All @@ -84,7 +77,7 @@ getAllObjectsInEnclosing incScenery incDoors _recurse r = do
recursedThings <- mconcat <$> mapM (\t -> do
let mbE = getEnclosingMaybe (toAny t)
case mbE of
Just enc' -> getAllObjectsInEnclosing incScenery incDoors (tagEntity enc' t)
Just enc' -> getAllObjectsInEnclosing incScenery incDoors recurse (tagEntity enc' t)
Nothing -> return []) things
enclosingItself <- getThingMaybe r
return $ ordNub (maybeToList enclosingItself <> things <> recursedThings)
Expand Down
43 changes: 28 additions & 15 deletions yaifl/src/Yaifl/Core/Query/Region.hs
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,17 @@ module Yaifl.Core.Query.Region
( areInRegion
, isInRegion
, isSubregionOf

, modifyRegion
, roomsInRegion
) where

import Yaifl.Prelude
import Breadcrumbs

import Yaifl.Core.Metadata
import Yaifl.Core.Kinds.Object
import Yaifl.Core.Effects
import Yaifl.Core.Entity
import Yaifl.Core.ObjectLike
import Yaifl.Core.Kinds.Thing
import Yaifl.Core.Kinds.Room
import Yaifl.Core.Kinds.AnyObject
import Yaifl.Core.Tag

import qualified Data.EnumSet as ES
import qualified Data.Set as S
import Yaifl.Model.Kinds.Region
import Yaifl.Core.HasProperty
import Yaifl.Core.Kinds.Enclosing
import Effectful.Error.Static (Error, throwError)
import Yaifl.Core.Refreshable
import Yaifl.Model.WorldModel


areInRegion ::
Expand All @@ -43,3 +30,29 @@ isInRegion ::
-> Eff es ()
isInRegion r reg = do
modifyRegion reg (#rooms %~ S.insert r)

modifyRegion ::
NoMissingObjects wm es
=> RegionEntity
-> (Region wm -> Region wm)
-> Eff es ()
modifyRegion o u = do
r <- lookupRegion o
whenRight_ r $ \r' -> setRegion (u r')

isSubregionOf ::
NoMissingObjects wm es
=> RegionEntity
-> RegionEntity
-> Eff es ()
isSubregionOf subReg reg = do
modifyRegion reg (#subRegions %~ S.insert subReg)

roomsInRegion ::
NoMissingObjects wm es
=> Region wm
-> Eff es (S.Set RoomEntity)
roomsInRegion r = do
subRegs <- rights <$> mapM lookupRegion (S.toList $ subRegions r)
rs <- mapM roomsInRegion subRegs
pure $ S.unions $ rooms r : rs
12 changes: 6 additions & 6 deletions yaifl/src/Yaifl/Game/Accessibility.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ module Yaifl.Game.Accessibility
import Yaifl.Prelude

import Yaifl.Model.Actions.Args
import Yaifl.Core.Effects
import Yaifl.Core.HasProperty ( WMWithProperty )
import Yaifl.Model.Query ( getContainingHierarchy, getCommonAncestor, getThingMaybe )
import Yaifl.Model.WorldModel ( WMWithProperty )
import Yaifl.Model.Query ( getThingMaybe )
import Yaifl.Model.Rules.Rulebook
import Yaifl.Core.Kinds.Thing
import Yaifl.Model.Kinds (objectEquals)
import qualified Data.List.NonEmpty as NE
import Yaifl.Model.Kinds.Container
import Yaifl.Text.Say
import Yaifl.Model.Rules (RuleEffects)
import Yaifl.Model.Rules.RuleEffects
import Yaifl.Core.Query.Enclosing
import Yaifl.Core.Kinds.Object

accessibility ::
WithPrintingNameOfSomething wm
Expand Down Expand Up @@ -44,7 +44,7 @@ insideClosedContainers ::
=> RuleEffects wm es
=> WMWithProperty wm Container
=> Args wm (Thing wm) -> Eff es (Maybe Bool)
insideClosedContainers a@Args{source=s, variables=v}= do
insideClosedContainers Args{source=s, variables=v}= do
commonAncestor <- getCommonAncestor s v
-- this is everything (which should be nonempty) we may ned to reach through
hier <- NE.takeWhile (/= commonAncestor) <$> getContainingHierarchy v
Expand Down
6 changes: 4 additions & 2 deletions yaifl/src/Yaifl/Game/ActionProcessing.hs
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@ module Yaifl.Game.ActionProcessing
import Yaifl.Prelude hiding (runReader, Reader)

import Yaifl.Model.Action
import Yaifl.Model.Query
import Yaifl.Model.Rules.Rulebook
import Yaifl.Model.Rules.Run
import Effectful.Reader.Static
import Breadcrumbs
import Yaifl.Model.Actions.Args
import Yaifl.Core.Effects
import Yaifl.Text.Say
import Yaifl.Model.WorldModel


actionProcessingRules :: forall wm. ActionProcessing wm
actionProcessingRules :: forall wm. SayableValue (WMText wm) wm => ActionProcessing wm
actionProcessingRules = ActionProcessing $ \aSpan a@((Action{..}) :: Action wm resp goesWith v) u -> do
wa <- get @(WorldActions wm)
runReader a $ failHorriblyIfMissing (runRulebook @wm @_ @_ @_ @((:>) (Reader (Action wm resp goesWith v))) (Just aSpan) False (Rulebook @wm
Expand Down
4 changes: 2 additions & 2 deletions yaifl/src/Yaifl/Game/Actions/Closing.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ module Yaifl.Game.Actions.Closing where
import Yaifl.Model.Action
import Yaifl.Prelude
import Yaifl.Model.Actions.Args
import Yaifl.Core.HasProperty
import Yaifl.Model.Kinds.Openable
import Yaifl.Model.Rules.Rulebook
import Yaifl.Text.Responses
import Yaifl.Core.Metadata
import Yaifl.Text.SayQQ
import Yaifl.Text.Say
import Yaifl.Core.Kinds.Thing
import Yaifl.Model.WorldModel

data ClosingResponses = ReportClosingResponseA
{- data ClosingResponses wm = OR
Expand Down Expand Up @@ -50,7 +50,7 @@ standardClose = makeRule "standard closing rule" [] $ \Args{variables=thing} ->
closeIt thing
rulePass

standardReport :: ActionRule wm (ClosingAction wm) (Thing wm)
standardReport :: SayableValue (WMText wm) wm => ActionRule wm (ClosingAction wm) (Thing wm)
standardReport = makeRule "standard report closing rule" [] $ \args -> do
-- if the actor is the player:
pl <- isPlayer (source args)
Expand Down
8 changes: 6 additions & 2 deletions yaifl/src/Yaifl/Game/Actions/Entering.hs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import Yaifl.Prelude
import Yaifl.Model.Actions.Args
import Yaifl.Model.Rules.Rulebook
import Yaifl.Text.Say
import Yaifl.Model.Kinds
import Yaifl.Core.HasProperty
import Yaifl.Core.Kinds.Enclosing
import Yaifl.Game.Move
import Yaifl.Model.Kinds.Container
Expand All @@ -22,6 +20,12 @@ import Yaifl.Model.Activity
import Yaifl.Core.Store
import Yaifl.Game.Actions.Looking.Locale
import Yaifl.Game.Activities.PrintingTheLocaleDescription (WithPrintingTheLocaleDescription)
import Yaifl.Model.WorldModel
import Yaifl.Core.ObjectLike
import Yaifl.Core.Kinds.Thing
import Yaifl.Core.Refreshable
import Yaifl.Core.Kinds.Object
import Yaifl.Core.Query.Enclosing

data EnteringResponses wm

Expand Down
26 changes: 22 additions & 4 deletions yaifl/src/Yaifl/Game/Actions/Examining.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@ import Yaifl.Prelude

import Yaifl.Model.Action
import Yaifl.Model.Actions.Args
import Yaifl.Core.HasProperty (WMWithProperty)
import Yaifl.Model.Kinds
import Yaifl.Model.Kinds.Container
import Yaifl.Model.Query
import Yaifl.Model.Rules.Rulebook
import Yaifl.Model.WorldModel

Expand All @@ -18,6 +15,14 @@ import Yaifl.Text.Responses
import Yaifl.Text.Say
import Yaifl.Core.Tag
import Yaifl.Model.Kinds.Supporter
import Yaifl.Core.Kinds.Thing
import Yaifl.Core.Refreshable
import Yaifl.Core.Query.Enclosing
import Yaifl.Core.Effects
import Yaifl.Core.Kinds.Enclosing
import Yaifl.Core.ObjectLike
import qualified Data.EnumSet as ES
import Yaifl.Core.Kinds.Object

data ExaminingResponses =
ExamineDirectionA
Expand Down Expand Up @@ -99,7 +104,7 @@ type ExamineRule wm = ActionRule wm (ExaminingAction wm) (ExaminingActionVariabl
actionRequiresLight :: ExamineRule wm
actionRequiresLight = notImplementedRule "action requires light"

examineUndescribed :: ExamineRule wm
examineUndescribed :: SayableValue (WMText wm) wm => ExamineRule wm
examineUndescribed = makeRule "examine undescribed things rule" forPlayer' $ \a@Args{..} -> do
-- if examine text printed is false:
-- say "[We] [see] nothing special about [the noun]." (A).
Expand Down Expand Up @@ -186,3 +191,16 @@ standardExamining = Rule "standard examining rule" forPlayer' $ \a@Args{..} -> d

reportOtherPeopleExamining :: ExamineRule wm
reportOtherPeopleExamining = notImplementedRule "report others examining rule"

getDescribableContents ::
NoMissingObjects wm es
=> Enclosing
-> Eff es [Thing wm]
getDescribableContents e = do
p <- getPlayer'
catMaybes <$> mapM (\i -> do
item <- getThing i
if thingIsScenery item || p `objectEquals` i {- || todo: falsely unoccupied -}
then pure Nothing
else pure (Just item)
) (ES.toList $ view #contents e)
9 changes: 5 additions & 4 deletions yaifl/src/Yaifl/Game/Actions/Exiting.hs
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,19 @@ import Yaifl.Prelude
import Yaifl.Model.Actions.Args
import Yaifl.Model.Rules.Rulebook
import Yaifl.Text.Say
import Yaifl.Model.Kinds
import Yaifl.Core.HasProperty
import Yaifl.Core.Kinds.Enclosing
import Yaifl.Model.Kinds.Container
import Yaifl.Core.Tag
import Yaifl.Model.Query
import Yaifl.Core.Kinds.AnyObject
import Yaifl.Core.Metadata
import Yaifl.Model.Kinds.Supporter
import Breadcrumbs
import Yaifl.Game.Move
import Yaifl.Core.Entity
import Yaifl.Model.WorldModel
import Yaifl.Core.Kinds.Thing
import Yaifl.Core.Query.Enclosing
import Yaifl.Core.ObjectLike

data ExitingResponses wm

Expand Down Expand Up @@ -89,7 +90,7 @@ standardExiting = makeRule "standard exiting" [] $ \a@Args{variables=v} -> do

describeExited ::
ExitingRule wm
describeExited = makeRule "describe contents entered into" forPlayer' $ \a@Args{variables=v} -> do
describeExited = makeRule "describe contents entered into" forPlayer' $ \a@Args{} -> do
-- TODO: reckon darkness
parseAction ((actionOptions a) { silently = True }) [ConstantParameter "going"] "look"
rulePass
Loading

0 comments on commit 4e16e96

Please sign in to comment.