فك القاطرة (decouple)
المصدر: فرع الميزات
jgrpp-decoupleمن pulsexlb/OpenTTD-patches (أساسي من 152 commit)، تم دمجه في jrpm عبر git merge.
مقدمة الوظيفة
يتيح "فك القاطرة" للقطارات فصل وربط العربات أو القاطرات داخل المحطات/أثناء الجدولة، مما يحقق:
- الفك: يقوم القطار بـ "فك" جزء من العربات (أو عربات + مجموعة قاطرات) في محطة محددة وفقاً لـ "أمر فك"، ويستمر الجزء المتبقي في السير؛
- الربط: ينتظر القطار في المحطة ليلتقط تلقائياً مع قطار آخر (أو مجموعة عربات متوقفة)؛
- بعد الفك، يعمل القطاران بشكل مستقل: من خلال آليات مثل "تخطي الأوامر الشرطية"، ينفذ القطاران بعد الفك خطط جدولة مختلفة؛
- نقل العلامات: عند الفك/الربط، يتم نقل العلامات (تسميات تقييد التتبع) بشكل صحيح مع القطار أو إزالة التكرار.
القدرات الأساسية
| القدرة | الوصف |
|---|---|
| أوامر الفك/الربط | أنواع أوامر جديدة، تدعم قيود مثل "تحميل/لا تحميل" "انتظار الربط" "فك" |
| حدود طول الربط وسرعة القطار | تقييد عملية الربط حسب طول القطار؛ عملية الربط لها حد سرعة |
| دعم قاطرتين | الربط/الفك الصحيح لقاطرتين أمامية وخلفية (بما في ذلك القاطرات مزدوجة الرأس NewGRF) |
| توجيه الربط | يدعم YAPF/NPF تخطيط مسار الربط؛ الربط فقط داخل المحطات |
| السير للخلف | يمكن عكس الاتجاه بعد الربط، يدعم حيل الجدولة مثل "العكس بعد الفك" |
| ربط NewGRF | يدعم خصائص الربط المحددة بواسطة NewGRF (الخصائص 0xC6/0xF2، إلخ) |
| الحفظ | إصدار حفظ SLV_ORDER_DECOUPLE؛ استمرار عداد num_decouple |
طريقة الاستخدام
- استخدم أمر "فك" (
decouple) في المحطة لتقسيم القطار؛ - قم بتعيين أمر ربط لانتظار القطار للالتقاط؛
- استخدم "تخطي الأوامر الشرطية" (conditional order skip) لجعل القطارين بعد الفك يسلكان مسارات مختلفة؛
- اسحب داخل المحطة لترتيب تسلسل العربات، أو استخدم أدوات مساعدة مثل "التصفية حسب الطول".
الكود ذو الصلة
- الأوامر:
src/order_cmd.cpp،src/order_gui.cpp،src/order_type.h - القطارات:
src/train_cmd.cpp،src/train.h - التوجيه:
src/pathfinder/yapf،src/pathfinder/npf - الحفظ:
src/sl/saveload_common.h(SLV_ORDER_DECOUPLE)
ملاحظات
- تتضمن هذه الميزة تغييرات عميقة في الترتيب الفيزيائي للقطار/منطق حجز الإشارات، يوصى بالتركيز على الاختبارات الانحدارية بعد التجميع الفعلي: الفك، الربط، العكس، إصلاح التصادم، الاستبدال التلقائي (autoreplace) وغيرها من السيناريوهات؛
- السلاسل النصية وواجهة المستخدم المتعلقة بالفك تم دمجها (
STR_DECOUPLE*، إلخ).
تحديث دمج المنبع 2026-09-28 (px-patch 2609.x)
دُمج 113 تكريداً جديداً من pulsexlb تتعلق بفصل/قاطرات القاطرات:
- حالة مطالبة الاقتران (couple claim) تُحفظ في ملف اللعب (كتلة CPLM + XSLFI_COUPLE_CLAIM_STATE)؛
- يمكن للقطار متابعة التوجه للاقتران حتى لو كانت مركبات أخرى في الكتلة الهدف خارج اتجاه الاقتران؛
- الاستدارة في المحطة تضمن خلو الكتلة أولاً؛
- إصلاحات: خطأ الدفع بعد الفصل، رقم الوحدة عند primary != first، إعادة التجهيز التلقائي في المحطة، وغيرها؛
- إصلاح إرجاع العلامات (tracerestrict) بعد الفصل مع جداول انتظار الاقتران وبعد الاقتران؛
- أوامر الرصيف ذات التحميل/التنزيل والجدول تُنسخ بالكامل عند الفصل؛
- إصلاح الانهيار عند تغير الشرط قبل الاقتران؛ لم يعد الجدول الرئيسي يُحذف بالخطأ؛
- لوحة معلومات للقطارات بدون محرك؛ (jgrpp 0.73.3) سحب وإفلات الطلبات والنقر المزدوج.