ईवेंट सिस्टम अद्भुत हैं, वे बेहद अस्पष्ट कोड बनाते हैं और वास्तव में वस्तुओं के आसान संचार और गेम लूप के माध्यम से गेम के गतिशील निर्माण की अनुमति देते हैं। मुझे अपने वर्तमान कार्यान्वयन की दक्षता के साथ एक कठिन समय हो रहा है। वर्तमान में वस्तुओं की सूचियों को उन घटनाओं में अलग-अलग करने का मेरा हल्का अनुकूलन, जो उन्होंने चमत्कार किया है, पर प्रतिक्रिया देते हैं, लेकिन ऐसा और भी होना चाहिए जो मैं कर सकता हूं।
वर्तमान में मेरे पास दो विधियाँ हैं:
सबसे सरल: सभी वस्तुओं को एक वेक्टर में जोड़ा जाता है जब किसी घटना को भेजा जाता है तो सभी वस्तुओं को ईवेंट हैंडल के माध्यम से भेजा जाता है।
अधिक जटिल: मेरे पास स्ट्रिंग के साथ एक नक्शा है क्योंकि यह महत्वपूर्ण है और यह मान के समान है। जब कोई ईवेंट प्रकार जोड़ा जाता है, तो यह इस नक्शे में जोड़ दिया जाता है, इस उदाहरण के साथ केवल बढ़ा हुआ (एक बेहतर तरीका होना चाहिए)
वस्तुओं के वैक्टर का वेक्टर फिर उस प्रकार के ईवेंट को संभालने के लिए एक नए वेक्टर को पीछे धकेलता है।
जब किसी घटना को कहा जाता है, तो यह केवल इवेंटटाइप्स मैप में ऑब्जेक्ट्स के वेक्टर के अंदर टाइप करने के लिए संबंधित int को बुलाता है और उस ईवेंट प्रकार को हैंडल करने वाले प्रत्येक ऑब्जेक्ट को वह ईवेंट भेजता है।
ये पहली विधि बहुत सी वस्तुओं के लिए काफी धीमी (स्पष्ट रूप से) है, लेकिन बहुत कम वस्तुओं के लिए काफी त्वरित है। जबकि दूसरी विधि बड़ी वस्तुओं के साथ काफी तेज है जो विभिन्न प्रकार की घटनाओं को संभालना चाहते हैं, लेकिन एक ही प्रकार की घटना को संभालने वाली वस्तुओं के साथ प्रति वस्तु की तुलना में पहली विधि की तुलना में धीमी है।
क्या कोई तेज़ (रन टाइम वार) तरीका है? क्या स्ट्रिंग प्रकार से एक इंट को देखने का एक तेज़ तरीका है? (शुरू में मेरे पास एक एनम था, लेकिन यह कस्टम प्रकारों की अनुमति नहीं देता था, जो वांछित स्तर की गतिशीलता के कारण आवश्यक हैं।)