/* * Copyright (c) 2012. HappyDroids LLC, All rights reserved. */ package com.happydroids.droidtowers.entities; import aurelienribon.tweenengine.BaseTween; import aurelienribon.tweenengine.Tween; import aurelienribon.tweenengine.TweenCallback; import aurelienribon.tweenengine.equations.Linear; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.math.Vector2; import com.happydroids.droidtowers.TowerAssetManager; import com.happydroids.droidtowers.input.CameraController; import com.happydroids.droidtowers.platform.Display; import com.happydroids.droidtowers.scenes.components.SceneManager; import com.happydroids.droidtowers.tween.GameObjectAccessor; import com.happydroids.droidtowers.tween.TweenSystem; import com.happydroids.droidtowers.utils.Random; public class Snow extends GameObject { public static final int RAIN_TEXURE_SIZE = 128; public Snow(Vector2 worldSize) { super(); Texture rainDropTexture = TowerAssetManager.texture("snow.png"); rainDropTexture.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat); setTexture(rainDropTexture); float width = worldSize.x + (Display.getBiggestScreenDimension() * 4) + (RAIN_TEXURE_SIZE * 2); float height = worldSize.y + (Display.getBiggestScreenDimension() * 4) + (RAIN_TEXURE_SIZE * 2); setPosition(-Display.getBiggestScreenDimension() * 2, 0); setSize(width, height); setRegion(0, 0, width / RAIN_TEXURE_SIZE, height / RAIN_TEXURE_SIZE); Tween.to(this, GameObjectAccessor.TEXTURE_VV2, Random.randomInt(60000, 64000)) .ease(Linear.INOUT) .target(-getV2(), 0f) .repeat(Tween.INFINITY, 0) .setCallback(new TweenCallback() { public void onEvent(int eventType, BaseTween source) { setPosition(Random.randomInt(-Display.getBiggestScreenDimension() * 2, -Display.getBiggestScreenDimension()), 0); } }) .setCallbackTriggers(TweenCallback.BEGIN) .start(TweenSystem.manager()); } @Override public void update(float timeDelta) { super.update(timeDelta); float alpha = 1f - SceneManager.activeScene().getCamera().zoom / CameraController.ZOOM_MAX; if (alpha > 0.25f) { visible = true; setColor(1f, 1f, 1f, alpha); } else { visible = false; } } }