Beispiel #1
0
 public int GetInt32(WorldStateId id)
 {
     return(GetInt32(WorldStates.GetState(id).Index));
 }
Beispiel #2
0
 public void SetUInt32(WorldStateId id, uint value)
 {
     SetUInt32(WorldStates.GetState(id), value);
 }
 public uint GetUInt32(WorldStateId id)
 {
     return(this.GetUInt32(WorldStates.GetState(id).Index));
 }
Beispiel #4
0
    public Queue <GAction> plan(List <GAction> actions, Dictionary <string, int> goal, WorldStates beliefStates)
    {
        List <GAction> usableActions = new List <GAction>();

        foreach (GAction a in actions)
        {
            if (a.IsAchievable())
            {
                usableActions.Add(a);
            }
        }

        List <Node> leaves = new List <Node>();
        Node        start  = new Node(null, 0, GWorld.Instance.GetWorld().GetState(), beliefStates.GetState(), null);

        bool success = BuildGraph(start, leaves, usableActions, goal);

        if (!success)
        {
            // Debug.Log("NO PLAN");
            return(null);
        }

        Node cheapest = null;

        foreach (Node leaf in leaves)
        {
            if (cheapest == null)
            {
                cheapest = leaf;
            }
            else
            {
                if (leaf.cost < cheapest.cost)
                {
                    cheapest = leaf;
                }
            }
        }

        List <GAction> result = new List <GAction>();
        Node           n      = cheapest;

        while (n != null)
        {
            if (n.action != null)
            {
                result.Insert(0, n.action);
            }
            n = n.parent;
        }

        Queue <GAction> queue = new Queue <GAction>();

        foreach (GAction a in result)
        {
            queue.Enqueue(a);
        }

        //Debug.Log("The Plan is: ");
        //foreach (GAction a in queue)
        //{
        //    Debug.Log("Q: " + a.actionName);
        //}

        return(queue);
    }
 public void SetInt32(WorldStateId id, int value)
 {
     this.SetInt32(WorldStates.GetState(id), value);
 }