25 lines
550 B
Scheme
25 lines
550 B
Scheme
(module (engine resource) ()
|
|
(import scheme
|
|
(chicken base)
|
|
(chicken gc)
|
|
raylib
|
|
(srfi 99))
|
|
|
|
(define-record-type <resource>
|
|
(int:make-resource type struct)
|
|
resource?
|
|
(type int:resource-type)
|
|
(struct int:resource-contents))
|
|
|
|
(define (resource-finalizer type)
|
|
(case type
|
|
((font) unload-font)
|
|
(else identity)))
|
|
|
|
(define (make-resource type struct)
|
|
(assert (member type '(texture font)))
|
|
(assert (record? struct))
|
|
(let ((r (int:make-resource type struct)))
|
|
(set-finalizer! r (lambda (x) ((resource-finalizer type) x)))))
|
|
|
|
)
|