Rename protypes/basic to default

This commit is contained in:
jgk
2021-03-26 13:33:55 +01:00
parent c4ce354382
commit 420cf7fc4b
11 changed files with 125 additions and 122 deletions
+4 -1
View File
@@ -328,7 +328,7 @@ zoneOfSight :: World -> [(Int,Int)]
zoneOfSight w = [(a,b) | a <- [minimum xs .. maximum xs]
, b <- [minimum ys .. maximum ys]
]
where (xs,ys) = unzip $ map zoneOfPoint $ screenPolygon w ++ [_cameraCenter w]
where (xs,ys) = unzip $ map zoneOfPoint $ screenPolygon w ++ [_cameraViewFrom w]
screenPolygon :: World -> [Point2]
screenPolygon w = [tr,tl,bl,br]
@@ -751,6 +751,9 @@ cartePosToScreen w = doWindowScale . doRotate . doZoom . doTranslate
mouseWorldPos :: World -> Point2
mouseWorldPos w = _cameraPos w +.+ (1/_cameraZoom w) *.* rotateV (_cameraRot w) (_mousePos w)
mouseCartePos :: World -> Point2
mouseCartePos w = _carteCenter w +.+ (1/_carteZoom w) *.* rotateV (_carteRot w) (_mousePos w)
logistic :: Float -> Float -> Float -> (Float -> Float)
logistic x0 l k x = l / (1 + exp (k*(x0 - x)))
+41 -41
View File
@@ -3,7 +3,7 @@ module Dodge.Critters where
import Dodge.Data
import Dodge.AIs
import Dodge.CreatureState
import Dodge.Prototypes
import Dodge.Default
import Dodge.Base
import Dodge.Item.Weapon
import Dodge.Item.Consumable
@@ -37,87 +37,87 @@ colouredEnemy col = pictures [color col $ circleSolid 10, circLine 10]
-- armouredSwarmCrit :: Int -> Creature
-- armouredSwarmCrit n = (basicCreature n)
-- armouredSwarmCrit n = (defaultCreature n)
-- -- { _crUpdate = encircleAI' n
-- { _crUpdate = swarmAI lineOrth n
-- , _crHP = 30
-- , _crPict = equipOnTop goalPict
-- , _crState = basicState {_goals = [[]], _faction = EncircleFlock}
-- , _crState = defaultState {_goals = [[]], _faction = EncircleFlock}
-- , _crInv = IM.fromList [(0,frontArmour)]
-- }
--
-- swarmCrit :: Int -> Creature
-- swarmCrit n = (basicCreature n)
-- swarmCrit n = (defaultCreature n)
-- -- { _crUpdate = encircleAI' n
-- { _crUpdate = swarmAI lineOrth n
-- , _crHP = 30
-- , _crPict = equipOnTop goalPict
-- , _crState = basicState {_goals = [[]], _faction = EncircleFlock}
-- , _crState = defaultState {_goals = [[]], _faction = EncircleFlock}
-- , _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
-- }
--
-- encircleCrit :: Int -> Creature
-- encircleCrit n = (basicCreature n)
-- encircleCrit n = (defaultCreature n)
-- -- { _crUpdate = encircleAI' n
-- { _crUpdate = swarmAI lineOrth n
-- , _crHP = 30
-- , _crPict = equipOnTop goalPict
-- , _crState = basicState {_goals = [[]], _faction = EncircleFlock}
-- , _crState = defaultState {_goals = [[]], _faction = EncircleFlock}
-- , _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
-- }
--
spawnerCrit :: Creature
spawnerCrit = basicCreature
spawnerCrit = defaultCreature
{ _crUpdate = stateUpdate $ spawnerAI chaseCrit
, _crHP = 300
, _crPict = enemyPict blue
, _crState = basicState {_goals = [[WaitFor 0]]
, _crState = defaultState {_goals = [[WaitFor 0]]
}
, _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
}
--
-- guardMelee :: Int -> Creature
-- guardMelee n = (basicCreature n)
-- guardMelee n = (defaultCreature n)
-- { _crUpdate = meleeAI' n
-- , _crHP = 30
-- , _crPict = equipOnTop goalPict
-- , _crState = basicState {_goals = [[InitGuard]]
-- , _crState = defaultState {_goals = [[InitGuard]]
-- ,_faction = ChaseCritters}
-- , _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
-- }
smallChaseCrit :: Creature
smallChaseCrit = basicCreature
smallChaseCrit = defaultCreature
{ _crUpdate = stateUpdate chaseAI
, _crHP = 1
, _crRad = 4
--, _crPict = equipOnTop goalPict
, _crPict = enemyPict green
, _crState = basicState {_goals = [[Wait]]
, _crState = defaultState {_goals = [[Wait]]
,_faction = ChaseCritters}
, _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
, _crCorpse = onLayer CorpseLayer $ color (greyN 0.5) $ circleSolid 4
}
chaseCrit :: Creature
chaseCrit = basicCreature
chaseCrit = defaultCreature
{ _crUpdate = stateUpdate chaseAI
, _crHP = 300
-- , _crPict = goalPict -- enemyPict green
, _crPict = enemyPict green
, _crState = basicState {_goals = [[Wait]]
, _crState = defaultState {_goals = [[Wait]]
,_faction = ChaseCritters}
, _crInv = IM.empty
-- IM.fromList [(0,frontArmour)]
}
armourChaseCrit :: Creature
armourChaseCrit = basicCreature
armourChaseCrit = defaultCreature
{ _crUpdate = stateUpdate chaseAI
, _crHP = 300
, _crPict = enemyPict green
, _crState = basicState {_goals = [[Wait]]}
, _crState = defaultState {_goals = [[Wait]]}
, _crInv = IM.fromList [(0,frontArmour)]
}
miniGunCrit :: Creature
miniGunCrit = basicCreature
miniGunCrit = defaultCreature
{ _crPict = enemyPict red
--, _crUpdate = checkDeadStopSound n . shooterFootsteps n . makeStateAI autoShooterAI n
, _crUpdate = stateUpdate miniAI
@@ -126,11 +126,11 @@ miniGunCrit = basicCreature
, _crInvSel = 0
, _crRad = 10
--, _crState = ShooterWait
, _crState = basicState {_goals = [[InitGuard]]}
, _crState = defaultState {_goals = [[InitGuard]]}
, _crHP = 500
}
longCrit :: Creature
longCrit = basicCreature
longCrit = defaultCreature
{ _crPict = enemyPict red
--, _crUpdate = checkDeadStopSound n . shooterFootsteps n . makeStateAI autoShooterAI n
, _crUpdate = stateUpdate sniperAI
@@ -139,11 +139,11 @@ longCrit = basicCreature
, _crInvSel = 0
, _crRad = 10
--, _crState = ShooterWait
, _crState = basicState {_goals = [[InitGuard]]}
, _crState = defaultState {_goals = [[InitGuard]]}
, _crHP = 300
}
multGunCrit :: Creature
multGunCrit = basicCreature
multGunCrit = defaultCreature
{ _crPict = enemyPict red
--, _crUpdate = checkDeadStopSound n . shooterFootsteps n . makeStateAI autoShooterAI n
, _crUpdate = stateUpdate (twitchMissAI 300 350)
@@ -152,11 +152,11 @@ multGunCrit = basicCreature
, _crInvSel = 0
, _crRad = 10
--, _crState = ShooterWait
, _crState = basicState {_goals = [[InitGuard]]}
, _crState = defaultState {_goals = [[InitGuard]]}
, _crHP = 300
}
launcherCrit :: Creature
launcherCrit = basicCreature
launcherCrit = defaultCreature
{ _crPict = enemyPict red
--, _crUpdate = checkDeadStopSound n . shooterFootsteps n . makeStateAI autoShooterAI n
, _crUpdate = stateUpdate (launcherAI 150 200)
@@ -165,11 +165,11 @@ launcherCrit = basicCreature
, _crInvSel = 0
, _crRad = 10
--, _crState = ShooterWait
, _crState = basicState {_goals = [[Init]]}
, _crState = defaultState {_goals = [[Init]]}
, _crHP = 300
}
spreadGunCrit :: Creature
spreadGunCrit = basicCreature
spreadGunCrit = defaultCreature
{ _crPict = enemyPict red
--, _crUpdate = checkDeadStopSound n . shooterFootsteps n . makeStateAI autoShooterAI n
, _crUpdate = stateUpdate chargeAI
@@ -178,11 +178,11 @@ spreadGunCrit = basicCreature
, _crInvSel = 0
, _crRad = 10
--, _crState = ShooterWait
, _crState = basicState {_goals = [[Init]]}
, _crState = defaultState {_goals = [[Init]]}
, _crHP = 300
}
pistolCrit :: Creature
pistolCrit = basicCreature
pistolCrit = defaultCreature
{ _crPict = enemyPict red
--, _crUpdate = checkDeadStopSound n . shooterFootsteps n . makeStateAI autoShooterAI n
, _crUpdate = stateUpdate (dodgeAI 150 200)
@@ -191,11 +191,11 @@ pistolCrit = basicCreature
, _crInvSel = 0
, _crRad = 10
--, _crState = ShooterWait
, _crState = basicState {_goals = [[InitGuard]]}
, _crState = defaultState {_goals = [[InitGuard]]}
, _crHP = 500
}
autoCrit :: Creature
autoCrit = basicCreature
autoCrit = defaultCreature
{ _crPict = enemyPict red
--, _crUpdate = checkDeadStopSound n . shooterFootsteps n . makeStateAI autoShooterAI n
, _crUpdate = stateUpdate basicShooterAI
@@ -204,7 +204,7 @@ autoCrit = basicCreature
, _crInvSel = 0
, _crRad = 10
--, _crState = ShooterWait
, _crState = basicState {_goals = [[InitGuard]]}
, _crState = defaultState {_goals = [[InitGuard]]}
, _crHP = 300
}
addArmour :: Creature -> Creature
@@ -212,25 +212,25 @@ addArmour = over crInv insarmour
where insarmour xs = IM.insert i frontArmour xs
where i = newKey xs
--closeShooterCrit :: Int -> Creature
--closeShooterCrit n = (basicCreature n)
--closeShooterCrit n = (defaultCreature n)
-- { _crPos = startPos
-- , _crPict = equipOnTop goalPict
-- , _crUpdate = closeShooterAI n
-- , _crInv = IM.fromList [(0,ltAutoGun)]
-- , _crInvSel = 0
-- , _crRad = 10
-- , _crState = basicState {_goals = [[InitGuard]]}
-- , _crState = defaultState {_goals = [[InitGuard]]}
-- , _crHP = 50
-- }
-- where startPos = (20*fromIntegral n-550,0)
barrel :: Creature
barrel = basicCreature
barrel = defaultCreature
{ _crUpdate = updateBarrel
, _crHP = 500
, _crPict = \ _ -> onLayer CrLayer $ pictures [ color orange $ circleSolid 10
, color (greyN 0.5) $ circleSolid 8
]
, _crState = basicState {_goals = [[Wait]]
, _crState = defaultState {_goals = [[Wait]]
,_faction = ChaseCritters
,_crSpState = Barrel []
}
@@ -238,13 +238,13 @@ barrel = basicCreature
}
explosiveBarrel :: Creature
explosiveBarrel = basicCreature
explosiveBarrel = defaultCreature
{ _crUpdate = updateExpBarrel
, _crHP = 400
, _crPict = \ _ -> onLayer CrLayer $ pictures [ color orange $ circleSolid 10
, color red $ circleSolid 8
]
, _crState = basicState {_goals = [[Wait]]
, _crState = defaultState {_goals = [[Wait]]
,_faction = ChaseCritters
,_crSpState = Barrel []
,_crApplyDamage = \_ c -> (id, c)
@@ -273,7 +273,7 @@ frontArmouredPict = const $ pictures [ color (greyN 0.8) $ circleSolid 20
]
--packCrits :: (Int -> World -> World) -> [Int] -> [Creature]
--packCrits ai is = [(basicCreature i)
--packCrits ai is = [(defaultCreature i)
-- { _crPos = (150,10+20*fromIntegral i)
-- , _crPict = swarmPict
-- , _crUpdate = ai i
@@ -285,7 +285,7 @@ frontArmouredPict = const $ pictures [ color (greyN 0.8) $ circleSolid 20
-- | i <- is]
--queenBeeCrit :: Int -> Creature
--queenBeeCrit cID = (basicCreature cID)
--queenBeeCrit cID = (defaultCreature cID)
-- { _crRad = 20
-- , _crCorpse = color (greyN 0.5) $ circleSolid 20
-- , _crPict = const $ pictures [color black $ circSolid 20
@@ -297,7 +297,7 @@ frontArmouredPict = const $ pictures [ color (greyN 0.8) $ circleSolid 20
-- }
--antCrit :: Int -> Creature
--antCrit cID = (basicCreature cID)
--antCrit cID = (defaultCreature cID)
-- { _crPos = (0,100 + 3 * fromIntegral cID)
-- , _crUpdate = checkDead cID . makeStateAI (antAI 2) cID
-- , _crState = AntMove 50
@@ -337,7 +337,7 @@ goalPict cr = let r = _crRad cr in case _crState cr of
_ -> sizeColEnemy r (light $ dim green)
startCr :: Creature
startCr = basicCreature
startCr = defaultCreature
{ _crPos = (0,0)
, _crOldPos = (0,0)
, _crDir = 0
+2 -2
View File
@@ -42,7 +42,7 @@ data World = World
, _cameraAimTime :: Int
, _cameraRot :: !Float
, _cameraZoom :: !Float
, _cameraCenter :: !Point2
, _cameraViewFrom :: !Point2
, _creatures :: IM.IntMap Creature
, _creaturesZone :: IM.IntMap (IM.IntMap (IM.IntMap Creature))
, _itemPositions :: IM.IntMap ItemPos
@@ -84,7 +84,7 @@ data World = World
, _tempLightSources :: ![TempLightSource]
, _closeActiveObjects :: [Either FloorItem Button]
, _seenLocations :: IM.IntMap (World -> Point2,String)
-- , _remap :: Keycode -> Keycode
, _selLocation :: Int
}
data Corpse = Corpse
@@ -1,5 +1,5 @@
{-# LANGUAGE BangPatterns #-}
module Dodge.Prototypes where
module Dodge.Default where
import Dodge.Item.Weapon.Recock
@@ -19,17 +19,16 @@ import qualified Data.Map as M
import qualified Data.Set as S
import Data.Graph.Inductive.Graph hiding ((&))
import Data.List
--import Dodge.KeyEvents (keyremapDefault)
-- defalt datatypes / prototypes {{{
basicWall = Wall { _wlLine = [(0,0),(50,0)]
defaultWall = Wall { _wlLine = [(0,0),(50,0)]
, _wlID = 0
, _wlColor = greyN 0.6
, _wlDraw = Nothing
, _wlSeen = False
, _wlIsSeeThrough = False
}
basicAutoDoor = Door { _wlLine = [(0,0),(50,0)]
defaultAutoDoor = Door { _wlLine = [(0,0),(50,0)]
, _wlID = 0
, _doorMech = id
, _wlColor = light $ dim $ dim $ dim $ yellow
@@ -38,7 +37,7 @@ basicAutoDoor = Door { _wlLine = [(0,0),(50,0)]
, _wlIsSeeThrough = False
, _doorPathable = True
}
basicDoor = Door { _wlLine = [(0,0),(50,0)]
defaultDoor = Door { _wlLine = [(0,0),(50,0)]
, _wlID = 0
, _doorMech = id
, _wlColor = light $ dim $ dim $ dim $ yellow
@@ -47,8 +46,8 @@ basicDoor = Door { _wlLine = [(0,0),(50,0)]
, _wlIsSeeThrough = False
, _doorPathable = False
}
basicCreature :: Creature
basicCreature = Creature
defaultCreature :: Creature
defaultCreature = Creature
{ _crPos = (0,0)
, _crOldPos = (0,0)
, _crDir = 0
@@ -61,18 +60,18 @@ basicCreature = Creature
, _crMaxHP = 150
, _crInv = IM.empty
, _crInvSel = 0
, _crState = basicState
, _crState = defaultState
, _crCorpse = onLayer CorpseLayer $ color (greyN 0.5) $ circleSolid 10
}
basicState = CrSt { _goals = []
defaultState = CrSt { _goals = []
, _stance = Stance {_carriage=Walking 0 0,_posture=AtEase}
, _faction = NoFaction
, _crDamage = []
, _crPastDamage = 0
, _crSpState = GenCr
, _crApplyDamage = basicApplyDamage'
, _crApplyDamage = defaultApplyDamage'
}
basicEquipment = Equipment
defaultEquipment = Equipment
{ _itIdentity = Generic
, _itName = "genericEquipment"
, _itMaxStack = 1
@@ -84,13 +83,13 @@ basicEquipment = Equipment
, _itID = Nothing
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itZoom = basicItZoom
, _itZoom = defaultItZoom
, _itInvColor = yellow
, _itInvDisplay = _itName
}
basicItZoom = ItZoom 20 0.2 1 20 0.2 1
basicConsumable :: Item
basicConsumable = Consumable
defaultItZoom = ItZoom 20 0.2 1 20 0.2 1
defaultConsumable :: Item
defaultConsumable = Consumable
{ _itIdentity = Generic
, _itName = "genericConsumable"
, _itMaxStack = 9
@@ -104,16 +103,16 @@ basicConsumable = Consumable
, _itEffect = wpRecock
, _itHammer = HammerUp
}
basicApplyDamage' :: [DamageType] -> Creature -> (World -> World, Creature)
basicApplyDamage' ds cr = (id, doPoisonDam $ foldr (\d c -> snd $ basicApplyDamage d c) cr ds')
defaultApplyDamage' :: [DamageType] -> Creature -> (World -> World, Creature)
defaultApplyDamage' ds cr = (id, doPoisonDam $ foldr (\d c -> snd $ defaultApplyDamage d c) cr ds')
where (ps,ds') = partition isPoison ds
isPoison (PoisonDam {}) = True
isPoison _ = False
poisonDam = quot (max 0 (sum (map _dmAmount ps) - 0)) 10
doPoisonDam = over crHP (\hp -> hp - poisonDam)
basicApplyDamage :: DamageType -> Creature -> (World -> World, Creature)
basicApplyDamage (Concussive amount from push pushexp pushRad) cr
defaultApplyDamage :: DamageType -> Creature -> (World -> World, Creature)
defaultApplyDamage (Concussive amount from push pushexp pushRad) cr
= ( id
, over crHP (\hp -> hp - amount)
$ over crPos (+.+ (pushAmount *.* safeNormalizeV (_crPos cr -.- from)))
@@ -123,19 +122,19 @@ basicApplyDamage (Concussive amount from push pushexp pushRad) cr
= 0
| otherwise = min 5 $
(push*5*pushRad / (dist (_crPos cr) from * _crMass cr))**pushexp
basicApplyDamage (TorqueDam amount rot) cr
defaultApplyDamage (TorqueDam amount rot) cr
= ( id
, over crHP (\hp -> hp - amount) $ over crDir (+ rot) cr)
basicApplyDamage (PushDam amount pback) cr
defaultApplyDamage (PushDam amount pback) cr
= ( id
, over crHP (\hp -> hp - amount) $ over crPos (+.+ ((1/_crMass cr) *.* pback )) cr
)
basicApplyDamage dt cr
defaultApplyDamage dt cr
= ( id , over crHP (\hp -> hp - _dmAmount dt) cr )
basicFlIt = FlIt {_flItRot=0,_flIt = basicIt, _flItPos = (0,0), _flItID = 0}
basicIt = Consumable
defaultFlIt = FlIt {_flItRot=0,_flIt = defaultIt, _flItPos = (0,0), _flItID = 0}
defaultIt = Consumable
{ _itIdentity = Medkit25
, _itName = "basicIt"
, _itName = "defaultIt"
, _itMaxStack = 3
, _itAmount = 2
, _cnEffect = \ _ -> return
@@ -147,7 +146,7 @@ basicIt = Consumable
, _itEffect = NoItEffect
, _itHammer = HammerUp
}
basicButton = Button
defaultButton = Button
{ _btPict = onLayer WlLayer $ color red $ polygon $ rectNSEW 5 (-5) 10 (-10)
, _btPos = (0,0)
, _btRot = 0
@@ -159,7 +158,7 @@ basicButton = Button
, _btText = "Button"
, _btState = BtOff
}
basicPT = Projectile
defaultPT = Projectile
{ _ptPos = (0,0)
, _ptStartPos = (0,0)
, _ptVel = (0,0)
@@ -167,7 +166,7 @@ basicPT = Projectile
, _ptID = 0
, _ptUpdate = id
}
basicPP = PressPlate
defaultPP = PressPlate
{ _ppPict = onLayer PressPlateLayer $ color (dim $ dim $ bright $ blue) $ circleSolid 5
, _ppPos = (0,0)
, _ppRot = 0
@@ -177,14 +176,14 @@ basicPP = PressPlate
}
-- }}}
basicWorld = World
defaultWorld = World
{ _keys = S.empty
, _mouseButtons = S.empty
, _cameraPos = (0,0)
, _cameraAimTime = 0
, _cameraRot = 0
, _cameraZoom = 1
, _cameraCenter = (0,0)
, _cameraViewFrom = (0,0)
, _creatures = IM.empty
, _creaturesZone = IM.empty
, _clouds = IM.empty
@@ -217,7 +216,7 @@ basicWorld = World
, _pathPoints = IM.empty
, _pathInc = M.empty
, _windowX = 800
, _windowY = 840
, _windowY = 600
, _carteDisplay = False
, _carteCenter = (0,0)
, _carteZoom = 0.5
@@ -229,6 +228,7 @@ basicWorld = World
[(0, (_crPos . you, "CURRENT POSITION"))
,(1, (const (0,0) , "START POSITION"))
]
, _selLocation = 0
}
youLight =
-- LS {_lsEff = \w _ p -> (logistic 1 1 1 (d p w * 0.01) )
+2 -2
View File
@@ -1,6 +1,6 @@
module Dodge.Initialisation where
-- imports {{{
import Dodge.Prototypes
import Dodge.Default
import Dodge.Data
import Dodge.Critters
import Dodge.Base
@@ -23,7 +23,7 @@ firstWorld :: IO World
firstWorld = return $ generateFromTree lev1 $ initialWorld
initialWorld :: World
initialWorld = basicWorld
initialWorld = defaultWorld
{ _keys = S.empty
, _cameraPos = (0,0)
, _cameraRot = 0
+2 -2
View File
@@ -2,7 +2,7 @@ module Dodge.Item.Consumable
where
import Dodge.Data
import Dodge.Base
import Dodge.Prototypes
import Dodge.Default
import Dodge.SoundLogic
import Dodge.Item.Draw
@@ -14,7 +14,7 @@ import Control.Lens
import qualified Data.IntMap.Strict as IM
medkit :: Int -> Item
medkit i = basicConsumable
medkit i = defaultConsumable
{ _itIdentity = Medkit25
, _itName = "MEDKIT" ++ show i
, _itMaxStack = 9
+27 -27
View File
@@ -12,7 +12,7 @@ import Dodge.RandomHelp
import Dodge.WorldEvent
import Dodge.Debug
import Dodge.WallCreatureCollisions
import Dodge.Prototypes
import Dodge.Default
import Dodge.Item.Draw
@@ -73,7 +73,7 @@ pistol = Weapon
, _itMaxStack = 1
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itZoom = basicItZoom
, _itZoom = defaultItZoom
, _itEquipPict = drawWeapon $ color green $ polygon $ rectNESW 3 3 (-3) (-3)
, _itScrollUp = const id
, _itScrollDown = const id
@@ -116,7 +116,7 @@ autoGun = defaultGun
, _itMaxStack = 1
, _itAimingSpeed = 0.4
, _itAimingRange = 1
, _itZoom = basicItZoom {_itAimZoomFac = 1.5}
, _itZoom = defaultItZoom {_itAimZoomFac = 1.5}
, _itEquipPict = drawWeapon $ color red $ polygon $ rectNESW 4 4 (-4) (-4)
, _itEffect = NoItEffect
, _itAttachment = Just $ ItMode 0
@@ -206,7 +206,7 @@ teslaGun = defaultAutoGun
, _itAmount = 1
, _itMaxStack = 1
, _itAimingSpeed = 0.4
, _itZoom = basicItZoom
, _itZoom = defaultItZoom
, _itAimingRange = 0
, _itEquipPict = drawWeapon $ color blue $ pictures [polygon $ rectNESW 7 3 1 (-3)
,polygon $ rectNESW (-1) 3 (-7) (-3)
@@ -345,7 +345,7 @@ bezierGun = defaultAutoGun
, _itScrollDown = removeItAttachment 0
, _itHammer = HammerUp
, _itEffect = bezierRecock
, _itZoom = basicItZoom
, _itZoom = defaultItZoom
, _itAimingRange = 0
}
@@ -451,7 +451,7 @@ ltAutoGun = defaultAutoGun
, _itMaxStack = 1
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itZoom = basicItZoom
, _itZoom = defaultItZoom
, _itEquipPict = drawWeapon $ color green $ pictures [polygon $ rectNSWE 4 (-4) (-4) 0
,circleSolid 4
]
@@ -542,7 +542,7 @@ multGun = defaultGun
, _itMaxStack = 1
, _itAimingSpeed = 0.4
, _itAimingRange = 1
, _itZoom = basicItZoom {_itAimZoomFac = 1.5}
, _itZoom = defaultItZoom {_itAimZoomFac = 1.5}
, _itEquipPict = drawWeapon $ multGunPic
}
where multGunPic = color red $ pictures
@@ -576,7 +576,7 @@ longGun = defaultGun
, _itMaxStack = 1
, _itAimingSpeed = 0.2
, _itAimingRange = 1
, _itZoom = basicItZoom {_itAimZoomMax = 0.5, _itAimZoomMin = 0.5}
, _itZoom = defaultItZoom {_itAimZoomMax = 0.5, _itAimZoomMin = 0.5}
, _itEquipPict = drawWeapon $ pictures [color orange $ polygon $ rectNESW 3 6 (-3) (-6) ]
, _itScrollUp = startZoomInLongGun
, _itScrollDown = startZoomOutLongGun
@@ -610,7 +610,7 @@ poisonSprayer = defaultAutoGun
, _itMaxStack = 1
, _itAimingSpeed = 0.2
, _itAimingRange = 0
, _itZoom = basicItZoom
, _itZoom = defaultItZoom
, _itEquipPict = drawWeapon $ color yellow $ polygon $ rectNESW 4 4 (-4) (-4)
}
@@ -633,7 +633,7 @@ flamer = defaultAutoGun
-- , _itAimingSpeed = 1
-- , _itAimingSpeed = 0.2
, _itAimingRange = 0
, _itZoom = basicItZoom {_itAimZoomMax = 5, _itAimZoomMin = 1.5}
, _itZoom = defaultItZoom {_itAimZoomMax = 5, _itAimZoomMin = 1.5}
, _itEquipPict = drawWeapon $ color yellow $ polygon $ rectNESW 4 4 (-4) (-4)
, _itAttachment = Nothing
}
@@ -1007,7 +1007,7 @@ retireRemoteBomb itid 0 ptid w
= set (pointToItem (_itemPositions w IM.! itid) . itAttachment . _Just . scopePos)
(0,0)
$ set (pointToItem (_itemPositions w IM.! itid) . itZoom)
basicItZoom
defaultItZoom
$ set (pointToItem (_itemPositions w IM.! itid) . twFire)
throwRemoteBomb
(w & projectiles %~ IM.delete ptid)
@@ -1047,7 +1047,7 @@ moveRemoteBomb itid time pID w
-> w' & creatures . ix cid . crInv . ix invid . itAttachment
. _Just . scopePos .~ (newPos -.- _crPos (_creatures w' IM.! cid))
& creatures . ix cid . crInv . ix invid . itZoom
.~ (basicItZoom {_itAimZoomMax = 0.5, _itAimZoomMin = 0.5})
.~ (defaultItZoom {_itAimZoomMax = 0.5, _itAimZoomMin = 0.5})
_ -> w'
pt = _projectiles w IM.! pID
oldPos = _ptPos pt
@@ -1230,7 +1230,7 @@ grenade = Throwable
, _twFire = throwGrenade fuseTime
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itZoom = basicItZoom {_itAimZoomMax = (f fuseTime), _itAimZoomMin = (f fuseTime)}
, _itZoom = defaultItZoom {_itAimZoomMax = (f fuseTime), _itAimZoomMin = (f fuseTime)}
, _itEquipPict = drawWeapon $ grenadePic fuseTime
, _itID = Nothing
, _itAttachment = Just $ ItFuse fuseTime
@@ -1250,7 +1250,7 @@ increaseFuse fuse i w = w & creatures . ix 0 . crInv . ix itRef . itScrollUp .~
& creatures . ix 0 . crInv . ix itRef . itName .~ "GRENADE " ++ show newTime
& creatures . ix 0 . crInv . ix itRef . itAttachment .~ Just (ItFuse newTime)
& creatures . ix 0 . crInv . ix itRef . itZoom
.~ (basicItZoom {_itAimZoomMax = zm, _itAimZoomMin = zm})
.~ (defaultItZoom {_itAimZoomMax = zm, _itAimZoomMin = zm})
where itRef = fromMaybe (-2) $ w ^? creatures . ix 0 . crInvSel
newTime = min (fuse + 5) 90
zm = 50 / fromIntegral newTime
@@ -1262,7 +1262,7 @@ decreaseFuse fuse i w = w & creatures . ix 0 . crInv . ix itRef . itScrollUp .~
& creatures . ix 0 . crInv . ix itRef . itName .~ "GRENADE " ++ show newTime
& creatures . ix 0 . crInv . ix itRef . itAttachment .~ Just (ItFuse newTime)
& creatures . ix 0 . crInv . ix itRef . itZoom
.~ (basicItZoom {_itAimZoomMax = zm, _itAimZoomMin = zm})
.~ (defaultItZoom {_itAimZoomMax = zm, _itAimZoomMin = zm})
where itRef = fromMaybe (-2) $ w ^? creatures . ix 0 . crInvSel
newTime = max (fuse - 5) 20
zm = 50 / fromIntegral newTime
@@ -1648,7 +1648,7 @@ pipe = Craftable
, _itInvDisplay = _itName
, _itInvColor = green
}
magShield = basicEquipment
magShield = defaultEquipment
{ _itIdentity = MagShield
, _itName = "MAGSHIELD"
, _itMaxStack = 1
@@ -1657,7 +1657,7 @@ magShield = basicEquipment
, _itEquipPict = \cr _ -> blank
, _itID = Nothing
}
flameShield = basicEquipment
flameShield = defaultEquipment
{ _itIdentity = FlameShield
, _itName = "FLAMESHIELD"
, _itMaxStack = 1
@@ -1668,7 +1668,7 @@ flameShield = basicEquipment
)
, _itID = Nothing
}
frontArmour = basicEquipment
frontArmour = defaultEquipment
{ _itIdentity = FrontArmour
, _itName = "FARMOUR"
, _itMaxStack = 1
@@ -1685,7 +1685,7 @@ frontArmour = basicEquipment
, _itEffect = NoItEffect
, _itID = Nothing
}
jetPack = basicEquipment
jetPack = defaultEquipment
{ _itIdentity = JetPack
, _itName = "JETPACK"
, _itMaxStack = 1
@@ -1700,7 +1700,7 @@ jetPack = basicEquipment
}
latchkey :: Int -> Item
latchkey n = basicEquipment
latchkey n = defaultEquipment
{ _itIdentity = Generic
, _itName = "KEY "++show n
, _itMaxStack = 1
@@ -1712,7 +1712,7 @@ latchkey n = basicEquipment
, _itID = Nothing
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itZoom = basicItZoom
, _itZoom = defaultItZoom
, _itInvColor = yellow
, _itInvDisplay = _itName
}
@@ -1859,7 +1859,7 @@ radar = defaultGun
, _itAmount = 1
, _itMaxStack = 1
, _itAimingRange = 1
, _itZoom = basicItZoom {_itAimZoomMax = 1, _itZoomMax = 1}
, _itZoom = defaultItZoom {_itAimZoomMax = 1, _itZoomMax = 1}
, _itEquipPict = drawWeapon $ color blue $ polygon $ rectNESW 5 5 (-5) (-5)
}
@@ -1880,7 +1880,7 @@ sonar = defaultGun
, _itAmount = 1
, _itMaxStack = 1
, _itAimingRange = 1
, _itZoom = basicItZoom {_itAimZoomMax = 1, _itZoomMax = 1}
, _itZoom = defaultItZoom {_itAimZoomMax = 1, _itZoomMax = 1}
, _itEquipPict = drawWeapon $ color blue $ polygon $ rectNESW 5 5 (-5) (-5)
}
@@ -1968,7 +1968,7 @@ mvRadar x p w pt = (putBlips w, Just $ pt {_ptDraw = const pic
| otherwise = fromIntegral x / 10
colHelper y = color (withAlpha (y * globalAlpha) red)
autoSonar = basicEquipment
autoSonar = defaultEquipment
{ _itIdentity = Generic
, _itName = "AUTOSONAR"
, _itMaxStack = 1
@@ -1979,9 +1979,9 @@ autoSonar = basicEquipment
, _itID = Nothing
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itZoom = basicItZoom {_itAimZoomMax = 1, _itZoomMax = 1}
, _itZoom = defaultItZoom {_itAimZoomMax = 1, _itZoomMax = 1}
}
autoRadar = basicEquipment
autoRadar = defaultEquipment
{ _itIdentity = Generic
, _itName = "AUTORADAR"
, _itMaxStack = 1
@@ -1992,7 +1992,7 @@ autoRadar = basicEquipment
, _itID = Nothing
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itZoom = basicItZoom {_itAimZoomMax = 1, _itZoomMax = 1}
, _itZoom = defaultItZoom {_itAimZoomMax = 1, _itZoomMax = 1}
}
autoRadarEffect :: ItEffect
+2 -2
View File
@@ -2,7 +2,7 @@ module Dodge.LevelGen.StaticWalls
where
import Dodge.Data
import Dodge.Base
import Dodge.Prototypes
import Dodge.Default
import Geometry
@@ -49,7 +49,7 @@ createPolyWall (p1,p2) walls =
p4 = p3 +.+ 10000 *.* vNormal (p2 -.- p1)
maybeW = wallOnLine p3 p4 walls
k = newKey walls
newWall = basicWall {_wlLine = [p1,p2], _wlID = k}
newWall = defaultWall {_wlLine = [p1,p2], _wlID = k}
-- given a segment and a wall, adds a cut point to the wall if it intersects the
-- segment
+3 -3
View File
@@ -119,9 +119,9 @@ lineOnScreenCone :: World -> [Point2] -> Bool
lineOnScreenCone w (p1:p2:_) = errorPointInPolygon 8 p1 sp || errorPointInPolygon 9 p2 sp
|| any (isJust . uncurry (intersectSegSeg' p1 p2)) sps
where sp' = screenPolygon w
vp = _cameraCenter w
vp = _cameraViewFrom w
sp | pointInPolygon vp sp' = sp'
| otherwise = orderPolygon $ (_cameraCenter w : sp')
| otherwise = orderPolygon $ (_cameraViewFrom w : sp')
sps = zip sp (tail sp ++ [head sp])
@@ -138,7 +138,7 @@ drawWallFace w wall
where
(x:y:_) = _wlLine wall
points = extendConeToScreenEdge w sightFrom (x,y)
sightFrom = _cameraCenter w
sightFrom = _cameraViewFrom w
-- the following assumes that the point a is inside the screen
-- it still works otherwise, but it might intersect two points:
+9 -9
View File
@@ -6,7 +6,7 @@ import Dodge.Critters
import Dodge.LevelGen
import Dodge.Base
import Dodge.RandomHelp
import Dodge.Prototypes
import Dodge.Default
import Dodge.Path
import Dodge.Layout
import Dodge.LightSources
@@ -438,14 +438,14 @@ randFirstWeapon :: State StdGen PSType
randFirstWeapon = do
r <- state $ randomR (-pi,pi)
takeOne $ map PutFlIt
[ basicFlIt {_flItRot=r,_flIt = pistol}
, basicFlIt {_flItRot=r,_flIt = ltAutoGun}
-- , basicFlIt {_flItRot=r,_flIt = autoGun}
, basicFlIt {_flItRot=r,_flIt = spreadGun}
, basicFlIt {_flItRot=r,_flIt = multGun}
, basicFlIt {_flItRot=r,_flIt = launcher}
-- , basicFlIt {_flItRot=r,_flIt = lasGun}
-- , basicFlIt {_flItRot=r,_flIt = flamer}
[ defaultFlIt {_flItRot=r,_flIt = pistol}
, defaultFlIt {_flItRot=r,_flIt = ltAutoGun}
-- , defaultFlIt {_flItRot=r,_flIt = autoGun}
, defaultFlIt {_flItRot=r,_flIt = spreadGun}
, defaultFlIt {_flItRot=r,_flIt = multGun}
, defaultFlIt {_flItRot=r,_flIt = launcher}
-- , defaultFlIt {_flItRot=r,_flIt = lasGun}
-- , defaultFlIt {_flItRot=r,_flIt = flamer}
]
--randC1 :: State StdGen PSType
+2 -2
View File
@@ -25,7 +25,7 @@ updateAimTime w
moveCamera :: World -> World
moveCamera w = w & cameraPos .~ idealPos
& cameraCenter .~ sightFrom
& cameraViewFrom .~ sightFrom
where aimRangeFactor | _cameraZoom w == 0 = 0
| otherwise = (fromMaybe 0 $ yourItem w ^? itAimingRange) / _cameraZoom w
aimTimeFactor = fromIntegral (w ^. cameraAimTime) / 10
@@ -121,7 +121,7 @@ zoomCamOut w | SDL.ScancodeK `S.member` _keys w
autoZoomCam :: World -> World
autoZoomCam w = over cameraZoom changeZoom w
where maxViewDistance = 800
camPos = _cameraCenter w
camPos = _cameraViewFrom w
camRot = _cameraRot w
wallZoom = min (halfWidth w / (horizontalMax+50) )
(halfHeight w / (verticalMax+50) )