package me.hammerle.supersnuvi.entity; import me.hammerle.supersnuvi.entity.components.DefaultHealth; import me.hammerle.supersnuvi.entity.components.DefaultMovement; import me.hammerle.supersnuvi.entity.components.DefaultEnergy; import me.hammerle.supersnuvi.entity.components.StoneMovement; import me.hammerle.supersnuvi.entity.components.ai.HumanController; import me.hammerle.supersnuvi.entity.components.ai.LondonerController; import me.hammerle.supersnuvi.gamelogic.Level; import me.hammerle.supersnuvi.tiles.Tile; import me.hammerle.supersnuvi.entity.components.IDeath; import me.hammerle.supersnuvi.entity.components.ItemCollector; import me.hammerle.supersnuvi.entity.components.NoHealth; import me.hammerle.supersnuvi.entity.components.ai.StoneController; import me.hammerle.supersnuvi.util.CollisionBox; public final class EntityBuilder { public static Entity buildHero(Level level, float x, float y) { Entity hero = new Entity(level, x, y, new CollisionBox(0.0f, 5.0f, 27.0f, 64.0f)); hero.controller = new HumanController(hero); hero.health = new DefaultHealth(hero, (ent) -> ent.getLevel().scheduleReset(), 100.0f, null, null, null); hero.energy = new DefaultEnergy(hero, 100.0f); hero.move = new DefaultMovement(hero, 12.0f, 0.0f, 50.0f); hero.itemCollector = ItemCollector.HERO; return hero; } public static Entity buildLondoner(Level level, float x, float y, boolean evil) { Entity londoner = new Entity(level, x, y, new CollisionBox(7.0f, 19.0f, 21.0f, 64.0f)); londoner.controller = new LondonerController(londoner, evil); londoner.health = new DefaultHealth(londoner, IDeath.NULL, 100.0f, null, null, null); londoner.energy = new DefaultEnergy(londoner, 100.0f); londoner.move = new DefaultMovement(londoner, 3.0f, 0.0f, 50.0f); return londoner; } public static Entity buildCrumblingStone(Level level, float x, float y) { Entity stone = new Entity(level, x, y, new CollisionBox(0.0f, 0.0f, Tile.SIZE, Tile.SIZE)); stone.controller = new StoneController(stone); stone.move = new StoneMovement(stone); stone.health = new NoHealth(stone); return stone; } public static Entity fromId(int id, Level level, float x, float y) { switch(id) { case 1: return buildLondoner(level, x, y, true); case 2: return buildLondoner(level, x, y, false); } return null; } }