package characters; import enums.CharacterType; import interfaces.Interactable; import interfaces.Listenable; import story.StoryContext; import model.StoryElement; public abstract class Character extends StoryElement implements Interactable, Listenable { protected CharacterType type; protected String name; public Character(String description, CharacterType type, String name) { super(description); this.type = type; this.name = name; } // Method where characters can reminisce about past events public abstract void reminisce(String memory); // Method for characters to react to stories being told public abstract void reactToStory(); // Method for telling a story about a specific place or event public abstract void tellStoryOf(String place); // Method for characters, especially children, to ask questions about the story public abstract void askQuestionsAbout(String subject); public abstract void listen(); public abstract void tell(); public abstract void converse(StoryContext context, String subject); // Interaction method for general purposes @Override public abstract void interact(StoryContext context); // Listening method within a story context @Override public abstract void listen(StoryContext context); }