Differential D274 Diff 9371 binaries/data/mods/public/simulation/components/tests/test_UpgradeModification.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/tests/test_UpgradeModification.js
Engine.LoadHelperScript("Player.js"); | Engine.LoadHelperScript("Player.js"); | ||||
Engine.LoadHelperScript("ValueModification.js"); | Engine.LoadHelperScript("ValueModification.js"); | ||||
Resources = { | Resources = { | ||||
"BuildSchema": type => { | "BuildSchema": type => { | ||||
let schema = ""; | let schema = ""; | ||||
for (let res of ["food", "metal", "stone", "wood"]) | for (let res of ["food", "metal", "stone", "wood"]) | ||||
schema += | schema += | ||||
"<optional>" + | "<optional>" + | ||||
"<element name='" + res + "'>" + | "<element name='" + res + "'>" + | ||||
"<ref name='" + type + "'/>" + | "<ref name='" + type + "'/>" + | ||||
"</element>" + | "</element>" + | ||||
"</optional>"; | "</optional>"; | ||||
return "<interleave>" + schema + "</interleave>"; | return "<interleave>" + schema + "</interleave>"; | ||||
} | } | ||||
}; | }; | ||||
Engine.LoadComponentScript("interfaces/AuraManager.js"); // Provides `IID_AuraManager`, tested for in helpers/ValueModification.js. | Engine.LoadComponentScript("interfaces/ModificationsManager.js"); // Provides `IID_ModificationsManager`, used below. | ||||
Engine.LoadComponentScript("interfaces/TechnologyManager.js"); // Provides `IID_TechnologyManager`, used below. | |||||
Engine.LoadComponentScript("interfaces/Timer.js"); // Provides `IID_Timer`, used below. | Engine.LoadComponentScript("interfaces/Timer.js"); // Provides `IID_Timer`, used below. | ||||
// What we're testing: | // What we're testing: | ||||
Engine.LoadComponentScript("interfaces/Upgrade.js"); | Engine.LoadComponentScript("interfaces/Upgrade.js"); | ||||
Engine.LoadComponentScript("Upgrade.js"); | Engine.LoadComponentScript("Upgrade.js"); | ||||
// Input (bare minimum needed for tests): | // Input (bare minimum needed for tests): | ||||
let techs = { | let techs = { | ||||
▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | |||||
AddMock(SYSTEM_ENTITY, IID_TemplateManager, { | AddMock(SYSTEM_ENTITY, IID_TemplateManager, { | ||||
"GetTemplate": () => template // Called in components/Upgrade.js::ChangeUpgradedEntityCount(). | "GetTemplate": () => template // Called in components/Upgrade.js::ChangeUpgradedEntityCount(). | ||||
}); | }); | ||||
AddMock(SYSTEM_ENTITY, IID_Timer, { | AddMock(SYSTEM_ENTITY, IID_Timer, { | ||||
"SetInterval": () => 1, // Called in components/Upgrade.js::Upgrade(). | "SetInterval": () => 1, // Called in components/Upgrade.js::Upgrade(). | ||||
"CancelTimer": () => {} // Called in components/Upgrade.js::CancelUpgrade(). | "CancelTimer": () => {} // Called in components/Upgrade.js::CancelUpgrade(). | ||||
}); | }); | ||||
// Init Player: | AddMock(SYSTEM_ENTITY, IID_ModificationsManager, { | ||||
AddMock(10, IID_Player, { | "ApplyModificationsTemplate": (valueName, curValue, template, player) => { | ||||
"AddResources": () => {}, // Called in components/Upgrade.js::CancelUpgrade(). | |||||
"GetPlayerID": () => playerID, // Called in helpers/Player.js::QueryOwnerInterface() (and several times below). | |||||
"GetTimeMultiplier": () => 1.0, // Called in components/Upgrade.js::GetUpgradeTime(). | |||||
"TrySubtractResources": () => true // Called in components/Upgrade.js::Upgrade(). | |||||
}); | |||||
AddMock(10, IID_TechnologyManager, { | |||||
"ApplyModificationsTemplate": (valueName, curValue, template) => { | |||||
// Called in helpers/ValueModification.js::ApplyValueModificationsToTemplate() | // Called in helpers/ValueModification.js::ApplyValueModificationsToTemplate() | ||||
// as part of Tests T2 and T5 below. | // as part of Tests T2 and T5 below. | ||||
let mods = isResearched ? templateTechModifications.with : templateTechModifications.without; | let mods = isResearched ? templateTechModifications.with : templateTechModifications.without; | ||||
return GetTechModifiedProperty(mods, GetIdentityClasses(template.Identity), valueName, curValue); | |||||
if (mods[valueName]) | |||||
return GetTechModifiedProperty(mods[valueName], GetIdentityClasses(template.Identity), curValue); | |||||
return curValue; | |||||
}, | }, | ||||
"ApplyModifications": (valueName, curValue, ent) => { | "ApplyModifications": (valueName, curValue, ent) => { | ||||
// Called in helpers/ValueModification.js::ApplyValueModificationsToEntity() | // Called in helpers/ValueModification.js::ApplyValueModificationsToEntity() | ||||
// as part of Tests T3, T6 and T7 below. | // as part of Tests T3, T6 and T7 below. | ||||
let mods = isResearched ? entityTechModifications.with : entityTechModifications.without; | let mods = isResearched ? entityTechModifications.with : entityTechModifications.without; | ||||
return mods[valueName][ent].newValue; | return mods[valueName][ent].newValue; | ||||
} | } | ||||
}); | }); | ||||
// Init Player: | |||||
AddMock(10, IID_Player, { | |||||
"AddResources": () => {}, // Called in components/Upgrade.js::CancelUpgrade(). | |||||
"GetPlayerID": () => playerID, // Called in helpers/Player.js::QueryOwnerInterface() (and several times below). | |||||
"GetTimeMultiplier": () => 1.0, // Called in components/Upgrade.js::GetUpgradeTime(). | |||||
"TrySubtractResources": () => true // Called in components/Upgrade.js::Upgrade(). | |||||
}); | |||||
// Create an entity with an Upgrade component: | // Create an entity with an Upgrade component: | ||||
AddMock(20, IID_Ownership, { | AddMock(20, IID_Ownership, { | ||||
"GetOwner": () => playerID // Called in helpers/Player.js::QueryOwnerInterface(). | "GetOwner": () => playerID // Called in helpers/Player.js::QueryOwnerInterface(). | ||||
}); | }); | ||||
AddMock(20, IID_Identity, { | AddMock(20, IID_Identity, { | ||||
"GetCiv": () => civCode // Called in components/Upgrade.js::init(). | "GetCiv": () => civCode // Called in components/Upgrade.js::init(). | ||||
}); | }); | ||||
let cmpUpgrade = ConstructComponent(20, "Upgrade", template.Upgrade); | let cmpUpgrade = ConstructComponent(20, "Upgrade", template.Upgrade); | ||||
Show All 38 Lines |
Wildfire Games · Phabricator