-
Notifications
You must be signed in to change notification settings - Fork 7
Alien Fauna Implementation ‐ Adding Animals
pchsa edited this page Oct 3, 2023
·
5 revisions
New animals can be created within the NPCFactory
. The code below outlines the necessary components for chicken animal.
/**
* Creates a chicken entity
* @param player player entity
* @return chicken entity
*/
public static Entity createChicken(Entity player) {
Entity chicken = createBaseAnimal(EntityType.Chicken);
BaseAnimalConfig config = configs.chicken;
AnimationRenderComponent animator = new AnimationRenderComponent(
ServiceLocator.getResourceService().getAsset("images/animals/chicken.atlas", TextureAtlas.class),
16f
);
// Add desired animations
AITaskComponent aiTaskComponent = new AITaskComponent()
// Add desired tasks
List<SingleDropHandler> singleDropHandlers = new ArrayList<>();
MultiDropComponent multiDropComponent = new MultiDropComponent(singleDropHandlers, true);
// Add drop handlers
chicken
.addComponent(aiTaskComponent)
.addComponent(multiDropComponent)
.addComponent(animator)
.addComponent(new AnimalAnimationController())
.addComponent(new CombatStatsComponent(10, 0))
.addComponent(new TamableComponent(player, config.tamingThreshold,
config.tamingProbability, config.favouriteFood));
// configure components
return chicken;
}
The chicken animal has associated sprites and animations, tasks (e.g. runaway from player), drops, health stats and can be tamed.
When creating each animal, a base animal entity is used to add components that are shared across each animal.
After creating the base animal, further components are added to each animal depending on its type. The following diagram shows what components are added to the chicken entity.