Beispiel #1
0
    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;
        }
    }
Beispiel #2
0
 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();
 }
Beispiel #3
0
    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);
        }
    }
Beispiel #4
0
    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();
    }
Beispiel #6
0
 public void UnregisterFollowMinePathAntData(MinerAnt ant)
 {
     ants_FollowMinePath.Remove(ant);
 }
Beispiel #7
0
 public void RegisterFollowMinePathAntData(MinerAnt ant)
 {
     ants_FollowMinePath.Add(ant);
 }
Beispiel #8
0
 public void OnSomeMinerAntEnterMotherBase(MinerAnt minerAnt)
 {
     saveMinerAnt.Add(minerAnt);
     minerAnt.GetComponent <SpriteRenderer>().enabled = false;
 }
Beispiel #9
0
    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();
                }
            }
        }
    }