1
0
forked from mirrors/0ad

Move globals to the PopCapManager prototype.

This commit is contained in:
Stan
2025-06-26 10:58:01 +02:00
parent f9e1e742bf
commit e35fce8524
2 changed files with 17 additions and 21 deletions
@@ -1,9 +1,9 @@
const CAPTYPE_PLAYER_POPULATION = "player";
const CAPTYPE_TEAM_POPULATION = "team";
const CAPTYPE_WORLD_POPULATION = "world";
function PopulationCapManager() {}
PopulationCapManager.prototype.CAPTYPE_PLAYER_POPULATION = "player";
PopulationCapManager.prototype.CAPTYPE_TEAM_POPULATION = "team";
PopulationCapManager.prototype.CAPTYPE_WORLD_POPULATION = "world";
PopulationCapManager.prototype.Schema =
"<a:component type='system'/><empty/>";
@@ -17,7 +17,7 @@ PopulationCapManager.prototype.Init = function()
*/
PopulationCapManager.prototype.SetPopulationCapType = function(type)
{
if ([CAPTYPE_PLAYER_POPULATION, CAPTYPE_TEAM_POPULATION, CAPTYPE_WORLD_POPULATION].includes(type))
if ([this.CAPTYPE_PLAYER_POPULATION, this.CAPTYPE_TEAM_POPULATION, this.CAPTYPE_WORLD_POPULATION].includes(type))
this.popCapType = type;
else
{
@@ -64,15 +64,15 @@ PopulationCapManager.prototype.InitializePopCaps = function()
{
switch (this.popCapType)
{
case CAPTYPE_PLAYER_POPULATION:
case this.CAPTYPE_PLAYER_POPULATION:
this.InitializePlayerPopCaps();
break;
case CAPTYPE_TEAM_POPULATION:
case this.CAPTYPE_TEAM_POPULATION:
this.InitializeTeamPopCaps();
break;
case CAPTYPE_WORLD_POPULATION:
case this.CAPTYPE_WORLD_POPULATION:
this.RedistributeWorldPopCap();
break;
@@ -151,18 +151,18 @@ PopulationCapManager.prototype.OnGlobalPlayerDefeated = function(msg)
{
switch (this.popCapType)
{
case CAPTYPE_TEAM_POPULATION:
case this.CAPTYPE_TEAM_POPULATION:
{
const team = QueryPlayerIDInterface(msg.playerId, IID_Diplomacy).GetTeam();
if (team != -1)
if (team !== -1)
this.RedistributeTeamPopCap(team);
break;
}
case CAPTYPE_WORLD_POPULATION:
case this.CAPTYPE_WORLD_POPULATION:
this.RedistributeWorldPopCap();
break;
case CAPTYPE_PLAYER_POPULATION:
case this.CAPTYPE_PLAYER_POPULATION:
default: break;
}
};
@@ -175,7 +175,7 @@ PopulationCapManager.prototype.OnGlobalPlayerDefeated = function(msg)
*/
PopulationCapManager.prototype.OnTeamChanged = function(msg)
{
if (this.popCapType != CAPTYPE_TEAM_POPULATION)
if (this.popCapType !== this.CAPTYPE_TEAM_POPULATION)
return;
this.RedistributeTeamPopCap(msg.oldTeam);
@@ -4,10 +4,6 @@ Engine.LoadComponentScript("interfaces/Diplomacy.js");
Engine.LoadComponentScript("interfaces/PopulationCapManager.js");
Engine.LoadComponentScript("PopulationCapManager.js");
const CAPTYPE_PLAYER_POPULATION = "player";
const CAPTYPE_TEAM_POPULATION = "team";
const CAPTYPE_WORLD_POPULATION = "world";
const DEFAULT_POPCAP = 999;
const cmpPopulationCapManager = ConstructComponent(SYSTEM_ENTITY, "PopulationCapManager");
@@ -54,7 +50,7 @@ const currentPopCaps = Object.keys(playerData).fill(DEFAULT_POPCAP);
AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
"GetNonGaiaPlayers": () => { return Object.keys(playerData).slice(1); },
"GetActivePlayers": () => { return Object.keys(playerData.filter(player => player.state == "active")).slice(1); },
"GetActivePlayers": () => { return Object.keys(playerData.filter(player => player.state === "active")).slice(1); },
"GetPlayerByID": (id) => id
});
@@ -69,10 +65,10 @@ for (const playerID in Object.keys(playerData))
}
cmpPopulationCapManager.SetPopulationCap(400);
cmpPopulationCapManager.SetPopulationCapType(CAPTYPE_PLAYER_POPULATION);
cmpPopulationCapManager.SetPopulationCapType(cmpPopulationCapManager.CAPTYPE_PLAYER_POPULATION);
TS_ASSERT_UNEVAL_EQUALS(currentPopCaps, [DEFAULT_POPCAP, 400, 400, 400, 400, 400, 400, 400, 400]);
cmpPopulationCapManager.SetPopulationCapType(CAPTYPE_TEAM_POPULATION);
cmpPopulationCapManager.SetPopulationCapType(cmpPopulationCapManager.CAPTYPE_TEAM_POPULATION);
TS_ASSERT_UNEVAL_EQUALS(currentPopCaps, [DEFAULT_POPCAP, 400, 400, 400, 133, 133, 133, 200, 200]);
playerData[6].team = 2;
@@ -84,7 +80,7 @@ currentPopCaps.pop();
cmpPopulationCapManager.OnGlobalPlayerDefeated({ "playerId": 8 });
TS_ASSERT_UNEVAL_EQUALS(currentPopCaps, [DEFAULT_POPCAP, 400, 400, 400, 200, 200, 200, 200]);
cmpPopulationCapManager.SetPopulationCapType(CAPTYPE_WORLD_POPULATION);
cmpPopulationCapManager.SetPopulationCapType(cmpPopulationCapManager.CAPTYPE_WORLD_POPULATION);
TS_ASSERT_UNEVAL_EQUALS(currentPopCaps, [DEFAULT_POPCAP, 57, 57, 57, 57, 57, 57, 57]);
playerData[7].state = "defeated";