Class AsyncObjectSearchResult
From TrainzOnline
(Difference between revisions)
(Create AsyncObjectSearchResult) |
(→GetResults) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 15: | Line 15: | ||
{{TableHeader|width=50%|margin=15px}} | {{TableHeader|width=50%|margin=15px}} | ||
|- | |- | ||
− | |bgcolor="#EEEEEE"|'''Major'''||bgcolor="#EEEEEE"|'''Minor'''||bgcolor="#EEEEEE"|'''Source'''||bgcolor="#EEEEEE" |'''Destination'''|bgcolor="#EEEEEE"|'''Description''' | + | |bgcolor="#EEEEEE"|'''Major'''||bgcolor="#EEEEEE"|'''Minor'''||bgcolor="#EEEEEE"|'''Source'''||bgcolor="#EEEEEE" |'''Destination'''||bgcolor="#EEEEEE"|'''Description''' |
|- | |- | ||
|ObjectSearch||AsyncResult||AsyncObjectSearchResult||Broadcast||Search is complete, and [[#GetResults|GetResults]] may be called. | |ObjectSearch||AsyncResult||AsyncObjectSearchResult||Broadcast||Search is complete, and [[#GetResults|GetResults]] may be called. | ||
Line 36: | Line 36: | ||
;Syntax | ;Syntax | ||
NamedObjectInfo[] results = searchObj.GetResults(); | NamedObjectInfo[] results = searchObj.GetResults(); | ||
− | for (int i = 0; i < results.size(); ++i) { | + | for (int i = 0; i < results.size(); ++i) |
− | + | { | |
− | + | NamedObjectInfo result = results[i]; | |
− | + | Interface.Log("Result " + i + ": '" + result.localisedUsername + "'"); | |
+ | // Process each result in some useful way... | ||
} | } | ||
;Notes | ;Notes | ||
*The caller must wait for the search to complete, indicated by the ObjectSearch/AsyncResult message. | *The caller must wait for the search to complete, indicated by the ObjectSearch/AsyncResult message. | ||
*If the search is not complete, calling this method will result in an exception. | *If the search is not complete, calling this method will result in an exception. | ||
+ | <br> | ||
+ | |||
+ | ===GetQueryErrorCode=== | ||
+ | {{MethodHeader|public native int GetQueryErrorCode(void)}} | ||
+ | See [[#GetSearchErrorCode|GetSearchErrorCode]] | ||
<br> | <br> | ||
Line 53: | Line 59: | ||
*Error code for the query | *Error code for the query | ||
;Syntax | ;Syntax | ||
− | wait() { | + | wait() |
+ | { | ||
on "ObjectSearch", "Failure", msg: | on "ObjectSearch", "Failure", msg: | ||
− | if (msg.src | + | if (msg.src != searchObj) |
− | Interface.Log("Search error " + searchObj.GetSearchErrorCode(); | + | continue; |
− | + | Interface.Log("Search error " + searchObj.GetSearchErrorCode(); | |
+ | break; | ||
} | } | ||
;Notes | ;Notes | ||
Line 81: | Line 89: | ||
continue; | continue; | ||
− | on "ObjectSearch", " | + | on "ObjectSearch", "AsyncResult", msg: |
if (msg.src == searchObj) | if (msg.src == searchObj) | ||
break; | break; |
Latest revision as of 13:09, 3 March 2022
- API Hierarchy
- GSObject *
- GameObject
- AsyncQueryHelper
- AsyncObjectSearchResult
- AsyncQueryHelper
- GameObject
- GSObject *
- An AsyncObjectSearchResult represents an asynchronous search of objects in the game world.
- HowTo/Search for objects in the world provides a detailed tutorial on asynchronous searches.
Contents |
[edit] Related Messages
- Messages sent to and from TrackMark objects are listed below:
Major | Minor | Source | Destination | Description |
ObjectSearch | AsyncResult | AsyncObjectSearchResult | Broadcast | Search is complete, and GetResults may be called. |
ObjectSearch | AsyncLoadComplete | AsyncObjectSearchResult | Broadcast | Loading of search result has been completed. See World.GetGameObjectByID(). |
ObjectSearch | Failure | AsyncObjectSearchResult | Broadcast | Search has failed, call GetSearchErrorCode for more information. |
ObjectSearch | Expired | AsyncObjectSearchResult | Broadcast | New search results are available, and this result has expired. Not posted by default - see World.GetNamedObjectList(). |
[edit] Methods
[edit] GetResults
public native NamedObjectInfo[] GetResults(void)
- Parameters
- None
- Returned Value
- Array of search results
- Syntax
NamedObjectInfo[] results = searchObj.GetResults(); for (int i = 0; i < results.size(); ++i) { NamedObjectInfo result = results[i]; Interface.Log("Result " + i + ": '" + result.localisedUsername + "'"); // Process each result in some useful way... }
- Notes
- The caller must wait for the search to complete, indicated by the ObjectSearch/AsyncResult message.
- If the search is not complete, calling this method will result in an exception.
[edit] GetQueryErrorCode
public native int GetQueryErrorCode(void)
[edit] GetSearchErrorCode
public native int GetSearchErrorCode(void)
- Parameters
- None
- Returned Value
- Error code for the query
- Syntax
wait() { on "ObjectSearch", "Failure", msg: if (msg.src != searchObj) continue; Interface.Log("Search error " + searchObj.GetSearchErrorCode(); break; }
- Notes
- When a ObjectSearch/Failure message is posted, this method will return an error code.
- Error codes are defined in the ERROR_ constants for AsyncQueryHelper.
[edit] Code Examples
thread void SearchForTrains() { // Start a search for any traincars within the world AsyncObjectSearchResult searchObj = World.GetNamedObjectList(AssetCategory.TrainCar, ""); // Sniff for search related messages, and then wait for either completion or failure Sniff(searchObj, "ObjectSearch", "", true); Message msg; wait() { on "ObjectSearch", "Failure", msg: if (msg.src == searchObj) break; continue; on "ObjectSearch", "AsyncResult", msg: if (msg.src == searchObj) break; continue; }; // Check the results int errCode = searchObj.GetSearchErrorCode(); if (errCode != AsyncObjectSearchResult.ERROR_NONE) { // TODO: Add any error handling here, such as waiting and reattempting the // search later, showing an error message, throwing script exceptions, etc. return; } // Get the search results NamedObjectInfo[] results = searchObj.GetResults(); // TODO: Add any processing of the results here }
[edit] Related Methods