mirror of
https://github.com/Nexoniarz/Fry3DX.git
synced 2026-11-03 04:24:26 +00:00
- Apache License 2.0 - Windows: cross-built with clang-cl (cmake --preset windows), a window program with its icon; Linux: a portable preset (SDL and the C++ library inside); Android: android/build_apk.py makes the APK - tools/package.py packs the downloads; a GitHub workflow builds all three and makes a release for a v* tag - A phone layout (fry_touch, on by default on Android): the UI drawn bigger, panels when asked for, a bar of big buttons, one finger to turn the view, two to move and pinch, a long press for a right-click; files through the phone's file picker - Settings and autosaves now in a Nexoniarz folder (copied over once) - README rewritten, the website shows the downloads and the phone Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NMSrd5oe1GpUD7E6d825KP
44 lines
1.5 KiB
C++
44 lines
1.5 KiB
C++
#pragma once
|
|
// Game UI look: fonts from the game folder and a Source-like theme (dark
|
|
// translucent panels, flat buttons, light text, red highlights) on top of Dear ImGui.
|
|
#include <cstdint>
|
|
#include <functional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
struct ImFont;
|
|
|
|
namespace keel::ui {
|
|
|
|
enum class Font { Regular, Bold, Title };
|
|
|
|
// After the renderer (ImGui context) and the VFS are up.
|
|
void init();
|
|
ImFont* font(Font f);
|
|
// Sizes in pixels; scaled with the window height so 1080p looks like Source at 1080p.
|
|
float scale();
|
|
void beginFrame(float windowHeight);
|
|
// The UI laid out `k` times smaller than the screen's pixels and drawn scaled up, everything
|
|
// alike (a phone: its pixels are tiny). 1: as it is.
|
|
void setPixelScale(float k);
|
|
float pixelScale();
|
|
// The backends call this between the platform's NewFrame and ImGui::NewFrame.
|
|
void applyPixelScale();
|
|
|
|
// The highlight colour: highlights, the logo.
|
|
inline constexpr uint8_t kAccent[3] = {227, 34, 45};
|
|
uint32_t accent(float alpha = 1.0f, float brightness = 1.0f); // ImU32
|
|
|
|
// ── Popups: modal messages over everything (disconnects, errors, questions) ──
|
|
struct PopupButton {
|
|
std::string label;
|
|
std::function<void()> action; // may be empty: just closes
|
|
};
|
|
// Queued; shown one at a time. No buttons = a single "OK".
|
|
void popup(std::string title, std::string message, std::vector<PopupButton> buttons = {});
|
|
bool popupOpen();
|
|
void closePopup(); // Escape: like pressing the last button
|
|
// The engine calls this each frame after the game's UI.
|
|
void drawPopups();
|
|
|
|
} // namespace keel::ui
|