Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. void Stage::render(Player *player, Teleporter *tele[], NPC *n, Enemy *enemy)
  2. {
  3. Object::render();
  4. for (int i = 0; i < HEIGHT / STAGEY; i++)
  5. {
  6. for (int j = 0; j < WIDTH / STAGEX; j++)
  7. {
  8. switch (map[i][j])
  9. {
  10. case 1:
  11. al_draw_bitmap_region(image, 1 * frameWidth - frameWidth, 0, frameWidth, frameHeight, j * frameWidth, i * frameHeight, 0);
  12. break;
  13. case 2:
  14. al_draw_bitmap_region(image, 2 * frameWidth - frameWidth, 0, frameWidth, frameHeight, j * frameWidth, i * frameHeight, 0);
  15. break;
  16. case 3:
  17. al_draw_bitmap_region(image, 3 * frameWidth - frameWidth, 0, frameWidth, frameHeight, j * frameWidth, i * frameHeight, 0);
  18. break;
  19. case 9:
  20. al_draw_bitmap_region(image, 4 * frameWidth - frameWidth, 0, frameWidth, frameHeight, j * frameWidth, i * frameHeight, 0);
  21. break;
  22. case 10:
  23. al_draw_bitmap_region(image, 5 * frameWidth - frameWidth, 0, frameWidth, frameHeight, j * frameWidth, i * frameHeight, 0);
  24. break;
  25. case 4:
  26. n->setX(j * STAGEX);
  27. n->setY(i * STAGEY);
  28. break;
  29. case 5:
  30. if (n->isBlocked())
  31. {
  32. al_draw_scaled_bitmap(wall, 0, 0, 40, 90, j * STAGEX, i * STAGEY - 80, 40, 130, 0);
  33. }
  34. break;
  35. case 6:
  36. for (int k = 0; k < 3; k++)
  37. {
  38. if (!tele[k]->isLocked())
  39. {
  40. tele[k]->setX(j * STAGEX);
  41. tele[k]->setY(i * STAGEY);
  42. tele[k]->setLocked(true);
  43. break;
  44. }
  45. }
  46. break;
  47. case 7:
  48. if (!player->isLocked())
  49. {
  50. player->setLocked(true);
  51. player->setX(j * STAGEX);
  52. player->setY((i - 1) * STAGEY);
  53. }
  54. break;
  55. case 8:
  56. if (!enemy->isLocked())
  57. {
  58. enemy->setLocked(true);
  59. enemy->setX(j * STAGEX);
  60. enemy->setY((i - 1) * STAGEY);
  61. enemy->setStartX((j) * STAGEX);
  62. }
  63. break;
  64. case 11:
  65. al_draw_bitmap_region(image, 5 * frameWidth - frameWidth, 0, frameWidth, frameHeight, j * frameWidth, i * frameHeight, 0);
  66. al_draw_bitmap(window, j * STAGEX + 7, i * STAGEY, 0);
  67. break;
  68. case 12:
  69. al_draw_bitmap_region(image, 5 * frameWidth - frameWidth, 0, frameWidth, frameHeight, j * frameWidth, i * frameHeight, 0);
  70. break;
  71. default:
  72. break;
  73. }
  74.  
  75. if ((map[i][j] == 1) || (map[i][j] == 2) /*|| (map[i][j] == 3)*/ || (map[i][j] == 9) || (map[i][j] == 12))
  76. {
  77. if ((player->getY() + player->getBoundY() > i * STAGEY) && (player->getY() - player->getBoundY() + 50 < i * STAGEY + 40) &&
  78. (player->getX() + player->getBoundX() > j * STAGEX) && (player->getX() - player->getBoundX() < j * STAGEX + 40))
  79. {
  80. player->setY((i-2) * STAGEY);
  81. }
  82. if(boundBox)
  83. al_draw_filled_rectangle(j * STAGEX + 40, i * STAGEY + 40, j * STAGEX, i * STAGEY, al_map_rgba(255, 0, 255, 0.2));
  84. }
  85. if (map[i][j] == 3)
  86. {
  87. if ((player->getY() + player->getBoundY() > i * STAGEY) && (player->getY() - player->getBoundY() + 50 < i * STAGEY + 40) &&
  88. (player->getX() + player->getBoundX() > j * STAGEX) && (player->getX() - player->getBoundX() < j * STAGEX + 20))
  89. {
  90. int xo = 0;
  91. if (player->getX() - player->getBoundX()/2 > j * STAGEX + 15)
  92. {
  93. xo = 10;
  94. }
  95. if (player->getX() - player->getBoundX() / 2 > j * STAGEX + 25)
  96. {
  97. xo = 20;
  98. }
  99. if (player->getX() - player->getBoundX() / 2 > j * STAGEX + 35)
  100. {
  101. xo = 30;
  102. }
  103. player->setY((i - 2) * STAGEY + xo);
  104. }
  105. if (boundBox)
  106. al_draw_filled_rectangle(j * STAGEX + 40, i * STAGEY + 40, j * STAGEX , i * STAGEY, al_map_rgba(255, 0, 255, 0.2));
  107. }
  108. if (map[i][j] == 1)
  109. {
  110. if ((player->getY() + player->getBoundY() > i * STAGEY) && (player->getY() - player->getBoundY() + 50 < i * STAGEY + 40) &&
  111. (player->getX() + player->getBoundX() > j * STAGEX) && (player->getX() - player->getBoundX() < j * STAGEX + 40))
  112. {
  113. int xo = 0;
  114. if (player->getX() + player->getBoundX() < j * STAGEX + 35)
  115. {
  116. xo = 10;
  117. }
  118. if (player->getX() + player->getBoundX() < j * STAGEX + 25)
  119. {
  120. xo = 20;
  121. }
  122. if (player->getX() + player->getBoundX() < j * STAGEX + 15)
  123. {
  124. xo = 30;
  125. }
  126. player->setY((i - 2) * STAGEY + xo);
  127. }
  128. if (boundBox)
  129. al_draw_filled_rectangle(j * STAGEX + 40, i * STAGEY + 40, j * STAGEX, i * STAGEY, al_map_rgba(255, 0, 255, 0.2));
  130. }
  131.  
  132.  
  133. }
  134. }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement