public void OnNewMinePathFinded() { List <Ant> allAntInMotherBase = gameModel.instance.getAntListInRange(InMapV3Pos, 2); for (int i = 0; i < allAntInMotherBase.Count; i++) { MinerAnt item = allAntInMotherBase[i].GetComponent <MinerAnt>(); if (item == null) { continue; } if (item.antActivity != Ant.AntActivityState.WalkingAround) { continue; } if (item.resistOrder || !item.acceptOrderProbabilityDetermination()) { continue; } item.antActivity = Ant.AntActivityState.miningResource; item.antMiningActivity = MinerAnt.AntMiningActivityState.followTheMinePath; item.pathCounter = 1; item.pathRecord = newWalkPathToMineReport.deepCopyOutputWP(); item.Destination = item.pathRecord.path[1]; item.chooseNextDestinationAndPath(); item.GetComponent <SpriteRenderer>().color = Color.yellow; } }
void TranPathInfo(MinerAnt target) { //給自己全新記錄 // target.pathRecord = new WalkingPath(pathRecord); pathRecord = new WalkingPath(target.pathRecord); //target.pathCounter = pathCounter; pathCounter = pathRecord.path.Count - 1; //target.Destination = pathRecord.path[ pathCounter ]; // target.startLerpToDestination(); }
IEnumerator MinerExitenumerator( ) { while (saveMinerAnt.Count > 0) { yield return(new WaitForSeconds(0.001f)); if (saveMinerAnt.Count <= 0) { break; } MinerAnt item = saveMinerAnt[saveMinerAnt.Count - 1]; item.GetComponent <SpriteRenderer>().enabled = true; item.OnResetCallBack(); saveMinerAnt.RemoveAt(saveMinerAnt.Count - 1); } }
void CompareOthersMiningPathAndChooseBetterOne() { if (antMiningActivity != AntMiningActivityState.none) { return; } // if (antMiningActivity == AntMiningActivityState.returnToBase) { floorData curFloorData = gameModel.instance.getFloorDatas(InMapV3Pos); //ants_FollowMinePath for (int i = 0; i < curFloorData.ants.Count; i++) { MinerAnt item = curFloorData.ants[i].gameObject.GetComponent <MinerAnt>(); if (!item) { break; } WalkingPath itemWalkingPath = item.pathRecord; if (itemWalkingPath.path.Count <= 0) { break; } /* * if (item.antMiningActivity != AntMiningActivityState.followTheMinePath) { * continue; * } * if (item.pathRecord.serialNumber != pathRecord.serialNumber) { * continue; * } */ if ((itemWalkingPath.path.Count) < (pathRecord.path.Count)) { //如果比較目標的掘礦路徑更為短 就偷他的 TranPathInfo(item); } } // } }
void keyboardTest() { //mouseClickCommandAntMove(); keyboardSpawnAnt(); keyboardRandomSpawnEnemyAntFromMapEdge(); mouseClickSelectAnt(); if (Input.GetKeyDown(KeyCode.B)) { incallback = !incallback; for (int i = 0; i < gameModel.instance.antList.Count; i++) { MinerAnt item = gameModel.instance.antList[i].GetComponent <MinerAnt>(); if (item) { if (incallback) { item.OnCallBack(); } } } if (!incallback) { motherBase.instance.OnMinerExit(); } } if (Input.GetKeyDown(KeyCode.P)) { globalUpdateManager.instance.setTimeSpeed(); } //keyboardSpawnEnemyAnt(); //keyboardDestroyAllEnemyAnt(); //keyboardDestroyAllAnt(); }
public void UnregisterFollowMinePathAntData(MinerAnt ant) { ants_FollowMinePath.Remove(ant); }
public void RegisterFollowMinePathAntData(MinerAnt ant) { ants_FollowMinePath.Add(ant); }
public void OnSomeMinerAntEnterMotherBase(MinerAnt minerAnt) { saveMinerAnt.Add(minerAnt); minerAnt.GetComponent <SpriteRenderer>().enabled = false; }
void tellOtherMinerAntIfHaveMine() { //告知路過的其他螞蟻有好東西 if (antMiningActivity == AntMiningActivityState.returnToBase) { floorData curFloorData = gameModel.instance.getFloorDatas(InMapV3Pos); if (inventory > 0) { for (int i = 0; i < curFloorData.ants_RandWalk.Count; i++) { MinerAnt item = curFloorData.ants_RandWalk[i].gameObject.GetComponent <MinerAnt>(); //如果目標Ant不是礦工單位就不告訴他 if (item == null) { continue; } if (item.resistOrder || !item.acceptOrderProbabilityDetermination()) { continue; } //如果有其他螞蟻無所事事 //就叫他去掘礦 item.antActivity = AntActivityState.miningResource; item.antMiningActivity = AntMiningActivityState.followTheMinePath; item.GetComponent <SpriteRenderer>().color = Color.yellow; //給他全新記錄 item.TranPathInfo(this); //startLerpToDestination(); } } else { for (int i = 0; i < curFloorData.ants_FollowMinePath.Count; i++) { MinerAnt item = curFloorData.ants_FollowMinePath[i].gameObject.GetComponent <MinerAnt>(); //如果目標Ant不是礦工單位就不告訴他 if (item == null) { continue; } if (item.pathRecord.serialNumber != pathRecord.serialNumber) { continue; } if (item.antMiningActivity != AntMiningActivityState.followTheMinePath) { continue; } item.antMiningActivity = AntMiningActivityState.returnToBase; item.GetComponent <SpriteRenderer>().color = Color.gray; //給他全新記錄 item.pathRecord = new WalkingPath(pathRecord); item.pathCounter = pathCounter; item.Destination = item.pathRecord.path[item.pathCounter]; startLerpToDestination(); } } } }