Implement headlamp

This commit is contained in:
2022-05-23 11:24:44 +01:00
parent 46123de69c
commit 4cc8394f2c
4 changed files with 34 additions and 1 deletions
+1
View File
@@ -80,6 +80,7 @@ data CombineType
| FRONTARMOUR | FRONTARMOUR
| WRISTARMOUR | WRISTARMOUR
| BRAINHAT | BRAINHAT
| HEADLAMP
| POWERLEGS | POWERLEGS
| SPEEDLEGS | SPEEDLEGS
| JUMPLEGS | JUMPLEGS
+1
View File
@@ -175,6 +175,7 @@ testInventory :: IM.IntMap Item
testInventory = IM.fromList $ zip [0..] testInventory = IM.fromList $ zip [0..]
[ makeTypeCraftNum 9 PIPE [ makeTypeCraftNum 9 PIPE
, brainHat , brainHat
, headLamp
, autoSonar , autoSonar
, autoRadar , autoRadar
, magShield , magShield
+11 -1
View File
@@ -3,7 +3,7 @@ import Dodge.Data
import Dodge.Creature.Test import Dodge.Creature.Test
--import Shape --import Shape
import ShapePicture import ShapePicture
--import Geometry import Geometry
import Control.Lens import Control.Lens
import Data.Maybe import Data.Maybe
@@ -72,9 +72,19 @@ translateToRightLeg cr = rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStanc
translateToHead :: Creature -> SPic -> SPic translateToHead :: Creature -> SPic -> SPic
translateToHead cr translateToHead cr
| twists cr = translateSPz 20 . translateSPf 0 5 . rotateSP (-1) . translateSPf (negate 2.5) 0.25 | twists cr = translateSPz 20 . translateSPf 0 5 . rotateSP (-1) . translateSPf (negate 2.5) 0.25
. rotateSP 1
| oneH cr = translateSPz 20 . rotateSP 0.5 . translateSPf 2.5 0 | oneH cr = translateSPz 20 . rotateSP 0.5 . translateSPf 2.5 0
. rotateSP (negate 0.5)
| otherwise = translateSPz 20 . translateSPf 2.5 0 | otherwise = translateSPz 20 . translateSPf 2.5 0
translatePointToHead :: Creature -> Point3 -> Point3
translatePointToHead cr
| twists cr = (+.+.+ V3 0 5 20) . rotate3 (-1) . (+.+.+ V3 (negate 2.5) 0.25 0)
. rotate3 1
| oneH cr = (+.+.+ V3 0 0 20) . rotate3 0.5 . (+.+.+ V3 2.5 0 0)
. rotate3 (negate 0.5)
| otherwise = (+.+.+ V3 2.5 0 20)
translateToChest :: Creature -> SPic -> SPic translateToChest :: Creature -> SPic -> SPic
translateToChest cr translateToChest cr
| oneH cr = rotateSP 0.5 | oneH cr = rotateSP 0.5
+21
View File
@@ -2,6 +2,7 @@ module Dodge.Item.Equipment where
import Dodge.Data import Dodge.Data
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Item.Weapon.InventoryDisplay import Dodge.Item.Weapon.InventoryDisplay
import Dodge.LightSource
import Dodge.Default import Dodge.Default
import Dodge.Default.Wall import Dodge.Default.Wall
import Dodge.Creature.Test import Dodge.Creature.Test
@@ -219,6 +220,26 @@ brainHat = defaultEquipment
} }
& itUse . eqSite .~ GoesOnHead & itUse . eqSite .~ GoesOnHead
headLamp :: Item
headLamp = defaultEquipment
{ _itType = HEADLAMP
, _itName = "HEADLAMP"
, _itEquipPict = pictureOnEquip (noPic $ colorSH yellow $
translateSHf 5 2 (upperPrismPoly 8 $ rectWH 4 1)
<> translateSHf 5 (-2) (upperPrismPoly 8 $ rectWH 4 1)
-- <> (upperPrismPoly 3 $ rectWH 4 4)
)
, _itEffect = NoItEffect
, _itID = Nothing
}
& itUse . eqUse .~ createHeadLamp
& itUse . eqSite .~ GoesOnHead
createHeadLamp :: Creature -> Int -> World -> World
createHeadLamp cr _ w = w
& tempLightSources .:~ tlsTimeRadColPos 1 200 0.5
((_crPos cr `v2z` 0) +.+.+ rotate3 (_crDir cr) (translatePointToHead cr (V3 5 0 3)))
powerLegs :: Item powerLegs :: Item
powerLegs = defaultEquipment powerLegs = defaultEquipment
{ _itType = POWERLEGS { _itType = POWERLEGS