mirror of https://github.com/OpenTTD/OpenTTD
(svn r17005) -Add [NoAI]: AIAbstractList::SORT_ASCENDING / SORT_DESCENDING
parent
0bb3d7030f
commit
c2ed884012
|
@ -58,7 +58,7 @@ function Regression::TestInit()
|
||||||
}
|
}
|
||||||
|
|
||||||
list = AIList();
|
list = AIList();
|
||||||
list.Sort(AIAbstractList.SORT_BY_VALUE, true);
|
list.Sort(AIAbstractList.SORT_BY_VALUE, AIAbstractList.SORT_ASCENDING);
|
||||||
print("");
|
print("");
|
||||||
print(" Value Ascending");
|
print(" Value Ascending");
|
||||||
list.AddItem( 5, 10);
|
list.AddItem( 5, 10);
|
||||||
|
@ -93,7 +93,7 @@ function Regression::TestInit()
|
||||||
}
|
}
|
||||||
|
|
||||||
list = AIList();
|
list = AIList();
|
||||||
list.Sort(AIAbstractList.SORT_BY_ITEM, false);
|
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_DESCENDING);
|
||||||
print("");
|
print("");
|
||||||
print(" Item Descending");
|
print(" Item Descending");
|
||||||
list.AddItem( 5, 10);
|
list.AddItem( 5, 10);
|
||||||
|
@ -128,7 +128,7 @@ function Regression::TestInit()
|
||||||
}
|
}
|
||||||
|
|
||||||
list = AIList();
|
list = AIList();
|
||||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||||
print("");
|
print("");
|
||||||
print(" Item Ascending");
|
print(" Item Ascending");
|
||||||
list.AddItem( 5, 10);
|
list.AddItem( 5, 10);
|
||||||
|
@ -545,7 +545,7 @@ function Regression::Industry()
|
||||||
print("--Industry--");
|
print("--Industry--");
|
||||||
print(" GetIndustryCount(): " + AIIndustry.GetIndustryCount());
|
print(" GetIndustryCount(): " + AIIndustry.GetIndustryCount());
|
||||||
local list = AIIndustryList();
|
local list = AIIndustryList();
|
||||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||||
if (AIIndustry.IsValidIndustry(i)) j++;
|
if (AIIndustry.IsValidIndustry(i)) j++;
|
||||||
print(" Industry " + i);
|
print(" Industry " + i);
|
||||||
|
@ -667,7 +667,7 @@ function Regression::List()
|
||||||
print(" HasItem(1050): " + list.HasItem(1050));
|
print(" HasItem(1050): " + list.HasItem(1050));
|
||||||
print(" HasItem(1051): " + list.HasItem(1051));
|
print(" HasItem(1051): " + list.HasItem(1051));
|
||||||
print(" IsEmpty(): " + list.IsEmpty());
|
print(" IsEmpty(): " + list.IsEmpty());
|
||||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||||
print(" List Dump:");
|
print(" List Dump:");
|
||||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||||
print(" " + i + " => " + list.GetValue(i));
|
print(" " + i + " => " + list.GetValue(i));
|
||||||
|
@ -1088,7 +1088,7 @@ function Regression::Sign()
|
||||||
print(" RemoveSign(" + sign_id + "): " + AISign.RemoveSign(sign_id));
|
print(" RemoveSign(" + sign_id + "): " + AISign.RemoveSign(sign_id));
|
||||||
print("");
|
print("");
|
||||||
local list = AISignList();
|
local list = AISignList();
|
||||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||||
j++;
|
j++;
|
||||||
print(" Sign " + i);
|
print(" Sign " + i);
|
||||||
|
@ -1357,7 +1357,7 @@ function Regression::Town()
|
||||||
print("--Town--");
|
print("--Town--");
|
||||||
print(" GetTownCount(): " + AITown.GetTownCount());
|
print(" GetTownCount(): " + AITown.GetTownCount());
|
||||||
local list = AITownList();
|
local list = AITownList();
|
||||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||||
if (AITown.IsValidTown(i)) j++;
|
if (AITown.IsValidTown(i)) j++;
|
||||||
print(" Town " + i);
|
print(" Town " + i);
|
||||||
|
|
|
@ -25,6 +25,11 @@ public:
|
||||||
SORT_BY_ITEM, //!< Sort the list based on the item itself.
|
SORT_BY_ITEM, //!< Sort the list based on the item itself.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Sort ascending */
|
||||||
|
static const bool SORT_ASCENDING = true;
|
||||||
|
/** Sort descnding */
|
||||||
|
static const bool SORT_DESCENDING = false;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
AIAbstractListSorter *sorter;
|
AIAbstractListSorter *sorter;
|
||||||
SorterType sorter_type;
|
SorterType sorter_type;
|
||||||
|
@ -123,6 +128,7 @@ public:
|
||||||
* @param sorter the type of sorter to use
|
* @param sorter the type of sorter to use
|
||||||
* @param ascending if true, lowest value is on top, else at bottom.
|
* @param ascending if true, lowest value is on top, else at bottom.
|
||||||
* @note the current item stays at the same place.
|
* @note the current item stays at the same place.
|
||||||
|
* @see SORT_ASCENDING SORT_DESCENDING
|
||||||
*/
|
*/
|
||||||
void Sort(SorterType sorter, bool ascending);
|
void Sort(SorterType sorter, bool ascending);
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,9 @@ void SQAIAbstractList_Register(Squirrel *engine) {
|
||||||
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_BY_VALUE, "SORT_BY_VALUE");
|
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_BY_VALUE, "SORT_BY_VALUE");
|
||||||
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_BY_ITEM, "SORT_BY_ITEM");
|
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_BY_ITEM, "SORT_BY_ITEM");
|
||||||
|
|
||||||
|
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_ASCENDING, "SORT_ASCENDING");
|
||||||
|
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_DESCENDING, "SORT_DESCENDING");
|
||||||
|
|
||||||
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Clear, "Clear", 1, "x");
|
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Clear, "Clear", 1, "x");
|
||||||
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::HasItem, "HasItem", 2, "xi");
|
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::HasItem, "HasItem", 2, "xi");
|
||||||
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Begin, "Begin", 1, "x");
|
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Begin, "Begin", 1, "x");
|
||||||
|
|
|
@ -34,6 +34,7 @@ BEGIN {
|
||||||
enum_value_size = 0
|
enum_value_size = 0
|
||||||
enum_string_to_error_size = 0
|
enum_string_to_error_size = 0
|
||||||
enum_error_to_string_size = 0
|
enum_error_to_string_size = 0
|
||||||
|
const_size = 0
|
||||||
struct_size = 0
|
struct_size = 0
|
||||||
method_size = 0
|
method_size = 0
|
||||||
static_method_size = 0
|
static_method_size = 0
|
||||||
|
@ -217,6 +218,17 @@ BEGIN {
|
||||||
}
|
}
|
||||||
if (enum_value_size != 0) print ""
|
if (enum_value_size != 0) print ""
|
||||||
|
|
||||||
|
# Const values
|
||||||
|
mlen = 0
|
||||||
|
for (i = 1; i <= const_size; i++) {
|
||||||
|
if (mlen <= length(const_value[i])) mlen = length(const_value[i])
|
||||||
|
}
|
||||||
|
for (i = 1; i <= const_size; i++) {
|
||||||
|
print " SQ" cls ".DefSQConst(engine, " cls "::" const_value[i] ", " substr(spaces, 1, mlen - length(const_value[i])) "\"" const_value[i] "\");"
|
||||||
|
delete const_value[i]
|
||||||
|
}
|
||||||
|
if (const_size != 0) print ""
|
||||||
|
|
||||||
# Mapping of OTTD strings to errors
|
# Mapping of OTTD strings to errors
|
||||||
mlen = 0
|
mlen = 0
|
||||||
for (i = 1; i <= enum_string_to_error_size; i++) {
|
for (i = 1; i <= enum_string_to_error_size; i++) {
|
||||||
|
@ -320,6 +332,13 @@ BEGIN {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Add a const (non-enum) value
|
||||||
|
/^[ ]*static const \w+ \w+ = \w+;$/ {
|
||||||
|
const_size++
|
||||||
|
const_value[const_size] = $4
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
# Add a method to the list
|
# Add a method to the list
|
||||||
/^.*\(.*\).*$/ {
|
/^.*\(.*\).*$/ {
|
||||||
if (cls_level != 1) next
|
if (cls_level != 1) next
|
||||||
|
|
|
@ -131,6 +131,13 @@ void Squirrel::AddConst(const char *var_name, int value)
|
||||||
sq_newslot(this->vm, -3, SQTrue);
|
sq_newslot(this->vm, -3, SQTrue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Squirrel::AddConst(const char *var_name, bool value)
|
||||||
|
{
|
||||||
|
sq_pushstring(this->vm, OTTD2FS(var_name), -1);
|
||||||
|
sq_pushbool(this->vm, value);
|
||||||
|
sq_newslot(this->vm, -3, SQTrue);
|
||||||
|
}
|
||||||
|
|
||||||
void Squirrel::AddClassBegin(const char *class_name)
|
void Squirrel::AddClassBegin(const char *class_name)
|
||||||
{
|
{
|
||||||
sq_pushroottable(this->vm);
|
sq_pushroottable(this->vm);
|
||||||
|
|
|
@ -77,6 +77,12 @@ public:
|
||||||
*/
|
*/
|
||||||
void AddConst(const char *var_name, int value);
|
void AddConst(const char *var_name, int value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a const to the stack. Depending on the current state this means
|
||||||
|
* either a const to a class or to the global space.
|
||||||
|
*/
|
||||||
|
void AddConst(const char *var_name, bool value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a class to the global scope. Make sure to call AddClassEnd when you
|
* Adds a class to the global scope. Make sure to call AddClassEnd when you
|
||||||
* are done adding methods.
|
* are done adding methods.
|
||||||
|
|
Loading…
Reference in New Issue