Something went wrong. Try again.
A Love2D remaster of my bug-catching-cult-classic Bait and Switch
Something went wrong. Try again.
4.6 kB · 105 lines
Lua
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106local assets = {}
local config = require("src.config")
function assets.tintedShadow(color) local s = config.visual.shadowColor return {s[1] * color[1], s[2] * color[2], s[3] * color[3], 1}end
function assets.load() assets.bg = love.graphics.newImage("assets/bg.png") assets.cursor = love.graphics.newImage("assets/cursor.png")
assets.playerSprite = love.graphics.newImage("assets/player.png")
assets.netSprite = love.graphics.newImage("assets/net.png") assets.netLoadedSprite = love.graphics.newImage("assets/netLoaded.png")
assets.enemySprite = love.graphics.newImage("assets/enemy.png") local squareData = love.image.newImageData(4, 4) squareData:mapPixel(function() return 1, 1, 1, 1 end) assets.whiteSquare = love.graphics.newImage(squareData) assets.ui = {} assets.ui.progress = love.graphics.newImage("assets/ui/progress.png") assets.ui.progressBar = love.graphics.newImage("assets/ui/progressBar.png") assets.ui.heart = love.graphics.newImage("assets/ui/heart.png") assets.ui.popup = love.graphics.newImage("assets/ui/popup.png")
assets.ui.upgrades = {} assets.ui.upgrades.bomb = love.graphics.newImage("assets/ui/upgrades/bomb.png") assets.ui.upgrades.bounce = love.graphics.newImage("assets/ui/upgrades/bounce.png") assets.ui.upgrades.electric = love.graphics.newImage("assets/ui/upgrades/electric.png") assets.ui.upgrades.heart = love.graphics.newImage("assets/ui/upgrades/heart.png") assets.ui.upgrades.shotsizeup = love.graphics.newImage("assets/ui/upgrades/shotsizeup.png") assets.ui.upgrades.sizedown = love.graphics.newImage("assets/ui/upgrades/sizedown.png") assets.ui.upgrades.slow = love.graphics.newImage("assets/ui/upgrades/slow.png") assets.ui.upgrades.splitshot = love.graphics.newImage("assets/ui/upgrades/splitshot.png")
assets.ui.tutorial = {} assets.ui.tutorial.click = love.graphics.newImage("assets/ui/tutorial/click.png") assets.ui.tutorial.walk = love.graphics.newImage("assets/ui/tutorial/walk.png")
assets.fonts = {} assets.fonts.fat = love.graphics.newFont("assets/fonts/fat.ttf", 16) assets.fonts.fat:setFilter("nearest", "nearest")
assets.fonts.m5x7 = love.graphics.newFont("assets/fonts/m5x7.ttf", 16) assets.fonts.m5x7:setFilter("nearest", "nearest") assets.audio = {} assets.audio.netSwing = love.audio.newSource("assets/audio/netSwing.wav", "static") assets.audio.bugCatch = love.audio.newSource("assets/audio/bugCatch.wav", "static") assets.audio.projectileFire = love.audio.newSource("assets/audio/projectileFire.wav", "static") assets.audio.enemyDeath = love.audio.newSource("assets/audio/enemyDeath.wav", "static") assets.audio.playerHit = love.audio.newSource("assets/audio/playerHit.wav", "static") assets.audio.bounce = love.audio.newSource("assets/audio/bounce.wav", "static") assets.audio.uiHover = love.audio.newSource("assets/audio/uiHover.wav", "static") assets.audio.uiClick = love.audio.newSource("assets/audio/uiClick.wav", "static") assets.audio.upgradeSelect = love.audio.newSource("assets/audio/upgradeSelect.wav", "static") assets.audio.waveComplete = love.audio.newSource("assets/audio/waveComplete.wav", "static") assets.audio.gameOver = love.audio.newSource("assets/audio/gameOver.wav", "static") assets.audio.speedyBugPass = love.audio.newSource("assets/audio/speedyBugPass.wav", "static")
assets.primaryColor = {1, 0.6, 0.2, 1} -- Orange/fire color assets.shadowColor = config.visual.shadowColor
assets.enemyColor = {0xd3 / 255, 0xfc / 255, 0x7e / 255, 1} assets.speedyBugColor = {0xf7 / 255, 0x76 / 255, 0x22 / 255, 1}
assets.enemyShadowColor = assets.tintedShadow(assets.enemyColor) assets.speedyBugShadowColor = assets.tintedShadow(assets.speedyBugColor)end
assets.soundPoolSize = 8assets.soundPools = {}
function assets.getSoundPool(sound) if not assets.soundPools[sound] then local pool = {} for i = 1, assets.soundPoolSize do pool[i] = sound:clone() end pool.index = 1 assets.soundPools[sound] = pool end return assets.soundPools[sound]end
function assets.playSound(sound, pitchVariance) local pool = assets.getSoundPool(sound) local s = pool[pool.index] pool.index = pool.index % assets.soundPoolSize + 1
s:stop() if pitchVariance then s:setPitch(1 + (math.random() * 2 - 1) * pitchVariance) else s:setPitch(1) end s:play()end
return assets