public boolean tick() { boolean ret = false; if (mTimer.tick()) { if (mSequenceIndex >= mSequence.length - 1) { mSequenceIndex = 0; ret = true; } else { mSequenceIndex++; } } return ret; }
public static TickTimer createInterval(float interval) { TickTimer ret = new TickTimer(); ret.setInterval(interval); return ret; }
Effect(Entity origin, float duration) { this(origin); mTimer = TickTimer.createInterval(duration); }
public void setInterval(float interval) { mTimer.setInterval(interval / mSequence.length); }
public void reset() { mTimer.reset(); mSequenceIndex = 0; }
public void enhance() { mValue += getEnhanceCost(); mDamage += mSettings.getFloat("enhanceDamage") * (float) Math.pow(mSettings.getFloat("enhanceBase"), mLevel - 1); mRange += mSettings.getFloat("enhanceRange"); mReloadTime -= mSettings.getFloat("enhanceReload"); mLevel++; mReloadTimer.setInterval(mReloadTime); }
@Override public void tick() { super.tick(); if (mBuilt && !mReloaded && mReloadTimer.tick()) { mReloaded = true; } }
Tower(GameEngine gameEngine, KeyValueStore settings) { super(gameEngine); mSettings = settings; mValue = mSettings.getInt("value"); mDamage = mSettings.getFloat("damage"); mRange = mSettings.getFloat("range"); mReloadTime = mSettings.getFloat("reload"); mLevel = 1; mReloadTimer = TickTimer.createInterval(mReloadTime); mBuilt = false; }
public void tick() { if (mFinished) { return; } if (!mUpdateTimer.tick()) { return; } checkForExitedEnemies(); checkForEnteredEnemies(); }
private RocketLauncher(GameEngine gameEngine, KeyValueStore settings) { super(gameEngine, settings); StaticData s = (StaticData) getStaticData(); mSettings = settings; mSprite = getSpriteFactory().createStatic(Layers.TOWER_BASE, s.mSpriteTemplate); mSprite.setListener(this); mSprite.setIndex(RandomUtils.next(4)); mSpriteRocket = getSpriteFactory().createStatic(Layers.TOWER, s.mSpriteTemplateRocket); mSpriteRocket.setListener(this); mSpriteRocket.setIndex(RandomUtils.next(4)); mExplosionRadius = settings.getFloat("explosionRadius"); mRocketLoadTimer = TickTimer.createInterval(ROCKET_LOAD_TIME); mSound = getSoundFactory().createSound(R.raw.explosive2_tsh); }
public void tick() { if (mUpdateTimer.tick()) { if (mTarget != null && mTower.getDistanceTo(mTarget) > mTower.getRange()) { setTarget(null); } if (mTarget == null || !mLockTarget) { nextTarget(); } } }
@Override public Object initStatic() { StaticData s = new StaticData(); s.mHealInterval = mHealerSettings.getFloat("healInterval"); s.mHealDuration = mHealerSettings.getFloat("healDuration"); s.mHealTimer = TickTimer.createInterval(s.mHealInterval); s.mHealedEnemies = new ArrayList<>(); s.mScaleFunction = Function.sine() .join(Function.constant(0), (float) Math.PI) .multiply(HEAL_SCALE_FACTOR - 1f) .offset(1f) .stretch(GameEngine.TARGET_FRAME_RATE * s.mHealDuration * 0.66f / (float) Math.PI) .invert() .sample(); s.mRotateFunction = Function.constant(0) .join(Function.sine(), (float) Math.PI / 2f) .multiply(HEAL_ROTATION / GameEngine.TARGET_FRAME_RATE * 360f) .stretch(GameEngine.TARGET_FRAME_RATE * s.mHealDuration * 0.66f / (float) Math.PI) .sample(); s.mSpriteTemplate = getSpriteFactory().createTemplate(R.attr.healer, 4); s.mSpriteTemplate.setMatrix(0.9f, 0.9f, null, null); s.mReferenceSprite = getSpriteFactory().createAnimated(Layers.ENEMY, s.mSpriteTemplate); s.mReferenceSprite.setSequenceForward(); s.mReferenceSprite.setFrequency(ANIMATION_SPEED); getGameEngine().add(s); return s; }
@Override public void tick() { super.tick(); if (mState == State.NotStarted) { mState = State.Active; effectBegin(); } if (mTimer != null && mTimer.tick()) { mState = State.Ended; effectEnd(); remove(); } }
@Override public void tick() { mReferenceSprite.tick(); if (mHealTimer.tick()) { mHealing = true; } if (mHealing) { mRotateFunction.step(); mScaleFunction.step(); mAngle += mRotateFunction.getValue(); mScale = mScaleFunction.getValue(); if (mScaleFunction.getPosition() >= GameEngine.TARGET_FRAME_RATE * mHealDuration) { mHealedEnemies.clear(); mDropEffect = true; mHealing = false; mAngle = 0; mScale = 1f; mRotateFunction.reset(); mScaleFunction.reset(); } } else { mDropEffect = false; } } }
@Override public void tick() { super.tick(); if (isReloaded() && mUpdateTimer.tick() && !getPossibleTargets().isEmpty()) { mShooting = true; setReloaded(false); } if (mShooting) { mCanonOffset += CANON_OFFSET_STEP; if (mCanonOffset >= CANON_OFFSET_MAX) { mShooting = false; for (Vector2 target : mTargets) { Vector2 position = getPosition().add(Vector2.polar(SHOT_SPAWN_OFFSET, getAngleTo(target))); getGameEngine().add(new GlueShot(this, position, target, mGlueIntensity, mSettings.getFloat("glueDuration"))); } } } else if (mCanonOffset > 0f) { mCanonOffset -= CANON_OFFSET_STEP; } }
@Override public void tick() { super.tick(); mAimer.tick(); if (mRocket == null && mRocketLoadTimer.tick()) { mRocket = new Rocket(this, getPosition(), getDamage(), mExplosionRadius); mRocket.setAngle(mAngle); getGameEngine().add(mRocket); } if (mAimer.getTarget() != null) { mAngle = getAngleTo(mAimer.getTarget()); if (mRocket != null) { mRocket.setAngle(mAngle); if (isReloaded()) { mRocket.setTarget(mAimer.getTarget()); mRocket.setEnabled(true); mRocket = null; mSound.play(); setReloaded(false); } } } }
@Override public void tick() { super.tick(); if (mFlying) { mAngle += mRotationStep; mHeightScalingFunction.step(); if (mHeightScalingFunction.getPosition() >= GameEngine.TARGET_FRAME_RATE * TIME_TO_TARGET) { getGameEngine().remove(mSpriteFlying); getGameEngine().add(mSpriteMine); mFlying = false; setSpeed(0f); } } else if (mUpdateTimer.tick()) { StreamIterator<Enemy> enemiesInRange = getGameEngine().getEntitiesByType(Types.ENEMY) .filter(inRange(getPosition(), TRIGGER_RADIUS)) .cast(Enemy.class) .filter(new Predicate<Enemy>() { @Override public boolean apply(Enemy value) { return !(value instanceof Flyer); } }); if (!enemiesInRange.isEmpty()) { getGameEngine().add(new Explosion(getOrigin(), getPosition(), mDamage, mRadius)); this.remove(); } } }