(local pxl8 (require :pxl8)) (local bsp_world (require :mod.bsp_world)) (local cube3d (require :mod.cube3d)) (var time 0) (var current-effect 1) (var particles nil) (var fire-init false) (var rain-init false) (var snow-init false) (var use-nes-palette false) (var logo-x 256) (var logo-y 148) (var logo-dx 100) (var logo-dy 80) (var logo-sprite nil) (global init (fn [] (bsp_world.init) (pxl8.load_palette "res/sprites/pxl8_logo.ase") (set logo-sprite (pxl8.load_sprite "res/sprites/pxl8_logo.ase")) (set particles (pxl8.particles_new 1000)))) (global update (fn [dt] (bsp_world.update dt) (set time (+ time dt)) (when (pxl8.key_pressed "1") (set current-effect 1)) (when (pxl8.key_pressed "2") (set current-effect 2)) (when (pxl8.key_pressed "3") (set current-effect 3)) (when (pxl8.key_pressed "4") (set current-effect 4)) (when (pxl8.key_pressed "5") (set current-effect 5) (set fire-init false)) (when (pxl8.key_pressed "6") (set current-effect 6) (set rain-init false)) (when (pxl8.key_pressed "7") (set current-effect 7) (set snow-init false)) (when (pxl8.key_pressed "8") (set current-effect 8)) (when (pxl8.key_pressed "9") (set use-nes-palette (not use-nes-palette)) (local palette-path (if use-nes-palette "res/palettes/nes.ase" "res/sprites/pxl8_logo.ase")) (pxl8.load_palette palette-path)) (when (pxl8.key_pressed "0") (set current-effect 0)) (case current-effect 1 (do (set logo-x (+ logo-x (* logo-dx dt))) (set logo-y (+ logo-y (* logo-dy dt))) (when (or (< logo-x 0) (> logo-x 512)) (set logo-dx (- logo-dx))) (when (or (< logo-y 0) (> logo-y 296)) (set logo-dy (- logo-dy)))) 8 (cube3d.update dt) _ nil) (when particles (pxl8.particles_update particles dt)))) (global frame (fn [] (case current-effect 0 (bsp_world.frame) 1 (do (pxl8.clr 0) (when logo-sprite (pxl8.sprite logo-sprite logo-x logo-y 128 64))) 2 (pxl8.vfx_plasma time 0.10 0.04 1) 3 (pxl8.vfx_tunnel time 2.0 0.25) 4 (do (pxl8.clr 0) (local bars [{:base_y 60 :amplitude 30 :height 16 :speed 2.0 :phase 0 :color 1 :fade_color 18} {:base_y 180 :amplitude 35 :height 16 :speed 1.8 :phase 2.0 :color 1 :fade_color 27} {:base_y 300 :amplitude 25 :height 16 :speed 2.2 :phase 4.0 :color 1 :fade_color 24}]) (pxl8.vfx_raster_bars bars time)) 5 (do (pxl8.clr 0) (when particles (when (not fire-init) (pxl8.particles_clear particles) (pxl8.vfx_fire particles 160 140 100 12) (set fire-init true)) (pxl8.particles_render particles))) 6 (do (pxl8.clr 0) (when particles (when (not rain-init) (pxl8.particles_clear particles) (pxl8.vfx_rain particles 320 10.0) (set rain-init true)) (pxl8.particles_render particles))) 7 (do (pxl8.clr 0) (when particles (when (not snow-init) (pxl8.particles_clear particles) (pxl8.vfx_snow particles 320 5.0) (set snow-init true)) (pxl8.particles_render particles))) 8 (cube3d.frame) _ (pxl8.clr 0))))