Prev: 60EF Up: Map Next: 61B8
60FD: See which path intersects the hero position.
Used by the routines at 61B8 and ScreenUpdate.
PathIntersect 60FD LD DE,(ManData_PosPrimary_dfc3)
6101 LD HL,(ManData_PosSecondary_dfc5)
6104 LD A,(CamDirection_DFD2) Depending on the camera, decide which path data to use.
6107 AND $01
6109 JR NZ,PathIntersect_0
610B LD IX,(AreaDataCurrent_Path_H)
610F JR PathIntersect_1
PathIntersect_0 6111 LD IX,(AreaDataCurrent_Path_V)
6115 EX DE,HL
PathIntersect_1 6116 LD A,(ThruDoorCounter_E004)
6119 AND A
611A JR Z,PathIntersect_4
611C LD A,(CamDirection_DFD2) Since man is currently walking through a doorway, offset position by +/-6 units.
611F LD BC,$0006
6122 CP $02
6124 JR C,PathIntersect_2
6126 LD BC,$FFFA
PathIntersect_2 6129 LD A,(ManWalkDirection_DFD4)
612C CP $02
612E JR Z,PathIntersect_3
6130 ADD HL,BC
6131 JR PathIntersect_4
PathIntersect_3 6133 AND A
6134 SBC HL,BC
PathIntersect_4 6136 LD C,L BC now holds offset position. Store original position on stack. Remember this is either the X coord or Y coord depending on the camera.
6137 LD B,H
See if any paths, in the list, intersects the man's position.
TestPath 6138 PUSH DE
6139 LD A,(IX+$00) Get the area index of path, if not the same as man then skip this path.
613C AND A
613D JR Z,PathIntersect_5
613F LD HL,AreaDataCurrent_Index
6142 CP (HL)
6143 JR NZ,NextPath
Get Path Axis Position
PathIntersect_5 6145 LD A,(IX+$01) Get start position of path
6148 CP $FF End if Terminate Code (0xFF)
614A JR Z,StoreNoPath
614C LD L,A (pos x 2) to scale upto real units.
614D LD H,$00
614F ADD HL,HL
6150 AND A Get distance from man's position.
6151 SBC HL,DE
6153 JR NC,PathIntersect_6 If >= man's position...
6155 LD DE,$0004
6158 AND A
6159 ADC HL,DE
615B JP M,NextPath
615E JR PathIntersect_7
PathIntersect_6 6160 LD DE,$0004
6163 SCF
6164 SBC HL,DE
6166 JR NC,StoreNoPath
Get Path End(1) Position
PathIntersect_7 6168 LD L,(IX+$02)
616B LD H,$00
616D ADD HL,HL
616E SCF
616F SBC HL,BC
6171 JR NC,NextPath
Get Path End(2) Position
6173 LD L,(IX+$03)
6176 LD H,$00
6178 ADD HL,HL
6179 AND A
617A SBC HL,BC
617C JR NC,PathIntersect_8
Next Path
NextPath 617E LD DE,$0004
6181 ADD IX,DE
6183 POP DE
6184 JR TestPath
Store 'No Path'
StoreNoPath 6186 POP DE
6187 LD HL,$5E5A
618A LD (CurrentPathPtr),HL
618D LD A,(CamDirection_DFD2)
6190 LD ($DFD9),A
6193 RET
Path Found
PathIntersect_8 6194 POP DE
6195 LD (CurrentPathPtr),IX Store path address.
6199 LD A,(CamDirection_DFD2)
619C LD ($DFD9),A
619F LD (PathScopes_DFDA),IX
61A3 LD ($DFDC),A
61A6 LD L,(IX+$01) Make sure man is positioned correctly on path axis.
61A9 LD H,$00
61AB ADD HL,HL
61AC AND $01
61AE JR Z,PathIntersect_9
61B0 LD (ManData_PosSecondary_dfc5),HL
61B3 RET
PathIntersect_9 61B4 LD (ManData_PosPrimary_dfc3),HL
61B7 RET
Prev: 60EF Up: Map Next: 61B8