public override BTStatus Execute() { MinerRef.SB.ArriveOn(mBB.MiningTarget.transform.position + new Vector3(Random.Range(-2, 2), Random.Range(-2, 2), Random.Range(-2, 2)), 2.9f, 0.1f); if (Vector3.Distance(MinerRef.transform.position, mBB.MiningTarget.transform.position) <= 5) //Wait until the ship has arrived { MinerRef.SB.ResetBehaviours(); return(BTStatus.SUCCESS); } else if (mBB.depositing == true) { return(BTStatus.SUCCESS); } if (MinerRef.CheckDistanceFromTarget() == true) { // mBB.fleeing = true; return(BTStatus.FAILURE); } else { mBB.fleeing = false; } // else if(mBB.fleeing==true) //Make the Miner flee // { // Debug.Log("FLEEING"); // return BTStatus.FAILURE; // } return(BTStatus.RUNNING); }
public override bool CheckStatus() { if (mBB != null) { mBB.MiningTarget = MinerRef.MiningTarget; if (mBB.MiningTarget != null && mBB.fleeing == false) //If an asteroid has been discovered and the ship isn't being chased, mine { return(true); } else { // MinerRef.SB.ResetBehaviours(); //Reset all behaviours except obstacle avoidance so that the ship stops its current behaviour } } if (MinerRef.CheckDistanceFromTarget() == true) { mBB.fleeing = true; return(false); } else { mBB.fleeing = false; MinerRef.SB.ResetBehaviours(); } return(false); }
public override BTStatus Execute() { if (Time.time - lastmine >= MinerRef.MineSpeed) //Only mine as fast as the desired speed { lastmine = Time.time; if (Vector3.Distance(mBB.MiningTarget.transform.position, MinerRef.transform.position) < 5.0f) //Mine from the asteroid { if (mBB.MiningTarget.GoldCount != 0) { MinerRef.ResourceUnit += mBB.MiningTarget.Extract(MinerRef.MineStrength); } } } if (MinerRef.CheckDistanceFromTarget() == true) { // mBB.fleeing = true; return(BTStatus.FAILURE); } else { mBB.fleeing = false; } if (MinerRef.ResourceUnit >= MinerRef.MaximumResourceStorage || mBB.MiningTarget.GoldCount == 0 && mBB.HQ != null) { if (mBB.HQ != null) { MinerRef.SB.ArriveOn(mBB.HQ.transform.position + new Vector3(Random.Range(-2, 2), Random.Range(-2, 2), Random.Range(-2, 2)), 2.9f, 0.1f); } return(BTStatus.SUCCESS); } return(BTStatus.RUNNING); }