gohud

アイコン

名前で呼ぶ絵 1,287 個 — いつもある 84 個、ゲーム用 187 個、ライブラリの 1,000 個。下で探して名前をコピーすれば、gohud のどのウィジェットでも描ける。

アイコンは名前で呼ぶ

ウィジェットは絵を持たない。名前を尋ねるだけで、何を描くかは使用中のアイコンセットが決める — セットを替えれば、コードを一行も触らずにすべてのアイコンが替わる。

GoStyle.icon_button(GoIconSet.SETTINGS, open_settings)   # a button
slot.icon_name = GoGameIcons.BACKPACK                     # a quick slot
var mark := GoUi.icons().node(&"cloud_rain", 24)          # a bare Control, any size

GoUi.icons() が使用中のセットだ。描けない名前は場所を保つ空の箱になり、デバッグビルドでは警告が出る。アイコンが一つ欠けても行がずれない。

アイコンを探す

gohud に入っている絵のすべて。名前や見た目で検索し、セットやグループで絞り込み、アイコンを選んで名前をコピーする。

名前と検索語はどの言語でも英語のまま — コードに打つ文字だからだ。

四つのセット、探し方は一つ

どのセットも同じ呼び出しに答える。大きなセットは使用中のセットの上に足して使う。

セット名前定数有効にする
デフォルト84GoIconSet常に有効
中世彫刻風 16 枚—GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
ゲーム187GoGameIconsGoUi.add_icons(GoGameIcons.icon_set())
ライブラリ1,000GoIconLibraryGoUi.add_icons(GoIconLibrary.icon_set())
GoUi.add_icons(GoIconLibrary.icon_set())   # the library — and the game set under it
GoUi.add_icons(GoGameIcons.icon_set())     # or the game set alone

ライブラリはゲームセットへ、ゲームセットはデフォルトセットへフォールバックするので、一行で 1,271 個の名前が描ける。セットは絵をパスで持ち、その名前を初めて描くときにファイルを読む — ライブラリを足しても 1,000 枚のテクスチャではなく、パスの表を一つ読むだけだ(デスクトップで約 30 ms)。

パスは文字列であって依存関係ではない。リソースを選んでエクスポートするなら addons/gohud/icons/ を含める。既定の「すべてのリソースをエクスポート」なら何もしなくてよい。

名前を探す順序

どのセットも同じ順序に従う。だから、どの絵が勝つか前もって分かる。

  1. まずすべてのセットの自前の絵 — 使用中のセット、次に足したセット、次にそれらのフォールバックを一段ずつ見る。自前の絵とは、テクスチャ・パス・アイコンフォントのグリフだ。
  2. 誰も描けなければ別名を見る: gear は settings へ、x は close へ。たどるのは一度だけ。
  3. それでもなければ、場所を保つ空の箱。

中世プリセットにライブラリを足しても彫刻風の剣がそのまま残るのは、この順序のためだ — 中世セットの自前の絵が、誰のフォールバックよりも先に見つかる。

GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
GoUi.add_icons(GoIconLibrary.icon_set())

GoUi.icons().texture(&"sword")      # the medieval engraving — its own drawing comes first
GoUi.icons().texture(&"rocket")     # from the game set
GoUi.icons().canonical(&"gear")     # &"settings" — an alias

プリセット、自分のセット、足したセット

何を描くかは三か所で決まる。

呼び出しすること
GoUi.use_preset(…)テーマ・スキン・アイコンセットを一度に替える。config.icons は空にし、config.extra_icons は残す。
GoUi.config.icons = my_setプリセットのアイコンセットを自分のセットに替える。
GoUi.add_icons(set)使用中のセットの次に見るセットを足す。プリセットを替えても残る。

自分の絵を入れる

名前をいくつか上書きする、フォルダーを丸ごと足す、アイコンフォントをつなぐ — 呼び出すコードはそのままだ。

# Override a few names — everything else still comes from the set in use
var mine := GoIconSet.new()
mine.fallback = GoUi.icons()
mine.textures = {GoIconSet.CLOSE: preload("res://art/close.svg")}
GoUi.config.icons = mine

# A folder of drawings — file name = icon name, each read when first drawn
GoUi.config.icons = GoIconSet.from_folder("res://art/icons", GoUi.icons())

名前・グループ・検索

同梱セットが守る規則と、名前を探す呼び出し。

var icons := GoUi.icons()
icons.search("arrow left", 5)       # best matches first: back, arrow_bar_left …
icons.search("rain")                # cloud_rain, then drawings tagged "rain"

group_names() · names_in_group()

icons.group_names()                 # every group key, in lookup order
icons.names_in_group(&"weather")    # one group, in display order — every set's share of it
icons.group_title(&"weather")       # "Weather & sky"

canonical() · has_icon()

icons.canonical(&"gear")            # &"settings"
icons.canonical(&"treasure_chest")  # &"chest" — Tabler's name for a game drawing
icons.has_icon(&"cloud_rain")       # true once the library is added — nothing is loaded to answer

絵の出典

すべて MIT。告知は THIRD_PARTY_NOTICES.md として ZIP に同梱される。

セット出典ライセンス
デフォルトgohud のために描いたMIT
中世gohud のために描いたMIT
ゲーム171 個は Tabler Icons 3.46.0、16 個は gohud のために描いたMIT
ライブラリTabler Icons 3.46.0MIT

他人のアイコンをつなぐなら、その出典を GoIconSet.attribution に書く — そして商用のアイコンフォントは、公開するフォークではなく自分のゲームの中にだけ置く。