mirror of https://github.com/OpenTTD/OpenTTD
(svn r13287) -Codechange: move engine list gui code away from engine.cpp (and its headers) to engine_gui.cpp
parent
6d46851b61
commit
f7a9c4f522
|
@ -999,6 +999,10 @@
|
||||||
RelativePath=".\..\src\engine_func.h"
|
RelativePath=".\..\src\engine_func.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\..\src\engine_gui.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\..\src\engine_type.h"
|
RelativePath=".\..\src\engine_type.h"
|
||||||
>
|
>
|
||||||
|
|
|
@ -996,6 +996,10 @@
|
||||||
RelativePath=".\..\src\engine_func.h"
|
RelativePath=".\..\src\engine_func.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\..\src\engine_gui.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\..\src\engine_type.h"
|
RelativePath=".\..\src\engine_type.h"
|
||||||
>
|
>
|
||||||
|
|
|
@ -175,6 +175,7 @@ elrail_func.h
|
||||||
core/endian_func.hpp
|
core/endian_func.hpp
|
||||||
engine_base.h
|
engine_base.h
|
||||||
engine_func.h
|
engine_func.h
|
||||||
|
engine_gui.h
|
||||||
engine_type.h
|
engine_type.h
|
||||||
core/enum_type.hpp
|
core/enum_type.hpp
|
||||||
fiber.hpp
|
fiber.hpp
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "engine_func.h"
|
#include "engine_func.h"
|
||||||
#include "engine_base.h"
|
#include "engine_base.h"
|
||||||
#include "window_gui.h"
|
#include "window_gui.h"
|
||||||
|
#include "engine_gui.h"
|
||||||
|
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "widgets/dropdown_func.h"
|
#include "widgets/dropdown_func.h"
|
||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "window_gui.h"
|
#include "window_gui.h"
|
||||||
|
#include "engine_gui.h"
|
||||||
|
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
|
@ -115,34 +115,6 @@ Engine::~Engine()
|
||||||
free(this->name);
|
free(this->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sort all items using qsort() and given 'CompareItems' function
|
|
||||||
* @param el list to be sorted
|
|
||||||
* @param compare function for evaluation of the quicksort
|
|
||||||
*/
|
|
||||||
void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare)
|
|
||||||
{
|
|
||||||
size_t size = el->size();
|
|
||||||
/* out-of-bounds access at the next line for size == 0 (even with operator[] at some systems)
|
|
||||||
* generally, do not sort if there are less than 2 items */
|
|
||||||
if (size < 2) return;
|
|
||||||
qsort(&((*el)[0]), size, sizeof(EngineID), compare); // MorphOS doesn't know vector::at(int) ...
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Sort selected range of items (on indices @ <begin, begin+num_items-1>)
|
|
||||||
* @param el list to be sorted
|
|
||||||
* @param compare function for evaluation of the quicksort
|
|
||||||
* @param begin start of sorting
|
|
||||||
* @param num_items count of items to be sorted
|
|
||||||
*/
|
|
||||||
void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items)
|
|
||||||
{
|
|
||||||
assert(begin <= (uint)el->size());
|
|
||||||
assert(begin + num_items <= (uint)el->size());
|
|
||||||
if (num_items < 2) return;
|
|
||||||
qsort(&((*el)[begin]), num_items, sizeof(EngineID), compare);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Sets cached values in Player::num_vehicles and Group::num_vehicles
|
/** Sets cached values in Player::num_vehicles and Group::num_vehicles
|
||||||
*/
|
*/
|
||||||
void SetCachedEngineCounts()
|
void SetCachedEngineCounts()
|
||||||
|
|
|
@ -29,8 +29,4 @@ bool IsEngineBuildable(EngineID engine, VehicleType type, PlayerID player);
|
||||||
CargoID GetEngineCargoType(EngineID engine);
|
CargoID GetEngineCargoType(EngineID engine);
|
||||||
void SetCachedEngineCounts();
|
void SetCachedEngineCounts();
|
||||||
|
|
||||||
typedef int CDECL EngList_SortTypeFunction(const void*, const void*); ///< argument type for EngList_Sort()
|
|
||||||
void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare); ///< qsort of the engine list
|
|
||||||
void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items); ///< qsort of specified portion of the engine list
|
|
||||||
|
|
||||||
#endif /* ENGINE_H */
|
#endif /* ENGINE_H */
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
#include "newgrf_engine.h"
|
#include "newgrf_engine.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
|
#include "engine_gui.h"
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
|
@ -190,3 +191,32 @@ void DrawNewsNewVehicleAvail(Window *w, const NewsItem *ni)
|
||||||
GfxFillRect(25, 56, w->width - 56, 112, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE));
|
GfxFillRect(25, 56, w->width - 56, 112, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE));
|
||||||
dei->info_proc(engine, w->width >> 1, 129, w->width - 52);
|
dei->info_proc(engine, w->width >> 1, 129, w->width - 52);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Sort all items using qsort() and given 'CompareItems' function
|
||||||
|
* @param el list to be sorted
|
||||||
|
* @param compare function for evaluation of the quicksort
|
||||||
|
*/
|
||||||
|
void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare)
|
||||||
|
{
|
||||||
|
size_t size = el->size();
|
||||||
|
/* out-of-bounds access at the next line for size == 0 (even with operator[] at some systems)
|
||||||
|
* generally, do not sort if there are less than 2 items */
|
||||||
|
if (size < 2) return;
|
||||||
|
qsort(&((*el)[0]), size, sizeof(EngineID), compare); // MorphOS doesn't know vector::at(int) ...
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Sort selected range of items (on indices @ <begin, begin+num_items-1>)
|
||||||
|
* @param el list to be sorted
|
||||||
|
* @param compare function for evaluation of the quicksort
|
||||||
|
* @param begin start of sorting
|
||||||
|
* @param num_items count of items to be sorted
|
||||||
|
*/
|
||||||
|
void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items)
|
||||||
|
{
|
||||||
|
assert(begin <= (uint)el->size());
|
||||||
|
assert(begin + num_items <= (uint)el->size());
|
||||||
|
if (num_items < 2) return;
|
||||||
|
qsort(&((*el)[begin]), num_items, sizeof(EngineID), compare);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/** @file engine_gui.h Engine GUI functions, used by build_vehicle_gui and autoreplace_gui */
|
||||||
|
|
||||||
|
#ifndef ENGINE_GUI_H
|
||||||
|
#define ENGINE_GUI_H
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
typedef std::vector<EngineID> EngineList;
|
||||||
|
|
||||||
|
typedef int CDECL EngList_SortTypeFunction(const void*, const void*); ///< argument type for EngList_Sort()
|
||||||
|
void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare); ///< qsort of the engine list
|
||||||
|
void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items); ///< qsort of specified portion of the engine list
|
||||||
|
|
||||||
|
#endif /* ENGINE_GUI_H */
|
|
@ -14,11 +14,8 @@
|
||||||
#include "player_type.h"
|
#include "player_type.h"
|
||||||
#include "strings_type.h"
|
#include "strings_type.h"
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
typedef uint16 EngineID;
|
typedef uint16 EngineID;
|
||||||
typedef uint16 EngineRenewID;
|
typedef uint16 EngineRenewID;
|
||||||
typedef std::vector<EngineID> EngineList; ///< engine list type
|
|
||||||
|
|
||||||
struct Engine;
|
struct Engine;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue