diff --git a/assets/internal/default/weapon-servant/animation.json b/assets/internal/default/weapon-servant/animation.json new file mode 100644 index 0000000..923671c --- /dev/null +++ b/assets/internal/default/weapon-servant/animation.json @@ -0,0 +1,17 @@ +{ + "deploy": { + "zeroInterpolation": "set", + "components": { + "SlideBack": { + 0: { "translate": [0, 0] }, + 0.25: { "translate": [-1.5, 0] }, + 1: { "translate": [0, 0], "interpolation": "ease-in" } + }, + "SlideFront": { + 0: { "translate": [0, 0] }, + 0.25: { "translate": [-1.5, 0] }, + 1: { "translate": [0, 0], "interpolation": "ease-in" } + } + } + } +} diff --git a/assets/internal/default/weapon-servant/definition.json b/assets/internal/default/weapon-servant/definition.json new file mode 100644 index 0000000..69a88e3 --- /dev/null +++ b/assets/internal/default/weapon-servant/definition.json @@ -0,0 +1 @@ +{} diff --git a/assets/internal/default/weapon-servant/sprite.orig.svg b/assets/internal/default/weapon-servant/sprite.orig.svg new file mode 100644 index 0000000..199f911 --- /dev/null +++ b/assets/internal/default/weapon-servant/sprite.orig.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/internal/default/weapon-servant/sprite.svg b/assets/internal/default/weapon-servant/sprite.svg index 418bfa2..0a74933 100644 --- a/assets/internal/default/weapon-servant/sprite.svg +++ b/assets/internal/default/weapon-servant/sprite.svg @@ -1,82 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/docs/sprites.md b/docs/sprites.md new file mode 100644 index 0000000..b34c002 --- /dev/null +++ b/docs/sprites.md @@ -0,0 +1,4 @@ +* Sprites should only be in SVG format. +* Avoid using `transform` in sprites (does not work in nanosvg). +* Optimize SVG files as much as possible, but keep the IDs readable (for easy modding). +* Avoid CSS in styles (does not work in nanosvg). diff --git a/src/packages/game/output/video/IZ_video.c b/src/packages/game/output/video/IZ_video.c index b2c2910..7d68172 100644 --- a/src/packages/game/output/video/IZ_video.c +++ b/src/packages/game/output/video/IZ_video.c @@ -103,7 +103,8 @@ void IZ_VideoTeardown(IZ_VideoState* state) { SDL_DestroyWindow(state->window); } -u16 IZ_VideoGetNextFreeSpriteSlot(IZ_VideoState* state) { +// we can use IZ_Pool for memory management. Do we want to use a single pool or multiple ones? +u16 IZ_VideoGetNextFreeSpriteSlot(IZ_VideoState* state, IZ_VideoSpritePriority priority) { // TODO: // 1. Run through all sprites in the active sprites array // 2. Check each sprite's priority and requested_at (for eviction policy) diff --git a/src/packages/game/output/video/IZ_video.h b/src/packages/game/output/video/IZ_video.h index ada7e71..da2acc7 100644 --- a/src/packages/game/output/video/IZ_video.h +++ b/src/packages/game/output/video/IZ_video.h @@ -86,7 +86,7 @@ IZ_ProcedureResult IZ_VideoInitialize(IZ_VideoState*, void*, const char*, u8, co IZ_ProcedureResult IZ_VideoSaveConfig(IZ_VideoState*, const char*); -u16 IZ_VideoGetNextFreeSpriteSlot(IZ_VideoState*); +u16 IZ_VideoGetNextFreeSpriteSlot(IZ_VideoState*, IZ_VideoSpritePriority); void IZ_VideoLoadSprite(IZ_VideoState*, IZ_VideoLoadSpriteParams, IZ_SpriteSlot*);