Basic resources

This commit is contained in:
BirDt_ 2026-04-28 20:09:08 +08:00 committed by Jakub
parent 9cf36ab12c
commit 3f0e1985b3

25
engine/resource.scm Normal file
View file

@ -0,0 +1,25 @@
(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)))))
)