mirror of https://github.com/OpenTTD/OpenTTD
(svn r24489) -Feature [FS#5230]: Display GS dead state in AI debug window.
parent
053770d4a6
commit
a97387011d
|
@ -956,6 +956,23 @@ void ShowAIConfigWindow()
|
|||
new AIConfigWindow();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the widget colour of a button based on the
|
||||
* state of the script. (dead or alive)
|
||||
* @param button the button to update.
|
||||
* @param dead true if the script is dead, otherwise false.
|
||||
* @return true if the colour was changed and the window need to be marked as dirty.
|
||||
*/
|
||||
static bool SetScriptButtonColour(NWidgetCore &button, bool dead)
|
||||
{
|
||||
Colours colour = dead ? COLOUR_RED : COLOUR_GREY;
|
||||
if (button.colour != colour) {
|
||||
button.colour = colour;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Window with everything an AI prints via ScriptLog.
|
||||
*/
|
||||
|
@ -1082,13 +1099,11 @@ struct AIDebugWindow : public QueryStringBaseWindow {
|
|||
dirty = true;
|
||||
}
|
||||
|
||||
/* Mark dead AIs by red background. */
|
||||
bool dead = valid && Company::Get(i)->ai_instance->IsDead();
|
||||
Colours colour = dead ? COLOUR_RED : COLOUR_GREY;
|
||||
if (button->colour != colour) {
|
||||
/* Mark dead AIs by red background */
|
||||
button->colour = colour;
|
||||
dirty = true;
|
||||
}
|
||||
/* Re-paint if the button was updated.
|
||||
* (note that it is intentional that SetScriptButtonColour is always called) */
|
||||
dirty = SetScriptButtonColour(*button, dead) || dirty;
|
||||
|
||||
/* Do we need a repaint? */
|
||||
if (dirty) this->SetDirty();
|
||||
|
@ -1099,6 +1114,15 @@ struct AIDebugWindow : public QueryStringBaseWindow {
|
|||
DrawCompanyIcon(i, button->pos_x + button->current_x / 2 - 7 + offset, this->GetWidget<NWidgetBase>(WID_AID_COMPANY_BUTTON_START + i)->pos_y + 2 + offset);
|
||||
}
|
||||
|
||||
/* Set button colour for Game Script. */
|
||||
GameInstance *game = Game::GetInstance();
|
||||
bool dead = game != NULL && game->IsDead();
|
||||
NWidgetCore *button = this->GetWidget<NWidgetCore>(WID_AID_SCRIPT_GAME);
|
||||
if (SetScriptButtonColour(*button, dead)) {
|
||||
/* Re-paint if the button was updated. */
|
||||
this->SetWidgetDirty(WID_AID_SCRIPT_GAME);
|
||||
}
|
||||
|
||||
/* If there are no active companies, don't display anything else. */
|
||||
if (ai_debug_company == INVALID_COMPANY) return;
|
||||
|
||||
|
|
Loading…
Reference in New Issue