Aller au contenu

API Client

Classes principales du client R-Type.

Architecture

classDiagram
    class Engine {
        -SceneManager sceneManager_
        -NetworkClient network_
        -AudioManager audio_
        -Renderer renderer_
        +run()
        +quit()
    }

    class SceneManager {
        -stack~Scene~ scenes_
        +push(scene)
        +pop()
        +replace(scene)
        +current() Scene*
    }

    class NetworkClient {
        -TcpClient tcp_
        -UdpClient udp_
        +connect(host, port)
        +send(packet)
        +poll() vector~Packet~
    }

    class AudioManager {
        -map~string, Sound~ sounds_
        -VoiceChat voice_
        +playSound(name)
        +playMusic(name)
        +setVolume(type, value)
    }

    class Renderer {
        <<interface>>
        +clear()
        +draw(sprite)
        +present()
    }

    Engine --> SceneManager
    Engine --> NetworkClient
    Engine --> AudioManager
    Engine --> Renderer

Flux Principal

sequenceDiagram
    participant Main
    participant Engine
    participant SM as SceneManager
    participant Scene
    participant Renderer

    Main->>Engine: run()
    Engine->>SM: push(MenuScene)

    loop Game Loop
        Engine->>Engine: pollEvents()
        Engine->>SM: current()
        SM-->>Engine: scene
        Engine->>Scene: update(dt)
        Engine->>Scene: render(renderer)
        Engine->>Renderer: present()
    end

    Note over Main: Quit requested
    Engine-->>Main: return 0

Classes

Engine

Moteur de jeu principal

SceneManager

Gestionnaire de scènes

NetworkClient

Client réseau TCP/UDP

AudioManager

Gestionnaire audio


Scènes Disponibles

stateDiagram-v2
    [*] --> SplashScene

    SplashScene --> MenuScene: timeout

    MenuScene --> SettingsScene: settings
    MenuScene --> LobbyScene: play
    MenuScene --> [*]: quit

    SettingsScene --> MenuScene: back

    LobbyScene --> RoomScene: join room
    LobbyScene --> MenuScene: back

    RoomScene --> GameScene: start
    RoomScene --> LobbyScene: leave

    GameScene --> ScoreScene: game over
    GameScene --> RoomScene: quit

    ScoreScene --> RoomScene: continue
    ScoreScene --> MenuScene: quit

Plugins

Le client supporte des plugins pour étendre ses fonctionnalités.

class IPlugin {
public:
    virtual ~IPlugin() = default;
    virtual std::string name() const = 0;
    virtual void init(Engine& engine) = 0;
    virtual void shutdown() = 0;
};

// Exemple: Plugin controller
class ControllerPlugin : public IPlugin {
public:
    std::string name() const override { return "controller"; }
    void init(Engine& engine) override {
        // Init SDL GameController
    }
    void shutdown() override {
        // Cleanup
    }
};