Movement climb check replaced with better gap check
This commit is contained in:
parent
aef29be0f8
commit
1dde996981
46
gameobject.s
46
gameobject.s
|
@ -8,8 +8,6 @@
|
||||||
GAMEOBJECTWIDTH = 16
|
GAMEOBJECTWIDTH = 16
|
||||||
GAMEOBJECTHEIGHT = 16
|
GAMEOBJECTHEIGHT = 16
|
||||||
MAXGAMEOBJECTS = 6 ; Size of general purpose object pool
|
MAXGAMEOBJECTS = 6 ; Size of general purpose object pool
|
||||||
MAXCLIMB = 16 ; Highest pixel cliff we can climb
|
|
||||||
|
|
||||||
|
|
||||||
; Base class sample:
|
; Base class sample:
|
||||||
;gameobjectData:
|
;gameobjectData:
|
||||||
|
@ -132,49 +130,20 @@ moveGameObjectOnTerrain:
|
||||||
lda (PARAML0),y
|
lda (PARAML0),y
|
||||||
clc
|
clc
|
||||||
adc SCRATCHL2 ; Apply X delta
|
adc SCRATCHL2 ; Apply X delta
|
||||||
|
|
||||||
clc ; Map into reversed terrain X space
|
|
||||||
adc #GAMEOBJECTWIDTH
|
|
||||||
sta SCRATCHL
|
|
||||||
lda #TERRAINWIDTH
|
|
||||||
sec
|
|
||||||
sbc SCRATCHL
|
|
||||||
sta SCRATCHL ; Desired X position
|
|
||||||
|
|
||||||
ldy #GO_POSY
|
|
||||||
lda (PARAML0),y
|
|
||||||
sec
|
|
||||||
sbc #GAMEOBJECTHEIGHT
|
|
||||||
sta SCRATCHL2 ; Current Y position
|
|
||||||
|
|
||||||
lda SCRATCHL ; Check terrain height at new position
|
|
||||||
pha
|
pha
|
||||||
jsr terrainHeightAtGameObjectPos
|
|
||||||
|
; Check for impassable gaps
|
||||||
sec
|
sec
|
||||||
sbc SCRATCHL2
|
sbc #GAMEOBJECTWIDTH/2
|
||||||
bmi moveGameObjectOnTerrainStepDown
|
|
||||||
|
|
||||||
moveGameObjectOnTerrainCheckHeight:
|
moveGameObjectOnTerrainCheckHeight:
|
||||||
cmp #MAXCLIMB
|
jsr terrainHeightAtGameObjectPos
|
||||||
bcs moveGameObjectOnTerrainTooFar
|
cmp #0
|
||||||
bra moveGameObjectOnTerrainStore
|
beq moveGameObjectOnTerrainTooFar
|
||||||
|
|
||||||
moveGameObjectOnTerrainStepDown:
|
|
||||||
dec
|
|
||||||
eor #$ffff
|
|
||||||
bra moveGameObjectOnTerrainCheckHeight
|
|
||||||
|
|
||||||
moveGameObjectOnTerrainStore:
|
moveGameObjectOnTerrainStore:
|
||||||
pla
|
|
||||||
sta SCRATCHL
|
|
||||||
|
|
||||||
; Reverse X position again
|
|
||||||
lda #TERRAINWIDTH
|
|
||||||
sec
|
|
||||||
sbc #GAMEOBJECTWIDTH
|
|
||||||
sbc SCRATCHL
|
|
||||||
|
|
||||||
ldy #GO_POSX
|
ldy #GO_POSX
|
||||||
|
pla
|
||||||
sta (PARAML0),y
|
sta (PARAML0),y
|
||||||
jsr placeGameObjectOnTerrain
|
jsr placeGameObjectOnTerrain
|
||||||
|
|
||||||
|
@ -186,7 +155,6 @@ moveGameObjectOnTerrainTooFar:
|
||||||
pla
|
pla
|
||||||
bra moveGameObjectOnTerrainTooDone
|
bra moveGameObjectOnTerrainTooDone
|
||||||
|
|
||||||
|
|
||||||
moveGameObjectLeftOffset:
|
moveGameObjectLeftOffset:
|
||||||
.word 0
|
.word 0
|
||||||
moveGameObjectRightOffset:
|
moveGameObjectRightOffset:
|
||||||
|
|
Loading…
Reference in New Issue