Exported cScoreboard::ForEachObjective
This commit is contained in:
parent
5c44945287
commit
a28e5eca18
@ -1865,6 +1865,7 @@ end
|
|||||||
Functions =
|
Functions =
|
||||||
{
|
{
|
||||||
AddPlayerScore = { Params = "Name, Type, Value", Return = "", Notes = "Adds a value to all player scores of the specified objective type." },
|
AddPlayerScore = { Params = "Name, Type, Value", Return = "", Notes = "Adds a value to all player scores of the specified objective type." },
|
||||||
|
ForEachObjective = { Params = "CallBackFunction, [CallbackData]", Return = "bool", Notes = "Calls the specified callback for each objective in the scoreboard. Returns true if all objectives have been processed (including when there are zero objectives), or false if the callback function has aborted the enumeration by returning true. The callback function has the following signature: <pre class=\"prettyprint lang-lua\">function Callback({{cObjective|Objective}}, [CallbackData])</pre> The callback should return false or no value to continue with the next objective, or true to abort the enumeration." },
|
||||||
GetNumObjectives = { Params = "", Return = "number", Notes = "Returns the nuber of registered objectives." },
|
GetNumObjectives = { Params = "", Return = "number", Notes = "Returns the nuber of registered objectives." },
|
||||||
GetNumTeams = { Params = "", Return = "number", Notes = "Returns the number of registered teams." },
|
GetNumTeams = { Params = "", Return = "number", Notes = "Returns the number of registered teams." },
|
||||||
GetObjective = { Params = "string", Return = "{{cObjective}}", Notes = "Returns the objective with the specified name." },
|
GetObjective = { Params = "string", Return = "{{cObjective}}", Notes = "Returns the objective with the specified name." },
|
||||||
|
@ -2583,6 +2583,10 @@ void ManualBindings::Bind(lua_State * tolua_S)
|
|||||||
tolua_beginmodule(tolua_S, "cMapManager");
|
tolua_beginmodule(tolua_S, "cMapManager");
|
||||||
tolua_function(tolua_S, "DoWithMap", tolua_DoWithID<cMapManager, cMap, &cMapManager::DoWithMap>);
|
tolua_function(tolua_S, "DoWithMap", tolua_DoWithID<cMapManager, cMap, &cMapManager::DoWithMap>);
|
||||||
tolua_endmodule(tolua_S);
|
tolua_endmodule(tolua_S);
|
||||||
|
|
||||||
|
tolua_beginmodule(tolua_S, "cScoreboard");
|
||||||
|
tolua_function(tolua_S, "ForEachObjective", tolua_ForEach<cScoreboard, cObjective, &cScoreboard::ForEachObjective>);
|
||||||
|
tolua_endmodule(tolua_S);
|
||||||
|
|
||||||
tolua_beginmodule(tolua_S, "cPlugin");
|
tolua_beginmodule(tolua_S, "cPlugin");
|
||||||
tolua_function(tolua_S, "Call", tolua_cPlugin_Call);
|
tolua_function(tolua_S, "Call", tolua_cPlugin_Call);
|
||||||
|
@ -457,7 +457,7 @@ cObjective * cScoreboard::GetObjectiveIn(eDisplaySlot a_Slot)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cScoreboard::ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallback& a_Callback)
|
bool cScoreboard::ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallback& a_Callback)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSObjectives);
|
cCSLock Lock(m_CSObjectives);
|
||||||
|
|
||||||
@ -468,10 +468,30 @@ void cScoreboard::ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallb
|
|||||||
// Call callback
|
// Call callback
|
||||||
if (a_Callback.Item(&it->second))
|
if (a_Callback.Item(&it->second))
|
||||||
{
|
{
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool cScoreboard::ForEachObjective(cObjectiveCallback& a_Callback)
|
||||||
|
{
|
||||||
|
cCSLock Lock(m_CSObjectives);
|
||||||
|
|
||||||
|
for (cObjectiveMap::iterator it = m_Objectives.begin(); it != m_Objectives.end(); ++it)
|
||||||
|
{
|
||||||
|
// Call callback
|
||||||
|
if (a_Callback.Item(&it->second))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,6 +92,12 @@ public:
|
|||||||
/** Send this objective to the specified client */
|
/** Send this objective to the specified client */
|
||||||
void SendTo(cClientHandle & a_Client);
|
void SendTo(cClientHandle & a_Client);
|
||||||
|
|
||||||
|
static const char * GetClassStatic(void) // Needed for ManualBindings's ForEach templates
|
||||||
|
{
|
||||||
|
return "cObjective";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
typedef std::pair<AString, Score> cTrackedPlayer;
|
typedef std::pair<AString, Score> cTrackedPlayer;
|
||||||
@ -246,8 +252,17 @@ public:
|
|||||||
|
|
||||||
cTeam * QueryPlayerTeam(const AString & a_Name); // WARNING: O(n logn)
|
cTeam * QueryPlayerTeam(const AString & a_Name); // WARNING: O(n logn)
|
||||||
|
|
||||||
/** Execute callback for each objective with the specified type */
|
/** Execute callback for each objective with the specified type
|
||||||
void ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallback& a_Callback);
|
*
|
||||||
|
* Returns true if all objectives processed, false if the callback aborted by returning true.
|
||||||
|
*/
|
||||||
|
bool ForEachObjectiveWith(cObjective::eType a_Type, cObjectiveCallback& a_Callback);
|
||||||
|
|
||||||
|
/** Execute callback for each objective.
|
||||||
|
*
|
||||||
|
* Returns true if all objectives processed, false if the callback aborted by returning true.
|
||||||
|
*/
|
||||||
|
bool ForEachObjective(cObjectiveCallback& a_Callback); // Exported in ManualBindings.cpp
|
||||||
|
|
||||||
void SetDisplay(cObjective * a_Objective, eDisplaySlot a_Slot);
|
void SetDisplay(cObjective * a_Objective, eDisplaySlot a_Slot);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user