Credit Claude Code: note at the top of the README, in CREDITS and the standalone file; pixel-art mark with link next to the licence on title and login screens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ea0623fbe3
commit
d92b45a0b8
7 files changed
+47
-1
No files matched your search
+37
@@ -205,6 +205,7 @@ enum Btn {
|
||||
StartMission,
|
||||
Goals,
|
||||
Repo,
|
||||
ClaudeCode,
|
||||
Field(usize),
|
||||
DoLogin,
|
||||
Account,
|
||||
@@ -216,6 +217,27 @@ enum Btn {
|
||||
}
|
||||
|
||||
pub const REPO_URL: &str = "https://git.familie-zink.org/zink/dungeoncraft";
|
||||
pub const CLAUDE_CODE_URL: &str = "https://claude.com/claude-code";
|
||||
|
||||
// the Claude Code mark as pixel art (drawn next to the "made with" note)
|
||||
const CLAUDE_MARK: [&str; 5] = [
|
||||
"...############...",
|
||||
"...##.######.##...",
|
||||
".################.",
|
||||
"...############...",
|
||||
"....#.#....#.#....",
|
||||
];
|
||||
|
||||
pub fn draw_claude_mark(x: f32, y: f32, px: f32) {
|
||||
let c = Color::from_rgba(0xd9, 0x77, 0x57, 255);
|
||||
for (r, row) in CLAUDE_MARK.iter().enumerate() {
|
||||
for (k, ch) in row.chars().enumerate() {
|
||||
if ch == '#' {
|
||||
draw_rectangle(x + k as f32 * px, y + r as f32 * px, px, px, c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub enum MenuAction {
|
||||
None,
|
||||
@@ -236,6 +258,7 @@ pub enum MenuAction {
|
||||
EditName, // the name field was tapped (touch: ask with a browser dialog)
|
||||
StartMission(usize),
|
||||
OpenRepo,
|
||||
OpenClaudeCode,
|
||||
Login(String, String),
|
||||
Logout,
|
||||
OpenAccount,
|
||||
@@ -478,6 +501,7 @@ impl Menu {
|
||||
}
|
||||
Some(Btn::NameField) => MenuAction::EditName,
|
||||
Some(Btn::Repo) => MenuAction::OpenRepo,
|
||||
Some(Btn::ClaudeCode) => MenuAction::OpenClaudeCode,
|
||||
Some(Btn::Field(i)) => {
|
||||
self.focus = i;
|
||||
MenuAction::EditField(i)
|
||||
@@ -620,6 +644,19 @@ impl Menu {
|
||||
pub fn draw_license(&mut self, gfx: &Gfx) {
|
||||
let (sw, sh) = (sw(), sh());
|
||||
let (mx, my) = mouse();
|
||||
// "made with Claude Code" with the pixel mark, a link to Claude Code
|
||||
let made = tr("menu.made_with");
|
||||
let px = (SMALL() * 2.0).round().max(2.0);
|
||||
let mark_w = 18.0 * px;
|
||||
let tw = gfx.measure(&made, SMALL());
|
||||
let total = mark_w + CW() * 0.5 + tw;
|
||||
let mx0 = grid_center(sw, total);
|
||||
let my0 = sh - CH() * 4.0;
|
||||
let r = Rect::new(mx0, my0, total, GH * SMALL() + 2.0);
|
||||
let hot = r.contains(vec2(mx, my));
|
||||
draw_claude_mark(mx0, my0 + (GH * SMALL() - 5.0 * px) * 0.5, px);
|
||||
gfx.text(&made, mx0 + mark_w + CW() * 0.5, my0, SMALL(), if hot { FRAME_HI } else { Color::from_rgba(0xd9, 0x77, 0x57, 255) });
|
||||
self.buttons.push((r, Btn::ClaudeCode));
|
||||
let lic = tr("menu.license");
|
||||
gfx.text(&lic, grid_center(sw, gfx.measure(&lic, SMALL())), sh - CH() * 2.5, SMALL(), DIM);
|
||||
let url = REPO_URL.trim_start_matches("https://");
|
||||
|
||||
Reference in new issue
Block a user