1
0
Fork 0

Change: Allow GS access to ScriptEventEnginePreview

pull/10411/head
SamuXarick 2023-01-25 15:30:17 +00:00
parent 62ee9029a1
commit 328bbe50ec
4 changed files with 16 additions and 5 deletions

View File

@ -20,8 +20,7 @@
#include "window_func.h" #include "window_func.h"
#include "autoreplace_gui.h" #include "autoreplace_gui.h"
#include "string_func.h" #include "string_func.h"
#include "ai/ai.hpp" #include "script/script_trigger.hpp"
#include "game/game.hpp"
#include "core/pool_func.hpp" #include "core/pool_func.hpp"
#include "engine_gui.h" #include "engine_gui.h"
#include "engine_func.h" #include "engine_func.h"
@ -992,7 +991,7 @@ static IntervalTimer<TimerGameCalendar> _calendar_engines_daily({TimerGameCalend
* boost that they wouldn't have gotten against other human companies. The check on * boost that they wouldn't have gotten against other human companies. The check on
* the line below is just to make AIs not notice that they have a preview if they * the line below is just to make AIs not notice that they have a preview if they
* cannot build the vehicle. */ * cannot build the vehicle. */
if (!IsVehicleTypeDisabled(e->type, true)) AI::NewEvent(e->preview_company, new ScriptEventEnginePreview(i)); if (!IsVehicleTypeDisabled(e->type, true)) ScriptTrigger::NewEvent<ScriptEventEnginePreview>(e->preview_company, e->preview_company, i);
if (IsInteractiveCompany(e->preview_company)) ShowEnginePreviewWindow(i); if (IsInteractiveCompany(e->preview_company)) ShowEnginePreviewWindow(i);
} }
} }

View File

@ -37,6 +37,7 @@
* \li GSEventAircraftDestTooFar * \li GSEventAircraftDestTooFar
* \li GSEventVehicleAutoReplaced * \li GSEventVehicleAutoReplaced
* \li GSEventCompanyAskMerger * \li GSEventCompanyAskMerger
* \li GSEventEnginePreview
* *
* Other changes: * Other changes:
* \li GSBridge::GetBridgeID renamed to GSBridge::GetBridgeType * \li GSBridge::GetBridgeID renamed to GSBridge::GetBridgeType

View File

@ -106,6 +106,7 @@ int32_t ScriptEventEnginePreview::GetVehicleType()
bool ScriptEventEnginePreview::AcceptPreview() bool ScriptEventEnginePreview::AcceptPreview()
{ {
EnforceCompanyModeValid(false); EnforceCompanyModeValid(false);
EnforcePrecondition(false, ScriptObject::GetCompany() == ScriptCompany::FromScriptCompanyID(this->owner));
if (!this->IsEngineValid()) return false; if (!this->IsEngineValid()) return false;
return ScriptObject::Command<CMD_WANT_ENGINE_PREVIEW>::Do(this->engine); return ScriptObject::Command<CMD_WANT_ENGINE_PREVIEW>::Do(this->engine);
} }

View File

@ -238,16 +238,18 @@ private:
* Event Engine Preview, indicating a manufacturer offer you to test a new engine. * Event Engine Preview, indicating a manufacturer offer you to test a new engine.
* You can get the same information about the offered engine as a real user * You can get the same information about the offered engine as a real user
* would see in the offer window. And you can also accept the offer. * would see in the offer window. And you can also accept the offer.
* @api ai * @api ai game
*/ */
class ScriptEventEnginePreview : public ScriptEvent { class ScriptEventEnginePreview : public ScriptEvent {
public: public:
#ifndef DOXYGEN_API #ifndef DOXYGEN_API
/** /**
* @param owner The company being offered the test engine.
* @param engine The engine offered to test. * @param engine The engine offered to test.
*/ */
ScriptEventEnginePreview(EngineID engine) : ScriptEventEnginePreview(Owner owner, EngineID engine) :
ScriptEvent(ET_ENGINE_PREVIEW), ScriptEvent(ET_ENGINE_PREVIEW),
owner(ScriptCompany::ToScriptCompanyID(owner)),
engine(engine) engine(engine)
{} {}
#endif /* DOXYGEN_API */ #endif /* DOXYGEN_API */
@ -259,6 +261,13 @@ public:
*/ */
static ScriptEventEnginePreview *Convert(ScriptEvent *instance) { return (ScriptEventEnginePreview *)instance; } static ScriptEventEnginePreview *Convert(ScriptEvent *instance) { return (ScriptEventEnginePreview *)instance; }
/**
* Get the company being offered the test engine.
* @return The company being offered to test the engine.
* @api -ai
*/
ScriptCompany::CompanyID GetCompanyID() { return this->owner; }
/** /**
* Get the name of the offered engine. * Get the name of the offered engine.
* @return The name the engine has. * @return The name the engine has.
@ -319,6 +328,7 @@ public:
bool AcceptPreview(); bool AcceptPreview();
private: private:
ScriptCompany::CompanyID owner; ///< The company the engine preview is for.
EngineID engine; ///< The engine the preview is for. EngineID engine; ///< The engine the preview is for.
/** /**