private void FindANode() { for (int m = 0; m < enemyBattleManagerScript.myEnemyMiners.Count; m++) { minerMoveToNode = enemyBattleManagerScript.myEnemyMiners[m].GetComponent <MoveToNode>(); // this will be a new miner if (minerMoveToNode.isMovingToNode == false && minerMoveToNode.isAtNode == false) { for (int i = 0; i < enemyBattleManagerScript.myEnemyResources.Count; i++) { Resource resource = enemyBattleManagerScript.myEnemyResources[i].GetComponent <Resource>(); if (!resource.position1Taken || !resource.position2Taken) { // Arius only have units that use gold so he will prefer to find a gold node if (enemyBattleManagerScript.myEnemyResources[i].myResourceType == "Gold") { minerMoveToNode = enemyBattleManagerScript.myEnemyMiners[m].GetComponent <MoveToNode>(); minerMoveToNode.myResource = enemyBattleManagerScript.myEnemyResources[i].transform.gameObject; minerMoveToNode.isMovingToNode = true; break; } } } } } }
// Use this for initialization void Start() { myStats = GetComponent <UnitStats>(); animator = GetComponent <Animator>(); minerAtNode = GetComponent <MoveToNode>(); playerBattleManager = GameObject.Find("PlayerBattleManager"); enemyBattleManager = GameObject.Find("EnemyBattleManager"); playerBattleManagerScript = playerBattleManager.GetComponent <PlayerBattleManager>(); enemyBattleManagerScript = enemyBattleManager.GetComponent <EnemyBattleManager>(); // check if I am an enemy or player miner and add me to their list if (gameObject.tag == "PlayerMiner") { playerBattleManagerScript.myPlayerMiners.Add(gameObject); playerBattleManagerScript.mySpawnedUnits.Add(gameObject); // Add player upgrades here playerMiningGain = (20 + MinersStatsUpgradesStatic.pokoMinerResourceMiningGainUpgrade); myStats.unitCurrentMoveSpeed = (myStats.unitMoveSpeed + MinersStatsUpgradesStatic.pokoMinerMoveSpeedUpgrade); myStats.health += MinersStatsUpgradesStatic.pokoMinerHealthUpgrade; miningGain = playerMiningGain + 200; } else { enemyBattleManagerScript.myEnemyMiners.Add(gameObject); enemyBattleManagerScript.mySpawnedUnits.Add(gameObject); // need to add enemy miner adjustments here based on the AIs personal upgrades } }
public virtual void DoMoveToUnit(UnitNode pToUnit, bool bFixRotation, float fMaxHeightDelta, float duration, Function onFinished) { ActionInterval act = new MoveToNode(duration, pToUnit, true, fMaxHeightDelta); act = new Sequence(act, new CallFunc(onFinished)); act.tag = kActionMoveTo; runAction(act); }
public override void Go() { scripts = new List <MoveToNode>(); foreach (KeyValuePair <Actor, HexTile> pair in actorsToMove) { MoveToNode moveScript = MoveToNode.Create(pair.Key, pair.Value); scripts.Add(moveScript); pair.Key.actionQueue.AddToFront(moveScript); } }
private void SelectAndMoveMiner() { if (Input.GetMouseButtonDown(0)) { Physics2D.queriesHitTriggers = false; RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); Physics2D.queriesHitTriggers = true; if (hit.collider != null) { if (hit.collider.transform.gameObject.tag == "PlayerMiner") { // if I selected a new miner then remove the icon from old miner if (selectedMiner != null && selectedMiner != hit.collider.transform.gameObject) { GameObject newChildSprite = selectedMiner.transform.GetChild(0).gameObject; SpriteRenderer newChangeSprite = newChildSprite.GetComponent <SpriteRenderer>(); Color newAlpha = newChangeSprite.color; newAlpha.a = 0; newChangeSprite.color = newAlpha; } // then apply icon to the new miner selectedMiner = hit.collider.transform.gameObject; GameObject childSprite = selectedMiner.transform.GetChild(0).gameObject; SpriteRenderer changeSprite = childSprite.GetComponent <SpriteRenderer>(); Color alpha = changeSprite.color; alpha.a = 255; changeSprite.color = alpha; } else if (hit.collider.transform.gameObject.tag == "PlayerResource" && selectedMiner != null) { MoveToNode moveMiner = selectedMiner.GetComponent <MoveToNode>(); moveMiner.myResource = hit.collider.transform.gameObject; moveMiner.isMovingToNode = true; } } else { if (selectedMiner != null) { GameObject childSprite = selectedMiner.transform.GetChild(0).gameObject; SpriteRenderer changeSprite = childSprite.GetComponent <SpriteRenderer>(); Color alpha = changeSprite.color; alpha.a = 0; changeSprite.color = alpha; selectedMiner = null; } } } }
IEnumerator MoveTo(GameObject target) { previousNode = currentNode; MoveToNode move = GetComponent <MoveToNode>(); moving = true; Vector3 targetPosition = target.transform.position; targetPosition.z = 0; int happinessChange = (int)Vector3.Distance(transform.position, targetPosition); while (Vector3.Distance(transform.position, targetPosition) >= 0.05f) { if (moving) { move.MoveToGameObject(targetPosition); GameMaster.Instance.travelTime += Time.deltaTime; } yield return(null); } moving = false; GameMaster.Instance.foodStored -= (happinessChange * GameMaster.Instance.activeDuders.Count); if (GameMaster.Instance.foodStored < 0) { happinessChange = -(GameMaster.Instance.foodStored / 3); GameMaster.Instance.foodStored = 0; } else { happinessChange = 0; } foreach (GameObject duder in GameMaster.Instance.activeDuders) { duder.GetComponent <DuderScript>().ChangeHappiness(-happinessChange); } currentNode = target; ClearLines(); UpdateNode(); GameMaster.Instance.locationText.text = currentNode.GetComponent <MapNode>().nodeName; GameMaster.Instance.UpdateDudertext(); GameMaster.Instance.StartCityEvent(currentNode.GetComponent <MapNode>()); }
private void StartMining() { startMining = true; // send the miners to mine the gold nodes right away. Arius will only ever start with 2 miners. for (int i = 0; i < enemyBattleManagerScript.myEnemyMiners.Count; i++) { for (int j = 0; j < enemyBattleManagerScript.myEnemyResources.Count; j++) { if (enemyBattleManagerScript.myEnemyResources[j].myResourceType == "Gold") { minerMoveToNode = enemyBattleManagerScript.myEnemyMiners[i].GetComponent <MoveToNode>(); minerMoveToNode.myResource = enemyBattleManagerScript.myEnemyResources[j].transform.gameObject; minerMoveToNode.isMovingToNode = true; break; } } } }
private void Start() { this.hexGrid.Centre.Inhabit(this.playerPartyActor); //this.playerPartyActor.InhabitedNode = this.hexGrid.Centre; this.hexGrid.Centre.inhabitingActor = playerPartyActor; this.playerPartyActor.transform.position = hexGrid.Centre.gameObject.transform.position; this.playerPartyActor.GetComponent <Engine.Actions.ActionQueue>().AddToFront(MoveToNode.CreateComponent(this.playerPartyActor.gameObject, this.hexGrid.Centre, this.hexGrid.Centre)); }
public void MoveToTile(HexTile tile) { if (tile == null) { Debug.Log("A collider was detected that wasn't a tile! Is there a configuration issue?"); return; } Debug.DrawLine(actor.transform.position, tile.transform.position); actor.InhabitedNode.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast"); var hit = Physics2D.Linecast(actor.transform.position, tile.transform.position, 1 << LayerMask.NameToLayer("Traversable")); actor.InhabitedNode.gameObject.layer = LayerMask.NameToLayer("Traversable"); if (hit.collider != null) { HexTile nearestTile = hit.collider.gameObject.GetComponent <HexTile>(); if (tile != null) { this.actor.GetComponent <Engine.Actions.ActionQueue>().AddToFront(MoveToNode.CreateComponent(this.actor.gameObject, this.actor.InhabitedNode, nearestTile)); } } }