remove progbtc
This commit is contained in:
		
							parent
							
								
									2e3824f1dc
								
							
						
					
					
						commit
						8ecc81f3f7
					
				@ -1,10 +1,12 @@
 | 
			
		||||
import Header from './header'
 | 
			
		||||
import Container from 'react-bootstrap/Container'
 | 
			
		||||
import { Lightning } from './lightning'
 | 
			
		||||
 | 
			
		||||
export default function Layout ({ noContain, children }) {
 | 
			
		||||
  return (
 | 
			
		||||
    <>
 | 
			
		||||
      <Header />
 | 
			
		||||
      <Lightning />
 | 
			
		||||
      {noContain
 | 
			
		||||
        ? children
 | 
			
		||||
        : (
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										127
									
								
								components/lightning.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								components/lightning.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,127 @@
 | 
			
		||||
 | 
			
		||||
import { useRef, useEffect } from 'react'
 | 
			
		||||
 | 
			
		||||
export function Lightning () {
 | 
			
		||||
  const canvasRef = useRef(null)
 | 
			
		||||
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
    const canvas = canvasRef.current
 | 
			
		||||
    const context = canvas.getContext('2d')
 | 
			
		||||
 | 
			
		||||
    canvas.width = window.innerWidth
 | 
			
		||||
    canvas.height = window.innerHeight
 | 
			
		||||
 | 
			
		||||
    const bolt = new Bolt(context, {
 | 
			
		||||
      startPoint: [Math.random() * (canvas.width * 0.5) + (canvas.width * 0.25), 0],
 | 
			
		||||
      length: canvas.height,
 | 
			
		||||
      speed: options.speed,
 | 
			
		||||
      spread: options.spread,
 | 
			
		||||
      branches: options.branching
 | 
			
		||||
    })
 | 
			
		||||
    bolt.draw()
 | 
			
		||||
  }, [])
 | 
			
		||||
 | 
			
		||||
  return <canvas className='position-absolute' ref={canvasRef} style={{ zIndex: -1 }} />
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Initialize options.
 | 
			
		||||
const options = {
 | 
			
		||||
  speed: 80,
 | 
			
		||||
  spread: 40,
 | 
			
		||||
  branching: 5
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function Bolt (ctx, options) {
 | 
			
		||||
  this.options = {
 | 
			
		||||
    startPoint: [0, 0],
 | 
			
		||||
    length: 100,
 | 
			
		||||
    angle: 90,
 | 
			
		||||
    speed: 30,
 | 
			
		||||
    spread: 50,
 | 
			
		||||
    branches: 10,
 | 
			
		||||
    maxBranches: 10,
 | 
			
		||||
    ...options
 | 
			
		||||
  }
 | 
			
		||||
  this.point = [this.options.startPoint[0], this.options.startPoint[1]]
 | 
			
		||||
  this.branches = []
 | 
			
		||||
  this.lastAngle = this.options.angle
 | 
			
		||||
  this.children = []
 | 
			
		||||
 | 
			
		||||
  const radians = this.options.angle * Math.PI / 180
 | 
			
		||||
  this.endPoint = [
 | 
			
		||||
    this.options.startPoint[0] + Math.cos(radians) * this.options.length,
 | 
			
		||||
    this.options.startPoint[1] + Math.sin(radians) * this.options.length
 | 
			
		||||
  ]
 | 
			
		||||
 | 
			
		||||
  ctx.shadowColor = 'rgba(250, 218, 94, 1)'
 | 
			
		||||
  ctx.shadowBlur = 5
 | 
			
		||||
  ctx.shadowOffsetX = 0
 | 
			
		||||
  ctx.shadowOffsetY = 0
 | 
			
		||||
  ctx.fillStyle = 'rgba(250, 250, 250, 1)'
 | 
			
		||||
  ctx.strokeStyle = 'rgba(250, 218, 94, 1)'
 | 
			
		||||
  ctx.lineWidth = 2
 | 
			
		||||
  this.draw = (isChild) => {
 | 
			
		||||
    ctx.beginPath()
 | 
			
		||||
    ctx.moveTo(this.point[0], this.point[1])
 | 
			
		||||
    const angleChange = rand(1, this.options.spread)
 | 
			
		||||
    this.lastAngle += this.lastAngle > this.options.angle ? -angleChange : angleChange
 | 
			
		||||
    const radians = this.lastAngle * Math.PI / 180
 | 
			
		||||
 | 
			
		||||
    this.point[0] += Math.cos(radians) * this.options.speed
 | 
			
		||||
    this.point[1] += Math.sin(radians) * this.options.speed
 | 
			
		||||
 | 
			
		||||
    ctx.lineTo(this.point[0], this.point[1])
 | 
			
		||||
    ctx.stroke()
 | 
			
		||||
 | 
			
		||||
    const d = Math.sqrt(
 | 
			
		||||
      Math.pow(this.point[0] - this.options.startPoint[0], 2) +
 | 
			
		||||
      Math.pow(this.point[1] - this.options.startPoint[1], 2)
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    if (rand(0, 99) < this.options.branches && this.children.length < this.options.maxBranches) {
 | 
			
		||||
      this.children.push(new Bolt(ctx, {
 | 
			
		||||
        startPoint: [this.point[0], this.point[1]],
 | 
			
		||||
        length: d * 0.8,
 | 
			
		||||
        angle: this.lastAngle + rand(350 - this.options.spread, 370 + this.options.spread),
 | 
			
		||||
        resistance: this.options.resistance,
 | 
			
		||||
        speed: this.options.speed - 2,
 | 
			
		||||
        spread: this.options.spread - 2,
 | 
			
		||||
        branches: this.options.branches
 | 
			
		||||
      }))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.children.forEach(child => {
 | 
			
		||||
      child.draw(true)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    if (isChild) {
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (d < this.options.length) {
 | 
			
		||||
      window.requestAnimationFrame(() => { this.draw() })
 | 
			
		||||
    } else {
 | 
			
		||||
      this.fade()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  this.fade = function () {
 | 
			
		||||
    ctx.shadowColor = 'rgba(250, 250, 250, .5)'
 | 
			
		||||
    ctx.fillStyle = 'rgba(250, 250, 250, .05)'
 | 
			
		||||
    ctx.fillRect(0, 0, window.innerWidth, window.innerHeight)
 | 
			
		||||
 | 
			
		||||
    const color = ctx.getImageData(0, 0, 1, 1)
 | 
			
		||||
    console.log(color.data)
 | 
			
		||||
    if (color.data[0] >= 250 && color.data[3] > 240) {
 | 
			
		||||
      ctx.fillStyle = 'rgba(250, 250, 250, 1)'
 | 
			
		||||
      ctx.clearRect(0, 0, window.innerWidth, window.innerHeight)
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    setTimeout(() => { this.fade() }, 50)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function rand (min, max) {
 | 
			
		||||
  return Math.random() * (max - min) + min
 | 
			
		||||
}
 | 
			
		||||
@ -95,4 +95,17 @@ $container-max-widths: (
 | 
			
		||||
  94% { opacity: 0.2; }
 | 
			
		||||
  96% { opacity: 1; }
 | 
			
		||||
	to { opacity: 0; }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.fadeOut {
 | 
			
		||||
  animation: fadeOut ease 1s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@keyframes fadeOut {
 | 
			
		||||
  0% {
 | 
			
		||||
    opacity:1;
 | 
			
		||||
  }
 | 
			
		||||
  100% {
 | 
			
		||||
    opacity:0;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user