Files
2026-03-30 15:33:19 -06:00

77 lines
2.7 KiB
C++

#pragma once
#include "ship/window/Window.h"
#include "ship/window/gui/Gui.h"
#include "ship/controller/controldevice/controller/mapping/keyboard/KeyboardScancodes.h"
#include "FastMouseStateManager.h"
union Gfx;
#include "interpreter.h"
namespace Fast {
class Fast3dWindow : public Ship::Window {
public:
Fast3dWindow();
Fast3dWindow(std::vector<std::shared_ptr<Ship::GuiWindow>> guiWindows);
Fast3dWindow(std::shared_ptr<Ship::Gui> gui);
Fast3dWindow(std::shared_ptr<Ship::Gui> gui, std::shared_ptr<FastMouseStateManager> mouseStateManager);
~Fast3dWindow();
void Init() override;
void Close() override;
void RunGuiOnly() override;
void StartFrame() override;
void EndFrame() override;
bool IsFrameReady() override;
void HandleEvents() override;
void SetCursorVisibility(bool visible) override;
uint32_t GetWidth() override;
uint32_t GetHeight() override;
int32_t GetPosX() override;
int32_t GetPosY() override;
float GetAspectRatio() override;
void SetMousePos(Ship::Coords pos) override;
Ship::Coords GetMousePos() override;
Ship::Coords GetMouseDelta() override;
Ship::CoordsF GetMouseWheel() override;
bool GetMouseState(Ship::MouseBtn btn) override;
void SetMouseCapture(bool capture) override;
bool IsMouseCaptured() override;
uint32_t GetCurrentRefreshRate() override;
bool SupportsWindowedFullscreen() override;
bool CanDisableVerticalSync() override;
void SetResolutionMultiplier(float multiplier) override;
void SetMsaaLevel(uint32_t value) override;
void SetFullscreen(bool isFullscreen) override;
bool IsFullscreen() override;
bool IsRunning() override;
uintptr_t GetGfxFrameBuffer() override;
const char* GetKeyName(int32_t scancode) override;
void InitWindowManager();
int32_t GetTargetFps();
void SetTargetFps(int32_t fps);
void SetMaximumFrameLatency(int32_t latency);
void GetPixelDepthPrepare(float x, float y);
uint16_t GetPixelDepth(float x, float y);
void SetTextureFilter(FilteringMode filteringMode);
void SetRendererUCode(UcodeHandlers ucode);
void EnableSRGBMode();
bool DrawAndRunGraphicsCommands(Gfx* commands, const std::unordered_map<Mtx*, MtxF>& mtxReplacements);
std::weak_ptr<Interpreter> GetInterpreterWeak() const;
protected:
static bool KeyDown(int32_t scancode);
static bool KeyUp(int32_t scancode);
static void AllKeysUp();
static bool MouseButtonDown(int button);
static bool MouseButtonUp(int button);
static void OnFullscreenChanged(bool isNowFullscreen);
private:
GfxRenderingAPI* mRenderingApi;
GfxWindowBackend* mWindowManagerApi;
std::shared_ptr<Interpreter> mInterpreter = nullptr;
};
} // namespace Fast