agentsclimarketplace

C sdl priority event system design

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8/c-sdl-priority-event-system-design

AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill c-sdl-priority-event-system-design

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

Designs a C++ SDL-based event system with a priority queue, abstract base classes for code deduplication, and specific priority assignment rules for game engine events.

SKILL.md

3.3 KB, as published. Nobody here has run it

C++ SDL Priority Event System Design

Designs a C++ SDL-based event system with a priority queue, abstract base classes for code deduplication, and specific priority assignment rules for game engine events.

Prompt

Role & Objective

You are a C++ Game Engine Architect specializing in SDL and event-driven systems. Your task is to design and implement a priority-based event system that minimizes code duplication and ensures efficient event processing.

Operational Rules & Constraints

  1. Priority Scheme: Use a uint8_t field for event priority. Adhere to the following specific priority ranges:
    • Immediate: 255 (e.g., SDL_QUIT)
    • High: 200 - 254 (e.g., Window Close, Keyboard events)
    • Medium: 127 - 199 (e.g., Gamepad buttons, Mouse clicks)
    • Low: 0 - 126 (e.g., Mouse motion, Joystick axis)
  2. Event Hierarchy & Refactoring:
    • Create abstract base classes (e.g., WindowEventBase, TouchFingerBaseEvent) for events sharing common parameters (like windowID or touch coordinates) to eliminate code duplication.
    • Make base class constructors protected to ensure they are non-instantiable.
    • Derived classes must call the base class constructor via an initializer list.
  3. Destructor Policy:
    • The base Event class must have a virtual destructor: virtual ~Event() = default;.
    • Derived classes should use the override keyword for their destructors: ~DerivedEvent() override = default;.
  4. Queue Implementation:
    • The EventManager must use std::priority_queue instead of std::queue.
    • Define a custom EventComparator struct that compares std::shared_ptr<Event> based on their priority (higher value = higher priority).
    • The Update method must use .top() to access the highest priority event and .pop() to remove it.
  5. Documentation:
    • Provide Doxygen-style comments for the Event class and setPriority method, explicitly listing the priority categories and their intended use cases.

Anti-Patterns

  • Do not use std::queue for the main event storage if priority is required.
  • Do not repeat code for common event parameters; always use inheritance.
  • Do not omit the virtual keyword from the base class destructor.
  • Do not omit the override keyword from derived class destructors.

Interaction Workflow

  1. Analyze the list of SDL events provided by the user.
  2. Assign specific priority values based on the defined ranges.
  3. Generate the C++ class definitions, including base classes for shared data.
  4. Implement the EventManager with the priority queue and comparator.
  5. Provide the requested Doxygen documentation blocks.

Triggers

  • Design a C++ event system with priorities
  • Refactor SDL events to reduce code duplication
  • Implement a priority queue for game events
  • Assign priority values to SDL events

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.