/*
* Copyright (c) 2012. HappyDroids LLC, All rights reserved.
*/
package com.happydroids.droidtowers.entities;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.SpriteCache;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.utils.Array;
import com.happydroids.droidtowers.grid.GameGrid;
import com.happydroids.droidtowers.gui.GridObjectPopOver;
import com.happydroids.droidtowers.types.ServiceRoomType;
public class ParkingGarageSpace extends ServiceRoom {
public static final float VEHICLE_CHANGE_FREQUENCY = 15f;
private static Array<TextureAtlas.AtlasRegion> vehicleTextures;
private float timeUntilVehicleChange;
private TextureAtlas.AtlasRegion activeVehicleTexture;
public ParkingGarageSpace(ServiceRoomType serviceRoomType, GameGrid gameGrid) {
super(serviceRoomType, gameGrid);
connectedToTransport = true;
if (vehicleTextures == null) {
vehicleTextures = serviceRoomType.getTextureAtlas().findRegions("vehicle");
}
timeUntilVehicleChange = VEHICLE_CHANGE_FREQUENCY;
}
@Override
protected boolean canEmployDroids() {
return false;
}
@Override public boolean needsDroids() {
return false;
}
@Override
public boolean canEarnMoney() {
return true;
}
@Override
public GridObjectPopOver makePopOver() {
return null;
}
@Override public void update(float deltaTime) {
timeUntilVehicleChange -= deltaTime;
if (timeUntilVehicleChange <= 0f) {
timeUntilVehicleChange = VEHICLE_CHANGE_FREQUENCY + MathUtils.random(0f, 3.5f);
activeVehicleTexture = null;
int randomIndex = MathUtils.random(0, vehicleTextures.size);
if (randomIndex < vehicleTextures.size) {
activeVehicleTexture = vehicleTextures.get(randomIndex);
}
}
}
@Override public void render(SpriteBatch spriteBatch, SpriteCache spriteCache, Color renderTintColor) {
super.render(spriteBatch, spriteCache, renderTintColor);
if (activeVehicleTexture != null) {
spriteBatch.setColor(Color.WHITE);
spriteBatch.draw(activeVehicleTexture,
getWorldCenter().x - activeVehicleTexture.getRegionWidth() / 2,
getWorldCenter().y - activeVehicleTexture.getRegionHeight() / 2);
}
}
@Override public boolean shouldUseSpriteCache() {
return false;
}
}