diff --git a/projects/openttd_vs100.vcxproj b/projects/openttd_vs100.vcxproj index fb821113ca..200502ef78 100644 --- a/projects/openttd_vs100.vcxproj +++ b/projects/openttd_vs100.vcxproj @@ -294,13 +294,11 @@ - - diff --git a/projects/openttd_vs100.vcxproj.filters b/projects/openttd_vs100.vcxproj.filters index f69240b51e..6423835e82 100644 --- a/projects/openttd_vs100.vcxproj.filters +++ b/projects/openttd_vs100.vcxproj.filters @@ -111,9 +111,6 @@ Source Files - - Source Files - Source Files @@ -129,9 +126,6 @@ Source Files - - Source Files - Source Files diff --git a/projects/openttd_vs140.vcxproj b/projects/openttd_vs140.vcxproj index 4dcfd5f04c..e55d31ae85 100644 --- a/projects/openttd_vs140.vcxproj +++ b/projects/openttd_vs140.vcxproj @@ -311,13 +311,11 @@ - - diff --git a/projects/openttd_vs140.vcxproj.filters b/projects/openttd_vs140.vcxproj.filters index f69240b51e..6423835e82 100644 --- a/projects/openttd_vs140.vcxproj.filters +++ b/projects/openttd_vs140.vcxproj.filters @@ -111,9 +111,6 @@ Source Files - - Source Files - Source Files @@ -129,9 +126,6 @@ Source Files - - Source Files - Source Files diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj index 1cb0a38673..dd33150fb5 100644 --- a/projects/openttd_vs80.vcproj +++ b/projects/openttd_vs80.vcproj @@ -446,10 +446,6 @@ RelativePath=".\..\src\tbtr_template_gui_create_virtualtrain.cpp" > - - @@ -470,10 +466,6 @@ RelativePath=".\..\src\tbtr_template_gui_create_virtualtrain.h" > - - diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj index 6c33ed8778..36e02cb215 100644 --- a/projects/openttd_vs90.vcproj +++ b/projects/openttd_vs90.vcproj @@ -443,10 +443,6 @@ RelativePath=".\..\src\tbtr_template_gui_create_virtualtrain.cpp" > - - @@ -467,10 +463,6 @@ RelativePath=".\..\src\tbtr_template_gui_create_virtualtrain.h" > - - diff --git a/source.list b/source.list index 431af3899d..cdf5ab80d3 100644 --- a/source.list +++ b/source.list @@ -2,13 +2,11 @@ tbtr_template_gui_main.cpp tbtr_template_gui_create.cpp tbtr_template_gui_create_virtualtrain.cpp -tbtr_template_gui_replaceall.cpp tbtr_template_vehicle.cpp tbtr_template_vehicle_func.cpp tbtr_template_gui_main.h tbtr_template_gui_create.h tbtr_template_gui_create_virtualtrain.h -tbtr_template_gui_replaceall.h tbtr_template_vehicle.h tbtr_template_vehicle_func.h diff --git a/src/tbtr_template_gui_main.h b/src/tbtr_template_gui_main.h index cae44e200f..0a42c6e8c4 100644 --- a/src/tbtr_template_gui_main.h +++ b/src/tbtr_template_gui_main.h @@ -20,7 +20,6 @@ #include "tbtr_template_vehicle.h" #include "tbtr_template_vehicle_func.h" -#include "tbtr_template_gui_replaceall.h" typedef GUIList GUIGroupList; diff --git a/src/tbtr_template_gui_replaceall.cpp b/src/tbtr_template_gui_replaceall.cpp deleted file mode 100644 index 445ded53ef..0000000000 --- a/src/tbtr_template_gui_replaceall.cpp +++ /dev/null @@ -1,553 +0,0 @@ -/* $Id$ */ - -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file tbtr_template_gui_replaceall.cpp Template-based train replacement: replace all GUI. */ - -#include "stdafx.h" -#include "window_gui.h" -#include "window_func.h" - -#include "company_func.h" -#include "engine_base.h" -#include "engine_func.h" -#include "engine_gui.h" -#include "train.h" -#include "strings_func.h" -#include "vehicle_base.h" -#include "vehicle_func.h" - -#include "tbtr_template_vehicle.h" -#include "tbtr_template_vehicle_func.h" - -#include "core/math_func.hpp" -#include "table/strings.h" -#include "tbtr_template_gui_replaceall.h" - -#include - -#include "safeguards.h" - -/* - * A wrapper which contains a virtual train and additional info of the template vehicle it is replacing - * We will restore this additional info when creating a new template from the changed virtual train - */ -struct VirtTrainInfo { - // the virtual train - Train *vt; - - // additional info from the template - VehicleID original_index; - - bool reuse_depot_vehicles; - bool keep_remaining_vehicles; - bool refit_as_template; - - CargoID cargo_type; - byte cargo_subtype; - - // a fancy constructor - VirtTrainInfo(Train *t) { this->vt = t; } -}; - -typedef AutoFreeSmallVector VirtTrainList; -enum Widgets { - RPLALL_GUI_CAPTION, - - RPLALL_GUI_INSET_1, - RPLALL_GUI_INSET_1_1, - RPLALL_GUI_INSET_1_2, - RPLALL_GUI_MATRIX_TOPLEFT, - RPLALL_GUI_MATRIX_TOPRIGHT, - RPLALL_GUI_SCROLL_TL, - RPLALL_GUI_SCROLL_TR, - - RPLALL_GUI_INSET_2, - RPLALL_GUI_MATRIX_BOTTOM, - RPLALL_GUI_SCROLL_BO, - - RPLALL_GUI_INSET_3, - RPLALL_GUI_BUTTON_RPLALL, - RPLALL_GUI_PANEL_BUTTONFLUFF_1, - RPLALL_GUI_PANEL_BUTTONFLUFF_2, - RPLALL_GUI_BUTTON_APPLY, - RPLALL_GUI_PANEL_BUTTONFLUFF_3, - RPLALL_GUI_BUTTON_CANCEL, - - RPLALL_GUI_PANEL_RESIZEFLUFF -}; - -static const NWidgetPart widgets[] = { - // title bar - NWidget(NWID_HORIZONTAL), - NWidget(WWT_CLOSEBOX, COLOUR_GREY), - NWidget(WWT_CAPTION, COLOUR_GREY, RPLALL_GUI_CAPTION), SetDataTip(STR_TMPL_RPLALLGUI_TITLE, STR_TMPL_RPLALLGUI_TITLE), - NWidget(WWT_SHADEBOX, COLOUR_GREY), - NWidget(WWT_STICKYBOX, COLOUR_GREY), - EndContainer(), - // top matrices - NWidget(WWT_INSET, COLOUR_GREY, RPLALL_GUI_INSET_1), SetMinimalSize(100,12), SetResize(1,0), SetDataTip(STR_TMPL_RPLALLGUI_INSET_TOP, STR_TMPL_RPLALLGUI_INSET_TOP), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_VERTICAL), - NWidget(WWT_INSET, COLOUR_GREY, RPLALL_GUI_INSET_1_1), SetMinimalSize(100,12), SetResize(1,0), SetDataTip(STR_TMPL_RPLALLGUI_INSET_TOP_1, STR_TMPL_RPLALLGUI_INSET_TOP_1), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, RPLALL_GUI_MATRIX_TOPLEFT), SetMinimalSize(100, 16), SetFill(1, 1), SetResize(1, 1), SetScrollbar(RPLALL_GUI_SCROLL_TL),// SetDataTip(0x1, STR_REPLACE_HELP_LEFT_ARRAY), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, RPLALL_GUI_SCROLL_TL), - EndContainer(), - EndContainer(), - NWidget(NWID_VERTICAL), - NWidget(WWT_INSET, COLOUR_GREY, RPLALL_GUI_INSET_1_2), SetMinimalSize(100,12), SetResize(1,0), SetDataTip(STR_TMPL_RPLALLGUI_INSET_TOP_2, STR_TMPL_RPLALLGUI_INSET_TOP_2), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, RPLALL_GUI_MATRIX_TOPRIGHT), SetMinimalSize(100, 16), SetFill(1, 1), SetResize(1, 1), SetScrollbar(RPLALL_GUI_SCROLL_TR),// SetDataTip(0x1, STR_REPLACE_HELP_LEFT_ARRAY), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, RPLALL_GUI_SCROLL_TR), - EndContainer(), - EndContainer(), - EndContainer(), - // bottom matrix - NWidget(WWT_INSET, COLOUR_GREY, RPLALL_GUI_INSET_2), SetMinimalSize(200,12), SetResize(1,0), SetDataTip(STR_TMPL_RPLALLGUI_INSET_BOTTOM, STR_TMPL_RPLALLGUI_INSET_BOTTOM), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, RPLALL_GUI_MATRIX_BOTTOM), SetMinimalSize(200, 16), SetFill(1, 1), SetResize(1, 1), SetScrollbar(RPLALL_GUI_SCROLL_BO),// SetDataTip(0x1, STR_REPLACE_HELP_LEFT_ARRAY), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, RPLALL_GUI_SCROLL_BO), - EndContainer(), - // control area - NWidget(WWT_INSET, COLOUR_GREY, RPLALL_GUI_INSET_3), SetMinimalSize(200,12), SetResize(1,0), EndContainer(),// SetDataTip(STR_TMPL_MAINGUI_DEFINEDGROUPS, STR_TMPL_MAINGUI_DEFINEDGROUPS), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_PANEL, COLOUR_GREY, RPLALL_GUI_PANEL_BUTTONFLUFF_1), SetMinimalSize(75,12), SetResize(1,0), EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, RPLALL_GUI_BUTTON_RPLALL), SetMinimalSize(150,12), SetResize(0,0), SetDataTip(STR_TMPL_RPLALLGUI_BUTTON_RPLALL, STR_TMPL_RPLALLGUI_BUTTON_RPLALL), - NWidget(WWT_PANEL, COLOUR_GREY, RPLALL_GUI_PANEL_BUTTONFLUFF_2), SetMinimalSize(75,12), SetResize(1,0), EndContainer(), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, RPLALL_GUI_BUTTON_APPLY), SetMinimalSize(75,12), SetResize(1,0), SetDataTip(STR_TMPL_RPLALLGUI_BUTTON_APPLY, STR_TMPL_RPLALLGUI_BUTTON_APPLY), - NWidget(WWT_PANEL, COLOUR_GREY, RPLALL_GUI_PANEL_BUTTONFLUFF_3), SetMinimalSize(150,12), SetResize(0,0), EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, RPLALL_GUI_BUTTON_CANCEL), SetMinimalSize(75,12), SetResize(1,0), SetDataTip(STR_TMPL_RPLALLGUI_BUTTON_CANCEL, STR_TMPL_RPLALLGUI_BUTTON_CANCEL), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_PANEL, COLOUR_GREY, RPLALL_GUI_PANEL_RESIZEFLUFF), SetMinimalSize(100,12), SetResize(1,0), EndContainer(), - NWidget(WWT_RESIZEBOX, COLOUR_GREY), - EndContainer(), -}; - -static WindowDesc _template_replace_replaceall_desc( - WDP_AUTO, - "template replace window", - 400, 200, - WC_TEMPLATEGUI_RPLALL, WC_NONE, - WDF_CONSTRUCTION, - widgets, lengthof(widgets) -); - -static int CDECL EngineNumberSorter(const EngineID *a, const EngineID *b) -{ - int r = Engine::Get(*a)->list_position - Engine::Get(*b)->list_position; - - return r; -} -static int CDECL TrainEnginesThenWagonsSorter(const EngineID *a, const EngineID *b) -{ - int val_a = (RailVehInfo(*a)->railveh_type == RAILVEH_WAGON ? 1 : 0); - int val_b = (RailVehInfo(*b)->railveh_type == RAILVEH_WAGON ? 1 : 0); - int r = val_a - val_b; - - /* Use EngineID to sort instead since we want consistent sorting */ - if (r == 0) return EngineNumberSorter(a, b); - return r; -} - - -class TemplateReplacementReplaceAllWindow : public Window { -private: - uint16 line_height; - Scrollbar *vscroll_tl; - Scrollbar *vscroll_tr; - Scrollbar *vscroll_bo; - GUIEngineList *engines_left; - GUIEngineList *engines_right; - short selected_left; - short selected_right; - VirtTrainList *virtualTrains; - -public: - TemplateReplacementReplaceAllWindow(WindowDesc *wdesc) : Window(wdesc) - { - this->CreateNestedTree(wdesc != NULL); - - this->vscroll_tl = this->GetScrollbar(RPLALL_GUI_SCROLL_TL); - this->vscroll_tr = this->GetScrollbar(RPLALL_GUI_SCROLL_TR); - this->vscroll_bo = this->GetScrollbar(RPLALL_GUI_SCROLL_BO); - this->vscroll_tl->SetStepSize(16); - this->vscroll_tr->SetStepSize(16); - this->vscroll_bo->SetStepSize(16); - - this->FinishInitNested(VEH_TRAIN); - - this->owner = _local_company; - - engines_left = new GUIEngineList(); - engines_right = new GUIEngineList(); - virtualTrains = new VirtTrainList(); - - this->GenerateBuyableEnginesList(); - this->GenerateIncludedTemplateList(); - - this->line_height = 16; - this->selected_left = -1; - this->selected_right = -1; - } - - ~TemplateReplacementReplaceAllWindow() - { - for (uint i = 0; ivirtualTrains->Length(); ++i) { - delete (*this->virtualTrains)[i]->vt; - } - SetWindowClassesDirty(WC_TEMPLATEGUI_MAIN); - } - - virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) - { - switch (widget) { - case RPLALL_GUI_MATRIX_TOPLEFT: - case RPLALL_GUI_MATRIX_TOPRIGHT: - case RPLALL_GUI_MATRIX_BOTTOM: { - resize->height = 16; - size->height = 16; - break; - } - } - } - - virtual void OnPaint() - { - this->GetWidget(RPLALL_GUI_PANEL_BUTTONFLUFF_3)->colour = _company_colours[_local_company]; - - this->DrawWidgets(); - } - - virtual void OnResize() - { - NWidgetCore *nwi_tl = this->GetWidget(RPLALL_GUI_MATRIX_TOPLEFT); - this->vscroll_tl->SetCapacityFromWidget(this, RPLALL_GUI_MATRIX_TOPLEFT); - nwi_tl->widget_data = (this->vscroll_tl->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); - - NWidgetCore *nwi_tr = this->GetWidget(RPLALL_GUI_MATRIX_TOPRIGHT); - this->vscroll_tr->SetCapacityFromWidget(this, RPLALL_GUI_MATRIX_TOPRIGHT); - nwi_tr->widget_data = (this->vscroll_tr->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); - - NWidgetCore *nwi_bo = this->GetWidget(RPLALL_GUI_MATRIX_BOTTOM); - this->vscroll_bo->SetCapacityFromWidget(this, RPLALL_GUI_MATRIX_BOTTOM); - nwi_bo->widget_data = (this->vscroll_bo->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); - } - - virtual void DrawWidget(const Rect &r, int widget) const - { - switch (widget) { - case RPLALL_GUI_MATRIX_TOPLEFT: { - this->DrawEngineList(r, true); - break; - } - case RPLALL_GUI_MATRIX_TOPRIGHT: { - this->DrawEngineList(r, false); - break; - } - case RPLALL_GUI_MATRIX_BOTTOM: { - this->DrawVirtualTrains(r); - break; - } - } - } - - virtual void OnClick(Point pt, int widget, int click_count) - { - switch(widget) { - case RPLALL_GUI_MATRIX_TOPLEFT: { - uint16 newindex = (uint16)((pt.y - this->nested_array[RPLALL_GUI_MATRIX_TOPLEFT]->pos_y) / this->line_height) + this->vscroll_tl->GetPosition(); - if (newindex >= this->engines_left->Length() || newindex == this->selected_left) { - this->selected_left = -1; - } else { - this->selected_left = newindex; - } - this->SetDirty(); - break; - } - case RPLALL_GUI_MATRIX_TOPRIGHT: { - uint16 newindex = (uint16)((pt.y - this->nested_array[RPLALL_GUI_MATRIX_TOPRIGHT]->pos_y) / this->line_height) + this->vscroll_tr->GetPosition(); - if (newindex > this->engines_right->Length() || newindex==this->selected_right) { - this->selected_right = -1; - } else { - this->selected_right = newindex; - } - this->SetDirty(); - break; - } - case RPLALL_GUI_BUTTON_RPLALL: { - this->ReplaceAll(); - break; - } - case RPLALL_GUI_BUTTON_APPLY: { - // check if we actually did anything so far, if not, applying is forbidden - if (this->virtualTrains->Length() == 0) { - return; - } - // first delete all current templates - this->DeleteAllTemplateTrains(); - // then build a new list from the current virtual trains - for (uint i = 0; i < this->virtualTrains->Length(); ++i) { - // the relevant info struct - VirtTrainInfo *vti = (*this->virtualTrains)[i]; - // setup template from contained train - Train *t = vti->vt; - TemplateVehicle *tv = TemplateVehicleFromVirtualTrain(t); - // restore template specific stuff - tv->reuse_depot_vehicles = vti->reuse_depot_vehicles; - tv->keep_remaining_vehicles = vti->keep_remaining_vehicles; - tv->refit_as_template = vti->refit_as_template; - tv->cargo_type = vti->cargo_type; - tv->cargo_subtype = vti->cargo_subtype; - // use the original_index information to repoint the relevant TemplateReplacement if existing - TemplateReplacement *tr = GetTemplateReplacementByTemplateID(vti->original_index); - if (tr) { - tr->sel_template = tv->index; - } - } - // then close this window and return to parent - delete this; - break; - } - case RPLALL_GUI_BUTTON_CANCEL: { - delete this; - break; - } - } - } - - bool HasTemplateWithEngine(EngineID eid) const - { - const TemplateVehicle *tv; - FOR_ALL_TEMPLATES(tv) { - if (tv->Prev() || tv->owner != _local_company) continue; - for (const TemplateVehicle *tmp = tv; tmp != NULL; tmp = tmp->GetNextUnit()) { - if (tmp->engine_type == eid) { - return true; - } - } - } - return false; - } - - void GenerateVirtualTrains() - { - this->virtualTrains->Clear(); - - TemplateVehicle *tv; - FOR_ALL_TEMPLATES(tv) { - if (!tv->Prev() && tv->owner == this->owner) { - // setup template train - Train *newtrain = VirtualTrainFromTemplateVehicle(tv); - VirtTrainInfo *vti = new VirtTrainInfo(newtrain); - // store template specific stuff - vti->original_index = tv->index; - vti->reuse_depot_vehicles = tv->reuse_depot_vehicles; - vti->keep_remaining_vehicles = tv->keep_remaining_vehicles; - vti->refit_as_template = tv->refit_as_template; - vti->cargo_type = tv->cargo_type; - vti->cargo_subtype = tv->cargo_subtype; - // add new info struct - *this->virtualTrains->Append() = vti; - } - } - - this->vscroll_bo->SetCount(this->virtualTrains->Length()); - } - - void DeleteAllTemplateTrains() - { - TemplateVehicle *tv, *tmp; - FOR_ALL_TEMPLATES(tv) { - tmp = tv; - if (tmp->Prev() == NULL && tmp->owner == this->owner) { - delete tmp; - } - } - } - - void GenerateIncludedTemplateList() - { - int num_engines = 0; - int num_wagons = 0; - - this->engines_left->Clear(); - - const Engine *e; - FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { - EngineID eid = e->index; - const RailVehicleInfo*rvi = &e->u.rail; - - if (!HasTemplateWithEngine(eid)) continue; - - *this->engines_left->Append() = eid; - - if (rvi->railveh_type != RAILVEH_WAGON) { - num_engines++; - } else { - num_wagons++; - } - } - this->vscroll_tl->SetCount(this->engines_left->Length()); - } - - bool VirtualTrainHasEngineID(EngineID eid) - { - - for (uint i = 0; i < this->virtualTrains->Length(); ++i) { - const Train *tmp = (*this->virtualTrains)[i]->vt; - for (; tmp != NULL; tmp = tmp->Next()) { - if (tmp->engine_type == eid) { - return true; - } - } - } - return false; - } - - // after 'replace all' we need to replace the currently used templates as well - void RebuildIncludedTemplateList() { - // first remove all engine ids - for (uint i = 0; i < this->engines_left->Length(); ++i) { - EngineID entry = (*this->engines_left)[i]; - if (!VirtualTrainHasEngineID(entry)) { - this->engines_left->Erase(&((*this->engines_left)[i])); - } - } - } - - void ReplaceAll() - { - if (this->selected_left == -1 || this->selected_right == -1) return; - - EngineID eid_orig = (*this->engines_left)[this->selected_left]; - EngineID eid_repl = (*this->engines_right)[this->selected_right]; - - if (eid_orig == eid_repl) return; - - if (this->virtualTrains->Length() == 0) { - this->GenerateVirtualTrains(); - } - - for (uint i = 0; i < this->virtualTrains->Length(); ++i) { - Train *tmp = (*this->virtualTrains)[i]->vt; - while (tmp) { - if (tmp->engine_type == eid_orig) { - // build a new virtual rail vehicle and test for success - Train *nt = CmdBuildVirtualRailVehicle(eid_repl); - if (!nt) continue; - // include the (probably) new engine into the 'included'-list - this->engines_left->Include(nt->engine_type); - // advance the tmp pointer in the chain, otherwise it would get deleted later on - Train *to_del = tmp; - tmp = tmp->GetNextUnit(); - // first move the new virtual rail vehicle behind to_del - CommandCost move = CmdMoveRailVehicle(INVALID_TILE, DC_EXEC, nt->index | (1 << 21), to_del->index, 0); - // then move to_del away from the chain and delete it - move = CmdMoveRailVehicle(INVALID_TILE, DC_EXEC, to_del->index | (1 << 21), INVALID_VEHICLE, 0); - (*this->virtualTrains)[i]->vt = nt->First(); - delete to_del; - } else { - tmp = tmp->GetNextUnit(); - } - } - } - this->selected_left = -1; - // rebuild the left engines list as some engines might not be there anymore - this->RebuildIncludedTemplateList(); - this->SetDirty(); - } - - void GenerateBuyableEnginesList() - { - int num_engines = 0; - int num_wagons = 0; - - this->engines_right->Clear(); - - const Engine *e; - FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { - EngineID eid = e->index; - const RailVehicleInfo *rvi = &e->u.rail; - - if (!IsEngineBuildable(eid, VEH_TRAIN, _local_company)) continue; - - *this->engines_right->Append() = eid; - - if (rvi->railveh_type != RAILVEH_WAGON) { - num_engines++; - } else { - num_wagons++; - } - } - - /* make engines first, and then wagons, sorted by ListPositionOfEngine() */ - EngList_Sort(this->engines_right, TrainEnginesThenWagonsSorter); - - this->vscroll_tr->SetCount(this->engines_right->Length()); - } - - void DrawEngineList(const Rect &r, bool left) const - { - uint16 y = r.top; - uint32 eid; - - Scrollbar *sb; - const GUIEngineList *el; - - if (left) { - sb = this->vscroll_tl; - el = this->engines_left; - } else { - sb = this->vscroll_tr; - el = this->engines_right; - } - - int maximum = min((int) sb->GetCapacity(), (int) el->Length()) + sb->GetPosition(); - - for (int i = sb->GetPosition(); i < maximum; ++i) { - eid = (*el)[i]; - - /* Draw a grey background rectangle if the current line is the selected one */ - if ((left && this->selected_left == i) || (!left && this->selected_right == i)) { - GfxFillRect(r.left, y, r.right, y + this->line_height, _colour_gradient[COLOUR_GREY][3]); - } - - /* Draw a description string of the current engine */ - SetDParam(0, eid); - DrawString(r.left + 100, r.right, y + 4, STR_ENGINE_NAME, TC_BLACK); - - /* Draw the engine */ - DrawVehicleEngine(r.left, r.right, r.left + 29, y + 8, eid, GetEnginePalette(eid, _local_company), EIT_PURCHASE); - - y += this->line_height; - } - } - - void DrawVirtualTrains(const Rect &r) const - { - uint16 y = r.top; - - uint16 max = min(virtualTrains->Length(), this->vscroll_bo->GetCapacity()); - - for (uint16 i = vscroll_bo->GetPosition(); i < max + vscroll_bo->GetPosition(); ++i) { - /* Draw a virtual train*/ - DrawTrainImage((*this->virtualTrains)[i]->vt, r.left + 32, r.right, y, INVALID_VEHICLE, EIT_PURCHASE, 0, -1); - - y += this->line_height; - } - } -}; - -void ShowTemplateReplaceAllGui() -{ - new TemplateReplacementReplaceAllWindow(&_template_replace_replaceall_desc); -} diff --git a/src/tbtr_template_gui_replaceall.h b/src/tbtr_template_gui_replaceall.h deleted file mode 100644 index 02d8aae2ca..0000000000 --- a/src/tbtr_template_gui_replaceall.h +++ /dev/null @@ -1,17 +0,0 @@ -/* $Id$ */ - -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file tbtr_template_gui_replaceall.cpp Template-based train replacement: replace all GUI header. */ - -#ifndef TMPL_RPLALL_GUI -#define TMPL_RPLALL_GUI - -void ShowTemplateReplaceAllGui(); - -#endif