HumanController.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. package me.hammerle.supersnuvi.entity.components.ai;
  2. import me.hammerle.supersnuvi.Keys;
  3. import me.hammerle.supersnuvi.entity.Entity;
  4. import me.hammerle.supersnuvi.tiles.Tile;
  5. import me.hammerle.supersnuvi.util.SoundUtils;
  6. public class HumanController extends Controller
  7. {
  8. private boolean combatMode = false;
  9. private int combatTimer = 0;
  10. private int blockTimer = -1;
  11. private int attackTimer = -1;
  12. private int dodgeTimer = -1;
  13. private int dashTimer = -1;
  14. public HumanController(Entity ent)
  15. {
  16. super(ent);
  17. }
  18. @Override
  19. public void tick()
  20. {
  21. float f = 12;
  22. if(Keys.RUN.isDown())
  23. {
  24. f = 24;
  25. }
  26. if(Keys.RIGHT.isDown())
  27. {
  28. ent.setMotionX(f);
  29. }
  30. else if(Keys.LEFT.isDown())
  31. {
  32. ent.setMotionX(-f);
  33. }
  34. else
  35. {
  36. ent.setMotionX(0.0f);
  37. }
  38. if(Keys.JUMP.isDown())
  39. {
  40. if(ent.getMovement().jump())
  41. {
  42. ent.getEnergy().addEnergyPercent(-0.3f);
  43. }
  44. }
  45. }
  46. /*
  47. @Override
  48. public boolean isRunning()
  49. {
  50. return Keys.RUN.isDown();
  51. }
  52. @Override
  53. public boolean isInCombatMode()
  54. {
  55. return combatMode || combatTimer < 0;
  56. }
  57. @Override
  58. public int getCombatTimer()
  59. {
  60. return combatTimer;
  61. }
  62. @Override
  63. public boolean isBlocking()
  64. {
  65. return blockTimer >= 0;
  66. }
  67. @Override
  68. public boolean isAttacking()
  69. {
  70. return attackTimer >= 0;
  71. }
  72. @Override
  73. public boolean isDashing()
  74. {
  75. return dashTimer != -1;
  76. }
  77. @Override
  78. public boolean isDodging()
  79. {
  80. return dodgeTimer != -1;
  81. }
  82. @Override
  83. public void tick()
  84. {
  85. if(ent.getHealth().isDead())
  86. {
  87. return;
  88. }
  89. if(Keys.COMBAT.isReleased())
  90. {
  91. if(combatMode)
  92. {
  93. combatMode = false;
  94. combatTimer = -ent.getAnimator().getCombatStartTicks();
  95. SoundUtils.playSound(SoundUtils.Sound.SWORD_SHEATH);
  96. }
  97. else
  98. {
  99. combatMode = true;
  100. combatTimer = ent.getAnimator().getCombatStartTicks();
  101. SoundUtils.playSound(SoundUtils.Sound.SWORD_PULL);
  102. }
  103. }
  104. if(combatTimer < 0)
  105. {
  106. combatTimer++;
  107. }
  108. else if(combatTimer > 0)
  109. {
  110. combatTimer--;
  111. }
  112. if(blockTimer != -1)
  113. {
  114. blockTimer++;
  115. if(blockTimer >= ent.getAnimator().getBlockTicks())
  116. {
  117. blockTimer = -80;
  118. }
  119. }
  120. if(attackTimer != -1)
  121. {
  122. attackTimer++;
  123. if(attackTimer >= ent.getAnimator().getAttackTicks())
  124. {
  125. attackTimer = -1;
  126. float sign = ent.getAnimator().drawImageFlipped() ? -1 : 1;
  127. float extend = sign * Tile.SIZE;
  128. boolean once = true;
  129. for(Entity e : ent.getLevel().getEntitiesCollidingWith(ent, ent.getBox().expand(extend, 0)))
  130. {
  131. if(e.getController().isAttacking() && once)
  132. {
  133. once = false;
  134. ent.setMotionX(-sign * 7);
  135. e.setMotionX(sign * 7);
  136. }
  137. else if(!e.getController().isBlocking())
  138. {
  139. e.getHealth().addHealth(-30);
  140. }
  141. }
  142. return;
  143. }
  144. }
  145. if(dodgeTimer != -1)
  146. {
  147. dodgeTimer++;
  148. if(dodgeTimer > 12)
  149. {
  150. dodgeTimer = -1;
  151. ent.setMotionX(0.0f);
  152. }
  153. else
  154. {
  155. ent.setMotionX(ent.getAnimator().drawImageFlipped() ? 10 : -10);
  156. }
  157. }
  158. if(dashTimer != -1)
  159. {
  160. dashTimer++;
  161. if(dashTimer > 15)
  162. {
  163. dashTimer = -1;
  164. ent.setMotionX(0.0f);
  165. }
  166. else
  167. {
  168. ent.setMotionX(ent.getAnimator().drawImageFlipped() ? -15 : 15);
  169. }
  170. }
  171. if(combatMode && combatTimer == 0)
  172. {
  173. if(Keys.COMBAT_BLOCK.isDown() && blockTimer == -1)
  174. {
  175. ent.getAnimator().resetFrames();
  176. blockTimer = 0;
  177. }
  178. else if(Keys.COMBAT_ATTACK.isReleased()&& attackTimer == -1)
  179. {
  180. SoundUtils.playSound(SoundUtils.Sound.SWORD_SLASH);
  181. attackTimer = 0;
  182. }
  183. else if(Keys.COMBAT_DASH.isReleased() && dashTimer == -1 && ent.getEnergy().getEnergyPercent() >= 0.3)
  184. {
  185. SoundUtils.playSound(SoundUtils.Sound.DASH);
  186. dashTimer = 0;
  187. ent.getEnergy().addEnergyPercent(-0.3);
  188. }
  189. else if(Keys.COMBAT_DODGE.isReleased() && dodgeTimer == -1 && ent.getEnergy().getEnergyPercent() >= 0.1)
  190. {
  191. SoundUtils.playSound(SoundUtils.Sound.DODGE);
  192. dodgeTimer = 0;
  193. ent.getEnergy().addEnergyPercent(-0.10);
  194. }
  195. }
  196. if(!isBlocking() && dodgeTimer == -1 && dashTimer == -1)
  197. {
  198. if(Keys.JUMP.isDown() && ent.getEnergy().getEnergyPercent() > 0.2 && ent.getMovement().jump())
  199. {
  200. ent.getEnergy().addEnergyPercent(-0.10);
  201. SoundUtils.playSound(SoundUtils.Sound.JUMP);
  202. }
  203. float speed;
  204. if(ent.getController().isInCombatMode())
  205. {
  206. speed = 3.0f;
  207. }
  208. else
  209. {
  210. speed = 6.0f;
  211. if(isRunning())
  212. {
  213. if(ent.getEnergy().getEnergyPercent() > 0.0)
  214. {
  215. speed = 9.0f;
  216. }
  217. if(ent.isMoving())
  218. {
  219. ent.getEnergy().addEnergy(-0.3);
  220. }
  221. }
  222. }
  223. if(dodgeTimer == -1 && dashTimer == -1)
  224. {
  225. if(Keys.LEFT.isDown())
  226. {
  227. ent.setMotionX(-speed * ent.getMovementPenalty().getFactor());
  228. }
  229. else if(Keys.RIGHT.isDown())
  230. {
  231. ent.setMotionX(speed * ent.getMovementPenalty().getFactor());
  232. }
  233. }
  234. if(ent.isOnGround() && ent.getPreviousMotionX() != 0)
  235. {
  236. if(ent.getMovementPenalty().isInWater())
  237. {
  238. SoundUtils.playSound(SoundUtils.Sound.WALK_WATER);
  239. }
  240. else
  241. {
  242. SoundUtils.playSound(SoundUtils.Sound.WALK);
  243. }
  244. }
  245. }
  246. }*/
  247. }