From 20cf2ce26d79e8254343a4aead8cfb48c1f40428 Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 20 Nov 2021 00:01:54 +0000 Subject: [PATCH] Add dimensions to all items --- src/Dodge/Creature/Action.hs | 2 +- src/Dodge/Data.hs | 4 ++++ src/Dodge/Default.hs | 4 ++++ src/Dodge/Item/Weapon.hs | 1 + src/Dodge/Item/Weapon/Grenade.hs | 2 ++ src/Dodge/Room/Corridor.hs | 2 ++ src/Dodge/Room/Start.hs | 20 +++++++++++--------- src/Dodge/WallCreatureCollisions.hs | 2 +- 8 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 384fac9e3..0da1cfd44 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -309,7 +309,7 @@ sizeSelf x cr w | otherwise = Nothing where cr1 = colCrWall w (cr {_crRad = 10* x}) - cr2 = colCrWall w cr1 + --cr2 = colCrWall w cr1 distR = 120 distortionBulge | _crRad cr < 10*x = raddist 1.9 diff --git a/src/Dodge/Data.hs b/src/Dodge/Data.hs index 6efe62127..ba091e9e3 100644 --- a/src/Dodge/Data.hs +++ b/src/Dodge/Data.hs @@ -346,6 +346,7 @@ data Item , _itHammer :: HammerPosition , _itAimStance :: AimStance , _itCurseStatus :: CurseStatus + , _itDimension :: ItemDimension } | Craftable { _itName :: String @@ -359,6 +360,7 @@ data Item , _itInvColor :: Color , _itAimStance :: AimStance , _itCurseStatus :: CurseStatus + , _itDimension :: ItemDimension } | Equipment { _itName :: String @@ -376,6 +378,7 @@ data Item , _itHammer :: HammerPosition , _itAimStance :: AimStance , _itCurseStatus :: CurseStatus + , _itDimension :: ItemDimension } | Throwable { _itName :: String @@ -403,6 +406,7 @@ data Item , _itScroll :: Float -> Creature -> Item -> Item , _itAimStance :: AimStance , _itCurseStatus :: CurseStatus + , _itDimension :: ItemDimension } | NoItem data CurseStatus = Uncursed | UndroppableIdentified | UndroppableUnidentified diff --git a/src/Dodge/Default.hs b/src/Dodge/Default.hs index 1e34fb9a9..cfbbe7c1d 100644 --- a/src/Dodge/Default.hs +++ b/src/Dodge/Default.hs @@ -6,6 +6,7 @@ This module contains prototypical data structures. -} module Dodge.Default where import Dodge.Item.Weapon.ExtraEffect +import Dodge.Default.Weapon import Dodge.Data import Dodge.SoundLogic import Dodge.Picture.Layer @@ -145,6 +146,7 @@ defaultEquipment = Equipment , _itInvColor = yellow , _itInvDisplay = _itName , _itAimStance = LeaveHolstered + , _itDimension = defaultItemDimension } defaultItZoom :: ItZoom defaultItZoom = ItZoom 20 0.2 1 @@ -164,6 +166,7 @@ defaultConsumable = Consumable , _itEffect = wpRecock , _itHammer = HammerUp , _itAimStance = LeaveHolstered + , _itDimension = defaultItemDimension } defaultApplyDamage :: [DamageType] -> Creature -> (World -> World, Creature) defaultApplyDamage ds cr = (id, doPoisonDam $ foldl' (flip $ \d c -> snd $ applyIndividualDamage d c) cr ds') @@ -199,6 +202,7 @@ defaultFlIt = FlIt {_flItRot=0,_flIt = defaultIt, _flItPos = V2 0 0, _flItID = 0 defaultIt :: Item defaultIt = Consumable { _itIdentity = Medkit25 + , _itDimension = defaultItemDimension , _itCurseStatus = Uncursed , _itName = "defaultIt" , _itMaxStack = 3 diff --git a/src/Dodge/Item/Weapon.hs b/src/Dodge/Item/Weapon.hs index 02ae41a88..1cec2f69e 100644 --- a/src/Dodge/Item/Weapon.hs +++ b/src/Dodge/Item/Weapon.hs @@ -235,6 +235,7 @@ remoteBombUnarmedPic = color (dark $ dark orange) $ circleSolid 5 pipe :: Item pipe = Craftable { _itIdentity = Generic + , _itDimension = defaultItemDimension , _itCurseStatus = Uncursed , _itName = "PIPE" , _itMaxStack = 3 diff --git a/src/Dodge/Item/Weapon/Grenade.hs b/src/Dodge/Item/Weapon/Grenade.hs index a544ed928..04c7934b2 100644 --- a/src/Dodge/Item/Weapon/Grenade.hs +++ b/src/Dodge/Item/Weapon/Grenade.hs @@ -6,6 +6,7 @@ import Dodge.Picture.Layer import Dodge.WorldEvent.Explosion import Dodge.Item.Weapon.TriggerType import Dodge.Default +import Dodge.Default.Weapon import Dodge.Base import Dodge.Zone import Dodge.SoundLogic @@ -24,6 +25,7 @@ import qualified Data.IntMap.Strict as IM grenade :: Item grenade = Throwable { _itName = "GRENADE " ++ show fuseTime + , _itDimension = defaultItemDimension , _itCurseStatus = Uncursed , _itIdentity = Grenade , _itMaxStack = 8 diff --git a/src/Dodge/Room/Corridor.hs b/src/Dodge/Room/Corridor.hs index 98c4cb211..e44da9729 100644 --- a/src/Dodge/Room/Corridor.hs +++ b/src/Dodge/Room/Corridor.hs @@ -6,6 +6,7 @@ import Dodge.Default.Room --import Dodge.LevelGen.Data --import Dodge.LightSources.Lamp import Dodge.Placement.Instance +import Dodge.PlacementSpot import Geometry import Tile @@ -20,6 +21,7 @@ corridor = defaultRoom , _rmPmnts = [ spanLightI (V2 0 40) (V2 40 40) ] , _rmBound = [ rectNSWE 50 30 0 40 ] , _rmFloor = [makeTileFromPoly poly 2] + , _rmRandPSs = [psRandRanges (10,30) (30,60) (0,2*pi)] } where poly = rectNSWE 80 0 0 40 diff --git a/src/Dodge/Room/Start.hs b/src/Dodge/Room/Start.hs index 47b4ef6ca..bc3ee7a4e 100644 --- a/src/Dodge/Room/Start.hs +++ b/src/Dodge/Room/Start.hs @@ -33,26 +33,28 @@ import System.Random minigunfakeout :: RandomGen g => State g (Tree (Either Room Room)) minigunfakeout = do rcol <- rezColor - ncor <- state $ randomR (1,3) + ncor <- state $ randomR (0,2) roomwithmini <- randomiseAllLinks $ roomRectAutoLinks 150 150 - & rmPmnts %~ ([plRRpt 0 (PutFlIt miniGun),plRRpt 0 (PutFlIt shrinkGun)]++) + & rmPmnts %~ (plRRpt 0 (PutFlIt miniGun):) + randcors <- replicateM ncor $ (fmap Left . randomiseOutLinks) corridor return $ ([Left $ rezBox rcol ,Left door ,Left roomwithmini ,Left door ] - ++ replicate ncor (Left corridor) - ++ [Left keyholeCorridor,Left corridor]) + ++ randcors + ++ [Left $ corridor & rmPmnts %~ ( plRRpt 0 (PutFlIt shrinkGun) :) + ,Left keyholeCorridor,Left corridor]) `treeFromPost` Right door startRoom :: RandomGen g => State g (Tree (Either Room Room)) startRoom = join $ takeOne [ minigunfakeout - --, rezBoxesWp - --, rezBoxesThenWeaponRoom - --, rezBoxThenWeaponRoom - --, rezBoxesWpCrit - --, runPastStart + , rezBoxesWp + , rezBoxesThenWeaponRoom + , rezBoxThenWeaponRoom + , rezBoxesWpCrit + , runPastStart ] runPastStart :: RandomGen g => State g (Tree (Either Room Room)) diff --git a/src/Dodge/WallCreatureCollisions.hs b/src/Dodge/WallCreatureCollisions.hs index b0952c747..59d295c43 100644 --- a/src/Dodge/WallCreatureCollisions.hs +++ b/src/Dodge/WallCreatureCollisions.hs @@ -107,7 +107,7 @@ pushOutFromWall rad cp2 (wp1,wp2) -- isOnWall = circOnSeg wp1 wp2 cp2 rad pushOutFromCorners :: Float -> [(Point2,Point2)] -> Point2 -> Point2 -pushOutFromCorners r ls p = foldr (intersectCirclePoint r) p (map fst ls) +pushOutFromCorners r ls p = foldr (intersectCirclePoint r . fst) p ls --pushOutFromCorners' :: World -> Creature -> Creature --pushOutFromCorners' w cr = cr & crPos .~ newPos