Background.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.darkdimension.ritle_run;
  2. import android.graphics.Canvas;
  3. import android.graphics.Paint;
  4. import java.util.Random;
  5. public class Background
  6. {
  7. private static DiPoint cloud1, cloud2, cloud3;
  8. public static DiAnimation aCloud = new DiAnimation(5);
  9. private static DiPoint[] mountain;
  10. private static int lastMountain = 0;
  11. private static Paint sky, sea;
  12. public static void Initialize()
  13. {
  14. //Clouds
  15. cloud1 = new DiPoint(3);
  16. cloud1.setCenterX(GameSurface.width/4);
  17. cloud2 = new DiPoint(3);
  18. cloud2.setCenterX(GameSurface.width *3/4);
  19. cloud2.setCenterY(GameSurface.height *3/4);
  20. cloud3 = new DiPoint(4);
  21. cloud3.setRight (GameSurface.width);
  22. cloud3.setBottom(GameSurface.height/2);
  23. aCloud.start();
  24. //Mountains
  25. mountain = new DiPoint[GameSurface.width /DiPoint.getWidth(1) +2];
  26. mountain[0] = new DiPoint(0);
  27. mountain[0].setBottom(GameSurface.height);
  28. mountain[0].setCenterX(0);
  29. mountain[1] = new DiPoint(2);
  30. mountain[1].setLeft(GameSurface.width -mountain[1].getWidth() *2/3);
  31. for (int iii = 2; iii < mountain.length; iii++)
  32. {
  33. //Image
  34. mountain[iii] = new DiPoint(0);//randomizer.nextInt(2));
  35. if (mountain[iii].getFrame() == mountain[iii-1].getFrame())
  36. mountain[iii].setFrame(2);
  37. //X Location
  38. mountain[iii].setLeft(mountain[iii-1].getRight());
  39. //Y Location
  40. if (mountain[iii].getFrame() != 2)
  41. mountain[iii].setBottom(GameSurface.height);
  42. }
  43. lastMountain = mountain.length -1;
  44. sky = new Paint();
  45. sky.setARGB(255, 254 ,158, 112);
  46. sea = new Paint();
  47. sea.setARGB(255, 88, 182, 222);
  48. }
  49. public static boolean animate(Random randomizer, int cameraX)
  50. {
  51. //Animate Clouds
  52. if (aCloud.update())
  53. if (aCloud.isAtEnd())
  54. {
  55. //Move Clouds
  56. cloud1.changeX(1);
  57. cloud2.changeX(1);
  58. cloud3.changeX(2);
  59. checkLimits(randomizer, cameraX);
  60. //Reset Animation
  61. aCloud.startFromBeginning();
  62. //Return updated
  63. return true;
  64. }
  65. return false;
  66. }
  67. public static void checkLimits(Random randomizer, int cameraX)
  68. {
  69. //Check Limits and relocate clouds
  70. if (cloud1.getRight() -cameraX/12 < 0)
  71. cloud1.setLeft(cameraX/12 +GameSurface.width);
  72. if (cloud1.getLeft() -cameraX/12 > GameSurface.width)
  73. cloud1.setRight(0);
  74. if (cloud2.getRight() -cameraX/12 < 0)
  75. cloud2.setLeft(cameraX/12 +GameSurface.width);
  76. if (cloud2.getLeft() -cameraX/12 > GameSurface.width)
  77. cloud2.setRight(0);
  78. for (int iii = 0; iii < mountain.length; iii++)
  79. if (mountain[iii].getRight() -cameraX/9 < 0)
  80. {
  81. //Frame
  82. if (randomizer != null)
  83. {
  84. mountain[iii].setFrame(randomizer.nextInt(2));
  85. if (mountain[iii].getFrame() == mountain[lastMountain].getFrame())
  86. mountain[iii].setFrame(2);
  87. }
  88. //X coordinates
  89. if (mountain[lastMountain].getRight() -cameraX/9 > GameSurface.width)
  90. mountain[iii].setLeft(mountain[lastMountain].getRight());
  91. else
  92. mountain[iii].setLeft(cameraX / 9 + GameSurface.width);
  93. //Y coordinates
  94. if (mountain[iii].getFrame() == 2)
  95. mountain[iii].setTop(0);
  96. else
  97. mountain[iii].setBottom(GameSurface.height);
  98. lastMountain = iii;
  99. }
  100. if (cloud3.getRight() -cameraX/6 < 0)
  101. cloud3.setLeft(cameraX/6 +GameSurface.width);
  102. if (cloud3.getLeft() -cameraX/6 > GameSurface.width)
  103. cloud3.setRight(0);
  104. }
  105. public static void Draw(Canvas canvas, int cameraX)
  106. {
  107. //Background
  108. canvas.drawRect(0, 0, GameSurface.width, GameSurface.height *3/4, sky);
  109. //Sea (might remove)
  110. canvas.drawRect(0, GameSurface.height *3/4, GameSurface.width, GameSurface.height, sea);
  111. //Clouds & mountains
  112. cloud1.draw(canvas, -cameraX/12, 0);
  113. cloud2.draw(canvas, -cameraX/12, 0);
  114. for (DiPoint aMountain : mountain) aMountain.draw(canvas, -cameraX / 9, 0);
  115. cloud3.draw(canvas, -cameraX/6, 0);
  116. }
  117. public static void Materialize(int cameraX)
  118. {
  119. cloud1.setLeft(cloud1.getLeft() -cameraX/12);
  120. cloud2.setLeft(cloud2.getLeft() -cameraX/12);
  121. for (DiPoint aMountain : mountain) aMountain.setLeft(aMountain.getLeft() - cameraX / 9);
  122. cloud3.setLeft(cloud3.getLeft() -cameraX/6);
  123. }
  124. }