Class AsyncObjectSearchResult

From TrainzOnline
(Difference between revisions)
Jump to: navigation, search
m (Related Messages: Fix table formatting)
(GetResults)
 
(2 intermediate revisions by 2 users not shown)
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 + "'");
+
  NamedObjectInfo result = results[i];
    // Process each result in some useful way...
+
  Interface.Log("Result " + i + ": '" + result.localisedUsername + "'");
 +
  // Process each result in some useful way...
 
  }
 
  }
 
;Notes
 
;Notes
Line 58: 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 == searchObj) {
+
     if (msg.src != searchObj)
       Interface.Log("Search error " + searchObj.GetSearchErrorCode();
+
       continue;
     }
+
    Interface.Log("Search error " + searchObj.GetSearchErrorCode();
 +
     break;
 
  }
 
  }
 
;Notes
 
;Notes
Line 86: Line 89:
 
       continue;
 
       continue;
 
      
 
      
     on "ObjectSearch", "AsyncLoadComplete", msg:
+
     on "ObjectSearch", "AsyncResult", msg:
 
       if (msg.src == searchObj)
 
       if (msg.src == searchObj)
 
         break;
 
         break;

Latest revision as of 13:09, 3 March 2022



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)

See GetSearchErrorCode

[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



[edit] Categories

Personal tools