(local pxl8 (require :pxl8)) (var time 0) (var current-effect 1) (var particles nil) (var starfield-init false) (var fire-init false) (var rain-init false) (var snow-init false) (global init (fn [] (pxl8.load_palette "res/palettes/gruvbox.ase") (set particles (pxl8.particles_new 1000)))) (global update (fn [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) (set fire-init false)) (when (pxl8.key_pressed "4") (set current-effect 4)) (when (pxl8.key_pressed "5") (set current-effect 5) (set rain-init false)) (when (pxl8.key_pressed "6") (set current-effect 6) (set snow-init false)) (when particles (pxl8.particles_update particles dt)))) (global draw (fn [] (match current-effect 1 (pxl8.vfx_plasma time 0.10 0.04 0) 2 (pxl8.vfx_tunnel time 2.0 0.25) 3 (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)) (pxl8.text "Fire Effect Test" 200 10 15)) 4 (do (pxl8.clr 0) (local bars [{:base_y 40 :amplitude 20 :height 16 :speed 2.0 :phase 0 :color 14 :fade_color 11} {:base_y 80 :amplitude 15 :height 16 :speed 2.5 :phase 1.5 :color 20 :fade_color 11} {:base_y 120 :amplitude 25 :height 16 :speed 1.8 :phase 3.0 :color 26 :fade_color 11}]) (pxl8.vfx_copper_bars bars time) (pxl8.text "Copper Bars" 200 10 15)) 5 (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)) (pxl8.text "Rain" 200 10 15)) 6 (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)) (pxl8.text "Snow" 200 10 15)) _ (pxl8.clr 0))))