Skip to content

তৃতীয় ব্যাচ পরিকল্পনা: হাইলাইট সিস্টেম + ব্লুপ্রিন্ট সিস্টেম ​

cmclient-এর দুটি উচ্চ-মূল্যের বৈশিষ্ট্য গভীরভাবে গবেষণা করা হয়েছে, এই পৃষ্ঠায় পোর্টিং পরিকল্পনা ও কাজের পরিমাণ মূল্যায়ন রেকর্ড করা হয়েছে।

এক. অবজেক্ট-লেভেল হাইলাইট সিস্টেম (cm_highlight, ২৮৮৮ লাইন) ​

বৈশিষ্ট্য: বিল্ড টুল সক্রিয় হলে, নির্মাণ করতে যাওয়া অবজেক্টের实时 হাইলাইট——রেলের পুরো অংশ, স্টেশন পুরো এলাকা, রাস্তা/পার্কিং লট, সিগন্যাল, ব্রিজ, টানেল, পিয়ার, এয়ারপোর্ট, ইন্ডাস্ট্রি ইত্যাদি ১৫ ধরনের অবজেক্টের সঠিক প্রিভিউ।

পোর্টিং নির্ভরতা (vanilla API → jrpm API):

cmclient নির্ভরতাjrpm-এ সংশ্লিষ্ট
DrawSelectionSprite / SetSelectionTilesDirty / DrawTileSelectionRect / DrawAutorailSelection (viewport.cpp ভিতরে)বিদ্যমান কিন্তু সিগনেচার ভিন্ন (jgrpp পুনর্গঠন করেছে), একে একে সারিবদ্ধ করতে হবে
TileZoning (টাউন জোনিং রঙিনকরণ)jrpm-এ নেই → নতুন তৈরি করতে হবে
_fn_mod ইত্যাদি গ্লোবাল স্টেটcmclient-নির্দিষ্ট → পুনরায় ডিজাইন করতে হবে
ObjectTileHighlight::make_rail/road_stop/... প্রতি অবজেক্ট কনস্ট্রাক্টরNewGRF স্টেশন/রাস্তা API-র উপর নির্ভরশীল, jrpm ও vanilla-তে পার্থক্য আছে

কাজের পরিমাণ: প্রায় ২–৩ রাউন্ড (প্রতি রাউন্ড ৪–৬ ঘন্টা), মূল অসুবিধা ভিউপোর্ট ড্র পাইপলাইন সারিবদ্ধকরণ।

দুই. ব্লুপ্রিন্ট সিস্টেম (cm_blueprint, ৬৬০ লাইন) ​

বৈশিষ্ট্য: এলাকা নির্বাচন → বিল্ড কমান্ড সিকোয়েন্স রেকর্ড (রেল/স্টেশন/টানেল/ব্রিজ/সিগন্যাল) → ১৬ স্লট স্টোরেজ → এক ক্লিকে পুনর্নির্মাণ + ঘূর্ণন।

পোর্টিং নির্ভরতা:

cmclient নির্ভরতাjrpm-এ সংশ্লিষ্ট
cm_commands.hpp কমান্ড অবজেক্ট লেয়ার (as_company / with_callback / set_auto / no_estimate + 100+ জেনারেটেড কমান্ড ক্লাস, ২২৫১ লাইন)jrpm-এ এই অ্যাবস্ট্রাকশন নেই → প্রথমে পোর্ট/পুনর্লিখন করতে হবে
cm_station_gui.hpp-এর _station_gui স্টেটjrpm স্টেশন GUI স্টেট স্ট্রাকচার ভিন্ন
sp<Blueprint> স্মার্ট পয়েন্টারjrpm std::shared_ptr ব্যবহার করতে পারে
BlueprintCopyArea-এর টাইল ট্রাভার্সালTileIndexDiffC ইত্যাদি জেনেরিক API-র উপর নির্ভরশীল (jrpm-এ আছে)

কাজের পরিমাণ: প্রায় ২–৩ রাউন্ড (কমান্ড অবজেক্ট লেয়ার সহ)।

তিন. প্রস্তাবিত বাস্তবায়ন ক্রম ​

ধাপ ১: কমান্ড অবজেক্ট লেয়ার (cm_command_type ডিজাইন, jrpm-এর Command<T>::Do/Post দিয়ে পুনরায় বাস্তবায়ন)
         —— ব্লুপ্রিন্ট ও কমান্ড রিপ্লে (load_commands)-এর সাধারণ ভিত্তি
ধাপ ২: অবজেক্ট-লেভেল হাইলাইট (ভিউপোর্ট পাইপলাইন সারিবদ্ধকরণ, একে একে অবজেক্ট পোর্ট)
ধাপ ৩: ব্লুপ্রিন্ট (কপি/ঘূর্ণন/স্লট/রিপ্লে)
ধাপ ৪ (ঐচ্ছিক): কমান্ড রিপ্লে (lzma সম্পূর্ণ খেলা রিপ্লে) + টাউন জোনিং (growth_tiles,存档 এক্সটেনশন প্রয়োজন)

পূর্বশর্ত ব্যাখ্যা ​

এই তিনটি বৈশিষ্ট্য মোট প্রায় ৫০০০+ লাইন, কমান্ড সিস্টেম/存档/ভিউপোর্ট ড্র তিনটি মূল স্তর জুড়ে বিস্তৃত, এবং jrpm-এ নেই এমন一批 মধ্যস্তরের উপর নির্ভরশীল (কমান্ড অবজেক্ট, ইভেন্ট বাস, বিটস্ট্রিম সিরিয়ালাইজেশন)। স্বাধীন বিশেষ প্রকল্প হিসেবে এগিয়ে নেওয়া বেশি নিরাপদ——প্রতি ব্যাচ কম্পাইল + মাল্টিপ্লেয়ার যাচাইয়ের পর কমিট করার পরামর্শ দেওয়া হয়, একবারে বড় পরিবর্তন এড়িয়ে যা রিগ্রেশন শনাক্ত করা কঠিন করে তোলে।