?login_element?

Subversion Repositories NedoOS

Rev

Rev 228 | Blame | Compare with Previous | Last modification | View Log | Download

  1. ;----ВЫБОР ГЕРОЕВ--------
  2.  
  3. oneSEL  ;кто выбран в xy=HL
  4.         ;jr $
  5.         LD HL,(PX)
  6.         LD A,L
  7.         DEC A
  8.         CP 62
  9.         RET NC
  10.         LD A,H
  11.         DEC A
  12.         CP 62
  13.         RET NC
  14.         CALL oneSE_
  15.         LD HL,(PX)
  16.         LD DE,(BX)
  17.         RRC D
  18.         LD A,E
  19.         JR C,oS1
  20.         RRCA
  21.         JR C,oS01
  22.         LD HL,(PX)
  23.         DEC L
  24.         CALL oneSE_
  25.         LD HL,(PX)
  26.         DEC L
  27. os0_    DEC H
  28.         CALL oneSE_
  29.         LD HL,(PX)
  30.         DEC H
  31. os_     CALL oneSE_
  32.         RET ;!
  33. oS01    INC L
  34.         CALL oneSE_
  35.         LD HL,(PX)
  36.         INC L
  37.         JR os0_
  38. oS1     RRCA
  39.         JR C,oS11
  40.         DEC L
  41.         CALL oneSE_
  42.         LD HL,(PX)
  43.         DEC L
  44. os1_    INC H
  45.         CALL oneSE_
  46.         LD HL,(PX)
  47.         INC H
  48.         JR os_
  49. oS11    INC L
  50.         CALL oneSE_
  51.         LD HL,(PX)
  52.         INC L
  53.         JR os1_
  54.         ;
  55. oneSE_  CALL GMAP ;норм вых - лишний POP!
  56.         BIT 7,(HL)
  57.         RET NZ
  58.         SET 4,H
  59.         LD A,(HL)
  60.         CP 2
  61.         RET C
  62.         CP #80
  63.         JR C,homSEL
  64.         SUB #80
  65.         LD HL,SEL_T
  66.         CP #30
  67.         LD E,1
  68.         JR C,ones1
  69.         LD E,7
  70. ones1   LD (HL),E
  71.         INC HL
  72.         LD (HL),A
  73.         POP AF ;!
  74.         RET
  75. homSEL  CP #38
  76.         JR C,hS1
  77.         SUB #38
  78.         LD HL,SEL_T
  79.         LD (HL),8
  80.         INC HL
  81.         LD (HL),A
  82.         POP AF ;!
  83.         RET
  84. hS1     RES 4,H
  85.         LD A,(HL)
  86.         AND #7F
  87.         SUB 120
  88.         RET C
  89.         SET 4,H
  90.         PUSH HL
  91.         LD HL,GSAT
  92.         CALL WT
  93.         POP DE
  94.         ADD HL,DE
  95.         LD A,(HL)
  96.         JR homSEL
  97.  
  98. selBOX  ;выбор в боксе
  99.         LD HL,(BOXX)
  100.         SRL L
  101.         SRL L
  102.         SRL L
  103.         SRL H
  104.         SRL H
  105.         SRL H
  106.         LD DE,(BX)
  107.         XOR A
  108.         PUSH HL
  109.         SBC HL,DE
  110.         POP HL
  111.         JP Z,oneSEL
  112.         SRL L
  113.         SRL H
  114.         LD DE,(X0)
  115.         ADD HL,DE
  116.         LD DE,(PX)
  117.         LD (SEL_T),A
  118.         LD A,D
  119.         SUB H
  120.         JR NC,sbX1
  121.         NEG
  122.         LD H,D
  123. sbX1    INC A
  124.         LD C,A
  125.         LD A,E
  126.         SUB L
  127.         JR NC,sbX2
  128.         NEG
  129.         LD L,E
  130. sbX2    INC A
  131.         EX AF,AF
  132.         CALL GMAP
  133. sbXL0   PUSH HL
  134.         EX AF,AF
  135.         LD B,A
  136.         EX AF,AF
  137. sbXL1   PUSH HL
  138.         BIT 7,(HL)
  139.         JR NZ,sbXL2
  140.         SET 4,H
  141.         LD A,(HL)
  142.         CP 2
  143.         JR C,sbXL2
  144.         CP #80
  145.         JR C,sbXbu
  146.         SUB #80
  147.         LD E,A
  148.         LD HL,SEL_T
  149.         CP #30
  150.         JR NC,sbXk
  151.         LD A,(HL)
  152.         CP 6
  153.         JR C,sbXh
  154.         XOR A
  155. sbXh    INC A
  156.         LD (HL),A
  157.         PUSH AF
  158.         CALL BA
  159.         POP AF
  160.         LD (HL),E
  161.         CP 6
  162.         JR C,sbXL2
  163.         POP AF
  164.         POP AF
  165.         RET
  166. sbXk    LD A,(HL)
  167.         OR A
  168.         JR NZ,sbXL2
  169.         LD (HL),7
  170.         INC HL
  171.         LD (HL),E
  172.         JR sbXL2
  173. sbXbu   CP #38
  174.         JR C,sbXb1
  175.         LD E,A
  176.         LD HL,SEL_T
  177.         LD A,(HL)
  178.         OR A
  179.         JR NZ,sbXL2
  180.         LD A,E
  181.         SUB #38
  182.         LD (HL),8
  183.         INC HL
  184.         LD (HL),A
  185.         JR sbXL2
  186. sbXb1   RES 4,H
  187.         LD A,(HL)
  188.         AND #7F
  189.         SUB 120
  190.         JR C,sbXL2
  191.         SET 4,H
  192.         PUSH HL
  193.         LD HL,GSAT
  194.         CALL WT
  195.         POP DE
  196.         ADD HL,DE
  197.         LD A,(HL)
  198.         JR sbXbu
  199. sbXL2   POP HL
  200.         INC HL
  201.         DJNZ sbXL1
  202.         POP HL
  203.         LD DE,64
  204.         ADD HL,DE
  205.         DEC C
  206.         JR NZ,sbXL0
  207.         RET
  208.  
  209.  
  210. centrS  ;поместить в центр
  211.         LD A,(isMAP)
  212.         OR A
  213.         RET NZ
  214.         LD A,(SEL_T)
  215.         OR A
  216.         RET Z
  217.         CP 8
  218.         LD A,(SEL_N)
  219.         PUSH AF
  220.         CALL NC,B_IX
  221.         POP AF
  222.         CALL C,N_IX
  223.         LD A,(IX)
  224.         CALL cesS
  225.         LD L,A
  226.         LD A,(IX+1)
  227.         CALL cesS
  228.         LD H,A
  229.         LD (X0),HL
  230.         RET
  231. cesS    SUB 6
  232.         JR NC,ces1
  233.         XOR A
  234.         RET
  235. ces1    CP 52
  236.         RET C
  237.         LD A,52
  238.         RET
  239.  
  240. deSEL   ;исключить А из N_SEL
  241.         EX AF,AF
  242.         LD HL,SEL_T
  243.         LD A,(HL)
  244.         OR A
  245.         RET Z
  246.         INC HL
  247.         CP 7
  248.         JR C,dL1
  249.         RET NZ
  250.         ;враг
  251.         EX AF,AF
  252.         CP (HL)
  253.         RET NZ
  254.         DEC HL
  255.         LD (HL),0
  256.         RET
  257. dL1     ;наш
  258.         LD B,A
  259.         EX AF,AF
  260. dL0     CP (HL)
  261.         JR Z,dL2
  262.         INC HL
  263.         DJNZ dL0
  264.         RET
  265. dL2     DEC B
  266.         JR Z,dL3
  267.         PUSH HL
  268.         POP DE
  269.         INC HL
  270.         LD C,B
  271.         LD B,0
  272.         LDIR
  273. dL3     LD HL,SEL_T
  274.         DEC (HL)
  275.         RET
  276.  
  277. flpSEL  ;flip пометки селект
  278.         LD HL,SyLOCK
  279.         LD BC,#7FFE ;SYM Shift
  280.         IN A,(C)
  281.         AND %1111
  282.         CP %1101
  283.         JR Z,fP1
  284.         LD (HL),0
  285.         RET
  286. fP1     LD A,(HL)
  287.         OR A
  288.         RET NZ
  289.         INC (HL)
  290.           CALL EVENTr
  291.         LD A,(SEL_T)
  292.         OR A
  293.         JP Z,addSEL
  294.         CP 7
  295.         RET NC
  296.         LD HL,(PX)
  297.         CALL GMAP2
  298.         LD A,(HL)
  299.         SUB #80
  300.         RET C
  301.         CP #30
  302.         RET NC
  303.         LD BC,(SEL_T)
  304.         PUSH BC
  305.         CALL deSEL
  306.         POP BC
  307.         LD A,(SEL_T)
  308.         CP C
  309.         RET NZ
  310. addSEL  LD HL,(PX)
  311.         CALL GMAP2
  312.         LD A,(HL)
  313.         SUB #80
  314.         RET C
  315.         CP #30
  316.         RET NC
  317.         LD B,A
  318.         LD HL,SEL_T
  319.         LD A,(HL)
  320.         CP 6
  321.         RET NC
  322.         INC (HL)
  323.         INC HL
  324.         CALL BA
  325.         LD (HL),B
  326.         RET
  327.  
  328. ;процедуры выбора
  329. capSEL  ;Выбор/рамка по CAPS
  330.         LD HL,(MX)
  331.         LD A,(T_FIRE)
  332.         CP 2
  333.         JR Z,BB1
  334.         LD A,(isMAP)
  335.         OR A
  336.         JR NZ,BB0
  337.         LD A,(begBOX)
  338.         OR A
  339.         RET Z
  340.         CALL EVENTr
  341.         CALL selBOX
  342. BB0     XOR A
  343.         LD (begBOX),A
  344.         RET
  345. BB1     ;pCAPS
  346.         LD A,L
  347.         CP 192
  348.         RET NC
  349.         LD A,(isMAP)
  350.         OR A
  351.         JR NZ,BBM
  352.         LD A,(begBOX)
  353.         OR A
  354.         RET NZ
  355.         INC A
  356.         LD (begBOX),A
  357.         LD A,L
  358.         CP 192
  359.         JR C,BB4
  360.         LD L,191
  361. BB4     LD (BOXX),HL
  362.         LD HL,(PX)
  363.         CALL EVENTr
  364.          JP oneSEL
  365. BBM     LD HL,(PX)
  366.         CALL EVENTr
  367.         CALL oneSE_ ;!
  368.         RET
  369.  
  370. SELECT  ;Выбор ф-ции на панели упр
  371.         ;функц кнопки
  372.         LD BC,#F7FE
  373.         IN A,(C)
  374.         LD DE,#500
  375. fun0    RRCA
  376.         JR NC,fun1
  377.         INC E
  378.         DEC D
  379.         JR NZ,fun0
  380.         LD B,#FD
  381.         IN A,(C)
  382.         AND 7
  383.         CP E
  384.         JR Z,fun1
  385.         LD E,#FF
  386. fun1    LD A,E
  387.         LD (_n_FUN),A
  388.         CP #FF
  389.         RET C
  390.         ;fire на панели
  391.         LD A,(T_FIRE)
  392.         DEC A
  393.         RET NZ
  394.         LD HL,(BX)
  395.         LD A,L
  396.         CP 25
  397.         RET C
  398.         LD A,H
  399.         CP 19
  400.         RET Z
  401.         JR NC,dwnPP
  402.         CP 9
  403.         RET Z
  404.         JR NC,midPP
  405. upPP    CP 4
  406.         RET C
  407.         LD A,(NAME)
  408.         CP 42
  409.         JP NZ,centrS
  410.         LD A,(ext_M)
  411.         XOR 1
  412.         LD (ext_M),A
  413.         JP EVENT
  414. dwnPP   CP 26
  415.         RET NC;индик предупр
  416.         ;гл.меню *********
  417.         XOR A
  418.         LD (T_FIRE),A
  419.         JP gmMENU
  420. midPP   LD A,L
  421.         SUB 25
  422.         CP 6
  423.         RET NC
  424.         LD L,0
  425.         LD E,L
  426.         CP 3
  427.         JR C,mi1
  428.         INC L
  429. mi1     LD A,H
  430.         SUB 10
  431.         CP 3
  432.         JR C,mi2
  433.         LD E,2
  434.         CP 6
  435.         JR C,mi2
  436.         LD E,4
  437. mi2     LD A,E
  438.         ADD A,L
  439.         LD (_n_FUN),A
  440.         RET
  441.  
  442. ;----------------------------------------------
  443. FIRBUT  ;обработка нажатия иконки + подсветка
  444.         LD A,#FF
  445.         LD (N_FUN1),A
  446.         LD HL,_n_FUN
  447.         CP (HL)
  448.         JR NZ,nSQ0
  449.         INC HL
  450.         LD (HL),A ;N_FUNC=#ff ;функция 0-5, или 255-none
  451.         RET
  452. nSQ0    LD A,(N_FUNC)
  453.         CP #FF
  454.         RET C
  455.         LD A,(HL) ;_n_FUN
  456.         INC HL
  457.         LD (HL),A ;N_FUNC ;функция 0-5, или 255-none
  458.         INC HL
  459.         LD (HL),A ;N_FUN1 ;дубль для подсветки
  460.         LD B,A
  461.         LD HL,BUT_N
  462.         CALL BA
  463.         OR A
  464.         RET Z ;пустая кн
  465.         LD C,A
  466.         CP 71     ;/катап _ cвободная стрельба?/
  467.         JR Z,nSQ1
  468.         CP 50
  469.         JR NC,procB
  470.         LD HL,spc_DO
  471.         CALL BA
  472.         OR A
  473.         JR Z,procB
  474.         CP 2
  475.         LD A,(SEL_T)
  476.         JR C,nSQ1
  477.         CP 7
  478.         JR NC,procB
  479. nSQ1    LD A,B
  480.         LD (F_FUNC),A ;выбор без немедл. действия
  481.         RET
  482. procB   ;обработка нажатий на кнопки (B-#кн,C-её тип)
  483.         LD A,(SEL_T)
  484.         CP 7
  485.         RET Z
  486.         JP NC,prcBLT
  487.         ;для людей/отряда
  488.         LD A,(BUT_H)
  489.         CP 24
  490.         JR NZ,pBH4
  491.         LD A,(ext_M)
  492.         OR A
  493.         JR Z,pBH4
  494.         ;один из отряда
  495.         LD A,B
  496.         LD HL,SEL_N
  497.         PUSH HL
  498.         CALL BA
  499.         POP HL
  500.         LD (HL),A
  501.         DEC HL
  502.         LD (HL),1
  503.         JP EVENTr
  504.  
  505. pBH4    LD A,C
  506.         CP 7
  507.         JR NC,pBH1
  508.         DEC A
  509.         DEC A
  510.         JR pBH0
  511. pBH1    CP 24
  512.         JR NC,pBH2
  513.         SUB 15
  514.         JR pBH0
  515. pBH2    SUB 39
  516. pBH0    LD HL,pBHt
  517.         CALL WT
  518.         JP (HL)
  519. pBHt    DEFW pBF2,pBF3,pBF4,pBF4,pBF4,pBF20,pBF21,pBF22,pBF23
  520.         DEFW pBF48,pBF48,pBF50
  521. pBF2    ;возвр в меню0
  522.         JP EVENTr
  523. pBF20   ;осн меню стр-ва
  524.         LD A,1
  525. pBF20_  CALL _EXT
  526.         LD A,#FF
  527.         LD (F_FUNC),A
  528.         RET
  529. pBF21   ;доп меню стр-ва
  530.         LD A,2
  531.         JR pBF20_
  532. pBF23   ;сбросить груз
  533.         LD HL,SEL_T
  534.         LD B,(HL)
  535. pBF23a  INC HL
  536.         PUSH BC
  537.         PUSH HL
  538.         LD A,(HL)
  539.         CALL N_IX
  540.         LD A,(IX+4)
  541.         CP 3
  542.         LD A,9
  543.         JR NC,pb01
  544.         XOR A
  545. pb01    LD (IX+4),A
  546.         CALL IX_98
  547.         POP HL
  548.         POP BC
  549.         DJNZ pBF23a
  550.         JP EVENTr
  551. pBF3    ;стоять насмерть
  552.         LD C,1
  553.         JR pb03
  554. pBF4    ;остановиться
  555.         LD C,0
  556. pb03    LD HL,SEL_T
  557.         LD B,(HL)
  558. pb02    INC HL
  559.         PUSH HL
  560.         LD A,(HL)
  561.         CALL N_IX
  562.         LD (IX+8),0
  563.         LD (IX+9),C
  564.         POP HL
  565.         DJNZ pb02
  566.         RET
  567. pBF22   ;идти на базу
  568.         XOR A
  569.         LD (SIDE_N),A
  570.         LD HL,SEL_T
  571.         LD B,(HL)
  572. pBF22a  INC HL
  573.         PUSH BC
  574.         PUSH HL
  575.         LD A,(HL)
  576.         CALL N_IX
  577.         CALL basTAR
  578.         POP HL
  579.         POP BC
  580.         DJNZ pBF22a
  581.         RET
  582. pBF50   ;родить монстра
  583.         LD B,MANA-1
  584.         LD A,(BUT_H)
  585.         CP 57
  586.         LD C,12
  587.         JR Z,pb05
  588.         LD C,15
  589.         JR pb05
  590. pBF48   ;родить пауков
  591.         LD B,MANA/4
  592.         LD A,(BUT_H)
  593.         CP 57
  594.         LD C,10
  595.         JR Z,pb05
  596.         LD C,13
  597. pb05    LD A,(SEL_N)
  598.         CALL N_IX
  599.         LD A,(IX+6)
  600.         CP B
  601.         JR C,pb07
  602.         LD (IX+9),C
  603.         LD (IX+8),0
  604.         RET
  605. pb07    LD A,25 ;no mana
  606.         JP dirTX
  607.  
  608. ;---кнопки зданий--------------
  609. prcBT1  DEFB 29,30,31,32,33,34,0,4,3,8,7,5,6
  610.         DEFB #FF,#FF,#FF,9,13,12,17,16,14,15
  611. prcBT0  DEFB 27,28,#FF,22,23
  612.         DEFB #FF,20,21,24,25,26
  613.  
  614. prcBLT  ;C-k.typ
  615.         LD A,C
  616.         CP 51
  617.         JR C,pCB4
  618.         CP 68
  619.         JR NC,pCB4
  620.         ;для ПР-ВА юнитов проверить наличе пищи (4*N+1)
  621.         PUSH BC
  622.         CALL oNUMh ;едоки->C
  623.         PUSH BC
  624.         CALL oHOMh ;пища->A
  625.         POP BC
  626.         INC C
  627.         CP C
  628.         POP BC
  629.         JR NC,pCB4
  630.         LD A,43
  631.         JP dirTX
  632. pCB4    PUSH BC
  633.         LD A,(N_FUNC)
  634.         CALL GETmw
  635.         CALL dMN_WD
  636.         POP BC
  637.         JP C,nMN_WD
  638.         CALL EVENT
  639.         LD A,(SEL_N)
  640.         CALL B_IX
  641.         LD A,C
  642.         CP 16
  643.         JR C,pCB1
  644.         CP 68
  645.         RET NC
  646.         SUB 45
  647.         RET C
  648.         ;закл/герои
  649.         LD HL,prcBT1
  650. pCB2    CALL BA
  651.         LD (IX+4),A
  652.         LD HL,hcTIME
  653.         CALL BA
  654.         LD (IX+5),A
  655.         RET
  656. pCB1    SUB 5
  657.         LD HL,prcBT0
  658.         JR NC,pCB2
  659.         CP -3
  660.         RET NZ
  661.         LD A,(IX+4)
  662.         CP #80
  663.         JR C,pCBr
  664.         ;уничт.здание
  665.         LD (IX+3),0
  666.         RET
  667.         ;прекр.разработку
  668. pCBr    LD (IX+4),255
  669.         RET
  670.  
  671. ;NN производств: 255-none
  672. ;0..8 наши
  673. ;9..17 враги
  674. ;20-лук1, 21-лук2, 22-меч1, 23-меч2, 24-конь1, 25-конь2, 26-конь3
  675. ;27-щит1, 28-щит2, 29-волш1,30-волш2,31-волш3
  676. ;32-закл1, 33-закл2, З4-закл3
  677. ;(40..-то же для врагов)
  678. hcTIME  ;время на пр-во
  679.         DEFB 100,100,100,120,120,140,150,200,140 ;наши
  680.         DEFB 100,100,100,120,120,140,150,200,140 ;враги
  681.         DEFB 1,1 ;none
  682.         DEFB 150,200,150,200,100,150,200, 150,200, 150,200,250
  683.         DEFB 120,180,230 ;наши разр
  684.  
  685. ;/      DEFB 0,0,0,0,0
  686. ;/      DEFB 150,200,150,200,100,150,200, 150,200, 150,200,250
  687. ;/      DEFB 120,180,230 ;;0,0,0,0,0 ;их разр
  688.  
  689.