আমি একটি জাভা গেম ইঞ্জিনের ফান্ডামেন্টালগুলি নিয়ে ঘুরছি এবং আমি এমন একটি জায়গায় পৌঁছেছি যেখানে আমি ইভেন্ট ম্যানেজার সিস্টেমে যুক্ত করতে প্রস্তুত।
আমি জানি, তাত্ত্বিকভাবে , ইভেন্ট ম্যানেজারটি কী করা উচিত: নির্দিষ্ট ইভেন্টগুলির জন্য অবজেক্টগুলিকে "নিবন্ধকরণ" করার অনুমতি দেয় এবং যখনই ইভেন্ট ম্যানেজার কোনও ইভেন্টের বিষয়ে অবহিত হয়, ইভেন্টটি "নিবন্ধিত" শ্রোতাদের কাছে সম্প্রচারিত করে। আমি কী স্ট্যাম্পড করছি তা কীভাবে এটি বাস্তবায়ন করা যায়।
স্ক্র্যাচ থেকে কোনও ইভেন্ট সিস্টেম বাস্তবায়নের বিষয়ে আমি অনলাইনে কিছুই খুঁজে পাচ্ছি না, তাই এই ক্ষেত্রে সেরা অনুশীলনগুলি কী - আমার কী করা উচিত এবং করা উচিত নয় সে সম্পর্কে আমি ইনপুট খুঁজছি ।
উদাহরণস্বরূপ, আমার গেমের প্রতিটি জিনিসের EventManager
ক্ষেত্র থাকা কি সত্যই প্রয়োজনীয় ? যেহেতু আমার সমস্ত গেমের অবজেক্টগুলি একক, বিমূর্ত অভিভাবক শ্রেণীর উত্তরাধিকারী, তাই আমি মনে করি আমার স্থিতিশীল রেফারেন্সটি ব্যবহার করতে সক্ষম হওয়া উচিত যাতে ইভেন্ট ম্যানেজারের কেবলমাত্র একটি উদাহরণ থাকে যা সমস্ত গেমের অবজেক্টের মধ্যে ভাগ করে নেওয়া হয়। আমি অ্যাপলেটটির সাথে অনুরূপ কিছু করি, যা আমি প্রতিটি বস্তুকে রেন্ডার করতে ব্যবহার করি, ইতিমধ্যে।
আমি মনে করি প্রতিটি সম্ভাব্য সাবস্ক্রাইব ইভেন্টের জন্য আমাকে কোনও ধরণের সংগ্রহ বজায় রাখতে হবে - প্রয়োজনীয়তা অনুসারে তালিকা থেকে গেমের অবজেক্টগুলি যুক্ত করা এবং অপসারণ করতে। আমি মনে করি যে সম্প্রচারিত হওয়া ইভেন্টগুলির একটি সারি তৈরি করা সম্ভব হওয়া উচিত, সেক্ষেত্রে আমি কেবল প্রধান গেমের লুপটিতে "ইভেন্টম্যানেজ.আর আপডেট ()" যুক্ত করতে পারি এবং Update()
পদ্ধতিটি ঘটনাক্রমে যে ঘটনাগুলি ঘটেছিল তা সম্প্রচার করতে পারে have প্রতিটি ফ্রেমের। অবশেষে, প্রতিটি বস্তুর একটি HandleEvent(Event e)
পদ্ধতি থাকবে যা তারা পার্স করতে এবং যথাযথভাবে প্রতিক্রিয়া জানাতে পারে।
এই শব্দটি কি এই জাতীয় সিস্টেমটি বাস্তবায়নের দিকে যথাযথ দিকের মতো বলে মনে হচ্ছে, বা আমি ট্র্যাক বন্ধ করে দিচ্ছি এবং / অথবা বেশ স্পষ্ট কিছু মিস করছি?