Skip to content

[3pts] Implement GameEventSystem using Observer pattern #12

@github-actions

Description

@github-actions

Description

Implement an event system using the Observer pattern for game-wide notifications.

IGameEventListener Interface

  • OnEvent(GameEvent gameEvent)

GameEvent Abstract Base Class

  • EventType (enum)
  • Message (string)
  • Timestamp (DateTime)

EventType Enum

  • PlayerLevelUp
  • EnemyDefeated
  • ItemPickedUp
  • PlayerDeath

Concrete Event Classes

  • PlayerLevelUpEvent (includes new level)
  • EnemyDefeatedEvent (includes enemy name, XP, gold)
  • ItemPickedUpEvent (includes item name)
  • PlayerDeathEvent (includes cause of death)

GameEventSystem Static Class

  • Subscribe(IGameEventListener listener)
  • Unsubscribe(IGameEventListener listener)
  • Publish(GameEvent gameEvent)

Demo Implementation

  • GameLogger class implements IGameEventListener
  • Prints events to console with formatting

Requirements

  • Include code comment explaining Observer pattern choice
  • Thread-safe implementation (not required if single-threaded)

Acceptance Criteria

  • IGameEventListener interface defined
  • GameEvent abstract base class created
  • EventType enum defined
  • PlayerLevelUpEvent implemented
  • EnemyDefeatedEvent implemented
  • ItemPickedUpEvent implemented
  • PlayerDeathEvent implemented
  • GameEventSystem static class with Subscribe/Unsubscribe/Publish
  • GameLogger demo listener implemented
  • Code comment explaining Observer pattern choice
  • All classes documented with XML comments

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions