أشكال مألوفة من الويب، أُعيد بناؤها حول ما تحتاجه اللعبة منها.
GoRewardCalendar — الحضور اليومي
منتقي التواريخ لا يكاد ينفع في لعبة أبدًا. أما شكل التقويم فينفع — لمكافآت الحضور، حيث المهمّ هو في أي يوم أنت، لا ما هو التاريخ.
var attendance := GoRewardCalendar.make(days, claimed_until)
attendance.claimed.connect(func(day: int) -> void: server.claim_day(day))
خليّة اليوم وحدها هي التي تُضغط — فالزرّ الذي لا يفعل شيئًا عند ضغطه يُقرأ على أنه معطوب. والمستلَم واليومُ والقادمُ تختلف بثلاثة أشياء معًا: علامة صحّ، وإطار بلون التمييز، وإعتام.
GoRadar وGoDonut — الإحصاءات بنظرة
var stats := GoRadar.make({"STR": 0.85, "AGI": 0.5, "INT": 0.3, "VIT": 0.7, "LUK": 0.45})
stats.set_compare(with_new_sword) # طبقة متقطّعة فوقها
var share := GoDonut.make([{"label": "فيزيائي", "value": 620}, {"label": "سحري", "value": 340}])
card.add_child(share.legend())
قيم الرادار بين 0 و1 لأن ما يُعدّ ملئًا قرارٌ تتخذه اللعبة — فـ120 STR خامًا بجانب 45 INT كانت سترسم كذبة. أما قيم الدونت فخام وهو يقسمها عنك؛ وبعد خمس شرائح يطوي الباقي، إذ إن الشريحة السادسة خيطٌ لا يقرؤه أحد. وخطّ المقارنة متقطّع، لا مجرّد لون آخر، ومفتاح الرسم يطبع النسبة المئوية كتابةً.
GoCarousel — اللافتات واختيار الشخصية
banners.set_pages([promo, event, pack])
banners.autoplay_seconds = 5.0 # مطفأ افتراضيًا
هو لا يتقدّم من تلقاء نفسه ما لم تطلب، والخمس ثوانٍ هي الحدّ الأدنى: فلافتة تتغيّر كل ثلاث تسحب النصّ
قبل أن يُقرأ. ولمسه يصفّر المؤقّت، ومع تشغيل reduce_motion لا يتقدّم من تلقاء نفسه أبدًا.
والنقاط تُضغط بالحدّ الأدنى للمس وإن كانت النقطة المرسومة صغيرة.
GoKbd — تلميحات مفاتيح لا تكذب
hint.add_child(GoKbd.for_action(&"interact")) # يقرأ الارتباط الحقيقي
عبارة "اضغط F" المكتوبة في الكود تظلّ تقول F بعد أن يغيّر اللاعب الارتباط — وهي أشيع كذبة في واجهات
الحاسوب. وfor_action() يقرأ InputMap؛ فإن كان الفعل مرتبطًا بذراع تحكم بدلًا
من ذلك، أعاد فراغًا واختفت الودجة، لأن "لا شيء" ستكون كذبة أخرى. وعلى أندرويد وiOS يخفي نفسه.