package com.todoroo.zxzx; import java.util.Random; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.todoroo.zxzx.general.Config; public class BackgroundRenderer { private OrthographicCamera camera; private static final float BG_SCROLL_VELOCITY = Config.asFloat("Background.velocity", 80f); private static final int BG_WAVE_COUNT = Config.asInt("Background.waves", 80); private float[] waveX = new float[BG_WAVE_COUNT]; private float[] waveY = new float[BG_WAVE_COUNT]; private int[] waveType = new int[BG_WAVE_COUNT]; private Random random = new Random(); public BackgroundRenderer(OrthographicCamera camera) { this.camera = camera; for(int i = 0; i < BG_WAVE_COUNT; i++) { waveX[i] = random.nextInt() % ((int) camera.viewportWidth); waveY[i] = random.nextInt() % ((int) camera.viewportHeight); waveType[i] = i % 2; } } public void render(SpriteBatch spriteBatch) { spriteBatch.begin(); for(int i = 0; i < BG_WAVE_COUNT; i++) { if(waveY[i] < 0 || waveY[i] > camera.viewportHeight) continue; TextureRegion texture = waveType[i] == 0 ? Assets.water1 : Assets.water2; spriteBatch.draw(texture, waveX[i], waveY[i]); } spriteBatch.end(); } public void update(float delta) { for(int i = 0; i < BG_WAVE_COUNT; i++) { waveY[i] = waveY[i] - delta * BG_SCROLL_VELOCITY; if(waveY[i] < 0) waveY[i] += camera.viewportHeight; } } }