play gifs with strings

This commit is contained in:
2025-07-16 17:45:12 -05:00
parent d1d9a296a8
commit 2607604a0b
3 changed files with 66 additions and 191 deletions

View File

@@ -1,183 +0,0 @@
[Window][Debug##Default]
Pos=60,60
Size=400,400
[Window][TEST WINDOW]
Pos=156,6
Size=366,275
[Window][editor]
Pos=558,248
Size=274,177
[Window][Editor]
Pos=-113,317
Size=184,174
[Window][Map Editor]
Pos=96,74
Size=312,398
[Window][Edit Tile]
Pos=120,99
Size=356,275
[Window][Level Editor]
Pos=60,45
Size=283,332
Collapsed=1
[Window][Brush Selector]
Pos=189,35
Size=203,474
Collapsed=1
[Window][Tool Selector]
Pos=300,25
Size=247,474
Collapsed=1
[Window][FPS: 12]
Pos=60,60
Size=32,35
[Window][FPS: 87]
Pos=60,60
Size=32,35
[Window][FPS: 59]
Pos=60,60
Size=32,35
[Window][FPS: 107]
Pos=60,60
Size=32,35
[Window][FPS: 135]
Pos=60,60
Size=32,35
[Window][FPS: 136]
Pos=60,60
Size=51,48
[Window][FPS: 140]
Pos=60,60
Size=51,48
[Window][FPS: 137]
Pos=60,60
Size=51,48
[Window][FPS: 138]
Pos=60,60
Size=51,48
[Window][FPS: 141]
Pos=60,60
Size=51,48
[Window][FPS: 143]
Pos=60,60
Size=51,48
[Window][FPS: 142]
Pos=60,60
Size=51,48
[Window][FPS: 144]
Pos=60,60
Size=32,35
[Window][FPS: 139]
Pos=60,60
Size=51,48
[Window][FPS: 133]
Pos=60,60
Size=32,35
[Window][FPS: 134]
Pos=60,60
Size=51,48
[Window][FPS: 131]
Pos=60,60
Size=51,48
[Window][FPS: 130]
Pos=60,60
Size=51,48
[Window][FPS: 128]
Pos=60,60
Size=51,48
[Window][FPS: 126]
Pos=60,60
Size=51,48
[Window][FPS: 123]
Pos=60,60
Size=32,35
[Window][FPS: 124]
Pos=60,60
Size=32,35
[Window][FPS: 121]
Pos=60,60
Size=32,35
[Window][FPS: 122]
Pos=60,60
Size=32,35
[Window][FPS: 119]
Pos=60,60
Size=51,48
[Window][FPS: 117]
Pos=60,60
Size=32,35
[Window][FPS: 118]
Pos=60,60
Size=32,35
[Window][FPS: 116]
Pos=60,60
Size=32,35
[Window][FPS: 108]
Pos=60,60
Size=32,35
[Window][FPS: 109]
Pos=60,60
Size=51,48
[Window][FPS: 115]
Pos=60,60
Size=51,48
[Window][FPS: 114]
Pos=60,60
Size=51,48
[Window][FPS: 113]
Pos=60,60
Size=51,48
[Window][FPS: 110]
Pos=60,60
Size=51,48
[Window][FPS: 112]
Pos=60,60
Size=51,48
[Window][FPS: 111]
Pos=60,60
Size=51,48

View File

@@ -283,6 +283,7 @@ clay.draw_commands = function draw_commands(cmds, pos = {x:0,y:0})
if (config.text)
draw.text(config.text, content, config.font, config.color, config.size.width)
if (config.image)
draw.image(config.image, content, 0, config.color)
}

View File

@@ -300,16 +300,73 @@ graphics.texture = function texture(path) {
if (typeof path != 'string')
throw new Error('need a string for graphics.texture')
var id = path //.split(':')[0]
if (cache[id]) return cache[id]
var parts = path.split(':')
var id = parts[0]
var animName = parts[1]
var frameIndex = parts[2]
var ipath = res.find_image(id)
if (!ipath)
throw new Error(`unknown image ${id}`)
if (!cache[id]) {
var ipath = res.find_image(id)
if (!ipath)
throw new Error(`unknown image ${id}`)
var result = create_image(ipath)
cache[id] = result
}
var result = create_image(ipath)
cache[id] = result
return result // Can be Image, animation, or collection of animations
var cached = cache[id]
// No further path specifiers - return the whole thing
if (!animName) return cached
// If cached is a single Image, treat it as a single-frame animation
if (cached instanceof graphics.Image) {
if (frameIndex != null) {
// For single images, any frame index just returns the image
return cached
}
// animName without frameIndex for single image - return the image
return cached
}
// If cached is a single animation (has .frames property)
if (cached.frames && Array.isArray(cached.frames)) {
if (frameIndex != null) {
var idx = parseInt(frameIndex)
if (isNaN(idx)) return cached
// Wrap the index
idx = idx % cached.frames.length
return cached.frames[idx].image
}
// Just animation name for single animation - return the animation
return cached
}
// If cached is an object of multiple animations
if (typeof cached == 'object' && !cached.frames) {
var anim = cached[animName]
if (!anim)
throw new Error(`animation ${animName} not found in ${id}`)
if (frameIndex != null) {
var idx = parseInt(frameIndex)
if (isNaN(idx)) return anim
if (anim instanceof graphics.Image) {
// Single image animation - any frame index returns the image
return anim
} else if (anim.frames && Array.isArray(anim.frames)) {
// Multi-frame animation - wrap the index
idx = idx % anim.frames.length
return anim.frames[idx].image
}
}
// Just animation name - return the animation
return anim
}
return cached
}
graphics.texture[cell.DOC] = `
:param path: A string path to an image file or an already-loaded image object.