/** * Handles the keyboard input. * * @param elapsed time elapsed since the last frame */ private void handleControllerInput(float elapsed) { if (controllerActive) { if (controller.justPressed(KeyEvent.VK_A)) { simpleAttack(); } if (state == DynamicObjectState.Attacking) { curAnim.update(elapsed); return; } else if (controller.justPressed(KeyEvent.VK_S)) spellAttack(0); else if (controller.justPressed(KeyEvent.VK_D)) spellAttack(1); else if (controller.justPressed(KeyEvent.VK_F)) spellAttack(2); else if (controller.justPressed(KeyEvent.VK_5)) spellManager.activateShield(ElementType.Fire); else if (controller.justPressed(KeyEvent.VK_6)) spellManager.activateShield(ElementType.Water); else if (controller.justPressed(KeyEvent.VK_7)) spellManager.activateShield(ElementType.Earth); else if (controller.isDownPressed()) move(Heading.Down); else if (controller.isUpPressed()) move(Heading.Up); else if (controller.isLeftPressed()) move(Heading.Left); else if (controller.isRightPressed()) move(Heading.Right); else if (controller.justReleased(KeyEvent.VK_LEFT) || controller.justReleased(KeyEvent.VK_RIGHT) || controller.justReleased(KeyEvent.VK_UP) || controller.justReleased(KeyEvent.VK_DOWN)) stopMovement(); else if (controller.justPressed(KeyEvent.VK_ENTER)) collision.checkOnKeyTriggers(this); } }
@Override public void update(float elapsed) { if (!isInNetwork && health.isDead()) { terminate(); return; } regenerate(); spellManager.update(elapsed); ElementalShield curShield = spellManager.getCurrentShield(); if (curShield != null && curShield.getElementType() == ElementType.Fire) manager.handleAreaOfEffectSpell( this, curShield.getDamage(), ElementType.Fire, curShield.getAOErect()); if (state == DynamicObjectState.Attacking) { curAnim.update(elapsed); return; } if (state == DynamicObjectState.Hit) { curAnim.update(elapsed); curHitDuration -= 1; if (curHitDuration <= 0) { setState(DynamicObjectState.Idle); curHitDuration = maxHitDuration; health.setInvul(false); } return; } if (controllerActive) handleControllerInput(elapsed); // DEBUG PURPOSE if (controllerActive) { if (controller.isPressed(KeyEvent.VK_SHIFT)) supressEnemyCollision = true; else supressEnemyCollision = false; } // ------------- if (velocity.x > 0.01f || velocity.x < -0.01f || velocity.y > 0.01f || velocity.y < -0.01f) { collisionRect.x += velocity.x; collisionRect.y += velocity.y; boolean collidingStatic = collision.isCollidingStatic(this); boolean collidingDynamic = false; if (!supressEnemyCollision) collidingDynamic = collision.isCollidingDynamic(this); if (collidingStatic || collidingDynamic) { collisionRect.x -= velocity.x; collisionRect.y -= velocity.y; stopMovement(); } else { collision.checkTriggers(this); screenPosition.x += velocity.x; screenPosition.y += velocity.y; curAnim.update(elapsed); } } if (isInNetwork && controllerActive) { sendPositionMessage(); } }