use of com.b3dgs.lionengine.game.feature.Featurable in project lionengine by b3dgs.
the class UtilAssignable method createAssignable.
/**
* Create the assignable.
*
* @param services The services.
* @return The prepared assignable.
*/
public static AssignableModel createAssignable(Services services) {
final Featurable featurable = new FeaturableModel();
featurable.addFeature(new IdentifiableModel());
final AssignableModel assignable = new AssignableModel(services);
assignable.prepare(featurable);
return assignable;
}
use of com.b3dgs.lionengine.game.feature.Featurable in project lionengine by b3dgs.
the class UtilExtractable method createExtractable.
/**
* Create extractable.
*
* @return The extractable.
*/
public static Extractable createExtractable() {
final Services services = new Services();
services.add(new MapTileGame());
final Featurable featurable = new FeaturableModel();
featurable.addFeature(new IdentifiableModel());
featurable.addFeature(new TransformableModel());
final Extractable extractable = new ExtractableModel(services);
extractable.setResourcesQuantity(10);
extractable.setResourcesType(ResourceType.WOOD);
extractable.prepare(featurable);
return extractable;
}
use of com.b3dgs.lionengine.game.feature.Featurable in project lionengine by b3dgs.
the class SceneRasterable method add.
private void add(SetupSurfaceRastered setup, int offsetX) {
final SpriteAnimated surface = Drawable.loadSpriteAnimated(setup.getSurface(), 4, 4);
final Featurable featurable = new FeaturableModel(services, setup);
featurable.addFeature(new MirrorableModel(services, setup));
featurable.addFeature(new AnimatableModel(services, setup, surface));
final Transformable transformable = featurable.addFeatureAndGet(new TransformableModel(services, setup));
final Rasterable rasterable = new RasterableModel(services, setup);
rasterable.setOrigin(Origin.MIDDLE);
rasterable.setFrameOffsets(1, 2);
featurable.addFeature(rasterable);
featurable.addFeature(new RefreshableModel(extrp -> {
transformable.setLocationY(UtilMath.sin(count) * 240);
surface.setLocation(camera, transformable);
rasterable.update(extrp);
surface.update(extrp);
}));
featurable.addFeature(new DisplayableModel(g -> rasterable.render(g)));
transformable.setLocationX(120 + offsetX);
handler.add(featurable);
}
use of com.b3dgs.lionengine.game.feature.Featurable in project lionengine by b3dgs.
the class LauncherModel method fired.
/**
* Called when fire is performed.
*
* @param initial The fire launch initial speed for force transfer.
* @throws LionEngineException If the fired object is not a {@link Launchable}.
*/
private void fired(Direction initial) {
for (int i = 0; i < listenable.size(); i++) {
listenable.get(i).notifyFired();
}
for (final LaunchableConfig launchableConfig : launchables) {
final Media media = Medias.create(launchableConfig.getMedia());
final Featurable featurable = factory.create(media);
try {
final Launchable launchable = featurable.getFeature(Launchable.class);
if (launchableConfig.getDelay() > 0) {
delayed.add(new DelayedLaunch(source, launchableConfig, initial, featurable, launchable));
} else {
launch(launchableConfig, initial, featurable, launchable);
}
} catch (final LionEngineException exception) {
featurable.getFeature(Identifiable.class).destroy();
throw exception;
}
}
}
use of com.b3dgs.lionengine.game.feature.Featurable in project lionengine by b3dgs.
the class Hud method createMenu.
/**
* Create menu from action and add to active menus.
*
* @param action The action used.
* @return The created menu.
*/
private Actionable createMenu(ActionRef action) {
Actionable menu = menus.get(action);
if (menu == null) {
final Featurable featurable = factory.create(Medias.create(PATH.split(action.getPath())));
handler.add(featurable);
menu = featurable.getFeature(Actionable.class);
menus.put(action, menu);
}
menu.setEnabled(true);
active.add(menu);
return menu;
}
Aggregations