النوافذ المنبثقة ومربعات الحوار والأوراق والبطاقات ولوحات HUD والتنبيهات وأشرطة الرسائل ترسم وجهها بعتامة 80%. فالقتال ماضٍ خلف مربع حوار التأكيد، والخريطة ظاهرة تحت ورقة الحقيبة. وهذا في اللعبة ليس زخرفًا — بل هو ما يُبقي اللاعب عارفًا أين هو. أما اللوحة المعتمة تمامًا فتمحو الموضع الذي كان يقف فيه لحظةَ تُفتح نافذة.
modulate.a أبدًا.
خمس طبقات، الأخصّ أولًا
| الترتيب | الموضع | الوحدة | المدى |
|---|---|---|---|
| ① | الوسيط عند ذلك الاستدعاء — surface.alpha، GoStyle.card(…, alpha) | نسبة 0.0–1.0 | نافذة واحدة |
| ② | GoConfig.container_alpha_overrides[kind] | نسبة 0.0–1.0 | نوع واحد من اللوحات، في المشروع كله |
| ③ | GoConfig.metric_overrides[<kind>_alpha] | نسبة مئوية | المشاريع التي تجمع كل المقاسات في مكان واحد |
| ④ | GoConfig.container_alpha | نسبة 0.0–1.0 | كل اللوحات دفعةً واحدة |
| ⑤ | GoHud/constants/<kind>_alpha في السمة | نسبة مئوية | ما يقرّره المظهر العام — مصدر الحقيقة |
وإن لم يُضبط أيٌّ منها كانت القيمة 100، فلا يتغيّر في السمة الأقدم شيء.
alpha وكل وسيط يأخذ 0.0–1.0،
بالوحدات نفسها التي يأخذها Color.a وmodulate.a، والقيمة السالبة تعني
«غير مضبوطة». والاستثناء الوحيد ثوابتُ السمة، لأنّ ثابت Theme لا يسع عددًا عشريًّا:
فهي والقناة التي تتجاوزها (metric_overrides، وهي تشارك السمة أسماءها ونوعها الصحيح)
تُكتب 80. ولا شيء غير ذلك.
# نافذة واحدة فقط — مربع حوار تأكيد يجب ألّا يحجب القتال خلفه
surface.alpha = 0.6
sheet.alpha = 0.7
dialogs.alpha = 0.9 # حقول @export نسبٌ هي الأخرى
drawer.alpha = 0.7
GoPopover.open(slot, body, {"alpha": 0.9})
var glass := GoStyle.card(Color.TRANSPARENT, -1.0, -1.0, -1.0, 0.5)
# حسب النوع — أبقِ HUD معتمًا تقريبًا، لأن نصّه يجلس فوق العالم مباشرةً
GoUi.config.container_alpha_overrides = {
GoTheme.BOX_PANEL: 0.7, # مربعات الحوار والأوراق تستطيع أن تتنفّس
GoTheme.BOX_HUD: 0.95,
}
GoUi.refresh() # يعيد رسم الودجات المفتوحة سلفًا
# المشروع كله — عالم مزدحم يريد لوحاته معتمة من جديد
GoUi.config.container_alpha = 1.0
GoUi.refresh()
GoUi.surface_alpha(GoTheme.BOX_PANEL) # النسبة الناتجة، مثلًا 0.8
ما الذي يتبع القيمة وما الذي لا يتبعها
| يتبعها — الحاويات | يتجاهلها — ما تضغطه، والعلامات |
|---|---|
GoSurface (القشرة الواحدة خلف مربعات الحوار والأوراق والقوائم المنسدلة) · GoSheet · GoDialogs · GoDrawer · GoPopover · GoNotice · GoSnackbar · GoPromptCard · GoCoachMark · GoConsole |
كل زرّ · GoSlot (الخانات السريعة) · GoBadge · أدوات التحكم المقسّمة · خلايا الاختيار · الشرائح · الأقراص والصور الرمزية |
GoStyle.card() · hud_panel() · overlay_panel() · alert() · plate() · edge_card_panel() · style_notice_panel() · floating() · box() · surface() |
كل النصوص والأيقونات |
والزرّ الذي بهتت حالته لم يعد يقول ما هو، والشارة إنما وُجدت لتجعل حرفين مقروءين — وليس أيٌّ منهما حاوية، فلا يتبع أيٌّ منهما القيمة.
popup_alpha 100). فقد يستضيف المحرّك
PopupMenu في Window خاصّة به، وهناك لا يدمجها نظام التشغيل مع اللعبة: فتخرج
نصف الشفافية سوداء لا شفّافة. ولا تخفضها إلا في المشاريع التي تضمّن نوافذها الفرعية
(gui_embed_subwindows).
ثلاثة تفاصيل جاءت من شاشات حقيقية
-
القيمة تضرب ولا تستبدل. فوجه HUD الافتراضي عند ألفا 0.92 أصلًا، فتهبط
hud_alpha80 إلى 0.736 — فالسمة التي جعلت وجهًا نصف شفاف عن قصد تحتفظ بقرارها. وفي المقابل: طبّقها مرتين تخفت اللوحة مرتين، ولذلك تُضرب ألفا في موضع واحد لا غير (GoSkin.surface_box())، وكل دالة وجه أخرى تمرّر الوسيط بدل أن تخفت نتيجتها هي. -
اللون الذي مرّرته هو اللون الذي تناله. فـ
GoStyle.plate(…, fill)تُبقي التعبئة الصريحة كما أُعطيت تمامًا: فـColor(ink, 0.14)قد صرّحت بألفاها، وضرب عتامة اللوحة فيها يقصّ قصد المستدعي مرّتين. وGoStyle.floating(…, opaque = true)تتجاهل القيمة لمثل هذا السبب — فملء الوجه معتمًا هو غرض ذلك الخيار كلّه. -
واللوحات التي لم يبنِها gohud تأخذ القاعدة نفسها.
GoStyle.fade_panel(node)— بعد دخول العقدة في الشجرة، لتقرأ السمة التي ترثها. ولا يتراكم أثرها بالتكرار: إذ يُسجَّل الوجه الأصلي ويُعاد الحساب منه في كل استدعاء، فلا تتراكم إعادات الرسم المتكرّرة أبدًا. وبعد تبديل السمات تُسقِطGoStyle.forget_face(node)ذلك السجلّ ليلتقط الاستدعاء التالي الوجه الجديد.
الوجوه المخصّصة تخفت هي الأخرى — وهنا يقع العطب صامتًا
اللوحة مقطوعة الأركان (GoStyleBoxCut) والإطار المطروق (GoStyleBoxMedieval)
ليسا StyleBoxFlat؛ بل يرسمان نفسيهما. فضع العتامة في الفرع المسطّح وحده تتجاهلها هاتان
السمتان في صمت بينما يظلّ كل اختبار قائم على القيم ناجحًا. وكلاهما يخفت خلفيته ويُبقي التوهّج
والمسامير ونقش الأركان والإبراز المشطوف بكامل قوّتها — وحبيبات وجه العصور الوسطى وإبرازه كانت أصلًا
متناسبة مع ألفا خلفيته، فترقّ مع اللوحة.
وهذه هي النقطة الأوسع: فـbg_color.a == 0.8 رقم. أما أن ينفذ العالم من خلفها ويبقى
النص مقروءًا فهو المطلوب. ويفحص gohud الأول في حزمة اختباراته بلا شاشة، ويفحص الثاني برسم لوحات
فوق خطوط مائلة على شاشة افتراضية (tests/gohud_alpha_shot.gd) — على الوجه المسطّح
والمقطوع والمطروق، في السمة الداكنة والفاتحة كلتيهما.