From 8e9643d24510fe183f20734056c3774f5d52adfb Mon Sep 17 00:00:00 2001
From: Brandon Rodriguez <brodriguez8774@gmail.com>
Date: Sat, 6 Nov 2021 13:18:00 -0400
Subject: [PATCH] Update GUI to display additional current-state settings

---
 src/entities/gui_entities.py | 12 ++++++++++++
 src/systems.py               | 15 +++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/src/entities/gui_entities.py b/src/entities/gui_entities.py
index 2ad0cea..16c3010 100644
--- a/src/entities/gui_entities.py
+++ b/src/entities/gui_entities.py
@@ -56,6 +56,18 @@ class GuiCore:
             data_manager.gui_data['gui_w_start'] - 80,
             data_manager.gui_data['gui_h_start'] + 5,
         )
+        self.ai_setting_text = GuiText(
+            data_manager,
+            'AI Setting:',
+            5,
+            data_manager.gui_data['gui_h_end'] - 25,
+        )
+        self.ai_failure_text = GuiText(
+            data_manager,
+            'Failure Chance: 0%',
+            data_manager.gui_data['gui_w_start'] - 150,
+            data_manager.gui_data['gui_h_end'] - 25,
+        )
         self.settings_header_text = GuiText(
             data_manager,
             'Settings:',
diff --git a/src/systems.py b/src/systems.py
index e3f200b..a2f5cc8 100644
--- a/src/systems.py
+++ b/src/systems.py
@@ -32,12 +32,27 @@ class SoftwareRendererSystem(sdl2.ext.SoftwareSpriteRenderSystem):
         super(SoftwareRendererSystem, self).render(components)
 
         # Also update dynamic GUI text elements.
+        # Set "optimal calculated solution" text.
         self.data_manager.gui.optimal_counter_text.update(
             'Optimal Solution Cost: {0}'.format(self.data_manager.gui_data['optimal_counter']),
         )
+        # Set "total moves taken" counter text.
         self.data_manager.gui.total_move_counter_text.update(
             'Moves: {0}'.format(self.data_manager.gui_data['total_move_counter']),
         )
+        # Set "current ai search setting" text.
+        ai_setting_text = 'AI Setting: {0}'
+        if self.data_manager.roomba_vision == 0:
+            ai_setting_text = ai_setting_text.format('Bump Sensor (0 Vision)')
+        elif self.data_manager.roomba_vision < 0:
+            ai_setting_text = ai_setting_text.format('Full Vision')
+        else:
+            ai_setting_text = ai_setting_text.format('{0} Tiles of Vision'.format(self.data_manager.roomba_vision))
+        self.data_manager.gui.ai_setting_text.update(ai_setting_text)
+        # Set "can fail" text.
+        self.data_manager.gui.ai_failure_text.update(
+            'Failure Chance: {0}'.format('10%' if self.data_manager.ai_can_fail else '0%'),
+        )
 
 
 class AbstractMovementSystem(ABC):
-- 
GitLab