Refactor world events
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
module Dodge.WorldEffect where
|
||||
import Dodge.SoundLogic
|
||||
import Dodge.WorldEvent.Cloud
|
||||
import Dodge.Data
|
||||
import Dodge.Inventory.Lock
|
||||
import Dodge.Placement.Instance.Terminal
|
||||
|
||||
import System.Random
|
||||
import Control.Lens
|
||||
|
||||
doWorldEffect :: WorldEffect -> World -> World
|
||||
@@ -11,3 +15,14 @@ doWorldEffect we = case we of
|
||||
SetLSCol col lsid -> lightSources . ix lsid . lsParam . lsCol .~ col
|
||||
AccessTerminal mtmid -> accessTerminal mtmid
|
||||
WorldEffects wes -> \w -> foldr doWorldEffect w wes
|
||||
UnlockInv cid -> unlockInv cid
|
||||
MakeStartCloudAt p -> makeStartCloudAt p
|
||||
TorqueCr x cid -> torqueCr x cid
|
||||
SoundStart so p sid mi -> soundStart so p sid mi
|
||||
|
||||
torqueCr :: Float -> Int -> World -> World
|
||||
torqueCr x cid w
|
||||
| cid == 0 = set randGen g $ over cameraRot (+rot) w
|
||||
| otherwise = set randGen g $ over (creatures . ix cid . crDir) (+rot) w
|
||||
where
|
||||
(rot, g) = randomR (-x,x) $ _randGen w
|
||||
|
||||
Reference in New Issue
Block a user