Exemplo n.º 1
0
    //-----------------------------------------------------------------------------------------------
    public override void Run()
    {
        OperatorParam influenceMapParamName = FindParamWithName("Influence");

        // Can't exactly move if we don't have a goal
        if (influenceMapParamName == null)
        {
            return;
        }

        string[] mapIdentifiers = influenceMapParamName.Value.Split('_');

        // Determine map type
        InfluenceSystem   influenceSys = InfluenceSystem.GetInstance();
        InfluenceMapPoint mapPoint;

        if (mapIdentifiers[0].Equals("Base", StringComparison.CurrentCultureIgnoreCase))
        {
            WorkingMap queryMap = new WorkingMap();
            queryMap.AddMap(influenceSys.GetInfluenceMapByIDWithTag(mapIdentifiers[1], mapIdentifiers[2]));
            queryMap.Normalize();
            mapPoint = queryMap.GetPointOfHighestInfluence();
        }
        else if (mapIdentifiers[0].Equals("Formula", StringComparison.CurrentCultureIgnoreCase))
        {
            MapFormula formulaToUse = influenceSys.GetMapFormulaByID(mapIdentifiers[1]);
            WorkingMap queryMap     = formulaToUse.ConstructMapFromFormula();
            mapPoint = queryMap.GetPointOfHighestInfluence();
        }
        else
        {
            throw new ArgumentException("Invalid name for influence map in move to operator!");
        }

        InfluenceObjectWorldPoint worldPoint = influenceSys.ConvertMapPosToWorldPos(mapPoint);
        Vector2 newLocation = new Vector2(worldPoint.x, worldPoint.y);

        AgentToOperateOn.transform.position = newLocation;

        InfluenceGameManager influenceManager = GameObject.FindObjectOfType <InfluenceGameManager>();

        influenceManager.UpdateInfluenceSystem();
    }
Exemplo n.º 2
0
    //-----------------------------------------------------------------------------------------------
    private static void ParseOperatorForPrimitiveTask(XmlNode operatorNode, PrimitiveTask task, Domain domain)
    {
        if (task.Op != null)
        {
            throw new ArgumentException("Task " + task.Name + " already has an operator!");
        }

        string operatorName = "";

        if (!TryLoadRequiredAttributeFromXmlNode(operatorNode, "name", ref operatorName))
        {
            throw new ArgumentNullException("Operator missing name!");
        }

        Operator op = domain.GetOperatorByName(operatorName).Clone();

        XmlNodeList paramNodes = operatorNode.ChildNodes;

        foreach (XmlNode paramNode in paramNodes)
        {
            string paramName = "";
            if (!TryLoadRequiredAttributeFromXmlNode(paramNode, "name", ref paramName))
            {
                throw new ArgumentNullException("OperatorParam missing name!");
            }

            string paramValue = "";
            if (!TryLoadRequiredAttributeFromXmlNode(paramNode, "value", ref paramValue))
            {
                throw new ArgumentNullException("OperatorParam " + paramName + " missing value!");
            }

            OperatorParam param = new OperatorParam(paramName, paramValue);
            op.AddParam(param);
        }

        task.Op = op;
    }