Loading

Revision differences

Old revision #pbq5a3ccaNew revision #ppkypgbqe
1        bool selected_ingame = _game_mode == GM_NORMAL && this->selected_slot != INVALID_COMPANY && IsEditable(this->selected_slot);  1    virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
   2    {
   3        if (!IsEditable(this->selected_slot)) {
   4            this->selected_slot = INVALID_COMPANY;
   5        }
   6
   7        if (!gui_scope) return;
   8
2        bool is_gs_slot = this->selected_slot == OWNER_DEITY;  9        bool is_gs_slot = this->selected_slot == OWNER_DEITY;  
3        bool is_green_ai_slot = Company::IsValidAiID(selected_slot) && !Company::Get(selected_slot)->ai_instance->IsDead();  10        bool invalid_slot = this->selected_slot == INVALID_COMPANY;
   11        bool is_green_slot = IsEditable((CompanyID)(this->selected_slot)) && Company::IsValidID(this->selected_slot) && Company::IsValidAiID(this->selected_slot) && !Company::Get(this->selected_slot)->ai_instance->IsDead();
   12        bool is_silver_slot_above = !IsEditable((CompanyID)(this->selected_slot - 1));
   13        bool is_silver_slot_below = !IsEditable((CompanyID)(this->selected_slot + 1));
   14        bool is_green_slot_above = IsEditable((CompanyID)(this->selected_slot - 1)) && Company::IsValidID(this->selected_slot - 1) && Company::IsValidAiID(this->selected_slot - 1) && !Company::Get(this->selected_slot - 1)->ai_instance->IsDead();
   15        bool is_green_slot_below = IsEditable((CompanyID)(this->selected_slot + 1)) && Company::IsValidID(this->selected_slot + 1) && Company::IsValidAiID(this->selected_slot + 1) && !Company::Get(this->selected_slot + 1)->ai_instance->IsDead();
   16
   17        this->SetWidgetDisabledState(WID_AIC_DECREASE, GetGameSettings().difficulty.max_no_competitors == 0);
   18        this->SetWidgetDisabledState(WID_AIC_INCREASE, GetGameSettings().difficulty.max_no_competitors == MAX_COMPANIES);
   19        this->SetWidgetDisabledState(WID_AIC_CHANGE, _game_mode == GM_NORMAL && (is_gs_slot || is_green_slot) || invalid_slot);
   20        this->SetWidgetDisabledState(WID_AIC_CONFIGURE, invalid_slot || GetConfig(this->selected_slot)->GetConfigList()->size() == 0);
   21
   22        /* Display either Settings or Configure button */
   23        NWidgetCore *configure_button = this->GetWidget<NWidgetCore>(WID_AIC_CONFIGURE);
   24        bool selected_ingame = _game_mode == GM_NORMAL && !invalid_slot && IsEditable(this->selected_slot);
   25        bool is_green_ai_slot = Company::IsValidAiID(this->selected_slot) && !Company::Get(this->selected_slot)->ai_instance->IsDead();
4        if (selected_ingame && (is_gs_slot || is_green_ai_slot)) {  26        if (selected_ingame && (is_gs_slot || is_green_ai_slot)) {  
5            configure_button->SetDataTip(STR_AI_DEBUG_SETTINGS, STR_AI_DEBUG_SETTINGS_TOOLTIP);  27            configure_button->SetDataTip(STR_AI_DEBUG_SETTINGS, STR_AI_DEBUG_SETTINGS_TOOLTIP);  
6        } else {  28        } else {  
7            configure_button->SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP);  29            configure_button->SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP);  
8        } 30        }
   31
   32        this->SetWidgetDisabledState(WID_AIC_MOVE_UP, is_gs_slot || invalid_slot || is_green_slot || is_silver_slot_above || is_green_slot_above);
   33        this->SetWidgetDisabledState(WID_AIC_MOVE_DOWN, is_gs_slot || invalid_slot || is_green_slot || is_silver_slot_below || is_green_slot_below);
   34
   35        for (TextfileType tft = TFT_BEGIN; tft < TFT_END; tft++) {
   36            this->SetWidgetDisabledState(WID_AIC_TEXTFILE + tft, invalid_slot || (GetConfig(this->selected_slot)->GetTextfile(tft, this->selected_slot) == NULL));
   37        }
   38    }