From a407db112394f75f7ba9a3b9d95de24cc7061e51 Mon Sep 17 00:00:00 2001 From: agent-q1 Date: Fri, 3 Jul 2020 17:45:50 +0530 Subject: [PATCH 01/11] First run --- .../component/PopulationComponent.java | 18 ++++++ .../population/system/PopulationSystem.java | 60 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java create mode 100644 src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java diff --git a/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java b/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java new file mode 100644 index 00000000..a02d014f --- /dev/null +++ b/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java @@ -0,0 +1,18 @@ +// Copyright 2020 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.metalrenegades.population.component; + +import org.terasology.entitySystem.Component; + +public class PopulationComponent implements Component { + public int goodCitizens; + public int badCitizens; + public int neutralCitizens; + + public PopulationComponent(){ + this.badCitizens=0; + this.goodCitizens=0; + this.neutralCitizens = 0; + } +} diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java new file mode 100644 index 00000000..6bbd9ac1 --- /dev/null +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -0,0 +1,60 @@ +// Copyright 2020 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.metalrenegades.population.system; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.terasology.entitySystem.entity.EntityRef; +import org.terasology.entitySystem.entity.lifecycleEvents.OnActivatedComponent; +import org.terasology.entitySystem.event.ReceiveEvent; +import org.terasology.entitySystem.systems.BaseComponentSystem; +import org.terasology.entitySystem.systems.RegisterMode; +import org.terasology.entitySystem.systems.RegisterSystem; +import org.terasology.logic.players.LocalPlayer; +import org.terasology.metalrenegades.ai.component.FactionAlignmentComponent; +import org.terasology.metalrenegades.ai.event.CitizenSpawnedEvent; +import org.terasology.metalrenegades.ai.system.FactionAlignmentSystem; +import org.terasology.metalrenegades.population.component.PopulationComponent; +import org.terasology.network.ClientComponent; +import org.terasology.registry.In; + +@RegisterSystem(value = RegisterMode.AUTHORITY) +public class PopulationSystem extends BaseComponentSystem { + + @In + LocalPlayer player; + + Logger logger = LoggerFactory.getLogger(PopulationSystem.class); + + @ReceiveEvent + public void onPlayerSpawn(OnActivatedComponent event, EntityRef entity, ClientComponent component) { + + entity.addComponent(new PopulationComponent()); + logger.error("Component PopulationComponent added to player"); + + + } + + @ReceiveEvent + public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen) { + FactionAlignmentComponent factionAlignmentComponent = citizen.getComponent(FactionAlignmentComponent.class); + PopulationComponent populationComponent = player.getClientEntity().getComponent(PopulationComponent.class); + if (factionAlignmentComponent.alignment == FactionAlignmentSystem.Alignment.NEUTRAL) { + populationComponent.neutralCitizens++; + + } else if (factionAlignmentComponent.alignment == FactionAlignmentSystem.Alignment.GOOD) { + populationComponent.goodCitizens++; + + } else if (factionAlignmentComponent.alignment == FactionAlignmentSystem.Alignment.BAD) { + populationComponent.badCitizens++; + } else { + logger.error("Invalid Faction Alignment"); + } + + player.getClientEntity().saveComponent(populationComponent); + logger.error("Population is {} {} {] ",populationComponent.badCitizens, populationComponent.goodCitizens, populationComponent.neutralCitizens); + } + + +} From 9b5c35a8a89baa625c1a05e23e27a739bfe147f6 Mon Sep 17 00:00:00 2001 From: agent-q1 <35196657+agent-q1@users.noreply.github.com> Date: Mon, 13 Jul 2020 16:42:32 +0530 Subject: [PATCH 02/11] Update src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java Co-authored-by: Tobias Nett --- .../population/component/PopulationComponent.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java b/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java index a02d014f..138423ca 100644 --- a/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java +++ b/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java @@ -5,6 +5,14 @@ import org.terasology.entitySystem.Component; +/** + * Track total population information of good, bad, and neutral citizens. + * + * The entity this component belongs to defines the scope of the tracked population. + * For instance, it may be attached to a world entity for the overall population or a settlement entity for the population of that settlement. + * + * The population is usually tracked by the {@link PopulationSystem}. + */ public class PopulationComponent implements Component { public int goodCitizens; public int badCitizens; From 4259737c5e5122ffc451f56962098450e9b8a59e Mon Sep 17 00:00:00 2001 From: agent-q1 <35196657+agent-q1@users.noreply.github.com> Date: Mon, 13 Jul 2020 16:42:41 +0530 Subject: [PATCH 03/11] Update src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java Co-authored-by: Tobias Nett --- .../population/component/PopulationComponent.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java b/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java index 138423ca..37d53b6c 100644 --- a/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java +++ b/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java @@ -19,8 +19,8 @@ public class PopulationComponent implements Component { public int neutralCitizens; public PopulationComponent(){ - this.badCitizens=0; - this.goodCitizens=0; + this.badCitizens = 0; + this.goodCitizens = 0; this.neutralCitizens = 0; } } From e72ad6fa7b72b85850968f0ae380aabf2097f48d Mon Sep 17 00:00:00 2001 From: agent-q1 <35196657+agent-q1@users.noreply.github.com> Date: Mon, 13 Jul 2020 16:42:53 +0530 Subject: [PATCH 04/11] Update src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java Co-authored-by: Tobias Nett --- .../metalrenegades/population/system/PopulationSystem.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java index 6bbd9ac1..219c1ff4 100644 --- a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -37,8 +37,7 @@ public void onPlayerSpawn(OnActivatedComponent event, EntityRef entity, ClientCo } @ReceiveEvent - public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen) { - FactionAlignmentComponent factionAlignmentComponent = citizen.getComponent(FactionAlignmentComponent.class); + public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, FactionAlignmentComponent factionAlignmentComponent) { PopulationComponent populationComponent = player.getClientEntity().getComponent(PopulationComponent.class); if (factionAlignmentComponent.alignment == FactionAlignmentSystem.Alignment.NEUTRAL) { populationComponent.neutralCitizens++; From 34b281c1293a35af25959085c1302ec53435a208 Mon Sep 17 00:00:00 2001 From: agent-q1 <35196657+agent-q1@users.noreply.github.com> Date: Mon, 13 Jul 2020 16:43:01 +0530 Subject: [PATCH 05/11] Update src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java Co-authored-by: Tobias Nett --- .../population/system/PopulationSystem.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java index 219c1ff4..7a5f1022 100644 --- a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -39,16 +39,18 @@ public void onPlayerSpawn(OnActivatedComponent event, EntityRef entity, ClientCo @ReceiveEvent public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, FactionAlignmentComponent factionAlignmentComponent) { PopulationComponent populationComponent = player.getClientEntity().getComponent(PopulationComponent.class); - if (factionAlignmentComponent.alignment == FactionAlignmentSystem.Alignment.NEUTRAL) { - populationComponent.neutralCitizens++; - - } else if (factionAlignmentComponent.alignment == FactionAlignmentSystem.Alignment.GOOD) { - populationComponent.goodCitizens++; - - } else if (factionAlignmentComponent.alignment == FactionAlignmentSystem.Alignment.BAD) { - populationComponent.badCitizens++; - } else { - logger.error("Invalid Faction Alignment"); + switch(factionAlignmentComponent.alignment) { + case FactionAlignmentSystem.Alignment.NEUTRAL: + populationComponent.neutralCitizens++; + break; + case FactionAlignmentSystem.Alignment.GOOD: + populationComponent.goodCitizens++; + break; + case FactionAlignmentSystem.Alignment.BAD: + populationComponent.badCitizens++; + break; + default: + logger.error("Invalid Faction Alignment"); } player.getClientEntity().saveComponent(populationComponent); From ff932039f3cffcbb54b404e6af5c7a641b0ac8eb Mon Sep 17 00:00:00 2001 From: agent-q1 Date: Mon, 13 Jul 2020 19:05:24 +0530 Subject: [PATCH 06/11] fix: Use of unqualified names for enum --- .../population/system/PopulationSystem.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java index 7a5f1022..75310801 100644 --- a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -37,20 +37,21 @@ public void onPlayerSpawn(OnActivatedComponent event, EntityRef entity, ClientCo } @ReceiveEvent - public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, FactionAlignmentComponent factionAlignmentComponent) { + public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, + FactionAlignmentComponent factionAlignmentComponent) { PopulationComponent populationComponent = player.getClientEntity().getComponent(PopulationComponent.class); - switch(factionAlignmentComponent.alignment) { - case FactionAlignmentSystem.Alignment.NEUTRAL: - populationComponent.neutralCitizens++; - break; - case FactionAlignmentSystem.Alignment.GOOD: - populationComponent.goodCitizens++; - break; - case FactionAlignmentSystem.Alignment.BAD: - populationComponent.badCitizens++; - break; - default: - logger.error("Invalid Faction Alignment"); + switch (factionAlignmentComponent.alignment) { + case NEUTRAL: + populationComponent.neutralCitizens++; + break; + case GOOD: + populationComponent.goodCitizens++; + break; + case BAD: + populationComponent.badCitizens++; + break; + default: + logger.error("Invalid Faction Alignment"); } player.getClientEntity().saveComponent(populationComponent); From 4fb384e18ad4129157dbb9dc603d55f2ceec3885 Mon Sep 17 00:00:00 2001 From: agent-q1 Date: Mon, 13 Jul 2020 19:06:31 +0530 Subject: [PATCH 07/11] refactor: Clean up of unused imports and logs --- .../metalrenegades/population/system/PopulationSystem.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java index 75310801..0953bf1e 100644 --- a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -14,7 +14,6 @@ import org.terasology.logic.players.LocalPlayer; import org.terasology.metalrenegades.ai.component.FactionAlignmentComponent; import org.terasology.metalrenegades.ai.event.CitizenSpawnedEvent; -import org.terasology.metalrenegades.ai.system.FactionAlignmentSystem; import org.terasology.metalrenegades.population.component.PopulationComponent; import org.terasology.network.ClientComponent; import org.terasology.registry.In; @@ -55,7 +54,6 @@ public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, } player.getClientEntity().saveComponent(populationComponent); - logger.error("Population is {} {} {] ",populationComponent.badCitizens, populationComponent.goodCitizens, populationComponent.neutralCitizens); } From 76536eb662c0ad6720a2b901f1f762b7381a5dbb Mon Sep 17 00:00:00 2001 From: agent-q1 Date: Mon, 13 Jul 2020 19:34:08 +0530 Subject: [PATCH 08/11] fix: Population comoponents now held by settlements --- .../population/system/PopulationSystem.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java index 0953bf1e..d7f29fa2 100644 --- a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -5,40 +5,40 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.terasology.dynamicCities.buildings.components.SettlementRefComponent; +import org.terasology.dynamicCities.settlements.events.SettlementRegisterEvent; import org.terasology.entitySystem.entity.EntityRef; -import org.terasology.entitySystem.entity.lifecycleEvents.OnActivatedComponent; import org.terasology.entitySystem.event.ReceiveEvent; import org.terasology.entitySystem.systems.BaseComponentSystem; import org.terasology.entitySystem.systems.RegisterMode; import org.terasology.entitySystem.systems.RegisterSystem; -import org.terasology.logic.players.LocalPlayer; import org.terasology.metalrenegades.ai.component.FactionAlignmentComponent; +import org.terasology.metalrenegades.ai.component.HomeComponent; import org.terasology.metalrenegades.ai.event.CitizenSpawnedEvent; import org.terasology.metalrenegades.population.component.PopulationComponent; -import org.terasology.network.ClientComponent; -import org.terasology.registry.In; @RegisterSystem(value = RegisterMode.AUTHORITY) public class PopulationSystem extends BaseComponentSystem { - @In - LocalPlayer player; Logger logger = LoggerFactory.getLogger(PopulationSystem.class); @ReceiveEvent - public void onPlayerSpawn(OnActivatedComponent event, EntityRef entity, ClientComponent component) { - - entity.addComponent(new PopulationComponent()); - logger.error("Component PopulationComponent added to player"); - - + public void onSettlementRegisterEvent(SettlementRegisterEvent buildingEntitySpawnedEvent, EntityRef entityRef) { + entityRef.addComponent(new PopulationComponent()); } @ReceiveEvent public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, - FactionAlignmentComponent factionAlignmentComponent) { - PopulationComponent populationComponent = player.getClientEntity().getComponent(PopulationComponent.class); + FactionAlignmentComponent factionAlignmentComponent, HomeComponent homeComponent) { + + EntityRef homeEntity = homeComponent.building; + SettlementRefComponent settlementRefComponent = homeEntity.getComponent(SettlementRefComponent.class); + EntityRef settlementEntity = settlementRefComponent.settlement; + PopulationComponent populationComponent = settlementEntity.getComponent(PopulationComponent.class); + + + switch (factionAlignmentComponent.alignment) { case NEUTRAL: populationComponent.neutralCitizens++; @@ -53,7 +53,7 @@ public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, logger.error("Invalid Faction Alignment"); } - player.getClientEntity().saveComponent(populationComponent); + settlementEntity.saveComponent(populationComponent); } From d954a7ef0bf0031b281d643098446d4c141ee102 Mon Sep 17 00:00:00 2001 From: agent-q1 Date: Mon, 13 Jul 2020 19:37:52 +0530 Subject: [PATCH 09/11] refactor: Changed name of PopulationComponent --- ...ponent.java => MetalRenegadesPopulationComponent.java} | 4 ++-- .../population/system/PopulationSystem.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) rename src/main/java/org/terasology/metalrenegades/population/component/{PopulationComponent.java => MetalRenegadesPopulationComponent.java} (86%) diff --git a/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java b/src/main/java/org/terasology/metalrenegades/population/component/MetalRenegadesPopulationComponent.java similarity index 86% rename from src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java rename to src/main/java/org/terasology/metalrenegades/population/component/MetalRenegadesPopulationComponent.java index 37d53b6c..8775e61c 100644 --- a/src/main/java/org/terasology/metalrenegades/population/component/PopulationComponent.java +++ b/src/main/java/org/terasology/metalrenegades/population/component/MetalRenegadesPopulationComponent.java @@ -13,12 +13,12 @@ * * The population is usually tracked by the {@link PopulationSystem}. */ -public class PopulationComponent implements Component { +public class MetalRenegadesPopulationComponent implements Component { public int goodCitizens; public int badCitizens; public int neutralCitizens; - public PopulationComponent(){ + public MetalRenegadesPopulationComponent(){ this.badCitizens = 0; this.goodCitizens = 0; this.neutralCitizens = 0; diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java index d7f29fa2..30944419 100644 --- a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -15,7 +15,7 @@ import org.terasology.metalrenegades.ai.component.FactionAlignmentComponent; import org.terasology.metalrenegades.ai.component.HomeComponent; import org.terasology.metalrenegades.ai.event.CitizenSpawnedEvent; -import org.terasology.metalrenegades.population.component.PopulationComponent; +import org.terasology.metalrenegades.population.component.MetalRenegadesPopulationComponent; @RegisterSystem(value = RegisterMode.AUTHORITY) public class PopulationSystem extends BaseComponentSystem { @@ -25,7 +25,7 @@ public class PopulationSystem extends BaseComponentSystem { @ReceiveEvent public void onSettlementRegisterEvent(SettlementRegisterEvent buildingEntitySpawnedEvent, EntityRef entityRef) { - entityRef.addComponent(new PopulationComponent()); + entityRef.addComponent(new MetalRenegadesPopulationComponent()); } @ReceiveEvent @@ -35,8 +35,8 @@ public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, EntityRef homeEntity = homeComponent.building; SettlementRefComponent settlementRefComponent = homeEntity.getComponent(SettlementRefComponent.class); EntityRef settlementEntity = settlementRefComponent.settlement; - PopulationComponent populationComponent = settlementEntity.getComponent(PopulationComponent.class); - + MetalRenegadesPopulationComponent populationComponent = + settlementEntity.getComponent(MetalRenegadesPopulationComponent.class); switch (factionAlignmentComponent.alignment) { From c8f2bb6ab85637106e568373cfa4483ffcc7d701 Mon Sep 17 00:00:00 2001 From: agent-q1 Date: Mon, 13 Jul 2020 22:37:04 +0530 Subject: [PATCH 10/11] refactor: Renamed PopulationComponent --- ...onComponent.java => FactionDistributionComponent.java} | 4 ++-- .../population/system/PopulationSystem.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) rename src/main/java/org/terasology/metalrenegades/population/component/{MetalRenegadesPopulationComponent.java => FactionDistributionComponent.java} (86%) diff --git a/src/main/java/org/terasology/metalrenegades/population/component/MetalRenegadesPopulationComponent.java b/src/main/java/org/terasology/metalrenegades/population/component/FactionDistributionComponent.java similarity index 86% rename from src/main/java/org/terasology/metalrenegades/population/component/MetalRenegadesPopulationComponent.java rename to src/main/java/org/terasology/metalrenegades/population/component/FactionDistributionComponent.java index 8775e61c..20c5cee0 100644 --- a/src/main/java/org/terasology/metalrenegades/population/component/MetalRenegadesPopulationComponent.java +++ b/src/main/java/org/terasology/metalrenegades/population/component/FactionDistributionComponent.java @@ -13,12 +13,12 @@ * * The population is usually tracked by the {@link PopulationSystem}. */ -public class MetalRenegadesPopulationComponent implements Component { +public class FactionDistributionComponent implements Component { public int goodCitizens; public int badCitizens; public int neutralCitizens; - public MetalRenegadesPopulationComponent(){ + public FactionDistributionComponent(){ this.badCitizens = 0; this.goodCitizens = 0; this.neutralCitizens = 0; diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java index 30944419..6b5581eb 100644 --- a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -15,7 +15,7 @@ import org.terasology.metalrenegades.ai.component.FactionAlignmentComponent; import org.terasology.metalrenegades.ai.component.HomeComponent; import org.terasology.metalrenegades.ai.event.CitizenSpawnedEvent; -import org.terasology.metalrenegades.population.component.MetalRenegadesPopulationComponent; +import org.terasology.metalrenegades.population.component.FactionDistributionComponent; @RegisterSystem(value = RegisterMode.AUTHORITY) public class PopulationSystem extends BaseComponentSystem { @@ -25,7 +25,7 @@ public class PopulationSystem extends BaseComponentSystem { @ReceiveEvent public void onSettlementRegisterEvent(SettlementRegisterEvent buildingEntitySpawnedEvent, EntityRef entityRef) { - entityRef.addComponent(new MetalRenegadesPopulationComponent()); + entityRef.addComponent(new FactionDistributionComponent()); } @ReceiveEvent @@ -35,8 +35,8 @@ public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, EntityRef homeEntity = homeComponent.building; SettlementRefComponent settlementRefComponent = homeEntity.getComponent(SettlementRefComponent.class); EntityRef settlementEntity = settlementRefComponent.settlement; - MetalRenegadesPopulationComponent populationComponent = - settlementEntity.getComponent(MetalRenegadesPopulationComponent.class); + FactionDistributionComponent populationComponent = + settlementEntity.getComponent(FactionDistributionComponent.class); switch (factionAlignmentComponent.alignment) { From fbe3777f39334393442662b097a18fb8c09fe503 Mon Sep 17 00:00:00 2001 From: agent-q1 Date: Mon, 13 Jul 2020 22:42:02 +0530 Subject: [PATCH 11/11] feat: Addition of settlement property to event --- .../ai/event/CitizenSpawnedEvent.java | 14 ++++++++++++++ .../ai/system/CitizenSpawnSystem.java | 9 ++++++--- .../population/system/PopulationSystem.java | 7 +++---- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/terasology/metalrenegades/ai/event/CitizenSpawnedEvent.java b/src/main/java/org/terasology/metalrenegades/ai/event/CitizenSpawnedEvent.java index 974aebc3..4c17dc3a 100644 --- a/src/main/java/org/terasology/metalrenegades/ai/event/CitizenSpawnedEvent.java +++ b/src/main/java/org/terasology/metalrenegades/ai/event/CitizenSpawnedEvent.java @@ -15,11 +15,25 @@ */ package org.terasology.metalrenegades.ai.event; +import org.terasology.entitySystem.entity.EntityRef; import org.terasology.entitySystem.event.Event; +import org.terasology.protobuf.EntityData; /** * Fired when a new citizen character is spawned by {@link org.terasology.metalrenegades.ai.system.CitizenSpawnSystem}. */ public class CitizenSpawnedEvent implements Event { + + // Stores the settlement to which the Citizen belongs to + private EntityRef settlement; + + public CitizenSpawnedEvent(EntityRef settlement) { + this.settlement = settlement; + } + + public EntityRef getSettlement() { + return this.settlement; + } + } diff --git a/src/main/java/org/terasology/metalrenegades/ai/system/CitizenSpawnSystem.java b/src/main/java/org/terasology/metalrenegades/ai/system/CitizenSpawnSystem.java index f175b3bf..bec5cc00 100644 --- a/src/main/java/org/terasology/metalrenegades/ai/system/CitizenSpawnSystem.java +++ b/src/main/java/org/terasology/metalrenegades/ai/system/CitizenSpawnSystem.java @@ -43,6 +43,7 @@ import org.terasology.registry.CoreRegistry; import org.terasology.metalrenegades.minimap.events.AddCharacterToOverlayEvent; import org.terasology.registry.In; + import java.util.ArrayList; /** @@ -108,9 +109,11 @@ public void update(float delta) { */ private EntityRef spawnCitizen(EntityRef homeEntity) { SettlementRefComponent settlementRefComponent = homeEntity.getComponent(SettlementRefComponent.class); - FactionAlignmentComponent settlementAlignmentComponent = settlementRefComponent.settlement.getComponent(FactionAlignmentComponent.class); + FactionAlignmentComponent settlementAlignmentComponent = + settlementRefComponent.settlement.getComponent(FactionAlignmentComponent.class); - EntityBuilder entityBuilder = entityManager.newBuilder(citizenAlignmentSystem.getPrefab(settlementAlignmentComponent.alignment)); + EntityBuilder entityBuilder = + entityManager.newBuilder(citizenAlignmentSystem.getPrefab(settlementAlignmentComponent.alignment)); LocationComponent homeLocationComponent = homeEntity.getComponent(LocationComponent.class); LocationComponent citizenLocationComponent = entityBuilder.getComponent(LocationComponent.class); @@ -139,7 +142,7 @@ private EntityRef spawnCitizen(EntityRef homeEntity) { setupStartInventory(entityRef); } - entityRef.send(new CitizenSpawnedEvent()); + entityRef.send(new CitizenSpawnedEvent(settlementRefComponent.settlement)); return entityRef; } diff --git a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java index 6b5581eb..41a6bf15 100644 --- a/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java +++ b/src/main/java/org/terasology/metalrenegades/population/system/PopulationSystem.java @@ -30,11 +30,10 @@ public void onSettlementRegisterEvent(SettlementRegisterEvent buildingEntitySpaw @ReceiveEvent public void citizenSpawned(CitizenSpawnedEvent event, EntityRef citizen, - FactionAlignmentComponent factionAlignmentComponent, HomeComponent homeComponent) { + FactionAlignmentComponent factionAlignmentComponent) { + + EntityRef settlementEntity = event.getSettlement(); - EntityRef homeEntity = homeComponent.building; - SettlementRefComponent settlementRefComponent = homeEntity.getComponent(SettlementRefComponent.class); - EntityRef settlementEntity = settlementRefComponent.settlement; FactionDistributionComponent populationComponent = settlementEntity.getComponent(FactionDistributionComponent.class);