123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- package me.hammerle.supersnuvi.entity.components.ai;
- import me.hammerle.supersnuvi.Keys;
- import me.hammerle.supersnuvi.entity.Entity;
- import me.hammerle.supersnuvi.tiles.Tile;
- import me.hammerle.supersnuvi.util.SoundUtils;
- public class HumanController extends Controller
- {
- private boolean combatMode = false;
- private int combatTimer = 0;
- private int blockTimer = -1;
- private int attackTimer = -1;
- private int dodgeTimer = -1;
- private int dashTimer = -1;
-
- public HumanController(Entity ent)
- {
- super(ent);
- }
-
- @Override
- public void tick()
- {
- float f = 12;
- if(Keys.RUN.isDown())
- {
- f = 24;
- }
-
- if(Keys.RIGHT.isDown())
- {
- ent.setMotionX(f);
- }
- else if(Keys.LEFT.isDown())
- {
- ent.setMotionX(-f);
- }
- else
- {
- ent.setMotionX(0.0f);
- }
-
- if(Keys.JUMP.isDown())
- {
- if(ent.getMovement().jump())
- {
- ent.getEnergy().addEnergyPercent(-0.3f);
- }
- }
- }
-
- /*
- @Override
- public boolean isRunning()
- {
- return Keys.RUN.isDown();
- }
- @Override
- public boolean isInCombatMode()
- {
- return combatMode || combatTimer < 0;
- }
- @Override
- public int getCombatTimer()
- {
- return combatTimer;
- }
- @Override
- public boolean isBlocking()
- {
- return blockTimer >= 0;
- }
- @Override
- public boolean isAttacking()
- {
- return attackTimer >= 0;
- }
- @Override
- public boolean isDashing()
- {
- return dashTimer != -1;
- }
-
- @Override
- public boolean isDodging()
- {
- return dodgeTimer != -1;
- }
-
- @Override
- public void tick()
- {
- if(ent.getHealth().isDead())
- {
- return;
- }
-
- if(Keys.COMBAT.isReleased())
- {
- if(combatMode)
- {
- combatMode = false;
- combatTimer = -ent.getAnimator().getCombatStartTicks();
- SoundUtils.playSound(SoundUtils.Sound.SWORD_SHEATH);
- }
- else
- {
- combatMode = true;
- combatTimer = ent.getAnimator().getCombatStartTicks();
- SoundUtils.playSound(SoundUtils.Sound.SWORD_PULL);
- }
- }
-
- if(combatTimer < 0)
- {
- combatTimer++;
- }
- else if(combatTimer > 0)
- {
- combatTimer--;
- }
-
- if(blockTimer != -1)
- {
- blockTimer++;
- if(blockTimer >= ent.getAnimator().getBlockTicks())
- {
- blockTimer = -80;
- }
- }
-
- if(attackTimer != -1)
- {
- attackTimer++;
- if(attackTimer >= ent.getAnimator().getAttackTicks())
- {
- attackTimer = -1;
-
- float sign = ent.getAnimator().drawImageFlipped() ? -1 : 1;
- float extend = sign * Tile.SIZE;
- boolean once = true;
- for(Entity e : ent.getLevel().getEntitiesCollidingWith(ent, ent.getBox().expand(extend, 0)))
- {
- if(e.getController().isAttacking() && once)
- {
- once = false;
- ent.setMotionX(-sign * 7);
- e.setMotionX(sign * 7);
- }
- else if(!e.getController().isBlocking())
- {
- e.getHealth().addHealth(-30);
- }
- }
- return;
- }
- }
-
- if(dodgeTimer != -1)
- {
- dodgeTimer++;
- if(dodgeTimer > 12)
- {
- dodgeTimer = -1;
- ent.setMotionX(0.0f);
- }
- else
- {
- ent.setMotionX(ent.getAnimator().drawImageFlipped() ? 10 : -10);
- }
- }
-
- if(dashTimer != -1)
- {
- dashTimer++;
- if(dashTimer > 15)
- {
- dashTimer = -1;
- ent.setMotionX(0.0f);
- }
- else
- {
- ent.setMotionX(ent.getAnimator().drawImageFlipped() ? -15 : 15);
- }
- }
-
- if(combatMode && combatTimer == 0)
- {
- if(Keys.COMBAT_BLOCK.isDown() && blockTimer == -1)
- {
- ent.getAnimator().resetFrames();
- blockTimer = 0;
- }
- else if(Keys.COMBAT_ATTACK.isReleased()&& attackTimer == -1)
- {
- SoundUtils.playSound(SoundUtils.Sound.SWORD_SLASH);
- attackTimer = 0;
- }
- else if(Keys.COMBAT_DASH.isReleased() && dashTimer == -1 && ent.getEnergy().getEnergyPercent() >= 0.3)
- {
- SoundUtils.playSound(SoundUtils.Sound.DASH);
- dashTimer = 0;
- ent.getEnergy().addEnergyPercent(-0.3);
- }
- else if(Keys.COMBAT_DODGE.isReleased() && dodgeTimer == -1 && ent.getEnergy().getEnergyPercent() >= 0.1)
- {
- SoundUtils.playSound(SoundUtils.Sound.DODGE);
- dodgeTimer = 0;
- ent.getEnergy().addEnergyPercent(-0.10);
- }
- }
-
-
- if(!isBlocking() && dodgeTimer == -1 && dashTimer == -1)
- {
- if(Keys.JUMP.isDown() && ent.getEnergy().getEnergyPercent() > 0.2 && ent.getMovement().jump())
- {
- ent.getEnergy().addEnergyPercent(-0.10);
- SoundUtils.playSound(SoundUtils.Sound.JUMP);
- }
-
- float speed;
- if(ent.getController().isInCombatMode())
- {
- speed = 3.0f;
- }
- else
- {
- speed = 6.0f;
- if(isRunning())
- {
- if(ent.getEnergy().getEnergyPercent() > 0.0)
- {
- speed = 9.0f;
- }
- if(ent.isMoving())
- {
- ent.getEnergy().addEnergy(-0.3);
- }
- }
- }
- if(dodgeTimer == -1 && dashTimer == -1)
- {
- if(Keys.LEFT.isDown())
- {
- ent.setMotionX(-speed * ent.getMovementPenalty().getFactor());
- }
- else if(Keys.RIGHT.isDown())
- {
- ent.setMotionX(speed * ent.getMovementPenalty().getFactor());
- }
- }
- if(ent.isOnGround() && ent.getPreviousMotionX() != 0)
- {
- if(ent.getMovementPenalty().isInWater())
- {
- SoundUtils.playSound(SoundUtils.Sound.WALK_WATER);
- }
- else
- {
- SoundUtils.playSound(SoundUtils.Sound.WALK);
- }
- }
- }
- }*/
- }
|