ZoriaRPG

LinkTiles.zh

Nov 27th, 2017
135
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import "std.zh"
  2.  
  3.  
  4. int tileframe;
  5.  
  6. //Base tiles for use in stacking equipment. These will be copied to the drawn tiles, and the equipment overlaid.
  7. const int BASE_LINKTILE_WALK_UP
  8. const int BASE_LINKTILE_WALK_UP_B
  9. const int BASE_LINKTILE_WALK_DOWN
  10. const int BASE_LINKTILE_WALK_DOWN_B
  11. const int BASE_LINKTILE_WALK_LEFT
  12. const int BASE_LINKTILE_WALK_LEFT_B
  13. const int BASE_LINKTILE_WALK_RIGHT
  14. const int BASE_LINKTILE_WALK_UP_RIGHT
  15. const int BASE_LINKTILE_ATTACK_UP
  16. const int BASE_LINKTILE_ATTACK_DOWN
  17. const int BASE_LINKTILE_ATTACK_LEFT
  18. const int BASE_LINKTILE_ATTACK_RIGHT
  19. const int BASE_LINKTILE_SWIM_UP
  20. const int BASE_LINKTILE_SWIM_UP_B
  21. const int BASE_LINKTILE_SWIM_DOWN
  22. const int BASE_LINKTILE_SWIM_DOWN_B
  23. const int BASE_LINKTILE_SWIM_LEFT
  24. const int BASE_LINKTILE_SWIM_LEFT_B
  25. const int BASE_LINKTILE_SWIM_RIGHT
  26. const int BASE_LINKTILE_SWIM_UP_RIGHT
  27.  
  28. const int BASE_LINKTILE_DIVE_UP
  29. const int BASE_LINKTILE_DIVE_UP_B
  30. const int BASE_LINKTILE_DIVE_DOWN
  31. const int BASE_LINKTILE_DIVE_DOWN_B
  32. const int BASE_LINKTILE_DIVE_LEFT
  33. const int BASE_LINKTILE_DIVE_LEFT_B
  34. const int BASE_LINKTILE_DIVE_RIGHT
  35. const int BASE_LINKTILE_DIVE_UP_RIGHT
  36.  
  37. const int BASE_LINKTILE_HOLD1LAND
  38. const int BASE_LINKTILE_HOLD2LAND
  39. const int BASE_LINKTILE_HOLD1WATER
  40. const int BASE_LINKTILE_HOLD2WATER
  41. const int BASE_LINKTILE_CASTFRAME_1
  42. const int BASE_LINKTILE_CASTFRAME_2
  43. const int BASE_LINKTILE_CASTFRAME_3
  44. const int BASE_LINKTILE_CASTFRAME_4
  45.  
  46. void OverlayEquipment()
  47. {
  48.    
  49.     //Armour and clothing
  50.     //Capes if facing up
  51.     //Shield Tiles if not facing up
  52. }
  53.  
  54.  
  55.  
  56. //These tiles will be drawn
  57. const int LINKTILE_WALK_UP
  58. const int LINKTILE_WALK_UP_B
  59. const int LINKTILE_WALK_DOWN
  60. const int LINKTILE_WALK_DOWN_B
  61. const int LINKTILE_WALK_LEFT
  62. const int LINKTILE_WALK_LEFT_B
  63. const int LINKTILE_WALK_RIGHT
  64. const int LINKTILE_WALK_UP_RIGHT
  65. const int LINKTILE_ATTACK_UP
  66. const int LINKTILE_ATTACK_DOWN
  67. const int LINKTILE_ATTACK_LEFT
  68. const int LINKTILE_ATTACK_RIGHT
  69. const int LINKTILE_SWIM_UP
  70. const int LINKTILE_SWIM_UP_B
  71. const int LINKTILE_SWIM_DOWN
  72. const int LINKTILE_SWIM_DOWN_B
  73. const int LINKTILE_SWIM_LEFT
  74. const int LINKTILE_SWIM_LEFT_B
  75. const int LINKTILE_SWIM_RIGHT
  76. const int LINKTILE_SWIM_UP_RIGHT
  77.  
  78. const int LINKTILE_DIVE_UP
  79. const int LINKTILE_DIVE_UP_B
  80. const int LINKTILE_DIVE_DOWN
  81. const int LINKTILE_DIVE_DOWN_B
  82. const int LINKTILE_DIVE_LEFT
  83. const int LINKTILE_DIVE_LEFT_B
  84. const int LINKTILE_DIVE_RIGHT
  85. const int LINKTILE_DIVE_UP_RIGHT
  86.  
  87. const int LINKTILE_HOLD1LAND
  88. const int LINKTILE_HOLD2LAND
  89. const int LINKTILE_HOLD1WATER
  90. const int LINKTILE_HOLD2WATER
  91. const int LINKTILE_CASTFRAME_1
  92. const int LINKTILE_CASTFRAME_2
  93. const int LINKTILE_CASTFRAME_3
  94. const int LINKTILE_CASTFRAME_4
  95.  
  96. void TileFrame()
  97. {
  98.     if ( ++tileframe >= 12 ) tileframe = 0;
  99. }
  100.  
  101. //const int FLIP_LEFT_RIGHT_LINKTILE = 0;
  102.  
  103. void SetLinkSprite()
  104. {
  105.     int walktiles[] = {
  106.         //dir tile 1, tile 2
  107.         LINKTILE_WALK_UP, LINKTILE_WALK_UP_B, //Up
  108.         LINKTILE_WALK_DOWN, LINKTILE_WALK_DOWN_B, //down
  109.         LINKTILE_WALK_LEFT, LINKTILE_WALK_LEFT_B, //left
  110.         LINKTILE_WALK_RIGHT, LINKTILE_WALK_UP_RIGHT //right
  111.     };
  112.     int attacktiles[] = {
  113.         //dir tile 1, tile 2
  114.         LINKTILE_ATTACK_UP,
  115.         LINKTILE_ATTACK_DOWN,
  116.         LINKTILE_ATTACK_LEFT,
  117.         LINKTILE_ATTACK_RIGHT,
  118.     };
  119.     int swimtiles[] = {
  120.         //dir tile 1, tile 2
  121.         LINKTILE_SWIM_UP, LINKTILE_SWIM_UP_B, //Up
  122.         LINKTILE_SWIM_DOWN, LINKTILE_SWIM_DOWN_B, //down
  123.         LINKTILE_SWIM_LEFT, LINKTILE_SWIM_LEFT_B, //left
  124.         LINKTILE_SWIM_RIGHT, LINKTILE_SWIM_UP_RIGHT //right
  125.     };
  126.     int diveiles[] = {
  127.         //dir tile 1, tile 2
  128.         LINKTILE_DIVE_UP, LINKTILE_DIVE_UP_B, //Up
  129.         LINKTILE_DIVE_DOWN, LINKTILE_DIVE_DOWN_B, //down
  130.         LINKTILE_DIVE_LEFT, LINKTILE_DIVE_LEFT_B, //left
  131.         LINKTILE_DIVE_RIGHT, LINKTILE_DIVE_UP_RIGHT //right
  132.     };
  133.     int holdtiles[] = {LINKTILE_HOLD1LAND, LINKTILE_HOLD2LAND, LINKTILE_HOLD1WATER, LINKTILE_HOLD2WATER };
  134.     int castingtiles[] = {LINKTILE_CASTFRAME_1, LINKTILE_CASTFRAME_2, LINKTILE_CASTFRAME_3, LINKTILE_CASTFRAME_4 };
  135.            
  136.     //int spr;
  137.     int tile = 0; int flip = 0;
  138.     switch(Link->Action)
  139.     {
  140.         case LA_NONE:
  141.         {
  142.             tile = walktiles[(Link->Dir *2)]; flip = 0;
  143.             break;
  144.         }
  145.         case LA_WALKING:
  146.         {
  147.             tile = walktiles[(Link->Dir *2) + Cond( (tileframe < 6), 0, 1 ) ]; flip = 0;
  148.             break;
  149.         }
  150.         case LA_ATTACKING:
  151.         {
  152.             tile = attacktiles[Link->Dir]; flip = 0;
  153.             break;
  154.         }
  155.         case LA_CHARGING:
  156.         {
  157.             //Are ther emultiple frames to this?
  158.             tile = attacktiles[Link->Dir]; flip = 0;
  159.             break;
  160.         }
  161.         case LA_SPINNING:
  162.         {
  163.             tile = attacktiles[Link->Dir]; flip = 0;
  164.             break;
  165.             /*
  166.             switch(Link->Dir)
  167.             {
  168.                
  169.                 case DIR_UP:
  170.                 {
  171.                     tile = attacktiles[DIR_UP];
  172.                     flip = 0;
  173.                     break;
  174.                 }
  175.                 case DIR_DOWN:
  176.                 {
  177.                     tile = attacktiles[DIR_DOWN];
  178.                     flip = 0;
  179.                     break;
  180.                 }
  181.                 case DIR_LEFT:
  182.                 {
  183.                     tile = attacktiles[DIR_LEFT];
  184.                     flip = 0;
  185.                     break;
  186.                 }
  187.                 case DIR_RIGHT:
  188.                 {
  189.                     tile = attacktiles[DIR_LEFT];
  190.                     flip = 1;
  191.                     break;
  192.                 }
  193.                
  194.             }
  195.             break;
  196.             */
  197.         }
  198.         case LA_SWIMMING:
  199.         {
  200.             tile = swimtiles[(Link->Dir *2) + Cond( (tileframe < 6), 0, 1 ) ]; flip = 0;
  201.             break;
  202.         }
  203.         case LA_DIVING:
  204.         {
  205.             tile = divetiles[(Link->Dir *2) + Cond( (tileframe < 6), 0, 1 ) ]; flip = 0;
  206.             break;
  207.         }
  208.         case LA_DROWNING:
  209.         {
  210.             tile = divetiles[(Link->Dir *2) + Cond( (tileframe < 6), 0, 1 ) ]; flip = 0;
  211.             break;
  212.         }
  213.         case LA_HOLD1LAND:
  214.             tile = holdtiles[0]; break; flip = 0;
  215.         case LA_HOLD2LAND:
  216.             tile = holdtiles[1]; break; flip = 0;
  217.         case LA_HOLD1WATER:
  218.             tile = holdtiles[3]; break; flip = 0;
  219.         case LA_HOLD2WATER:
  220.             tile = holdtiles[4]; break; flip = 0;
  221.         case LA_RAFTING:
  222.             tile = walktiles[(Link->Dir *2)]; break; flip = 0;
  223.         case LA_GOTHURTLAND:
  224.             tile = walktiles[(Link->Dir *2)]; break; flip = 0;
  225.         case LA_GOTHURTWATER:
  226.             tile = swimtiles[(Link->Dir *2)]; flip = 0;
  227.         case LA_INWIND:
  228.             tile = walktiles[(Link->Dir *2)]; break; flip = 0;
  229.         case LA_SCROLLING:
  230.             tile = walktiles[(Link->Dir *2)]; break; flip = 0;
  231.         case LA_WINNING:
  232.             tile = holdtiles[1]; break; flip = 0;
  233.         case LA_HOPPING:
  234.         case LA_CAVEWALKUP:
  235.             tile = walktiles[DIR_UP + Cond( (tileframe < 6), 0, 1 ) ]; break; flip = 0;
  236.         case LA_CAVEWALKDOWN:
  237.             tile = walktiles[(DIR_DOWN*2) + Cond( (tileframe < 6), 0, 1 ) ]; break; flip = 0;
  238.        
  239.         case LA_DYING:
  240.         {
  241.             switch(tileframe)
  242.             {
  243.                 case 0:
  244.                 case 1:
  245.                 case 2:
  246.                 {
  247.                     tile = walktiles[0]; flip = 0; break;
  248.                 }
  249.                 case 3:
  250.                 case 4:
  251.                 case 5:
  252.                 {
  253.                     tile = walktiles[2]; flip = 0; break;
  254.                 }  
  255.                 case 6:
  256.                 case 7:
  257.                 case 8:
  258.                 {
  259.                     tile = walktiles[4]; flip = 0; break;
  260.                 }  
  261.                 case 9:
  262.                 case 10:
  263.                 case 11:
  264.                 {
  265.                     tile = walktiles[6]; flip = 0; break;
  266.                 }
  267.             }
  268.             break;
  269.         }
  270.         case LA_CASTING:
  271.         {
  272.             switch(tileframe)
  273.             {
  274.                 case 0:
  275.                 case 1:
  276.                 case 2:
  277.                 {
  278.                     tile = castingtiles[0]; flip = 0; break;
  279.                 }
  280.                 case 3:
  281.                 case 4:
  282.                 case 5:
  283.                 {
  284.                     tile = castingtiles[1]; flip = 0; break;
  285.                 }  
  286.                 case 6:
  287.                 case 7:
  288.                 case 8:
  289.                 {
  290.                     tile = castingtiles[2]; flip = 0; break;
  291.                 }  
  292.                 case 9:
  293.                 case 10:
  294.                 case 11:
  295.                 {
  296.                     tile = castingtiles[3]; flip = 0; break;
  297.                 }
  298.             }
  299.             break;
  300.         }
  301.         case LA_FROZEN:
  302.         {
  303.             tile = walktiles[(Link->Dir *2)]; flip = 0;
  304.         }
  305.         default:
  306.             tile = walktiles[(Link->Dir *2)]; break; flip = 0;
  307.     }
  308.     Link->ScriptTile = tile;
  309.     Link->ScriptFlip = flip;
  310. }
  311.  
  312. global script a{
  313.     void run(){
  314.         int walkingtile[2] = { 11720, 11721 };
  315.         Link->ScriptTile = walkingtile[0];
  316.         int frame = -1;
  317.        
  318.    
  319.         TraceS("MIDI Volume: "); Trace(Audio->Volume[VOL_MIDI]);
  320.         TraceS("DIGI Volume: "); Trace(Audio->Volume[VOL_DIGI]);
  321.         TraceS("Music Volume: "); Trace(Audio->Volume[VOL_MUSIC]);
  322.         TraceS("SFX Volume: "); Trace(Audio->Volume[VOL_SFX]);
  323.         TraceS("PanStyle: "); Trace(Audio->PanStyle);
  324.         while(true){
  325.             if ( ++frame >= 12 ) frame = 0;
  326.  
  327.             if ( Link->InputLeft )
  328.             {
  329.                 if (frame < 6) Link->ScriptTile = walkingtile[1];
  330.                 else Link->ScriptTile = walkingtile[0];
  331.             }
  332.             if ( Link->InputRight )
  333.             {
  334.                 if (frame < 6) Link->ScriptTile = walkingtile[1];
  335.                 else Link->ScriptTile = walkingtile[0];
  336.             }
  337.             if ( Link->InputUp )
  338.             {
  339.                 if (frame < 6) Link->ScriptTile = walkingtile[1];
  340.                 else Link->ScriptTile = walkingtile[0];
  341.             }
  342.             if ( Link->InputDown )
  343.             {
  344.                 if (frame < 6) Link->ScriptTile = walkingtile[1];
  345.                 else Link->ScriptTile = walkingtile[0];
  346.             }
  347.             if ( Link->PressEx3 ) { Link->ScriptTile = Clamp((Link->ScriptTile-1), 0, MAX_TILES); TraceS("ScriptTile: "); Trace(Link->ScriptTile); }
  348.             if ( Link->PressEx4 ) { Link->ScriptTile = Clamp((Link->ScriptTile+1), 0, MAX_TILES); TraceS("ScriptTile: "); Trace(Link->ScriptTile); }
  349.            
  350.             if ( Link->PressEx1 ) { Link->ScriptFlip = Clamp((Link->ScriptFlip-1), -1, 7); TraceS("ScriptFlip: "); Trace(Link->ScriptFlip); }
  351.             if ( Link->PressEx2 ) { Link->ScriptFlip = Clamp((Link->ScriptFlip+1), -1, 7); TraceS("ScriptFlip: "); Trace(Link->ScriptFlip); }
  352.             switch(Link->Dir)
  353.             {
  354.                 case DIR_UP:
  355.                     Link->ScriptFlip = FLIP_NONE;
  356.                     break;
  357.  
  358.                 case DIR_DOWN:
  359.                     Link->ScriptFlip = FLIP_VERTICAL;  
  360.                     break;
  361.                 case DIR_LEFT:
  362.                     Link->ScriptFlip = ROT_ACW;
  363.                     break;
  364.                 case DIR_RIGHT:
  365.                     Link->ScriptFlip = ROT_CW;
  366.                     break;
  367.  
  368.                 default: break;
  369.             }
  370.             if ( Input->Key[KEY_F] ){
  371.                 lweapon l = Screen->CreateLWeapon(LW_BOMBBLAST);
  372.                 l->X = Link->X + 16; l->Y = Link->Y +16;
  373.                 l->Parent = 36; TraceS("l->Parent: "); Trace(l->Parent);
  374.                 l->UseSprite(18);
  375.            
  376.             }
  377.             if ( Input->Key[KEY_G] ) { Audio->Volume[VOL_MIDI] = Clamp((Audio->Volume[VOL_MIDI]-1), 0, 255);
  378.  
  379. TraceS("MIDI Volume: "); Trace(Audio->Volume[VOL_MIDI]); }
  380.  
  381.             if ( Input->Key[KEY_H] ) {
  382. Audio->Volume[VOL_MIDI] = Clamp((Audio->Volume[VOL_MIDI]+1), 0, 255);
  383.  
  384. TraceS("MIDI Volume: "); Trace(Audio->Volume[VOL_MIDI]); }
  385.  
  386.             if ( Input->Key[KEY_J] ) { Audio->Volume[VOL_SFX] = Clamp((Audio->Volume[VOL_SFX]-1), 0, 255);
  387. TraceS("SFX Volume: ");
  388. Trace(Audio->Volume[VOL_SFX]); }
  389.             if ( Input->Key[KEY_K] ) {  Audio->Volume[VOL_SFX] = Clamp((Audio->Volume[VOL_SFX]+1), 0, 255);
  390. TraceS("SFX Volume: "); Trace(Audio->Volume[VOL_SFX]); }
  391.            
  392.  
  393.             if ( Input->Key[KEY_Y] ) { Audio->Volume[VOL_MUSIC] = Clamp((Audio->Volume[VOL_MUSIC]-1), 0, 255);
  394. TraceS("Enhanced Music Volume: ");
  395. Trace(Audio->Volume[VOL_MUSIC]); }
  396.             if ( Input->Key[KEY_U] ) {  Audio->Volume[VOL_MUSIC] = Clamp((Audio->Volume[VOL_MUSIC]+1), 0, 255);
  397. TraceS("Enhanced Music Volume: "); Trace(Audio->Volume[VOL_MUSIC]); }          
  398.  
  399.             if ( Input->Key[KEY_I] ) { Audio->Volume[VOL_DIGI] = Clamp((Audio->Volume[VOL_DIGI]-1), 0, 255);
  400. TraceS("Enhanced DIGI Volume: ");
  401. Trace(Audio->Volume[VOL_DIGI]); }
  402.             if ( Input->Key[KEY_O] ) {  Audio->Volume[VOL_DIGI] = Clamp((Audio->Volume[VOL_DIGI]+1), 0, 255);
  403. TraceS("Enhanced DIGI Volume: "); Trace(Audio->Volume[VOL_DIGI]); }        
  404.  
  405.             if ( Input->Key[KEY_N] ) { Audio->PanStyle = Clamp((Audio->PanStyle-1), 0, 3);
  406. TraceS("Pan Style: ");
  407. Trace(Audio->PanStyle); }
  408.             if ( Input->Key[KEY_M] ) {  Audio->PanStyle = Clamp((Audio->PanStyle+1), 0, 3);
  409. TraceS("Pan Style: "); Trace(Audio->PanStyle); }           
  410.  
  411.  
  412.  
  413.             Waitdraw(); Waitframe();
  414.         }
  415.     }
  416. }
RAW Paste Data