मैं वर्तमान में Allegro 5 और बढ़ावा देने के साथ C ++ 11 में एक 2D आरपीजी बना रहा हूं।
जब विकल्प मेनू में कोई विकल्प बदला जाता है तो मेरा लक्ष्य किसी तरह मेरी गेम सेटिंग्स को अपडेट करना है। मैं अपने खेल को पुनः आरंभ करने के लिए उपयोगकर्ता को बाध्य नहीं करना चाहता। रिज़ॉल्यूशन बदलते समय या फ़ुलस्क्रीन से विंडो में जाने पर अन्य गेम को पुनरारंभ करने की आवश्यकता नहीं होती है, इसलिए मेरा गेम या तो नहीं होना चाहिए। कृपया नीचे दी गई प्रणाली का एक सरलीकृत दृश्य देखें।
कृपया ध्यान दें कि मैं विकल्पस्क्रीन से सीधे अपने गेम ऑब्जेक्ट को कॉल करने के लिए आवश्यक नहीं हूं। धराशायी लाइन केवल उस प्रभाव को स्पष्ट करने के लिए है जिसे मैं प्राप्त करने की कोशिश कर रहा हूं; जब किसी विकल्प को सिस्टम के एक अलग हिस्से में बदला जाता है तो किसी तरह गेम को अपडेट किया जा सकता है।
विस्तृत विवरण
स्क्रीन मैनजर में GameScreen
वर्तमान में मौजूद सभी वस्तुओं की एक सूची है। ये पॉपअप सहित गेम में विभिन्न स्क्रीन होंगे। यह डिजाइन C # / XNA में कमोबेश गेम स्टेट मैनेजमेंट के नमूने का पालन करता है ।
ScreenManager
मेरी का संदर्भ होता है Game
वस्तु। Game
वस्तु initializes और संशोधित खेल की सेटिंग। यदि मैं रिज़ॉल्यूशन बदलना चाहता हूं, तो फुलस्क्रीन पर जाएं, या वॉल्यूम को म्यूट करें जो मैं Game
कक्षा में ऐसा करूंगा ।
हालाँकि, OptionsScreen वर्तमान में गेम क्लास तक नहीं पहुँच सकता। नीचे देखें आरेख:
एक गेमस्क्रीन तीन घटनाओं का संकेत दे सकता है onFinished
, onTransitionStart
और onTransitionEnd
। ऐसा नहीं है onOptionsChanged
क्योंकि केवल एक स्क्रीन ऐसा करती है। ScreenManager ईवेंट हैंडलिंग को उसके लिए सेट-अप नहीं कर सकता क्योंकि यह सभी स्क्रीन को GameScreen
s के रूप में हैंडल करता है ।
मेरा सवाल है, मैं अपना डिज़ाइन कैसे बदल सकता हूं ताकि OptionsMenu में बदलाव के लिए पुनरारंभ की आवश्यकता न हो, लेकिन तुरंत बदल दिया जाए? Game
एक बार लागू बटन पर क्लिक करने के बाद मैं अपनी वस्तु को अपडेट करने का अनुरोध करूंगा ।