struct icon
This commit is contained in:
parent
6554a3deff
commit
418a8fe0e2
|
@ -258,6 +258,31 @@
|
||||||
;; Keyboard -> Player: (press space)
|
;; Keyboard -> Player: (press space)
|
||||||
;; Player -> Physics: (jump)
|
;; Player -> Physics: (jump)
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; Icon
|
||||||
|
|
||||||
|
(struct icon (pict scale hitbox-width-fraction hitbox-height-fraction baseline-fraction)
|
||||||
|
#:transparent)
|
||||||
|
|
||||||
|
(define (icon-width i) (* (image-width (icon-pict i)) (icon-scale i)))
|
||||||
|
(define (icon-height i) (* (image-height (icon-pict i)) (icon-scale i)))
|
||||||
|
(define (icon-hitbox-width i) (* (icon-width i) (icon-hitbox-width-fraction i)))
|
||||||
|
(define (icon-hitbox-height i) (* (icon-height i) (icon-hitbox-height-fraction i)))
|
||||||
|
(define (icon-hitbox-size i) (vector (icon-hitbox-width i) (icon-hitbox-height i)))
|
||||||
|
|
||||||
|
(define (focus->top-left i x y)
|
||||||
|
(vector (- x (/ (icon-hitbox-width i) 2))
|
||||||
|
(- y (icon-hitbox-height i))))
|
||||||
|
|
||||||
|
(define (icon-sprite i layer pos)
|
||||||
|
(match-define (vector x y) pos)
|
||||||
|
(simple-sprite layer
|
||||||
|
(- x (/ (- (icon-width i) (icon-hitbox-width i)) 2))
|
||||||
|
(- y (- (* (icon-baseline-fraction i) (icon-height i)) (icon-hitbox-height i)))
|
||||||
|
(icon-width i)
|
||||||
|
(icon-height i)
|
||||||
|
(icon-pict i)))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Various projections
|
;; Various projections
|
||||||
|
|
||||||
|
@ -515,32 +540,17 @@
|
||||||
;; Player
|
;; Player
|
||||||
|
|
||||||
(define player-id 'player)
|
(define player-id 'player)
|
||||||
|
(define planetcute-scale 1/2)
|
||||||
|
|
||||||
(define (spawn-player-avatar initial-focus-x initial-focus-y)
|
(define (spawn-player-avatar initial-focus-x initial-focus-y)
|
||||||
(struct player-state (pos hit-points keys-down) #:prefab)
|
(struct player-state (pos hit-points keys-down) #:prefab)
|
||||||
|
|
||||||
(define icon character-cat-girl)
|
(define i (icon character-cat-girl planetcute-scale 2/6 3/10 13/16))
|
||||||
(define icon-width (/ (image-width icon) 2))
|
(define initial-top-left (focus->top-left i initial-focus-x initial-focus-y))
|
||||||
(define icon-height (/ (image-height icon) 2))
|
(define initial-player-state (player-state initial-top-left 1 (set)))
|
||||||
|
|
||||||
(define icon-hitbox-width (* 2/6 icon-width))
|
|
||||||
(define icon-hitbox-height (* 3/10 icon-height))
|
|
||||||
(define hitbox-offset-x (/ (- icon-width icon-hitbox-width) 2))
|
|
||||||
(define hitbox-offset-y (- (* 13/16 icon-height) icon-hitbox-height))
|
|
||||||
|
|
||||||
(define initial-x (- initial-focus-x (/ icon-hitbox-width 2)))
|
|
||||||
(define initial-y (- initial-focus-y icon-hitbox-height))
|
|
||||||
(define initial-player-state (player-state (vector initial-x initial-y) 1 (set)))
|
|
||||||
|
|
||||||
(define (sprite-update s)
|
(define (sprite-update s)
|
||||||
(match-define (vector x y) (player-state-pos s))
|
(update-sprites #:meta-level game-level (icon-sprite i 0 (player-state-pos s))))
|
||||||
(update-sprites #:meta-level game-level
|
|
||||||
(simple-sprite 0
|
|
||||||
(- x hitbox-offset-x)
|
|
||||||
(- y hitbox-offset-y)
|
|
||||||
icon-width
|
|
||||||
icon-height
|
|
||||||
icon)))
|
|
||||||
|
|
||||||
(define ((monitor-position-change p) s)
|
(define ((monitor-position-change p) s)
|
||||||
(define s1
|
(define s1
|
||||||
|
@ -589,10 +599,9 @@
|
||||||
initial-player-state
|
initial-player-state
|
||||||
(sub (damage player-id ?))
|
(sub (damage player-id ?))
|
||||||
(assert (health player-id (player-state-hit-points initial-player-state)))
|
(assert (health player-id (player-state-hit-points initial-player-state)))
|
||||||
(assert (level-running) #:meta-level 1)
|
|
||||||
(assert (game-piece-configuration player-id
|
(assert (game-piece-configuration player-id
|
||||||
(vector initial-x initial-y)
|
initial-top-left
|
||||||
(vector icon-hitbox-width icon-hitbox-height)
|
(icon-hitbox-size i)
|
||||||
(set 'player 'mobile 'massive)))
|
(set 'player 'mobile 'massive)))
|
||||||
(sub (position player-id ? ?))
|
(sub (position player-id ? ?))
|
||||||
(sub (key-pressed 'left) #:meta-level 2)
|
(sub (key-pressed 'left) #:meta-level 2)
|
||||||
|
|
Loading…
Reference in New Issue