module Model.Cloud ( Cloud , initCloud , playerPointsCollision , playerPointCollision ) where import List import Model.Point exposing (..) import Model.Player exposing (..) import Model.Config exposing (..) import Utils.Geometry exposing (distance) type alias Cloud = { points : Config -> List Point , spawn : Float , lastSpawn : Float } initCloud : Cloud initCloud = let spawn = 600 in { points = \config -> case config of White -> [] Black -> [] , spawn = spawn , lastSpawn = -spawn } playerPointsCollision : Float -> Player -> Float -> List Point -> Bool playerPointsCollision elapsedTime player playerSize points = let collision = playerPointCollision elapsedTime player playerSize in List.length (List.filter collision points) > 0 playerPointCollision : Float -> Player -> Float -> Point -> Bool playerPointCollision elapsedTime player playerSize point = let pointPos = pointMove point elapsedTime in (distance pointPos player.pos) < pointSize + playerSize