@@ -99,6 +99,9 @@ private enum DialogSource {
9999 // Controls dialog
100100 private ControlsDialog controlsDialog ;
101101
102+ // Message board for announcements
103+ private MessageBoard messageBoard ;
104+
102105 // Notification system for save confirmation
103106 private boolean showSaveNotification = false ;
104107 private float saveNotificationTimer = 0f ;
@@ -150,6 +153,9 @@ public GameMenu() {
150153 // Initialize controls dialog
151154 controlsDialog = new ControlsDialog ();
152155
156+ // Initialize message board
157+ messageBoard = new MessageBoard ();
158+
153159 // Register as language change listener
154160 LocalizationManager .getInstance ().addLanguageChangeListener (this );
155161
@@ -818,6 +824,18 @@ public void update() {
818824 return ;
819825 }
820826
827+ if (messageBoard .isVisible ()) {
828+ boolean wasVisible = true ;
829+ messageBoard .handleInput ();
830+ // Check if dialog was closed by ESC this frame
831+ if (wasVisible && !messageBoard .isVisible ()) {
832+ dialogJustClosed = true ;
833+ framesSinceDialogClosed = 0 ;
834+ return ;
835+ }
836+ return ;
837+ }
838+
821839 if (controlsDialog .isVisible ()) {
822840 boolean wasVisible = true ;
823841 controlsDialog .handleInput ();
@@ -1030,6 +1048,11 @@ public void render(SpriteBatch batch, ShapeRenderer shapeRenderer, float camX, f
10301048 return ;
10311049 }
10321050
1051+ if (messageBoard .isVisible ()) {
1052+ messageBoard .render (batch , shapeRenderer , camX , camY );
1053+ return ;
1054+ }
1055+
10331056 if (controlsDialog .isVisible ()) {
10341057 controlsDialog .render (batch , shapeRenderer , camX , camY );
10351058 return ;
@@ -1205,9 +1228,9 @@ private void executeMenuItem(int index) {
12051228 } else if (selectedItem .equals (loc .getText ("menu.free_world" ))) {
12061229 activateFreeWorld ();
12071230 } else if (selectedItem .equals (loc .getText ("menu.story_mode" ))) {
1208- // Story Mode placeholder - no action taken
1209- // This menu entry is reserved for future story mode functionality
1210- System .out .println ("Story Mode selected (placeholder - no action) " );
1231+ // Show message board with story mode information
1232+ messageBoard . show ();
1233+ System .out .println ("Story Mode selected - showing message board " );
12111234 } else if (selectedItem .equals (loc .getText ("menu.multiplayer" ))) {
12121235 openMultiplayerMenu ();
12131236 } else if (selectedItem .equals (loc .getText ("menu.disconnect" ))) {
@@ -2328,6 +2351,9 @@ public void dispose() {
23282351 if (controlsDialog != null ) {
23292352 controlsDialog .dispose ();
23302353 }
2354+ if (messageBoard != null ) {
2355+ messageBoard .dispose ();
2356+ }
23312357
23322358 // Unregister from language change listener
23332359 LocalizationManager .getInstance ().removeLanguageChangeListener (this );
0 commit comments