Skip to content
Alexander Johnson edited this page Oct 16, 2024 · 42 revisions

Overview

Attack on Animals is a game that allows players to select from three distinct characters: a dog, an alligator, and a bird. Each character is equipped with unique attributes and abilities, offering a variety of gameplay experiences. Players can explore different environments, complete quests, and engage in battles using their chosen character. The game is designed to provide a rich and immersive experience through these diverse animal avatars.

Players

Audio

Camera

The game camera is designed to follow the movement of the player character, ensuring that they are always in the center of the screen during gameplay. This helps the player focus on the character, promoting greater immersion in the game.

Game Area

The GameArea class represents a specific area in the game, such as a level or indoor area. It manages the terrain, entities, and provides methods for spawning and managing game objects.

Quest System

The game features a comprehensive quest system managed by the QuestManager class. This system handles quest progression, completion, and integration with the game's event system.

Cutscene

Animal Selection

Classes

UML Class Diagram

classDiagram
    class GameArea {
        -TerrainComponent terrain
        -List<Entity> areaEntities
        +create()
        +dispose()
        +spawnEntity(Entity)
        +spawnEntityAt(Entity, GridPoint2, boolean, boolean)
        +getPlayer() Entity
        +getEnemies() List<Entity>
        +getBosses() List<Entity>
        +getFriendlyNPCs() List<Entity>
        +getMinigameNPCs() List<Entity>
        +unloadAssets()
        +pauseMusic()
        +playMusic()
        +unlockArea(String)
        +spawnEntityAtVector(Entity, Vector2)
        +spawnConvertedNPCs(Entity)
    }

    class QuestManager {
        -LinkedHashMap<String, Quest> quests
        -List<Achievement> achievements
        -Entity player
        +addQuest(Quest)
        +loadQuests()
        +getAllQuests() List<Quest>
        +getQuest(String) Quest
        +failQuest(String)
        +progressQuest(String, String)
        +getActiveQuests() List<Quest>
        +completeAchievement(Achievement)
    }

    class AnimalSelectionScreen
    class AnimalSelectionActions
    class AnimalSelectionDisplay

    GameArea --> "1..*" Entity: manages
    QuestManager --> "1..*" Quest: manages
    QuestManager --> "1..*" Achievement: manages
    AnimalSelectionScreen --> AnimalSelectionActions: uses
    AnimalSelectionScreen --> AnimalSelectionDisplay: uses
Loading

Sequence Diagram: Quest Progression

sequenceDiagram
    participant Player
    participant QuestManager
    participant Quest
    participant Task
    participant GameEvents

    Player->>GameEvents: Trigger event
    GameEvents->>QuestManager: Notify event
    QuestManager->>Quest: Check quest status
    Quest->>Task: Update task progress
    Task-->>Quest: Return task status
    Quest-->>QuestManager: Return quest progress
    QuestManager->>QuestManager: Update quest status
    alt Quest Completed
        QuestManager->>GameEvents: Trigger quest completion
        GameEvents->>Player: Notify quest completed
    else Quest Failed
        QuestManager->>GameEvents: Trigger quest failure
        GameEvents->>Player: Notify quest failed
    end
Loading
Clone this wiki locally