コード例 #1
0
 public void CacheOre(MapId mapId, OreNode displayId, Vector3 position)
 {
     if (!OreNodes.ContainsKey(mapId))
     {
         OreNodes.TryAdd(mapId, new Dictionary <OreNode, List <Vector3> >()
         {
             { displayId, new List <Vector3>()
               {
                   position
               } }
         });
     }
     else if (!OreNodes[mapId].ContainsKey(displayId))
     {
         OreNodes[mapId].Add(displayId, new List <Vector3>()
         {
             position
         });
     }
     else if (!OreNodes[mapId][displayId].Any(e => e == position))
     {
         OreNodes[mapId][displayId].Add(position);
     }
 }
コード例 #2
0
    public void stateMine()
    {
        if (currentCarry >= maxCarry)
        {
            TraverseList.Clear();
            targetSet     = false;
            targetInRange = false;
            stateManager  = "bank";
            return;
        }

        if (health < maxHealth * 0.25 || enemyUnitList.Count > alliedUnitList.Count)
        {
            TraverseList.Clear();
            targetSet     = false;
            targetInRange = false;
            stateManager  = "flee";
            return;
        }

        else
        {
            if (targetSet == false)
            {
                if (TargetNodeType == "iron")
                {
                    targetNode = ironNodesList[Random.Range(0, ironNodesList.Count)];
                }

                if (TargetNodeType == "food")
                {
                    targetNode = foodNodesList[Random.Range(0, foodNodesList.Count)];
                }

                triggerObj = targetNode.gameObject;
                getPathToObject(gameObject, targetNode.gameObject);
                targetSet = true;
            }



            if (targetInRange == true)
            {
                targetNode.storedValue -= gatherRate * Time.deltaTime;

                if (TargetNodeType == "food")
                {
                    FoodCarry    += gatherRate * Time.deltaTime;
                    currentCarry += gatherRate * Time.deltaTime;
                }

                if (TargetNodeType == "iron")
                {
                    ironCarry    += gatherRate * Time.deltaTime;
                    currentCarry += gatherRate * Time.deltaTime;
                }
            }


            else
            {
                if (TraverseList.Count > 0)
                {
                    if (Vector3.Distance(transform.position, graphReference.nodeList[TraverseList[0]].transform.position) > 1.0f)
                    {
                        transform.position = Vector3.MoveTowards(transform.position, graphReference.nodeList[TraverseList[0]].transform.position, (speed * Time.deltaTime));
                    }
                    else
                    {
                        TraverseList.RemoveAt(0);
                    }
                }

                else
                {
                    transform.position = Vector3.MoveTowards(transform.position, targetNode.gameObject.transform.position, (speed * Time.deltaTime));
                }
            }
        }
    }