Exemplo n.º 1
0
 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));
        }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
 public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData)
 {
     if (stackData.settings.HasKey("workstationPosition"))
     {
         preconditions.Set("isAtPosition", stackData.settings.Get("workstationPosition"));
     }
     return(preconditions);
 }
Exemplo n.º 5
0
 public override List <ReGoapState <string, object> > GetSettings(GoapActionStackData <string, object> stackData)
 {
     if (settingsList.Count == 0)
     {
         CalculateSettingsList(stackData);
     }
     return(settingsList);
 }
Exemplo n.º 6
0
 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);
 }
Exemplo n.º 10
0
        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));
        }
Exemplo n.º 11
0
 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));
 }
Exemplo n.º 12
0
 public override ReGoapState <string, object> GetPreconditions(GoapActionStackData <string, object> stackData)
 {
     if (stackData.settings.TryGetValue("workstationPosition", out var workstationPosition))
     {
         preconditions.Set("isAtPosition", workstationPosition);
     }
     return(preconditions);
 }
Exemplo n.º 13
0
 public override ReGoapState <string, object> GetEffects(GoapActionStackData <string, object> stackData)
 {
     effects.Clear();
     if (stackData.settings.HasKey("bed"))
     {
         effects.Set("stamina", true);
     }
     return(effects);
 }
Exemplo n.º 14
0
 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);
 }
Exemplo n.º 15
0
    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
     });
 }
Exemplo n.º 17
0
        // 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);
        }
Exemplo n.º 18
0
 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);
 }
Exemplo n.º 19
0
 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());
     }
 }
Exemplo n.º 20
0
        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));
        }
Exemplo n.º 21
0
 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);
 }
Exemplo n.º 22
0
        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));
        }
Exemplo n.º 23
0
        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));
        }
Exemplo n.º 25
0
        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);
        }
Exemplo n.º 26
0
 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);
 }
Exemplo n.º 27
0
        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));
        }
Exemplo n.º 28
0
        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));
        }
Exemplo n.º 29
0
        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);
        }
Exemplo n.º 30
0
 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));
 }