mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r1292) -Codechange: also updated the town/industry sort-list to be uint16 compatible
This commit is contained in:
parent
e6a59be8c0
commit
6735bffd39
|
@ -384,11 +384,11 @@ static const Widget _industry_directory_widgets[] = {
|
||||||
{ WIDGETS_END},
|
{ WIDGETS_END},
|
||||||
};
|
};
|
||||||
|
|
||||||
static byte _industry_sort[lengthof(_industries)];
|
static uint16 _industry_sort[lengthof(_industries)];
|
||||||
static uint _num_industry_sort;
|
static uint _num_industry_sort;
|
||||||
|
|
||||||
static char _bufcache[96];
|
static char _bufcache[96];
|
||||||
static byte _last_industry_idx;
|
static uint16 _last_industry_idx;
|
||||||
|
|
||||||
static byte _industry_sort_order;
|
static byte _industry_sort_order;
|
||||||
|
|
||||||
|
@ -396,8 +396,8 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
char buf1[96];
|
char buf1[96];
|
||||||
byte val;
|
byte val;
|
||||||
Industry *i = DEREF_INDUSTRY(*(const byte*)a);
|
Industry *i = DEREF_INDUSTRY(*(const uint16*)a);
|
||||||
Industry *j = DEREF_INDUSTRY(*(const byte*)b);
|
Industry *j = DEREF_INDUSTRY(*(const uint16*)b);
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
||||||
switch (_industry_sort_order >> 1) {
|
switch (_industry_sort_order >> 1) {
|
||||||
|
@ -441,7 +441,7 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
|
||||||
SetDParam(0, i->town->townnameparts);
|
SetDParam(0, i->town->townnameparts);
|
||||||
GetString(buf1, i->town->townnametype);
|
GetString(buf1, i->town->townnametype);
|
||||||
|
|
||||||
if ( (val=*(const byte*)b) != _last_industry_idx) {
|
if ( (val=*(const uint16*)b) != _last_industry_idx) {
|
||||||
_last_industry_idx = val;
|
_last_industry_idx = val;
|
||||||
SetDParam(0, j->town->townnameparts);
|
SetDParam(0, j->town->townnameparts);
|
||||||
GetString(_bufcache, j->town->townnametype);
|
GetString(_bufcache, j->town->townnametype);
|
||||||
|
@ -459,13 +459,15 @@ static void MakeSortedIndustryList()
|
||||||
int n = 0, index = 0;
|
int n = 0, index = 0;
|
||||||
|
|
||||||
for(i=_industries; i != endof(_industries); i++) {
|
for(i=_industries; i != endof(_industries); i++) {
|
||||||
if(i->xy) _industry_sort[n++] = index;
|
if(i->xy)
|
||||||
|
_industry_sort[n++] = index;
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
_num_industry_sort = n;
|
_num_industry_sort = n;
|
||||||
_last_industry_idx = 255; // used for "cache"
|
_last_industry_idx = 0xFFFF; // used for "cache"
|
||||||
|
|
||||||
qsort(_industry_sort, n, 1, GeneralIndustrySorter);
|
qsort(_industry_sort, n, sizeof(_industry_sort[0]), GeneralIndustrySorter);
|
||||||
|
|
||||||
DEBUG(misc, 1) ("Resorting Industries list...");
|
DEBUG(misc, 1) ("Resorting Industries list...");
|
||||||
}
|
}
|
||||||
|
@ -548,7 +550,7 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
|
||||||
|
|
||||||
case 8: {
|
case 8: {
|
||||||
int y = (e->click.pt.y - 28) / 10;
|
int y = (e->click.pt.y - 28) / 10;
|
||||||
byte p;
|
uint16 p;
|
||||||
Industry *c;
|
Industry *c;
|
||||||
|
|
||||||
if (!IS_INT_INSIDE(y, 0, 16))
|
if (!IS_INT_INSIDE(y, 0, 16))
|
||||||
|
|
17
town_gui.c
17
town_gui.c
|
@ -352,11 +352,11 @@ static const Widget _town_directory_widgets[] = {
|
||||||
|
|
||||||
|
|
||||||
// used to get a sorted list of the towns
|
// used to get a sorted list of the towns
|
||||||
static byte _town_sort[lengthof(_towns)];
|
static uint16 _town_sort[lengthof(_towns)];
|
||||||
static uint _num_town_sort;
|
static uint _num_town_sort;
|
||||||
|
|
||||||
static char _bufcache[64];
|
static char _bufcache[64];
|
||||||
static byte _last_town_idx;
|
static uint16 _last_town_idx;
|
||||||
|
|
||||||
static int CDECL TownNameSorter(const void *a, const void *b)
|
static int CDECL TownNameSorter(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
|
@ -365,11 +365,11 @@ static int CDECL TownNameSorter(const void *a, const void *b)
|
||||||
byte val;
|
byte val;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
t = DEREF_TOWN(*(const byte*)a);
|
t = DEREF_TOWN(*(const uint16*)a);
|
||||||
SetDParam(0, t->townnameparts);
|
SetDParam(0, t->townnameparts);
|
||||||
GetString(buf1, t->townnametype);
|
GetString(buf1, t->townnametype);
|
||||||
|
|
||||||
if ( (val=*(const byte*)b) != _last_town_idx) {
|
if ( (val=*(const uint16*)b) != _last_town_idx) {
|
||||||
_last_town_idx = val;
|
_last_town_idx = val;
|
||||||
t = DEREF_TOWN(val);
|
t = DEREF_TOWN(val);
|
||||||
SetDParam(0, t->townnameparts);
|
SetDParam(0, t->townnameparts);
|
||||||
|
@ -383,8 +383,8 @@ static int CDECL TownNameSorter(const void *a, const void *b)
|
||||||
|
|
||||||
static int CDECL TownPopSorter(const void *a, const void *b)
|
static int CDECL TownPopSorter(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
const Town *ta = DEREF_TOWN(*(const byte*)a);
|
const Town *ta = DEREF_TOWN(*(const uint16*)a);
|
||||||
const Town *tb = DEREF_TOWN(*(const byte*)b);
|
const Town *tb = DEREF_TOWN(*(const uint16*)b);
|
||||||
int r = ta->population - tb->population;
|
int r = ta->population - tb->population;
|
||||||
if (_town_sort_order & 1) r = -r;
|
if (_town_sort_order & 1) r = -r;
|
||||||
return r;
|
return r;
|
||||||
|
@ -394,7 +394,10 @@ static void MakeSortedTownList()
|
||||||
{
|
{
|
||||||
Town *t;
|
Town *t;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
FOR_ALL_TOWNS(t) if(t->xy) _town_sort[n++] = t->index;
|
FOR_ALL_TOWNS(t)
|
||||||
|
if(t->xy)
|
||||||
|
_town_sort[n++] = t->index;
|
||||||
|
|
||||||
_num_town_sort = n;
|
_num_town_sort = n;
|
||||||
|
|
||||||
_last_town_idx = 0; // used for "cache"
|
_last_town_idx = 0; // used for "cache"
|
||||||
|
|
Loading…
Reference in New Issue