diff --git a/dataobj/environment.cc b/dataobj/environment.cc index 1e19f4f9d..451f930d2 100644 --- a/dataobj/environment.cc +++ b/dataobj/environment.cc @@ -134,6 +134,7 @@ sint8 env_t::daynight_level; bool env_t::left_to_right_graphs; uint32 env_t::tooltip_delay; uint32 env_t::tooltip_duration; +sint8 env_t::show_money_message; std::string env_t::fontname = FONT_PATH_X "prop.fnt"; uint8 env_t::fontsize = 11; @@ -270,6 +271,7 @@ void env_t::init() // Listen on all addresses by default listen.append_unique("::"); listen.append_unique("0.0.0.0"); + show_money_message = 0; } @@ -466,5 +468,8 @@ void env_t::rdwr(loadsave_t *file) } file->rdwr_byte( fontsize ); } + if( file->get_version()>=120007 ) { + file->rdwr_byte(show_money_message); + } // server settings are not saved, since they are server specific and could be different on different servers on the save computers } diff --git a/dataobj/environment.h b/dataobj/environment.h index a60ddd5b9..9f7f80a2d 100644 --- a/dataobj/environment.h +++ b/dataobj/environment.h @@ -287,6 +287,8 @@ public: static uint32 cursor_overlay_color_rgb; static PIXVAL cursor_overlay_color; + static sint8 show_money_message; + /// color used for solid background draw static uint32 background_color_rgb; static PIXVAL background_color; diff --git a/display/simview.cc b/display/simview.cc index f36fc84b4..ef9182f2a 100644 --- a/display/simview.cc +++ b/display/simview.cc @@ -311,11 +311,25 @@ void main_view_t::display(bool force_dirty) if(welt) { // show players income/cost messages - for(int x=0; xget_player(x) ) { + welt->get_player(x)->display_messages(); + } + } + break; + + case 1: + // show message of active player + int x = welt->get_active_player_nr(); if( welt->get_player(x) ) { welt->get_player(x)->display_messages(); } + break; } + } assert( rs == get_random_seed() ); (void)rs; diff --git a/gui/display_settings.cc b/gui/display_settings.cc index 7bd7fba25..9b455a3fc 100644 --- a/gui/display_settings.cc +++ b/gui/display_settings.cc @@ -268,7 +268,19 @@ gui_frame_t( translator::translate("Helligk. u. Farben") ) buttons[22].set_typ( button_t::square_state ); buttons[22].set_text( "Highlite schedule" ); buttons[22].set_width( L_DIALOG_WIDTH - D_MARGINS_X ); - cursor.y += D_CHECKBOX_HEIGHT; + cursor.y += D_CHECKBOX_HEIGHT + D_V_SPACE; + + // income/cost message left/right arrows + buttons[26].set_pos( cursor ); + buttons[26].set_typ(button_t::arrowleft); + buttons[27].set_pos( cursor ); + buttons[27].set_typ(button_t::arrowright); + + // income/cost message label + money_message_label.init("", cursor + scr_coord (buttons[26].get_size().w + D_H_SPACE,0) ); + money_message_label.align_to(&buttons[26], ALIGN_CENTER_V); + add_component(&money_message_label); + cursor.y += buttons[26].get_size().h; // Toggle simple drawing for debugging #ifdef DEBUG @@ -360,6 +372,8 @@ gui_frame_t( translator::translate("Helligk. u. Farben") ) add_component( buttons+0 ); add_component( buttons+1 ); add_component( buttons+22); + add_component( buttons+26); + add_component( buttons+27); #ifdef DEBUG add_component( buttons+24); #endif @@ -404,6 +418,7 @@ void color_gui_t::set_windowsize(scr_size size) column = size.w - D_MARGIN_RIGHT - D_ARROW_RIGHT_WIDTH; buttons[1].set_pos ( scr_coord( column, buttons[1].get_pos().y ) ); buttons[13].set_pos ( scr_coord( column, buttons[13].get_pos().y ) ); + buttons[27].set_pos ( scr_coord( column, buttons[27].get_pos().y ) ); column = size.w - D_MARGINS_X; divider1.set_width ( column ); @@ -606,6 +621,12 @@ bool color_gui_t::action_triggered( gui_action_creator_t *komp, value_t v) if((buttons+25)==komp) { create_win(new loadfont_frame_t(), w_info, magic_font); } + if((buttons+26)==komp) { + env_t::show_money_message = (env_t::show_money_message+2)%3; + } + if((buttons+27)==komp) { + env_t::show_money_message = (env_t::show_money_message+1)%3; + } welt->set_dirty(); return true; } @@ -634,6 +655,19 @@ void color_gui_t::draw(scr_coord pos, scr_size size) // Update label buffers hide_buildings_label.set_text( env_t::hide_buildings==0 ? "no buildings hidden" : (env_t::hide_buildings==1 ? "hide city building" : "hide all building") ); convoy_tooltip_label.set_text( env_t::show_vehicle_states==0 ? "convoi error tooltips" : (env_t::show_vehicle_states==1 ? "convoi mouseover tooltips" : "all convoi tooltips") ); + switch (env_t::show_money_message) { + case 0: + money_message_label.set_text("message of all players"); + break; + case 1: + money_message_label.set_text("message of active player"); + break; + case 2: + money_message_label.set_text("show no message"); + break; + default: + money_message_label.set_text("internal ERROR"); + } sprintf(frame_time_buf," %d ms", get_frame_time() ); sprintf(idle_time_buf, " %d ms", welt->get_idle_time() ); diff --git a/gui/display_settings.h b/gui/display_settings.h index 52ac050a4..063243182 100644 --- a/gui/display_settings.h +++ b/gui/display_settings.h @@ -12,7 +12,7 @@ #include "components/gui_button.h" #include "components/gui_numberinput.h" -#define COLORS_MAX_BUTTONS (26) +#define COLORS_MAX_BUTTONS (28) #define BUF_MAXLEN_MS_FORMAT (16) @@ -46,7 +46,8 @@ private: fps_label, fps_value_label, simloops_label, - simloops_value_label; + simloops_value_label, + money_message_label; gui_divider_t divider1,