?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1.         module HERO
  2.  
  3. init:
  4.         SET_EXEC_IX update
  5.         ld a,1
  6.         ld (ix+oData.isMovable),a
  7.         ld (ix+oData.accelerate),a      ; the initial acceleration of the object during movement, if any.
  8.         ld (ix+oData.drawMethod),a
  9.         ld (ix+oData.color),INK.YELLOW | PAPER.BLACK | BRIGHTNESS
  10.         ld a,l
  11.         and 15
  12.         ld (ix+oData.step),a
  13.         jp OBJECTS.setObjectId
  14. ;----------------------------------------------------
  15. getCoin:
  16.         ; IY - coin data address
  17.         ld hl,(coins)
  18.         ld bc,10
  19.         add hl,bc
  20.         ld (coins),hl
  21.         call POP_UP_INFO.setPlus10
  22.         ld hl,SOUND_PLAYER.DATA.coin
  23.         call OBJECTS.preDestructionOther
  24.         jp OBJECTS.resetObjectIY
  25. ;----------------------------------------------------
  26. update:
  27.         ; IX = this object data address
  28.         ; IY = target object data address or IY = #0000
  29.  
  30.         ld a,(ix+oData.isDestroyed)
  31.         or a
  32.         jr nz,dead
  33.  
  34.  
  35.         call OBJECTS.collision         
  36.         ; return IY target object data address or IY = 0
  37.         call getDrawData
  38.  
  39.         xor a
  40.         cp iyh
  41.         ret z
  42.  
  43.         call OBJECTS.isSameObject
  44.         jp z,OBJECTS.alignToCell
  45.  
  46.         cp ENEMY_FACE_00_PBM_ID
  47.         jp z,dead
  48.  
  49.         cp BOOM_01_PBM_ID
  50. ;       jp z,dead
  51.         jp z,BOMB.setExplosion
  52.  
  53.  
  54.         cp CHUPA_001_PBM_ID
  55.         jp z,getCoin
  56.  
  57.         cp ICEHOLE_PBM_ID
  58.         jr z,dead
  59.  
  60.         cp BROKEN_BLOCK_PBM_ID
  61.         jp z,OBJECTS.alignToCell
  62.  
  63.         cp BOX_PBM_ID
  64.         jp z,OBJECTS.alignToCell
  65.  
  66.  
  67.         cp EXIT_DOOR_PBM_ID
  68.         ret nz
  69.         call OBJECTS.alignToCell
  70.         call OBJECTS.draw.oneObject
  71.         call SOUND_PLAYER.SET_SOUND.done
  72.  
  73.         ld a,(ix+oData.spriteId)
  74.         call countObjectsSameType
  75.         dec a
  76.         jr z,.leaveLevel
  77.         ; stay on level
  78.         call POP_UP_INFO.setMore
  79.         jr finish
  80. .leaveLevel:   
  81.         call POP_UP_INFO.setDone
  82.         ld hl,currentLevel
  83.         inc (hl)
  84.         inc hl  ; isLevelPassed label
  85.         ld (hl),SYSTEM.SHOP_INIT
  86.  
  87. finish:
  88.         call SYSTEM.int
  89.         ld c,(ix+oData.cellId)
  90.         call getAttrAddrByCellId
  91.         ld a,(ix+oData.color)
  92.         call colorRotate
  93.         ld (ix+oData.color),a
  94.         ex de,hl
  95.         call fillAttr2x2
  96.         push ix
  97.         call POP_UP_INFO.show
  98.         pop ix
  99.         call SOUND_PLAYER.play
  100.         call POP_UP_INFO.isFinish
  101.         jr nz,finish
  102.         jp OBJECTS.resetObjectIX
  103. dead:
  104.         call SOUND_PLAYER.SET_SOUND.dead
  105.         call POP_UP_INFO.setWasted
  106.         call OBJECTS.alignToCell
  107.         call OBJECTS.draw.oneObject
  108.         ld (ix+oData.isDestroyed),1
  109.         call finish
  110.         ld hl,(lives)
  111.         dec hl
  112.         ld (lives),hl
  113.         ld a,l
  114.         or h
  115.         ld a,SYSTEM.MAIN_MENU_INIT
  116.         ld (rebuildLevel),a
  117.         ret z
  118.         ld a,SYSTEM.SHOP_INIT
  119.         ld (rebuildLevel),a
  120.         ret
  121. ;----------------------------------------------------
  122.  
  123.         endmodule
  124.