/* * 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.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.SpriteCache; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.happydroids.droidtowers.grid.GameGrid; import com.happydroids.droidtowers.gui.GridObjectPopOver; import com.happydroids.droidtowers.math.GridPoint; import com.happydroids.droidtowers.types.RoomType; public class Lobby extends Room { private static final GridPoint TWO_WIDE = new GridPoint(2, 1); private final Sprite leftCap; private final Sprite rightCap; public Lobby(RoomType roomType, GameGrid gameGrid) { super(roomType, gameGrid); TextureAtlas atlas = roomType.getTextureAtlas(); leftCap = new Sprite(atlas.findRegion("lobby-left")); leftCap.setOrigin(0, 0); leftCap.setScale(getGridScale(), getGridScale()); rightCap = new Sprite(atlas.findRegion("lobby-right")); rightCap.setOrigin(0, 0); rightCap.setScale(getGridScale(), getGridScale()); } @Override public GridObjectPopOver makePopOver() { return new GridObjectPopOver(this); } @Override public boolean needsDroids() { return false; } @Override public boolean canEarnMoney() { return false; } private void updatePopulation() { // do nothing! } @Override public int getCoinsEarned() { return 0; } @Override public int getNumResidents() { return 0; } @Override public float getResidencyLevel() { return 0f; } @Override public float getDesirability() { return 1f; } @Override public float getNoiseLevel() { return 0f; } @Override public void render(SpriteBatch spriteBatch, SpriteCache spriteCache, Color renderTintColor) { super.render(spriteBatch, spriteCache, renderTintColor); // drawEndCaps(spriteBatch); } //TODO: Make this better? private void drawEndCaps(SpriteBatch spriteBatch) { GridPoint left = getPosition().cpy(); left.sub(2, 0); float gridScale = getGridScale(); if (gameGrid.positionCache().getObjectsAt(left, TWO_WIDE).size == 0) { leftCap.setColor(renderColor); leftCap.setPosition(worldPosition.x - (leftCap.getWidth() * gridScale), worldPosition.y); leftCap.draw(spriteBatch); } GridPoint right = getPosition().cpy(); right.add(size.x, 0); if (gameGrid.positionCache().getObjectsAt(right, TWO_WIDE).size == 0) { rightCap.setColor(renderColor); rightCap.setOrigin(0, 0); rightCap.setPosition(worldPosition.x + worldSize.x, worldPosition.y); rightCap.setScale(gridScale); rightCap.draw(spriteBatch); } } }