1
0
Fork 0

(svn r13155) -Codechange: make a window class of the company league and graph legenda windows.

release/0.7
rubidium 2008-05-18 09:39:40 +00:00
parent 50203f8786
commit cc3a41bfa9
1 changed files with 64 additions and 65 deletions

View File

@ -266,53 +266,52 @@ static void DrawGraph(const GraphDrawer *gw)
/* GRAPH LEGEND */ /* GRAPH LEGEND */
/****************/ /****************/
static void GraphLegendWndProc(Window *w, WindowEvent *e) struct GraphLegendWindow : Window {
{ GraphLegendWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
switch (e->event) { {
case WE_CREATE: for (uint i = 3; i < this->widget_count; i++) {
for (uint i = 3; i < w->widget_count; i++) { if (!HasBit(_legend_excluded_players, i - 3)) this->LowerWidget(i);
if (!HasBit(_legend_excluded_players, i - 3)) w->LowerWidget(i); }
} }
break;
case WE_PAINT: { virtual void OnPaint()
const Player *p; {
const Player *p;
FOR_ALL_PLAYERS(p) { FOR_ALL_PLAYERS(p) {
if (p->is_active) continue; if (p->is_active) continue;
SetBit(_legend_excluded_players, p->index); SetBit(_legend_excluded_players, p->index);
w->RaiseWidget(p->index + 3); this->RaiseWidget(p->index + 3);
}
w->DrawWidgets();
FOR_ALL_PLAYERS(p) {
if (!p->is_active) continue;
DrawPlayerIcon(p->index, 4, 18 + p->index * 12);
SetDParam(0, p->index);
SetDParam(1, p->index);
DrawString(21, 17 + p->index * 12, STR_7021, HasBit(_legend_excluded_players, p->index) ? TC_BLACK : TC_WHITE);
}
break;
} }
case WE_CLICK: this->DrawWidgets();
if (!IsInsideMM(e->we.click.widget, 3, 11)) return;
ToggleBit(_legend_excluded_players, e->we.click.widget - 3); FOR_ALL_PLAYERS(p) {
w->ToggleWidgetLoweredState(e->we.click.widget); if (!p->is_active) continue;
w->SetDirty();
InvalidateWindow(WC_INCOME_GRAPH, 0); DrawPlayerIcon(p->index, 4, 18 + p->index * 12);
InvalidateWindow(WC_OPERATING_PROFIT, 0);
InvalidateWindow(WC_DELIVERED_CARGO, 0); SetDParam(0, p->index);
InvalidateWindow(WC_PERFORMANCE_HISTORY, 0); SetDParam(1, p->index);
InvalidateWindow(WC_COMPANY_VALUE, 0); DrawString(21, 17 + p->index * 12, STR_7021, HasBit(_legend_excluded_players, p->index) ? TC_BLACK : TC_WHITE);
break; }
} }
}
virtual void OnClick(Point pt, int widget)
{
if (!IsInsideMM(widget, 3, 11)) return;
ToggleBit(_legend_excluded_players, widget - 3);
this->ToggleWidgetLoweredState(widget);
this->SetDirty();
InvalidateWindow(WC_INCOME_GRAPH, 0);
InvalidateWindow(WC_OPERATING_PROFIT, 0);
InvalidateWindow(WC_DELIVERED_CARGO, 0);
InvalidateWindow(WC_PERFORMANCE_HISTORY, 0);
InvalidateWindow(WC_COMPANY_VALUE, 0);
}
};
static const Widget _graph_legend_widgets[] = { static const Widget _graph_legend_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
@ -334,12 +333,12 @@ static const WindowDesc _graph_legend_desc = {
WC_GRAPH_LEGEND, WC_NONE, WC_GRAPH_LEGEND, WC_NONE,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_graph_legend_widgets, _graph_legend_widgets,
GraphLegendWndProc NULL
}; };
static void ShowGraphLegend() static void ShowGraphLegend()
{ {
AllocateWindowDescFront<Window>(&_graph_legend_desc, 0); AllocateWindowDescFront<GraphLegendWindow>(&_graph_legend_desc, 0);
} }
/********************/ /********************/
@ -879,35 +878,35 @@ static int CDECL PerfHistComp(const void* elem1, const void* elem2)
return p2->old_economy[1].performance_history - p1->old_economy[1].performance_history; return p2->old_economy[1].performance_history - p1->old_economy[1].performance_history;
} }
static void CompanyLeagueWndProc(Window *w, WindowEvent *e) struct CompanyLeagueWindow : Window {
{ CompanyLeagueWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
switch (e->event) { {
case WE_PAINT: { }
const Player* plist[MAX_PLAYERS];
const Player* p;
w->DrawWidgets(); virtual void OnPaint()
{
const Player *plist[MAX_PLAYERS];
const Player *p;
uint pl_num = 0; this->DrawWidgets();
FOR_ALL_PLAYERS(p) if (p->is_active) plist[pl_num++] = p;
qsort((void*)plist, pl_num, sizeof(*plist), PerfHistComp); uint pl_num = 0;
FOR_ALL_PLAYERS(p) if (p->is_active) plist[pl_num++] = p;
for (uint i = 0; i != pl_num; i++) { qsort((void*)plist, pl_num, sizeof(*plist), PerfHistComp);
p = plist[i];
SetDParam(0, i + STR_01AC_1ST);
SetDParam(1, p->index);
SetDParam(2, p->index);
SetDParam(3, GetPerformanceTitleFromValue(p->old_economy[1].performance_history));
DrawString(2, 15 + i * 10, i == 0 ? STR_7054 : STR_7055, TC_FROMSTRING); for (uint i = 0; i != pl_num; i++) {
DrawPlayerIcon(p->index, 27, 16 + i * 10); p = plist[i];
} SetDParam(0, i + STR_01AC_1ST);
SetDParam(1, p->index);
SetDParam(2, p->index);
SetDParam(3, GetPerformanceTitleFromValue(p->old_economy[1].performance_history));
break; DrawString(2, 15 + i * 10, i == 0 ? STR_7054 : STR_7055, TC_FROMSTRING);
DrawPlayerIcon(p->index, 27, 16 + i * 10);
} }
} }
} };
static const Widget _company_league_widgets[] = { static const Widget _company_league_widgets[] = {
@ -923,12 +922,12 @@ static const WindowDesc _company_league_desc = {
WC_COMPANY_LEAGUE, WC_NONE, WC_COMPANY_LEAGUE, WC_NONE,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
_company_league_widgets, _company_league_widgets,
CompanyLeagueWndProc NULL
}; };
void ShowCompanyLeagueTable() void ShowCompanyLeagueTable()
{ {
AllocateWindowDescFront<Window>(&_company_league_desc, 0); AllocateWindowDescFront<CompanyLeagueWindow>(&_company_league_desc, 0);
} }
/*****************************/ /*****************************/