/*
* Copyright (c) 2012. HappyDroids LLC, All rights reserved.
*/
package com.happydroids.droidtowers.entities;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.utils.Array;
import com.happydroids.droidtowers.controllers.AvatarLayer;
import com.happydroids.droidtowers.types.ProviderType;
public class Janitor extends Avatar {
public static final ProviderType[] JANITOR_SERVICES_PROVIDER_TYPES = new ProviderType[]{ProviderType.FOOD, ProviderType.OFFICE_SERVICES, ProviderType.RESTROOM};
protected ProviderType[] servicesTheseProviderTypes;
public Janitor(AvatarLayer avatarLayer) {
super(avatarLayer.getGameGrid());
setColor(Color.WHITE);
setServicesTheseProviderTypes(JANITOR_SERVICES_PROVIDER_TYPES);
setVisible(true);
}
@Override
protected String addFramePrefix(String frameName) {
return "janitor/" + frameName;
}
@Override
protected void findPlaceToVisit() {
Array<GridObject> gridObjects = gameGrid.getInstancesOf(CommercialSpace.class, HotelRoom.class);
if (gridObjects != null && gridObjects.size > 0) {
if (gridObjects.size > 1) {
gridObjects.sort(GridObjectSort.byDirtLevel);
}
for (int i = 0, gridObjectsSize = gridObjects.size; i < gridObjectsSize; i++) {
GridObject gridObject = gridObjects.get(i);
if (canService((CommercialSpace) gridObject)) {
navigateToGridObject(gridObject);
break;
}
}
}
}
protected boolean canService(CommercialSpace commercialSpace) {
return !commercialSpace.isBeingServiced() && commercialSpace.provides(servicesTheseProviderTypes);
}
public void setServicesTheseProviderTypes(ProviderType... types) {
servicesTheseProviderTypes = types;
}
}