Skip to content

Commit

Permalink
Merge pull request #115 from crashkonijn/feature/working-agent-type
Browse files Browse the repository at this point in the history
Feature: working agent type
  • Loading branch information
crashkonijn authored Nov 23, 2023
2 parents a18eddd + cb83668 commit 321ad47
Show file tree
Hide file tree
Showing 51 changed files with 1,495 additions and 1,095 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CrashKonijn.Goap.Behaviours;
using CrashKonijn.Goap.Configs;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
Expand All @@ -14,6 +15,7 @@ public class SettingsBehaviour : MonoBehaviour
public GameObject applePrefab;
public GameObject agentPrefab;
[FormerlySerializedAs("agentType")] public GoapSetBehaviour goapSet;
public AgentTypeBehaviour agentType;

public TextMeshProUGUI appleCountText;
public TextMeshProUGUI agentCountText;
Expand Down Expand Up @@ -94,7 +96,7 @@ public void SpawnAgent()
for (var i = 0; i < count; i++)
{
var agent = Instantiate(this.agentPrefab, this.GetRandomPosition(), Quaternion.identity).GetComponent<AgentBehaviour>();
agent.AgentType = this.goapSet.AgentType;
agent.AgentType = this.agentType.AgentType;

this.SetDebug(agent.GetComponentInChildren<TextBehaviour>(), this.debug);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ namespace CrashKonijn.Goap.Demos.Simple.Behaviours
public class SimpleAgentBrain : MonoBehaviour
{
private AgentBehaviour agent;
private HungerBehaviour hunger;
private SimpleHungerBehaviour hunger;

private void Awake()
{
this.agent = this.GetComponent<AgentBehaviour>();
this.hunger = this.GetComponent<HungerBehaviour>();
this.hunger = this.GetComponent<SimpleHungerBehaviour>();
}

private void Start()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace CrashKonijn.Goap.Demos.Simple.Behaviours
{
public class HungerBehaviour : MonoBehaviour
public class SimpleHungerBehaviour : MonoBehaviour
{
public float hunger = 50;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ public class TextBehaviour : MonoBehaviour
{
private TextMeshProUGUI text;
private AgentBehaviour agent;
private HungerBehaviour hunger;
private SimpleHungerBehaviour simpleHunger;

private void Awake()
{
this.text = this.GetComponentInChildren<TextMeshProUGUI>();
this.agent = this.GetComponent<AgentBehaviour>();
this.hunger = this.GetComponent<HungerBehaviour>();
this.simpleHunger = this.GetComponent<SimpleHungerBehaviour>();
}

private void Update()
Expand All @@ -28,7 +28,7 @@ private string GetText()
if (this.agent.CurrentAction is null)
return "Idle";

return $"{this.agent.CurrentGoal.GetType().GetGenericTypeName()}\n{this.agent.CurrentAction.GetType().GetGenericTypeName()}\n{this.agent.State}\nhunger: {this.hunger.hunger:0.00}";
return $"{this.agent.CurrentGoal.GetType().GetGenericTypeName()}\n{this.agent.CurrentAction.GetType().GetGenericTypeName()}\n{this.agent.State}\nhunger: {this.simpleHunger.hunger:0.00}";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ public override void Start(IMonoAgent agent, Data data)
return;

data.Apple = inventory.Get();
data.Hunger = agent.GetComponent<HungerBehaviour>();
data.SimpleHunger = agent.GetComponent<SimpleHungerBehaviour>();
}

public override ActionRunState Perform(IMonoAgent agent, Data data, IActionContext context)
{
if (data.Apple == null || data.Hunger == null)
if (data.Apple == null || data.SimpleHunger == null)
return ActionRunState.Stop;

var eatNutrition = context.DeltaTime * 20f;

data.Apple.nutritionValue -= eatNutrition;
data.Hunger.hunger -= eatNutrition;
data.SimpleHunger.hunger -= eatNutrition;

if (data.Apple.nutritionValue <= 0)
Object.Destroy(data.Apple.gameObject);
Expand All @@ -58,7 +58,7 @@ public class Data : IActionData
{
public ITarget Target { get; set; }
public AppleBehaviour Apple { get; set; }
public HungerBehaviour Hunger { get; set; }
public SimpleHungerBehaviour SimpleHunger { get; set; }
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d368a8b48fd34cbd83b85cf61794f000, type: 3}
m_Name: SimpleAgent
m_EditorClassIdentifier:
debuggerClass:
behaviours:
- {fileID: 11400000, guid: 563d3883c04401f4c8f33cc9fc8e73b5, type: 2}
- {fileID: 11400000, guid: 77cdcbaddf97d4e40b2e62f54cc32d7f, type: 2}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 875fbfa2d1734285b353878b31467c98, type: 3}
m_Name: HealthCapability
m_EditorClassIdentifier:
goals:
- goal:
<Name>k__BackingField: FixHungerGoal
<Id>k__BackingField: Simple-FixHungerGoal
conditions:
- worldKey:
<Name>k__BackingField: IsHungry
<Id>k__BackingField: IsHungry-7bd10ff3-6bac-42d4-83fc-51aa6495e68a
comparison: 1
amount: 0
actions:
- action:
<Name>k__BackingField: EatAppleAction
<Id>k__BackingField: Simple-EatAppleAction
baseCost: 1
target:
<Name>k__BackingField: ClosestApple
<Id>k__BackingField: ClosestApple-db0ac42c-0b6a-4039-94e8-85379a627188
inRange: 0.1
moveMode: 0
conditions:
- worldKey:
<Name>k__BackingField: HasApple
<Id>k__BackingField: HasApple-60e317a0-75e4-419c-8439-45873af983a2
comparison: 3
amount: 1
effects:
- worldKey:
<Name>k__BackingField: IsHungry
<Id>k__BackingField: IsHungry-7bd10ff3-6bac-42d4-83fc-51aa6495e68a
effect: 0
- action:
<Name>k__BackingField: PickupAppleAction
<Id>k__BackingField: Simple-PickupAppleAction
baseCost: 1
target:
<Name>k__BackingField: ClosestApple
<Id>k__BackingField: ClosestApple-db0ac42c-0b6a-4039-94e8-85379a627188
inRange: 0.1
moveMode: 0
conditions:
- worldKey:
<Name>k__BackingField: ThereAreApples
<Id>k__BackingField: ThereAreApples-ceaefcd0-d32f-4a3c-aafe-0ff1ac343717
comparison: 3
amount: 1
effects:
- worldKey:
<Name>k__BackingField: HasApple
<Id>k__BackingField: HasApple-60e317a0-75e4-419c-8439-45873af983a2
effect: 1
- action:
<Name>k__BackingField: PluckAppleAction
<Id>k__BackingField: Simple-PluckAppleAction
baseCost: 3
target:
<Name>k__BackingField: ClosestTree
<Id>k__BackingField: ClosestTree-9490cf35-0b94-4fec-a69f-f75dddc1dae0
inRange: 1.2
moveMode: 0
conditions: []
effects:
- worldKey:
<Name>k__BackingField: HasApple
<Id>k__BackingField: HasApple-60e317a0-75e4-419c-8439-45873af983a2
effect: 1
worldSensors: []
targetSensors: []
multiSensors:
- sensor:
<Name>k__BackingField: AppleSensor
<Id>k__BackingField: Simple-AppleSensor

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -14,65 +14,36 @@ MonoBehaviour:
m_EditorClassIdentifier:
goals:
- goal:
name: WanderGoal
id: Simple-WanderGoal
<Name>k__BackingField: WanderGoal
<Id>k__BackingField: Simple-WanderGoal
conditions:
- worldKey:
name: IsWandering
id:
comparison: 1
amount: 0
<Name>k__BackingField: IsWandering
<Id>k__BackingField: IsWandering-b0925b8a-5c98-4777-a174-8f8ad1655f20
comparison: 3
amount: 1
actions:
- action:
name: WanderAction
id: Simple-WanderAction
<Name>k__BackingField: WanderAction
<Id>k__BackingField: Simple-WanderAction
baseCost: 1
target:
name: NonExistingTarget
id:
<Name>k__BackingField: WanderTarget
<Id>k__BackingField: WanderTarget-ae7344be-5223-4260-acac-f33c9eb260f5
inRange: 0.1
moveMode: 0
conditions: []
effects:
- worldKey:
name: IsWandering
id:
effect: 1
- action:
name: PickupAppleAction
id: Simple-PickupAppleAction
baseCost: 1
target:
name: ClosestApple
id: ClosestApple-db0ac42c-0b6a-4039-94e8-85379a627188
inRange: 0.1
moveMode: 0
conditions:
- worldKey:
name: ThereAreApples
id: ThereAreApples-ceaefcd0-d32f-4a3c-aafe-0ff1ac343717
comparison: 2
amount: 1
effects:
- worldKey:
name: HasApple
id: HasApple-60e317a0-75e4-419c-8439-45873af983a2
<Name>k__BackingField: IsWandering
<Id>k__BackingField: IsWandering-b0925b8a-5c98-4777-a174-8f8ad1655f20
effect: 1
worldSensors:
- sensor:
name: HasAppleSensor
id: Simple-HasAppleSensor
worldKey:
name: HasApple
id: HasApple-60e317a0-75e4-419c-8439-45873af983a2
worldSensors: []
targetSensors:
- sensor:
name: AgentSensor
id: Simple-TransformSensor
<Name>k__BackingField: WanderTargetSensor
<Id>k__BackingField: Simple-WanderTargetSensor
targetKey:
name: AgentTarget
id: AgentTarget-425903d7-8429-4cb6-b3ce-76d1a541a2b6
multiSensors:
- sensor:
name: AppleSensor
id: Simple-AppleSensor
<Name>k__BackingField: WanderTarget
<Id>k__BackingField: WanderTarget-ae7344be-5223-4260-acac-f33c9eb260f5
multiSensors: []
Loading

0 comments on commit 321ad47

Please sign in to comment.