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); } }
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)); } } } }