# Garbage Boy
background: #0A0A0B
color: #C6CA53
## Assets To Create
- [x] Street background
- [x] Music
- [x] Theme song
- [x] Garbage pick up
- [x] Rat collision
- [x] Garbage can success
- [x] Sprites
- [x] Garbage Boy
- [x] v.1
- [x] v.2
- [x] Garbage Can
- [x] Garbage
- [x] Rats
- [x] 2nd Garbage
## Blockers
- [x] Sometimes rats get stuck on traffic cone
- [x] Sometimes waterbottle does not work
- [x] Why doesn't water bottle stop Ben?
- [x] MUSIC TOO LOUD
- [x] Sometimes rats get stuck on an axis
- [x] Garbage Boy's hitbox is too big
- [x] Make each rat have it's own random Y
- [x] Make rats move up and down independently
- [x] Why are movement limits different at each boundary?
- [x] Why is gameTick happening before start button is clicked
- [x] Garbage spawns at same point on retry
- [x] Add mins to random number gens
## Refactoring
- [x] Combine rat stuff
- [x] Create Rats array to contain rats
- [x] refactor all rat stuff to loop over array
## Checklist
- [x] CLI-like game screen
- [x] start screen
- [x] game-play instructions
- [x] start button
- [x] start music
- [x] game screen
- [x] canvas
- [x] GB's health
- [x] stage message
- [x] Garbage Boy
- [x] spawns at (X,Y)
- [x] moves freely with WASD
- [x] Garbage Can
- [x] Spawns at X=0, Y=Y
- [x] GB collision triggers `endStage` if garbage = true
- [x] Rats
- [x] Spawns at X=X, Y=random
- [x] moves up and down Y axis
- [x] GB collision triggers `endStage`
- [x] Garbage
- [x] Spawns at X=random, Y=random
- [x] GB collision triggers `garbagePickup`
- [x] disappears after picked up
### `startButton`
- [x] hide start button and game instructions
- [x] display game screen
- [x] `gameTick`
### `gameTick`
- [x] render GB
- [x] render rats
- [x] render garbage can
- [x] render trash
- [x] set rat movement
- [x] set GB movement
### `endStage`
- [x] stop `gameTick`
### `resetGame`
- [x] reset
## Stretch Goals!
- [x] Dear lord, add a mute button
- [x] Add second piece of garbage
- [x] declare variable as new img
- [x] set img.src
- [x] create function that returns either 0 or 1
- [x] declare asset creation
- [x] `gameTick`
- [x] if garbage is alive
- [x] generate random
- [x] if 0 spawn bottle
- [x] else spawn choco
- [x] `resetGame`
- [x] garbage.alive = true
- [x] Stages
- [x] Display current stage on screen
- [x] Each stage change makes rat movement speed +2
- [x] Picking up garbage effects
- [x] display inventory on screen
- [x] onclick will trigger item effect
- [x] reset effect on reset
- [x] reset effect on next stage
- [x] make sure item remains in inventory after advancing stages
- [x] picking up another piece of garbage will overwrite the current garbage in inventory
- [x] Random rats!
- [x] have rats spawn anywhere randomly
- [x] have them move randomly
- [x] Display win / loss messages on the canvas instead of at bottom
- [x] Ben
- [x] homing rat
- [x] spawns every 5 levels
- [x] collision
- [x] reduce speed with water bottle
- [x] reset speed at retry
- [x] reset speed at next level
- [x] reset spawn point at retry
- [x] reset spawn chance at next stage
- [x] add to readme
- [x] Combine Mute / Unmute
- [x] Obstacle
- [x] create image
- [x] render image
- [x] collision w/ rats
- [x] bouncing logic
- [x] collision w/ GB
- [x] edge of map logic
- [x] new coords at next stage