public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData) { foreach (var pair in stackData.goalState.GetValues()) { if (pair.Key.StartsWith("collectedResource")) { var resourceName = pair.Key.Substring(17); if (settingsPerResource.ContainsKey(resourceName)) { return(settingsPerResource[resourceName]); } var results = new List <ReGoapState <string, object> >(); settings.Set("resourceName", resourceName); // push all available banks foreach (var banksPair in (Dictionary <Bank, Vector3>)stackData.currentState.Get("banks")) { settings.Set("bank", banksPair.Key); settings.Set("bankPosition", banksPair.Value); results.Add(settings.Clone()); } settingsPerResource[resourceName] = results; return(results); } } return(base.GetSettings(stackData)); }
public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData) { settings.Clear(); var state = stackData.goalState; string type = null; if (state.HasKey("Reserved Role Type")) { type = state.Get("Reserved Role Type") as string; } Role role = null; if (type != null) { role = agent.GetMemory().GetWorldState().Get($"Nearest {type}") as Role; } if (role) { settings.Set("Objective Role", role); } return(base.GetSettings(stackData)); }
public override ReGoapState <string, object> GetEffects(GoapActionStackData <string, object> stackData) { if (stackData.settings.HasKey("resourceName")) { effects.Set("collectedResource" + stackData.settings.Get("resourceName") as string, true); } return(effects); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { if (stackData.settings.HasKey("workstationPosition")) { preconditions.Set("isAtPosition", stackData.settings.Get("workstationPosition")); } return(preconditions); }
public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData) { if (settingsList.Count == 0) { CalculateSettingsList(stackData); } return(settingsList); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { preconditions.Set("inMeleeRange", true); //preconditions.Set("meleeWeaponEquipped", false); //preconditions.Set("shootingWeaponEquipped", false); //preconditions.Set("isCharging", true); return(base.GetPreconditions(stackData)); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { if (CustomPreconditionsGetter != null) { CustomPreconditionsGetter(ref preconditions, stackData); } return(preconditions); }
public override float GetCost(GoapActionStackData <string, object> stackData) { if (CustomCostGetter != null) { CustomCostGetter(ref Cost, stackData); } return(Cost); }
public override ReGoapState <string, object> GetEffects(GoapActionStackData <string, object> stackData) { if (CustomEffectsGetter != null) { CustomEffectsGetter(ref effects, stackData); } return(effects); }
public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData) { var role = agent.GetMemory().GetWorldState().Get($"Nearest {type}") as StandRole; settings.Set($"Objective {type}", role); return(base.GetSettings(stackData)); }
public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData) { if (stackData.goalState.HasKey("At Position")) { settings.Set("Objective Position", stackData.goalState.Get("At Position")); } return(base.GetSettings(stackData)); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { if (stackData.settings.TryGetValue("workstationPosition", out var workstationPosition)) { preconditions.Set("isAtPosition", workstationPosition); } return(preconditions); }
public override ReGoapState <string, object> GetEffects(GoapActionStackData <string, object> stackData) { effects.Clear(); if (stackData.settings.HasKey("bed")) { effects.Set("stamina", true); } return(effects); }
public override ReGoapState <string, object> GetEffects(GoapActionStackData <string, object> stackData) { effects.Clear(); if (stackData.settings.HasKey("resource")) { effects.Set("hasResource" + ((IResource)stackData.settings.Get("resource")).GetName(), true); } return(effects); }
public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData) { List <Transform> patrolPoints = (List <Transform>)blackboard.worldState.Get("patrolDestinations"); Vector3 destination = patrolPoints.First().position; settings.Set("patrolDestination", patrolPoints); return(base.GetSettings(stackData)); }
public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData) { if (CustomSettingsGetter != null) { return(CustomSettingsGetter(stackData)); } return(new List <ReGoapState <string, object> > { settings }); }
// if you want to calculate costs use a non-dynamic/generic goto action public override float GetCost(GoapActionStackData <string, object> stackData) { var distance = 0.0f; if (stackData.settings.HasKey("objectivePosition") && stackData.currentState.HasKey("isAtPosition")) { distance = ((Vector3)stackData.settings.Get("objectivePosition") - (Vector3)stackData.currentState.Get("isAtPosition")).magnitude; } return(base.GetCost(stackData) + Cost + distance); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { preconditions.Clear(); if (stackData.settings.HasKey("resource") && stackData.settings.TryGetValue("resourcePosition", out var resourcePosition)) { preconditions.Set("isAtPosition", resourcePosition); } return(preconditions); }
private void CalculateSettingsList(GoapActionStackData <string, object> stackData) { settingsList.Clear(); // push all available workstations foreach (var workstationsPair in (Dictionary <Workstation, Vector3>)stackData.currentState.Get("workstations")) { settings.Set("workstation", workstationsPair.Key); settings.Set("workstationPosition", workstationsPair.Value); settingsList.Add(settings.Clone()); } }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { var role = agent.GetMemory().GetWorldState().Get($"Nearest {type}") as StandRole; if (role) { preconditions.Set("At Position", role.transform.position); } return(base.GetPreconditions(stackData)); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { if (stackData.settings.HasKey("bank")) { preconditions.Set("isAtPosition", stackData.settings.Get("bankPosition")); } if (stackData.settings.HasKey("resourceName")) { preconditions.Set("hasResource" + stackData.settings.Get("resourceName") as string, true); } return(preconditions); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { var role = agent.GetMemory().GetWorldState().Get($"Nearest {type}") as CarryRole; if (role) { preconditions.Set("Carrying", role.carryable); preconditions.Set("At Position", role.destination.position); } return(base.GetPreconditions(stackData)); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { var state = agent.GetMemory().GetWorldState(); if (state.HasKey("Spotted Position")) { Vector3 position = (Vector3)state.Get("Spotted Position"); preconditions.Set("At Position", position); } return(base.GetPreconditions(stackData)); }
public override ReGoapState <string, object> GetEffects(GoapActionStackData <string, object> stackData) { effects.Clear(); var state = stackData.goalState; if (state.HasKey("Reserved Role Type")) { effects.Set("Reserved Role Type", state.Get("Reserved Role Type")); } return(base.GetEffects(stackData)); }
public override float GetCost(GoapActionStackData <string, object> stackData) { var extraCost = 0.0f; if (stackData.settings.HasKey("resource")) { var resource = (Resource)stackData.settings.Get("resource"); extraCost += ReservedCostMultiplier * resource.GetReserveCount(); extraCost += ResourcesCostMultiplier * (MaxResourcesCount - resource.GetCapacity()); } return(base.GetCost(stackData) + extraCost); }
public override ReGoapState <string, object> GetEffects(GoapActionStackData <string, object> stackData) { effects.Clear(); if (stackData.settings.TryGetValue("resource", out var obj)) { var resource = (IResource)obj; if (resource != null) { effects.Set("hasResource" + resource.GetName(), true); } } return(effects); }
public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData) { var carryable = stackData.goalState.Get("Carrying") as Carryable; if (carryable) { preconditions.Set("At Position", carryable.transform.position); } preconditions.Set($"Reserved Role Type", "CarryRole"); return(base.GetPreconditions(stackData)); }
public override ReGoapState <string, object> GetEffects(GoapActionStackData <string, object> stackData) { var goalWantedPosition = GetWantedPositionFromState(stackData.goalState); if (goalWantedPosition.HasValue) { effects.Set("isAtPosition", goalWantedPosition); } else { SetDefaultEffects(); } return(base.GetEffects(stackData)); }
public virtual string ToString(GoapActionStackData <T, W> stackData) { string result = string.Format("GoapAction('{0}')", Name); if (stackData.settings != null && stackData.settings.Count > 0) { result += " - "; foreach (var pair in stackData.settings.GetValues()) { result += string.Format("{0}='{1}' ; ", pair.Key, pair.Value); } } return(result); }
public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData) { settings.Clear(); foreach (var pair in stackData.goalState.GetValues()) { if (pair.Key.StartsWith("collectedResource")) { var resourceName = pair.Key.Substring(17); settings.Set("ResourceName", resourceName); break; } } return(base.GetSettings(stackData)); }