(svn r24492) -Add: [NoGo] Useful behaviour for GSEngine::IsValidEngine and GSEngine::IsBuildable when outside GSCompanyMode scope.

This commit is contained in:
frosch
2012-08-21 19:53:08 +00:00
parent bfe5b5e0e6
commit fa88345953
3 changed files with 21 additions and 8 deletions

View File

@@ -23,7 +23,12 @@
/* static */ bool ScriptEngine::IsValidEngine(EngineID engine_id)
{
const Engine *e = ::Engine::GetIfValid(engine_id);
return e != NULL && (::IsEngineBuildable(engine_id, e->type, ScriptObject::GetCompany()) || (ScriptObject::GetCompany() != OWNER_DEITY && ::Company::Get(ScriptObject::GetCompany())->group_all[e->type].num_engines[engine_id] > 0));
if (e == NULL || !e->IsEnabled()) return false;
/* AIs have only access to engines they can purchase or still have in use.
* Deity has access to all engined that will be or were available ever. */
CompanyID company = ScriptObject::GetCompany();
return company == OWNER_DEITY || ::IsEngineBuildable(engine_id, e->type, company) || ::Company::Get(company)->group_all[e->type].num_engines[engine_id] > 0;
}
/* static */ bool ScriptEngine::IsBuildable(EngineID engine_id)

View File

@@ -23,15 +23,17 @@
class ScriptEngine : public ScriptObject {
public:
/**
* Checks whether the given engine type is valid. An engine is valid if you
* have at least one vehicle of this engine or it's currently buildable.
* Checks whether the given engine type is valid.
* An engine is valid for a company if it has at least one vehicle of this engine or it's currently buildable.
* @game Outside ScriptCompanyMode scope the function reports all engines valid, which were or will be available at some point.
* @param engine_id The engine to check.
* @return True if and only if the engine type is valid.
*/
static bool IsValidEngine(EngineID engine_id);
/**
* Checks whether the given engine type is buildable by you.
* Checks whether the given engine type is buildable for a company.
* @game Outside ScriptCompanyMode scope the function checks whether the engine is currently buildable by all companies (no exclusive preview).
* @param engine_id The engine to check.
* @return True if and only if the engine type is buildable.
*/