ฉันจะอัปเดตการตั้งค่าการแสดงผลจากหน้าจอตัวเลือกโดยไม่ต้องเริ่มต้นใหม่ได้อย่างไร
ขณะนี้ฉันกำลังสร้าง 2D RPG ใน C ++ 11 ด้วย Allegro 5 และเพิ่ม เป้าหมายของฉันคือการปรับปรุงการตั้งค่าเกมของฉันเมื่อมีการเปลี่ยนตัวเลือกในเมนูตัวเลือก ฉันไม่ต้องการบังคับให้ผู้ใช้รีสตาร์ทเกม เกมอื่นไม่จำเป็นต้องรีสตาร์ทเมื่อเปลี่ยนความละเอียดหรือเปลี่ยนจากเต็มหน้าจอเป็นหน้าต่างดังนั้นเกมของฉันก็ไม่ควรทำเช่นเดียวกัน โปรดดูมุมมองที่เรียบง่ายของระบบด้านล่าง โปรดทราบว่าฉันไม่ต้องการเรียกวัตถุเกมของฉันโดยตรงจาก OptionsScreen เส้นประเป็นเพียงเพื่อแสดงให้เห็นถึงผลกระทบที่ฉันพยายามทำ เพื่อทำให้เกิดการปรับปรุงของเกมเมื่อมีการเปลี่ยนตัวเลือกในส่วนต่าง ๆ ของระบบ คำอธิบายโดยละเอียด ScreenManager มีรายการของGameScreenวัตถุทั้งหมดที่มีอยู่ในปัจจุบัน เหล่านี้จะเป็นหน้าจอต่าง ๆ ในเกมรวมถึงป๊อปอัป การออกแบบนี้จะปฏิบัติตามมากหรือน้อยไปตัวอย่างการจัดการสถานะของเกมใน C ScreenManagerมีการอ้างอิงถึงฉันGameวัตถุ Gameinitializes วัตถุและแก้ไขการตั้งค่าเกม หากฉันต้องการเปลี่ยนความละเอียดให้ใช้งานแบบเต็มหน้าจอหรือปิดเสียงที่ฉันควรทำในGameชั้นเรียน อย่างไรก็ตามปัจจุบัน OptionsScreen ไม่สามารถเข้าถึงคลาสเกมได้ ดูแผนภาพด้านล่าง: GameScreen สามารถส่งสัญญาณสามเหตุการณ์onFinished, และonTransitionStart onTransitionEndไม่มีonOptionsChangedเพราะมีเพียงหน้าจอเดียวเท่านั้นที่ทำเช่นนั้น ScreenManager ไม่สามารถตั้งค่าการจัดการเหตุการณ์สำหรับสิ่งนั้นเพราะมันจัดการหน้าจอทั้งหมดเป็นGameScreens คำถามของฉันคือฉันจะเปลี่ยนการออกแบบของฉันอย่างไรเพื่อให้การเปลี่ยนแปลงใน OptionsMenu ไม่ต้องการการรีสตาร์ท แต่จะเปลี่ยนทันที ฉันควรขอให้Gameวัตถุของฉันอัปเดตเมื่อคลิกปุ่มนำไปใช้