Skip to content

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.

Base Animal

When creating each animal, a base animal entity is used to add components that are shared across each animal. image

Example Entity - Chicken

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. image

Clone this wiki locally