From 2c132b7423b48bd1b859b0ec8b87c0fa3036f655 Mon Sep 17 00:00:00 2001
From: Yona-TYT <yonatan.el.amigo@gmail.com>
Date: Fri, 23 Dec 2022 16:03:42 -0400
Subject: [PATCH] Add theme parameter object highlight

---
 src/simutrans/gui/gui_theme.cc | 4 ++++
 src/simutrans/gui/gui_theme.h  | 1 +
 src/simutrans/obj/simobj.cc    | 8 ++++----
 src/simutrans/simcolor.h       | 1 +
 4 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/simutrans/gui/gui_theme.cc b/src/simutrans/gui/gui_theme.cc
index 2edda25e2..9ab616114 100644
--- a/src/simutrans/gui/gui_theme.cc
+++ b/src/simutrans/gui/gui_theme.cc
@@ -63,6 +63,7 @@ PIXVAL gui_theme_t::gui_color_obsolete;
 PIXVAL gui_theme_t::gui_color_chat_window_network_transparency;
 PIXVAL gui_theme_t::gui_color_empty;
 PIXVAL gui_theme_t::gui_color_image_transparency;
+PIXVAL gui_theme_t::gui_color_object_highlight;
 
 /**
  * Max Kielland
@@ -186,6 +187,8 @@ void gui_theme_t::init_gui_defaults()
 
 	gui_color_image_transparency          = color_idx_to_rgb(COL_BLACK);
 
+	gui_color_object_highlight            = color_idx_to_rgb(COL_RED);
+
 	env_t::gui_player_color_bright = 4;
 	env_t::gui_player_color_dark   = 1;
 
@@ -540,6 +543,7 @@ bool gui_theme_t::themes_init(const char *file_name, bool init_fonts, bool init_
 	gui_theme_t::gui_color_empty                        = (PIXVAL)contents.get_color("gui_color_empty", SYSCOL_EMPTY);
 	gui_theme_t::gui_color_chat_window_network_transparency = (PIXVAL)contents.get_color("gui_color_chat_window_network_transparency", gui_color_chat_window_network_transparency);
 	gui_theme_t::gui_color_image_transparency           = (PIXVAL)contents.get_color("gui_color_image_transparency", SYSCOL_IMAGE_TRANSPARENCY);
+gui_theme_t::gui_color_object_highlight                 = (PIXVAL)contents.get_color("gui_color_object_highlight", SYSCOL_OBJECT_HIGHLIGHT);
 
 	gui_theme_t::gui_waitingbar_width = (uint32)contents.get_int("gui_waitingbar_width", gui_theme_t::gui_waitingbar_width);
 
diff --git a/src/simutrans/gui/gui_theme.h b/src/simutrans/gui/gui_theme.h
index 28730b9a0..311da148a 100644
--- a/src/simutrans/gui/gui_theme.h
+++ b/src/simutrans/gui/gui_theme.h
@@ -252,6 +252,7 @@ public:
 	static PIXVAL gui_color_empty;                        //@< Color for empty entries
 	static PIXVAL gui_color_chat_window_network_transparency; //@< Color if chat window is transparent in network mode
 	static PIXVAL gui_color_image_transparency;               //@< Transparency color for some icons/images
+	static PIXVAL gui_color_object_highlight;                 //@< Color (Red) to mark objects on the map
 	/// @}
 
 	/// @name GUI element sizes used by gui components
diff --git a/src/simutrans/obj/simobj.cc b/src/simutrans/obj/simobj.cc
index 1e36ebaea..e3fcfbc45 100644
--- a/src/simutrans/obj/simobj.cc
+++ b/src/simutrans/obj/simobj.cc
@@ -234,12 +234,12 @@ void obj_t::display(int xpos, int ypos  CLIP_NUM_DEF) const
 			}
 			else if(  obj_t::get_flag( highlight )  ) {
 				// highlight this tile
-				display_blend( get_image(), xpos, start_ypos, owner_n, color_idx_to_rgb(COL_RED) | OUTLINE_FLAG | TRANSPARENT75_FLAG, 0, is_dirty  CLIP_NUM_PAR);
+				display_blend( get_image(), xpos, start_ypos, owner_n, SYSCOL_OBJECT_HIGHLIGHT | OUTLINE_FLAG | TRANSPARENT75_FLAG, 0, is_dirty  CLIP_NUM_PAR);
 			}
 		}
 		else if(  obj_t::get_flag( highlight )  ) {
 			// highlight this tile
-			display_blend( get_image(), xpos, start_ypos, owner_n, color_idx_to_rgb(COL_RED) | OUTLINE_FLAG | TRANSPARENT75_FLAG, 0, is_dirty  CLIP_NUM_PAR);
+			display_blend( get_image(), xpos, start_ypos, owner_n, SYSCOL_OBJECT_HIGHLIGHT | OUTLINE_FLAG | TRANSPARENT75_FLAG, 0, is_dirty  CLIP_NUM_PAR);
 		}
 	}
 }
@@ -276,7 +276,7 @@ void obj_t::display_after(int xpos, int ypos, bool) const
 			}
 			else if(  obj_t::get_flag( highlight )  ) {
 				// highlight this tile
-				display_blend( image, xpos, ypos, owner_n, color_idx_to_rgb(COL_RED) | OUTLINE_FLAG | TRANSPARENT75_FLAG, 0, is_dirty  CLIP_NUM_PAR);
+				display_blend( image, xpos, ypos, owner_n, SYSCOL_OBJECT_HIGHLIGHT | OUTLINE_FLAG | TRANSPARENT75_FLAG, 0, is_dirty  CLIP_NUM_PAR);
 			}
 			else {
 				display_color( image, xpos, ypos, owner_n, true, is_dirty  CLIP_NUM_PAR);
@@ -284,7 +284,7 @@ void obj_t::display_after(int xpos, int ypos, bool) const
 		}
 		else if(  obj_t::get_flag( highlight )  ) {
 			// highlight this tile
-			display_blend( image, xpos, ypos, owner_n, color_idx_to_rgb(COL_RED) | OUTLINE_FLAG | TRANSPARENT75_FLAG, 0, is_dirty  CLIP_NUM_PAR);
+			display_blend( image, xpos, ypos, owner_n, SYSCOL_OBJECT_HIGHLIGHT | OUTLINE_FLAG | TRANSPARENT75_FLAG, 0, is_dirty  CLIP_NUM_PAR);
 		}
 		else {
 			display_normal( image, xpos, ypos, 0, true, is_dirty  CLIP_NUM_PAR);
diff --git a/src/simutrans/simcolor.h b/src/simutrans/simcolor.h
index 8356f8c92..5f52a39e8 100644
--- a/src/simutrans/simcolor.h
+++ b/src/simutrans/simcolor.h
@@ -158,5 +158,6 @@ typedef unsigned int FLAGGED_PIXVAL;
 #define SYSCOL_OBSOLETE                     gui_theme_t::gui_color_obsolete
 #define SYSCOL_EMPTY                        gui_theme_t::gui_color_empty
 #define SYSCOL_IMAGE_TRANSPARENCY           gui_theme_t::gui_color_image_transparency
+#define SYSCOL_OBJECT_HIGHLIGHT             gui_theme_t::gui_color_object_highlight
 
 #endif
-- 
2.39.0

