/* * Copyright (c) 2012. HappyDroids LLC, All rights reserved. */ package com.happydroids.droidtowers.gui; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.utils.Scaling; import com.happydroids.droidtowers.entities.Avatar; import com.happydroids.droidtowers.entities.Room; import com.happydroids.droidtowers.gui.controls.ButtonBar; import com.happydroids.droidtowers.gui.dialogs.CousinVinnieRepayLoanDialog; import com.happydroids.droidtowers.platform.Display; public class RoomPopOver extends GridObjectPopOver<Room> { private RatingBar residencyBar; private RatingBar crimeBar; private Table residentImages; public RoomPopOver(Room room) { super(room); } @Override protected void buildControls() { super.buildControls(); crimeBar = makeStarRatingBar("Crime"); crimeBar.setTextures(RatingBar.SECURITY_ICON); residencyBar = makeStarRatingBar("Residents"); residentImages = new Table(); residentImages.defaults().pad(Display.devicePixel(2)); row().fillX(); add(residentImages).center(); if (gridObject.hasLoanFromCousinVinnie()) { ButtonBar buttonBar = new ButtonBar(); buttonBar.addButton("Repay loan from Vinnie", new VibrateClickListener() { @Override public void onClick(InputEvent event, float x, float y) { new CousinVinnieRepayLoanDialog(gridObject).show(); } }); row().fillX().pad(Display.devicePixel(-8)).padTop(Display.devicePixel(16)); add(buttonBar).expandX().minWidth(200); } } @Override protected void updateControls() { super.updateControls(); crimeBar.setValue(gridObject.getSurroundingCrimeLevel() * 5f); residencyBar.setValue(gridObject.getResidencyLevel() * 5f); boolean updatedLayout = false; if (gridObject.hasResidents()) { if (residentImages.getChildren().size < gridObject.getResidents().size()) { residentImages.clear(); for (Avatar avatar : gridObject.getResidents()) { Image image = new Image(new TextureRegionDrawable(avatar), Scaling.none); image.getColor().set(avatar.getColor()); residentImages.add(image).width((int) avatar.getWidth()); } residentImages.pack(); updatedLayout = true; } } if (updatedLayout) { invalidateHierarchy(); pack(); } } }