Skip to content

Commit

Permalink
Fix LCDSprite setSize signature
Browse files Browse the repository at this point in the history
  • Loading branch information
samdze committed Jan 16, 2024
1 parent 7542a8d commit 41f8fbf
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 10 deletions.
36 changes: 28 additions & 8 deletions src/playdate/bindings/sprite.nim
Original file line number Diff line number Diff line change
Expand Up @@ -57,23 +57,26 @@ sdktype:
addDirtyRect* {.importc: "addDirtyRect".}: proc (dirtyRect: LCDRect) {.cdecl, raises: [].}
drawSprites* {.importc: "drawSprites".}: proc () {.cdecl, raises: [].}
updateAndDrawSprites* {.importc: "updateAndDrawSprites".}: proc () {.cdecl, raises: [].}
newSprite {.importc: "newSprite".}: proc (): LCDSpritePtr {.cdecl, raises: [].}

newSprite {.importc: "newSprite".}: proc (): LCDSpritePtr {.cdecl, raises: [].}
freeSprite {.importc: "freeSprite".}: proc (sprite: LCDSpritePtr) {.cdecl, raises: [].}
copy {.importc: "copy".}: proc (sprite: LCDSpritePtr): LCDSpritePtr {.cdecl, raises: [].}

addSprite {.importc: "addSprite".}: proc (sprite: LCDSpritePtr) {.cdecl, raises: [].}
removeSprite {.importc: "removeSprite".}: proc (sprite: LCDSpritePtr) {.cdecl, raises: [].}
removeSprites {.importc: "removeSprites".}: proc (sprites: ptr LCDSpritePtr;
count: cint) {.cdecl, raises: [].}
removeAllSprites {.importc: "removeAllSprites".}: proc () {.cdecl, raises: [].}
getSpriteCount {.importsdk.}: proc (): cint

setBounds {.importc: "setBounds".}: proc (sprite: LCDSpritePtr; bounds: PDRect) {.
cdecl, raises: [].}
getBounds {.importc: "getBounds".}: proc (sprite: LCDSpritePtr): PDRect {.cdecl, raises: [].}
moveTo {.importc: "moveTo".}: proc (sprite: LCDSpritePtr; x: cfloat; y: cfloat) {.
cdecl, raises: [].}
moveBy {.importc: "moveBy".}: proc (sprite: LCDSpritePtr; dx: cfloat; dy: cfloat) {.
cdecl, raises: [].}

setImage {.importc: "setImage".}: proc (sprite: LCDSpritePtr;
image: LCDBitmapPtr; flip: LCDBitmapFlip) {.cdecl, raises: [].}
getImage {.importc: "getImage".}: proc (sprite: LCDSpritePtr): LCDBitmapPtr {.
Expand All @@ -83,20 +86,23 @@ sdktype:
setZIndex {.importc: "setZIndex".}: proc (sprite: LCDSpritePtr; zIndex: int16) {.
cdecl, raises: [].}
getZIndex {.importc: "getZIndex".}: proc (sprite: LCDSpritePtr): int16 {.cdecl, raises: [].}

setDrawMode {.importc: "setDrawMode".}: proc (sprite: LCDSpritePtr;
mode: LCDBitmapDrawMode) {.cdecl, raises: [].}
setImageFlip {.importc: "setImageFlip".}: proc (sprite: LCDSpritePtr;
flip: LCDBitmapFlip) {.cdecl, raises: [].}
getImageFlip {.importc: "getImageFlip".}: proc (sprite: LCDSpritePtr): LCDBitmapFlip {.
cdecl, raises: [].}
# ### setStencil* {.importc: "setStencil".}: proc (sprite: ptr LCDSprite; stencil: ptr LCDBitmap) {.cdecl.} ## deprecated in favor of setStencilImage()
# setStencil* {.importc: "setStencil".}: proc (sprite: ptr LCDSprite; stencil: ptr LCDBitmap) {.cdecl.} ## deprecated in favor of setStencilImage()

setClipRect {.importc: "setClipRect".}: proc (sprite: LCDSpritePtr;
clipRect: LCDRect) {.cdecl, raises: [].}
clearClipRect {.importc: "clearClipRect".}: proc (sprite: LCDSpritePtr) {.cdecl, raises: [].}
setClipRectsInRange {.importc: "setClipRectsInRange".}: proc (
clipRect: LCDRect; startZ: cint; endZ: cint) {.cdecl, raises: [].}
clearClipRectsInRange {.importc: "clearClipRectsInRange".}: proc (startZ: cint;
endZ: cint) {.cdecl, raises: [].}

setUpdatesEnabled {.importc: "setUpdatesEnabled".}: proc (
sprite: LCDSpritePtr; flag: cint) {.cdecl, raises: [].}
updatesEnabled {.importc: "updatesEnabled".}: proc (sprite: LCDSpritePtr): cint {.
Expand All @@ -110,28 +116,37 @@ sdktype:
isVisible {.importc: "isVisible".}: proc (sprite: LCDSpritePtr): cint {.cdecl, raises: [].}
setOpaque {.importc: "setOpaque".}: proc (sprite: LCDSpritePtr; flag: cint) {.cdecl, raises: [].}
markDirty {.importc: "markDirty".}: proc (sprite: LCDSpritePtr) {.cdecl, raises: [].}

setTag {.importc: "setTag".}: proc (sprite: LCDSpritePtr; tag: uint8) {.cdecl, raises: [].}
getTag {.importc: "getTag".}: proc (sprite: LCDSpritePtr): uint8 {.cdecl, raises: [].}

setIgnoresDrawOffset {.importc: "setIgnoresDrawOffset".}: proc (
sprite: LCDSpritePtr; flag: cint) {.cdecl, raises: [].}

setUpdateFunction {.importc: "setUpdateFunction".}: proc (
sprite: LCDSpritePtr; `func`: LCDSpriteUpdateFunctionRaw) {.cdecl, raises: [].}
setDrawFunction {.importc: "setDrawFunction".}: proc (sprite: LCDSpritePtr;
`func`: LCDSpriteDrawFunctionRaw) {.cdecl, raises: [].}

getPosition {.importc: "getPosition".}: proc (sprite: LCDSpritePtr;
x: ptr cfloat; y: ptr cfloat) {.cdecl, raises: [].} ## Collisions
x: ptr cfloat; y: ptr cfloat) {.cdecl, raises: [].}

## Collisions
resetCollisionWorld* {.importc: "resetCollisionWorld".}: proc () {.cdecl, raises: [].}

setCollideRect {.importc: "setCollideRect".}: proc (sprite: LCDSpritePtr;
collideRect: PDRect) {.cdecl, raises: [].}
getCollideRect {.importc: "getCollideRect".}: proc (sprite: LCDSpritePtr): PDRect {.
cdecl, raises: [].}
clearCollideRect {.importc: "clearCollideRect".}: proc (sprite: LCDSpritePtr) {.
cdecl, raises: [].} ## caller is responsible for freeing the returned array for all collision methods
cdecl, raises: [].}

## Caller is responsible for freeing the returned array for all collision methods
setCollisionResponseFunction {.importc: "setCollisionResponseFunction".}: proc (
sprite: LCDSpritePtr; `func`: LCDSpriteCollisionFilterProcRaw) {.cdecl, raises: [].}
checkCollisions {.importc: "checkCollisions".}: proc (sprite: LCDSpritePtr;
goalX: cfloat; goalY: cfloat; actualX: ptr cfloat; actualY: ptr cfloat;
len: ptr cint): SpriteCollisionInfoPtr {.cdecl, raises: [].} ## access results using SpriteCollisionInfo *info = &results[i];
len: ptr cint): SpriteCollisionInfoPtr {.cdecl, raises: [].}
moveWithCollisions {.importc: "moveWithCollisions".}: proc (
sprite: LCDSpritePtr; goalX: cfloat; goalY: cfloat; actualX: ptr cfloat;
actualY: ptr cfloat; len: ptr cint): SpriteCollisionInfoPtr {.cdecl, raises: [].}
Expand All @@ -142,18 +157,23 @@ sdktype:
querySpritesAlongLine {.importc: "querySpritesAlongLine".}: proc (x1: cfloat;
y1: cfloat; x2: cfloat; y2: cfloat; len: ptr cint): ptr LCDSpritePtr {.cdecl, raises: [].}
querySpriteInfoAlongLine {.importc: "querySpriteInfoAlongLine".}: proc (
x1: cfloat; y1: cfloat; x2: cfloat; y2: cfloat; len: ptr cint): ptr SpriteQueryInfo {.cdecl, raises: [].} ## access results using SpriteQueryInfo *info = &results[i];
x1: cfloat; y1: cfloat; x2: cfloat; y2: cfloat; len: ptr cint): ptr SpriteQueryInfo {.cdecl, raises: [].}
overlappingSprites {.importc: "overlappingSprites".}: proc (
sprite: LCDSpritePtr; len: ptr cint): ptr LCDSpritePtr {.cdecl, raises: [].}
allOverlappingSprites {.importc: "allOverlappingSprites".}: proc (len: ptr cint): ptr LCDSpritePtr {.
cdecl, raises: [].} ## added in 1.7
cdecl, raises: [].}

## Added in 1.7
setStencilPattern {.importc: "setStencilPattern".}: proc (
sprite: LCDSpritePtr; pattern: array[8, uint8]) {.cdecl, raises: [].}
clearStencil {.importc: "clearStencil".}: proc (sprite: LCDSpritePtr) {.cdecl, raises: [].}

setUserdata {.importc: "setUserdata".}: proc (sprite: LCDSpritePtr;
userdata: pointer) {.cdecl, raises: [].}
getUserdata {.importc: "getUserdata".}: proc (sprite: LCDSpritePtr): pointer {.
cdecl, raises: [].} ## added in 1.10
cdecl, raises: [].}

## Added in 1.10
setStencilImage {.importc: "setStencilImage".}: proc (sprite: LCDSpritePtr;
stencil: LCDBitmapPtr; tile: cint) {.cdecl, raises: [].}

4 changes: 2 additions & 2 deletions src/playdate/sprite.nim
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,9 @@ proc getImage*(this: LCDSprite): LCDBitmap =
privateAccess(PlaydateSprite)
return this.bitmap

proc setSize*(this: ptr PlaydateSprite, sprite: LCDSprite, width: float, height: float) =
proc setSize*(this: LCDSprite, width: float, height: float) =
privateAccess(PlaydateSprite)
this.setSize(sprite.resource, width.cfloat, height.cfloat)
playdate.sprite.setSize(this.resource, width.cfloat, height.cfloat)

proc `zIndex=`*(this: LCDSprite, zIndex: int16) =
privateAccess(PlaydateSprite)
Expand Down

0 comments on commit 41f8fbf

Please sign in to comment.