From e6b6df22fd6a7120a3fc7b255fe1d64c613b9f03 Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Thu, 9 Jan 2025 20:12:43 +0000 Subject: [PATCH] Write some script-fu code for exporting an animated tileset --- scripts/script-fu.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/scripts/script-fu.scm b/scripts/script-fu.scm index 41b12c7..57d8ea2 100644 --- a/scripts/script-fu.scm +++ b/scripts/script-fu.scm @@ -71,3 +71,26 @@ (define (crop-and-export-tree-sprite image) (crop-to-middle-sprite image) (export-tree-sprite image)) + +;; Exporting tileset + +(define (xcf-basename image) + (string-replace ".xcf" "" (car (gimp-image-get-filename image)))) + +(define (export-tileset image frame-count) + (define (foreach-frame-layer f) + (let loop ((i 0)) + (when (< i frame-count) + (let* ((name (number->string i)) + (layer (car (gimp-image-get-layer-by-name image name)))) + (f name layer)) + (loop (+ i 1))))) + (let ((basename (xcf-basename image))) + (foreach-frame-layer + (lambda (name layer) (gimp-item-set-visible layer 0))) + (foreach-frame-layer + (lambda (name layer) + (gimp-item-set-visible layer 1) + (export-png image (string-append basename "-" name ".png")) + (gimp-item-set-visible layer 0)))) + (gimp-displays-flush))