40 lines
834 B
C++
40 lines
834 B
C++
#pragma once
|
|
|
|
#include <memory>
|
|
|
|
#include "Shared.h"
|
|
#include <Settings.h>
|
|
|
|
namespace Artifact {
|
|
|
|
class ClientSubsystem;
|
|
class WindowImpl;
|
|
|
|
/// The client class.
|
|
class Client: public Engine<ClientSubsystem> {
|
|
public:
|
|
WindowImpl * window = nullptr;
|
|
Settings settings;
|
|
|
|
Client() : settings(getClientConfigPath()) {}
|
|
|
|
void addDefaultSubsystems();
|
|
void initDefault();
|
|
/// Initializes the client. This includes opening a window, creating a WebGPU device, etc.
|
|
void init();
|
|
/// Runs a single iteration of the render loop.
|
|
void render();
|
|
/// Runs a single iteration of the tick loop.
|
|
void tick();
|
|
/// Runs the client.
|
|
void run();
|
|
};
|
|
|
|
class ClientSubsystem: public BaseSubsystem {
|
|
public:
|
|
Client * client = nullptr;
|
|
virtual void render() {}
|
|
virtual void tick() {}
|
|
};
|
|
|
|
}
|