@Override public boolean touchDown(int screenX, int screenY, int pointer, int button) { unprojectVec.set(screenX, screenY, 0); cameraManager.getCamera().unproject(unprojectVec); float x = unprojectVec.x; float y = unprojectVec.y; if (state == GameState.RUNNING && pauseSprite.getBoundingRectangle().contains(x, y)) { soundController.playClick(); state = GameState.PAUSED; resumeSprite.setAlpha(1); } if (state == GameState.PAUSED && resumeSprite.getBoundingRectangle().contains(x, y)) { soundController.playClick(); state = GameState.RUNNING; resumeSprite.setAlpha(0); } if (state == GameState.GET_READY) { soundController.playClick(); state = GameState.RUNNING; readySprite.setAlpha(0); } return false; }
public void update() { if (Gdx.input.isKeyPressed(Input.Keys.BACK)) { Gdx.app.exit(); } if (Gdx.input.justTouched()) { guiCam.unproject(touchPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0)); if (startButton.getBoundingRectangle().contains(touchPoint.x, touchPoint.y)) { game.setScreen(new StartGameScreen(game)); return; } if (creditsButton.getBoundingRectangle().contains(touchPoint.x, touchPoint.y)) { game.setScreen(new CreditsScreen(game)); return; } } }
public void checkBoundsX() { for (Rectangle rect : collideRects) { if (sprite.getBoundingRectangle().overlaps(rect)) { float boundCalc = 0.0f; if (direction.x < 0) { boundCalc = rect.x + rect.getWidth() + 0.01f; } else { boundCalc = rect.x - sprite.getWidth() - 0.01f; } // sprite.setX(boundCalc - .2f); targetPos.x = boundCalc - .2f; direction.x = 0; Gdx.app.log("SpriteOverlap", "Target pos is" + sprite.getX() + ":" + sprite.getY()); } } }
@Override public void start() { OwnedObjectData data = new OwnedObjectData(); data.drawAfter = true; if (bullet.getTicksAlive() < 20) animationPlaying = true; createTick = game.getTick(); bullet.addOwnedObject(this, data); final Sprite current = (Sprite) this.ani.getKeyFrame(getTicksAlive()); Polygon hitbox = bullet.getHitbox(); Rectangle rect = hitbox != null ? hitbox.getBoundingRectangle() : current.getBoundingRectangle(); final float modifier = 3f; float width = rect.getWidth() * modifier; float height = rect.getHeight() * modifier; final float scaleX = width / current.getWidth(); final float scaleY = height / current.getHeight(); current.setScale(scaleX, scaleY); current.setRotation(bullet.getRotationDeg()); current.setOriginCenter(); Color c = bullet.getDeletionColor().cpy(); float min = Math.min(c.g, Math.min(c.r, c.b)); c.r -= min; c.g -= min; c.b -= min; float mul = 0.8f; float start = (1f - mul) + 0.3f; Color color = new Color(start + (c.r * mul), start + (c.g * mul), start + (c.b * mul), 0f); current.setColor(color); current.setAlpha(1f); final SaveableObject<ScaleAlphaPhaseAnimation> sani = new SaveableObject<ScaleAlphaPhaseAnimation>(); Getter<Sprite> getter = new Getter<Sprite>() { @Override public Sprite get() { Sprite current = (Sprite) ani.getKeyFrame(getTicksAlive()); int over = 5; int ticks = (int) ((time.toTicks() - over) - getTicksAlive()); double mul = 1f - (ticks <= 0 ? -(float) ticks / over : 0f); ScaleAlphaPhaseAnimation ani = sani.getObject(); if (ani == null) return current; if (ticks <= 0) { animationPlaying = false; ani.setAlpha((float) Math.max(0, mul)); } current.setPosition( bullet.getX() - current.getWidth() / 2f, bullet.getY() - current.getHeight() / 2f); current.setOriginCenter(); current.setRotation(bullet.getRotationDeg()); return current; } }; final ScaleAlphaPhaseAnimation ani = new ScaleAlphaPhaseAnimation(getter, bullet); sani.setObject(ani); ani.setTime(time); ani.setAddedScale(scaleX * 3f, scaleY * 3f); ani.setAlpha(-0.1f); ani.start(); bullet.removeOwnedObject(ani); bullet.addOwnedObject(ani, data); }