Font and texture resource loading

This commit is contained in:
BirDt_ 2026-04-29 19:31:00 +08:00 committed by Jakub
parent 3f0e1985b3
commit 9f1bde8ac6
7 changed files with 256 additions and 16 deletions

View file

@ -429,11 +429,55 @@
(end-mode-3d)))
(hash-table-set! render-queues queue-name '())))
;; Resource queue
(export resource-load-queue resource-unload-queue)
(define resource-load-queue '())
(define resource-unload-queue '())
(export make-resource resource? resource-type resource-contents resource-initialized? resource-initializer resource-finalizer set-resource-contents! set-resource-initialized!)
(define-record-type <resource>
(int:make-resource type struct initialized? initializer finalizer)
resource?
(type resource-type)
(struct resource-contents set-resource-contents!)
(initialized? resource-initialized? set-resource-initialized!)
(initializer resource-initializer)
(finalizer resource-finalizer))
(define (add-resource res)
(assert (resource? res))
(set! resource-load-queue (cons res resource-load-queue)))
(define (make-resource type struct initialized? initializer finalizer)
(assert (member type '(font texture)))
(assert (boolean? initialized?))
(assert (procedure? initializer))
(assert (procedure? finalizer))
(let ((r (int:make-resource type struct initialized? initializer finalizer)))
(add-resource r)
r))
(define (load-queued-resources)
(for-each
(lambda (res)
((resource-initializer res) res)
(set! resource-unload-queue (cons res resource-unload-queue)))
resource-load-queue)
(set! resource-load-queue '()))
(define (unload-queued-resources)
(for-each
(lambda (res)
((resource-finalizer res) res))
resource-unload-queue)
(set! resource-unload-queue '()))
;; Frame generation and game loop
(export resolve-queues next-frame *clear-color* perform-render)
;; Resolve the entity and system queues. This is exported which allows breaking iteration
(define (resolve-queues)
(load-queued-resources)
(resolve-entity-queue)
(resolve-system-queue))
@ -483,5 +527,6 @@
(process)
(unless (close-predicate)
(loop)))
(unload-queued-resources)
(close-window))
)