mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-03-27 18:35:06 +00:00
Add sprite center
This commit is contained in:
parent
b5f832b0b2
commit
322546a0b1
@ -1,5 +1,5 @@
|
||||
import sprite
|
||||
predef spriteCompile(w, h, srcptr)#1
|
||||
predef spriteCompile(w, h, xcenter, ycenter, srcptr)#1
|
||||
predef spriteDup(sprtsrc)#1
|
||||
predef spriteRead(filestr)#1
|
||||
predef spriteSave(filestr, sprtptr)#1
|
||||
|
@ -8,6 +8,8 @@ struc t_sprite
|
||||
var s_undery[2]
|
||||
var s_underofst[2]
|
||||
byte s_undermap[2]
|
||||
byte s_xcenter
|
||||
byte s_ycenter
|
||||
byte s_pitch
|
||||
byte s_height
|
||||
var s_size
|
||||
@ -121,7 +123,7 @@ def spriteBLTMask(x, y, w, h, srcptr)#0
|
||||
srcptr = srcptr + (w + 1) / 2
|
||||
next
|
||||
end
|
||||
export def spriteCompile(w, h, srcptr)#1
|
||||
export def spriteCompile(w, h, xcenter, ycenter, srcptr)#1
|
||||
var sprtptr, bytewidth, spritesize, i
|
||||
|
||||
sprtptr = heapalloc(t_sprite)
|
||||
@ -130,6 +132,8 @@ export def spriteCompile(w, h, srcptr)#1
|
||||
spritesize = bytewidth * h
|
||||
sprtptr=>s_size = spritesize
|
||||
sprtptr->s_height = h
|
||||
sprtptr->s_xcenter = xcenter
|
||||
sprtptr->s_ycenter = ycenter
|
||||
sprtptr=>s_under[0] = heapalloc(spritesize)
|
||||
sprtptr=>s_under[1] = heapalloc(spritesize)
|
||||
for i = 0 to 13
|
||||
@ -155,6 +159,9 @@ export def spriteDup(sprtsrc)#1
|
||||
sprtdup=>s_size = spritesize
|
||||
sprtdup->s_pitch = sprtsrc->s_pitch
|
||||
sprtdup->s_height = sprtsrc->s_height
|
||||
sprtdup->s_height = sprtsrc->s_height
|
||||
sprtdup->s_xcenter = sprtsrc->s_xcenter
|
||||
sprtdup->s_ycenter = sprtsrc->s_ycenter
|
||||
sprtdup=>s_under[0] = heapalloc(spritesize)
|
||||
sprtdup=>s_under[1] = heapalloc(spritesize)
|
||||
for i = 0 to 13
|
||||
@ -250,14 +257,14 @@ export def spriteUnDrawXor(sprtptr)#0
|
||||
hgrXorSrc(sprtptr=>s_underofst[drawpage], sprtptr=>s_undery[drawpage], sprtptr->s_pitch, sprtptr->s_height, sprtptr=>s_map[sprtptr->s_undermap[drawpage]])
|
||||
end
|
||||
export def spritePos(x, y, sprtptr)#0
|
||||
sprtptr=>s_ypos = y
|
||||
sprtptr=>s_xpos = x
|
||||
sprtptr=>s_ypos = y - sprtptr->s_ycenter
|
||||
sprtptr=>s_xpos = x - sprtptr->s_xcenter
|
||||
end
|
||||
export def spritePosIndex(x, y, i)#0
|
||||
i = i & 15
|
||||
if drawList[i]
|
||||
drawList[i]=>s_ypos = y
|
||||
drawList[i]=>s_xpos = x
|
||||
drawList[i]=>s_ypos = y - drawList[i]->s_ycenter
|
||||
drawList[i]=>s_xpos = x - drawList[i]->s_xcenter
|
||||
fin
|
||||
end
|
||||
export def spriteDrawList#0
|
||||
|
@ -51,11 +51,11 @@ def testblt(sprtnum)#0
|
||||
while ^$C000 < 128
|
||||
for k = 0 to sprtnum
|
||||
i[k] = i[k] + ii[k]
|
||||
if i[k] < -10 or i[k] > 280
|
||||
if i[k] < 0 or i[k] > 279
|
||||
ii[k] = -ii[k]
|
||||
fin
|
||||
j[k] = j[k] + jj[k]
|
||||
if j[k] < -10 or j[k] > 192
|
||||
if j[k] < 0 or j[k] > 191
|
||||
jj[k] = -jj[k]
|
||||
fin
|
||||
spritePosIndex(i[k], j[k], k)
|
||||
@ -67,7 +67,7 @@ end
|
||||
|
||||
hgrMode
|
||||
spriteDrawBuf(hgrDrawBuf(0)) // So we can see the compile process
|
||||
sprtBall = spriteCompile(10, 10, @ball)
|
||||
sprtBall = spriteCompile(10, 10, 5, 5, @ball)
|
||||
hgrColor(0)
|
||||
hgrClear()
|
||||
testline
|
||||
|
Loading…
x
Reference in New Issue
Block a user