diff --git a/plant-eyelids/plant-eyes.scm~ b/plant-eyelids/plant-eyes.scm~ deleted file mode 100644 index ff54827..0000000 --- a/plant-eyelids/plant-eyes.scm~ +++ /dev/null @@ -1,164 +0,0 @@ -;#lang scheme/base -;(require fluxus-016/drflux) -(require scheme/class - "logic.ss" - "view.ss" - "controller.ss" - "client.ss" - "jabberer.ss" - "list-utils.ss") - -;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -; p l a n t e y e s -;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -; notes: -; -; * keeping with a view/logic separation, although this is quite different to -; the hexagon game. the main advantages: -; - just a divide and conquer strategy for staying sane -; - able to debug the logic without the view, or vice versa -; - the logic can be ticked at a lower frequency - or even different -; parts at different rates, whereas the view needs ticking every frame -; -; * need to try to keep all the intensive 'every thing vs every thing' checking -; in the logic side, where it can be done over many frames (i'm thinking the -; lags involved with things like nutrients getting absorbed may not matter -; too much in this game) -; -; * using a message passing system to formalise the passing of information on -; the logic side. this makes it possible to have objects sending messages -; at any point, and have them automatically collected up and dispatched to -; the view -; -; * these messages are also converted to xmpp messages and sent out over the -; network -; -; * line segments are computed in the logic side, and can be represented any -; way by the view - maybe the players plant will be geometry and everyone -; elses will be ribbons (stoopid LOD) -; -; * in the same way, the line segments can be created in any way by the logic -; side - eg. lsystem, or different methods per plant (or per twig even) - -(define-struct player-info (jid pass tex pos col)) - -(define gui-game-mode% - (class object% - (field - (players (list - (make-player-info "plant0000001@fo.am" "plant0000001" - "textures/plant0000001.png" (vector 11.682296752929688 -27.272457122802734 -2.8969409465789795) (vector 0.5 1 0.5)) - (make-player-info "plant0000002@fo.am" "plant0000002" - "textures/plant0000002.png" (vector 22.92951774597168 -24.62310218811035 -4.961982727050781) (vector 0.5 1 0)) - (make-player-info "plant0000003@fo.am" "plant0000003" - "textures/plant0000003.png" (vector 11.626119613647461 -24.734521865844727 -25.146560668945312) (vector 0 1 0.5)) - (make-player-info "plant0000004@fo.am" "plant0000004" - "textures/plant0000004.png" (vector -18.757593154907227 -10.819361686706543 37.17854690551758)(vector 0.75 1 0.5)) - (make-player-info "plant0000005@fo.am" "plant0000005" - "textures/plant0000005.png" (vector -10.964780807495117 -20.065677642822266 23.76084327697754) (vector 0.5 1 0.75)) - )) - (seeds '()) - (clicked -1)) - - (define/public (get-player-info) - (list-ref players clicked)) - - (define/public (setup) - (let ((c 0)) - (set! seeds (map - (lambda (pi) - (with-state - (translate (vmul (vector (sin (* 2 3.141 (/ c (length players)))) - (cos (* 2 3.141 (/ c (length players)))) 0) 4)) - ;(texture (load-texture (player-info-tex pi))) - (colour (player-info-col pi)) - (set! c (+ c 1)) - ;(shader "shaders/toon.vert.glsl" "shaders/toon.frag.glsl") - (load-primitive "meshes/seed.obj"))) - players)))) - - (define/public (update t d) - (for-each - (lambda (seed) - (with-primitive seed - (rotate (vector 0 1 0)))) - seeds) - (cond - ((mouse-button 1) - (let ((o (mouse-over))) - (cond - (o - (set! clicked (which-element o seeds 0)) - (when clicked - (for-each - (lambda (seed) - (destroy seed)) - seeds)) - (if clicked #t #f)) - (else - #f)))) - (else - #f))) - - (super-new))) - - -(define main-game-mode% - (class object% - (field - (gl (make-object game-logic%)) - (gv (make-object game-view%)) - (c (make-object controller% gv)) - (cl #f) - (tick-time 0) - (player #f) - (logic-tick 0.5)) ; time between logic updates - - (define/public (setup pi) - (set! cl (make-object client% (player-info-jid pi) (player-info-pass pi))) - (set! player (make-object plant-logic% - (player-info-jid pi) - (player-info-pos pi) - (player-info-col pi) - (player-info-tex pi))) - (send c set-player-plant player) - (send gl add-player player) - (send c setup) - (send gv setup) - (send gl setup) - (send cl setup)) - - (define/public (update t d) - (when (< tick-time t) - - - (let ((messages (send gl update))) - ; pass the messages to the network client - (send gv update t d (send cl update messages gl))) ; and the game view - - (set! tick-time (+ t logic-tick))) - - (send gv update t d '()) - (send c update)) - - (super-new))) - -(clear) -(clear-shader-cache) - -(define mode 'gui) -(define gui (make-object gui-game-mode%)) -(define game (make-object main-game-mode%)) -(send gui setup) - -(define (animate) - (cond - ((eq? mode 'gui) - (when (send gui update (flxtime) (delta)) - (send game setup (send gui get-player-info)) - (set! mode 'game))) - ((eq? mode 'game) - (send game update (flxtime) (delta))))) - -(every-frame (animate)) diff --git a/plant-eyelids/scratch.scm~ b/plant-eyelids/scratch.scm~ deleted file mode 100644 index 8badfa1..0000000 --- a/plant-eyelids/scratch.scm~ +++ /dev/null @@ -1,42 +0,0 @@ -(define particle-count 10000) - -; init one particle -(define (init n) - (pdata-set "p" n (vector 0 0 0)) - (pdata-set "vel" n (vmul (vsub (vector (flxrnd) (flxrnd) (flxrnd)) - (vector 0.5 0.5 0.5)) 0.1)) - (pdata-set "c" n (vector (flxrnd) (flxrnd) 1))) - -; init some random particles -(define (initsome n) - (cond ((not (zero? n)) - (init (random particle-count)) - (initsome (- n 1))))) - -(define (animate) - (with-primitive particles - (initsome 100) - ; pdata-ops are a bit like simple pfuncs - - ; they are both similar experiments, pfuncs - ; will be the way it works in the future - (pdata-op "+" "vel" (vector 0 -0.002 0)) - (pdata-op "+" "p" "vel"))) - -(clear) -(show-fps 1) -(hint-none) -(hint-points) -(point-width 4) -(hint-anti-alias) - - -(define particles (build-particles particle-count)) - -(with-primitive particles (pdata-add "vel" "v")) - -(blur 0.1) - -(every-frame (animate)) - - - diff --git a/plant-eyelids/textures/fossil.png b/plant-eyelids/textures/fossil.png index e277889..ecb9b2b 100644 Binary files a/plant-eyelids/textures/fossil.png and b/plant-eyelids/textures/fossil.png differ