animation example
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
140
run.scm
|
@ -3,133 +3,35 @@
|
||||||
(sdl2 ttf)
|
(sdl2 ttf)
|
||||||
(ice-9 match)
|
(ice-9 match)
|
||||||
(srfi srfi-26)
|
(srfi srfi-26)
|
||||||
(tsukundere menu button)
|
(tsukundere animation))
|
||||||
(tsukundere menu)) ; make-menu run-menu
|
|
||||||
|
|
||||||
(define (load)
|
(define (load)
|
||||||
(let* ((scene
|
(let* ((scene
|
||||||
(make-scene '(background
|
(make-scene '(background loaders)))
|
||||||
text
|
|
||||||
menu)))
|
|
||||||
(paper (load-image "paper.png"))
|
(paper (load-image "paper.png"))
|
||||||
(texture (load-image "unchecked_box.png"))
|
(frames (map
|
||||||
(selected (load-image "checked_box.png"))
|
(compose load-image
|
||||||
(radio (load-image "unselected_radio_button.png"))
|
(cute string-append
|
||||||
(radio-selected (load-image "selected_radio_button.png"))
|
"animation/" <> ".png")
|
||||||
(simple (load-image "round_button_normal.png"))
|
number->string)
|
||||||
(simple-hover (load-image "round_button_hover.png"))
|
(iota 8)))
|
||||||
(simple-pressed (load-image "round_button_mouse_down.png"))
|
(animation-looping
|
||||||
(font (load-font "JuliaMono.ttf" 18))
|
(make-animation (s32vector 100 100) frames 1000))
|
||||||
(colors
|
(animation-boing
|
||||||
`((none . ,(make-color 80 225 100 255))
|
(make-animation (s32vector 100 200) frames 1000 #:loop 'rewind))
|
||||||
(selected . ,(make-color 255 0 0 255))
|
(animation-stop
|
||||||
(pressed . ,(make-color 0 0 255 255))))
|
(make-animation (s32vector 200 100) frames 8000 #:loop #f))
|
||||||
(textures
|
(animation-looping-slow
|
||||||
`((none . ,texture)
|
(make-animation (s32vector 200 200) frames 4000 #:loop #t)))
|
||||||
(pressed . ,selected)))
|
(map (cute scene-add-object! scene 'loaders <>)
|
||||||
(textures-radio
|
(list animation-looping animation-boing
|
||||||
`((none . ,radio)
|
animation-stop animation-looping-slow))
|
||||||
(pressed . ,radio-selected)))
|
|
||||||
(textures-button
|
|
||||||
`((none . ,simple)
|
|
||||||
(selected . ,simple-hover)
|
|
||||||
(pressed . ,simple-pressed)))
|
|
||||||
(checkbox-button
|
|
||||||
(make-button (s32vector 0 0) "" 0 font textures
|
|
||||||
#:dimensions (s32vector 25 25)
|
|
||||||
#:text-colors colors
|
|
||||||
#:anchor 'center
|
|
||||||
#:text-pos (s32vector 30 -7)
|
|
||||||
#:text-alignment '(left . top)
|
|
||||||
#:callback checkbox-button-callback))
|
|
||||||
(checkbox-menu
|
|
||||||
(make-menu '() #:pos #s32(100 100) #:spacing #s32(0 50)
|
|
||||||
#:button-prototype checkbox-button
|
|
||||||
#:accumulator
|
|
||||||
(cute menu-fold <> '() cons)))
|
|
||||||
(radio-button
|
|
||||||
(make-button (s32vector 0 0) "" 0 font textures-radio
|
|
||||||
#:text-colors colors
|
|
||||||
#:dimensions (s32vector 200 20)
|
|
||||||
#:anchor 'top-left
|
|
||||||
#:text-alignment '(left . top)
|
|
||||||
#:text-pos (s32vector 30 0)
|
|
||||||
#:callback radio-button-callback))
|
|
||||||
(radio-menu
|
|
||||||
(make-menu '() #:pos #s32(100 100) #:spacing #s32(0 50)
|
|
||||||
#:button-prototype radio-button))
|
|
||||||
|
|
||||||
(simple-button
|
|
||||||
(make-button (s32vector 0 0) "" 0 font textures-button
|
|
||||||
#:text-colors colors
|
|
||||||
;; Put text at the center of the button
|
|
||||||
#:text-pos (s32vector 0 0)
|
|
||||||
#:anchor 'center
|
|
||||||
#:text-alignment '(center . center)
|
|
||||||
#:callback simple-button-callback))
|
|
||||||
(simple-menu
|
|
||||||
(make-menu '() #:pos #s32(100 100) #:spacing #s32(0 50)
|
|
||||||
#:accumulator
|
|
||||||
(cute menu-fold <> *unspecified* (lambda (val seed) val))
|
|
||||||
#:button-prototype simple-button))
|
|
||||||
(nixo (make-speaker "nixo")))
|
|
||||||
(init-script!
|
(init-script!
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(script
|
(script
|
||||||
(begin
|
|
||||||
(background paper)
|
(background paper)
|
||||||
(nixo "This is not an exam!"))
|
(pause)))
|
||||||
(nixo "Choose one and press enter!")
|
scene)))
|
||||||
(nixo
|
|
||||||
(format #f "You chose: ~a\n"
|
|
||||||
(run-menu
|
|
||||||
(make-menu '(("Select me!")
|
|
||||||
("Or me!")
|
|
||||||
("No, select me!"))
|
|
||||||
#:accumulator
|
|
||||||
(cute menu-fold <> *unspecified* (lambda (val seed) val))
|
|
||||||
#:prototype radio-menu))))
|
|
||||||
(nixo "Choose as many as you want!")
|
|
||||||
(nixo
|
|
||||||
(format #f "You chose ~a\n"
|
|
||||||
(run-menu
|
|
||||||
(make-menu '(("A" 0)
|
|
||||||
("B" 1)
|
|
||||||
("C" 2))
|
|
||||||
#:accumulator (cute menu-fold <> '() cons)
|
|
||||||
#:prototype checkbox-menu))))
|
|
||||||
(nixo "Choose as many as you want!")
|
|
||||||
(nixo
|
|
||||||
(format #f "You chose ~a\n"
|
|
||||||
(run-menu
|
|
||||||
(make-menu '(("A" 0 (pressed))
|
|
||||||
("B" 1 (selected))
|
|
||||||
("C" 2 (pressed)))
|
|
||||||
#:accumulator (cute menu-fold <> '() cons)
|
|
||||||
#:prototype checkbox-menu))))
|
|
||||||
(nixo "Click it!")
|
|
||||||
(nixo
|
|
||||||
(format #f "You chose the element number: ~a\n"
|
|
||||||
(menu ("Yes" "Maybe" "No way"))))
|
|
||||||
(nixo "Click it again!")
|
|
||||||
(nixo
|
|
||||||
(format #f "You chose the element: ~a\n"
|
|
||||||
(menu (("Yes") ("Maybe") ("No way")))))
|
|
||||||
;; (nixo "Once more!" #f eol)
|
|
||||||
(nixo
|
|
||||||
(format #f "You chose the element: ~a\n"
|
|
||||||
(menu (("Yes" yep) ("Maybe" maybe) ("No way" nope)))))
|
|
||||||
*unspecified*))
|
|
||||||
scene)
|
|
||||||
(init-menu! simple-menu) ; equal to
|
|
||||||
;; (scene-add-object! scene 'menu simple-menu)
|
|
||||||
;; roughly equivalent to init-menu! below
|
|
||||||
;; (init-menu! #:pos #s32(100 100) #:spacing #s32(0 50)
|
|
||||||
;; #:prototype simple-button
|
|
||||||
;; #:accumulator (cute menu-fold <> *unspecified*
|
|
||||||
;; (lambda (val seed) val))
|
|
||||||
;; #:scene scene)
|
|
||||||
(init-text! 10 300 280 font font #:scene scene)))
|
|
||||||
|
|
||||||
(run-game
|
(run-game
|
||||||
#:game-name ".tsukundere-example-buttons"
|
#:game-name ".tsukundere-example-buttons"
|
||||||
|
|