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
}
};