virtual void OnClick(Point pt, int widget, int click_count) { /* Check which button is clicked */ if (IsInsideMM(widget, AID_WIDGET_COMPANY_BUTTON_START, AID_WIDGET_COMPANY_BUTTON_END + 1)) { /* Is it no on disable? */ if (!this->IsWidgetDisabled(widget)) { ChangeToAI((CompanyID)(widget - AID_WIDGET_COMPANY_BUTTON_START)); } } switch (widget) { case AID_WIDGET_RELOAD_TOGGLE: /* First kill the company of the AI, then start a new one. This should start the current AI again */ DoCommandP(0, 2 | ai_debug_company << 16, 0, CMD_COMPANY_CTRL); DoCommandP(0, 1 | ai_debug_company << 16, 0, CMD_COMPANY_CTRL); break; case AID_WIDGET_SETTINGS: ShowAISettingsWindow(ai_debug_company); break; case AID_WIDGET_BREAK_STR_ON_OFF_BTN: this->break_check_enabled = !this->break_check_enabled; this->SetWidgetLoweredState(AID_WIDGET_BREAK_STR_ON_OFF_BTN, this->break_check_enabled); this->SetWidgetDirty(AID_WIDGET_BREAK_STR_ON_OFF_BTN); break; case AID_WIDGET_MATCH_CASE_BTN: this->case_sensitive_break_check = !this->case_sensitive_break_check; this->SetWidgetLoweredState(AID_WIDGET_MATCH_CASE_BTN, this->case_sensitive_break_check); break; case AID_WIDGET_CONTINUE_BTN: /* Unpause */ DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); this->DisableWidget(AID_WIDGET_CONTINUE_BTN); this->RaiseWidget(AID_WIDGET_CONTINUE_BTN); // Disabled widgets don't raise themself break; } }
virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case AIC_WIDGET_DECREASE: case AIC_WIDGET_INCREASE: { int new_value; if (widget == AIC_WIDGET_DECREASE) { new_value = max(0, GetGameSettings().difficulty.max_no_competitors - 1); } else { new_value = min(MAX_COMPANIES - 1, GetGameSettings().difficulty.max_no_competitors + 1); } IConsoleSetSetting("difficulty.max_no_competitors", new_value); this->InvalidateData(); break; } case AIC_WIDGET_LIST: { // Select a slot this->selected_slot = (CompanyID)this->vscroll->GetScrolledRowFromWidget(pt.y, this, widget, 0, this->line_height); this->InvalidateData(); if (click_count > 1 && this->selected_slot != INVALID_COMPANY) ShowAIListWindow((CompanyID)this->selected_slot); break; } case AIC_WIDGET_MOVE_UP: if (IsEditable(this->selected_slot) && IsEditable((CompanyID)(this->selected_slot - 1))) { Swap(GetGameSettings().ai_config[this->selected_slot], GetGameSettings().ai_config[this->selected_slot - 1]); this->selected_slot--; this->vscroll->ScrollTowards(this->selected_slot); this->InvalidateData(); } break; case AIC_WIDGET_MOVE_DOWN: if (IsEditable(this->selected_slot) && IsEditable((CompanyID)(this->selected_slot + 1))) { Swap(GetGameSettings().ai_config[this->selected_slot], GetGameSettings().ai_config[this->selected_slot + 1]); this->selected_slot++; this->vscroll->ScrollTowards(this->selected_slot); this->InvalidateData(); } break; case AIC_WIDGET_CHANGE: // choose other AI ShowAIListWindow((CompanyID)this->selected_slot); break; case AIC_WIDGET_CONFIGURE: // change the settings for an AI ShowAISettingsWindow((CompanyID)this->selected_slot); break; case AIC_WIDGET_CLOSE: delete this; break; case AIC_WIDGET_CONTENT_DOWNLOAD: if (!_network_available) { ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR); } else { #if defined(ENABLE_NETWORK) ShowNetworkContentListWindow(NULL, CONTENT_TYPE_AI); #endif } break; } }
virtual void OnClick(Point pt, int widget) { switch (widget) { case AIC_WIDGET_DECREASE: case AIC_WIDGET_INCREASE: { int new_value; if (widget == AIC_WIDGET_DECREASE) { new_value = max(0, _settings_newgame.difficulty.max_no_competitors - 1); } else { new_value = min(MAX_COMPANIES - 1, _settings_newgame.difficulty.max_no_competitors + 1); } IConsoleSetSetting("difficulty.max_no_competitors", new_value); this->InvalidateData(); break; } case AIC_WIDGET_LIST: { // Select a slot this->selected_slot = (CompanyID)((pt.y - this->GetWidget<NWidgetBase>(widget)->pos_y) / this->line_height + this->vscroll.GetPosition()); this->InvalidateData(); break; } case AIC_WIDGET_MOVE_UP: if (this->selected_slot > 1) { Swap(_settings_newgame.ai_config[this->selected_slot], _settings_newgame.ai_config[this->selected_slot - 1]); this->selected_slot--; this->InvalidateData(); } break; case AIC_WIDGET_MOVE_DOWN: if (this->selected_slot < _settings_newgame.difficulty.max_no_competitors) { Swap(_settings_newgame.ai_config[this->selected_slot], _settings_newgame.ai_config[this->selected_slot + 1]); this->selected_slot++; this->InvalidateData(); } break; case AIC_WIDGET_CHANGE: // choose other AI ShowAIListWindow((CompanyID)this->selected_slot); break; case AIC_WIDGET_CONFIGURE: // change the settings for an AI ShowAISettingsWindow((CompanyID)this->selected_slot); break; case AIC_WIDGET_CLOSE: delete this; break; case AIC_WIDGET_CONTENT_DOWNLOAD: if (!_network_available) { ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, 0, 0); } else { #if defined(ENABLE_NETWORK) ShowNetworkContentListWindow(NULL, CONTENT_TYPE_AI); #endif } break; } }