Beispiel #1
0
 public void Setup(TYPE_GV_SEGMENT _type, Color colorShow, Color colorHide)
 {
     this.type = _type;
     bool[] listCheckLaneShow = new bool[3];
     if (type == TYPE_GV_SEGMENT.LANE1)
     {
         listCheckLaneShow[0] = true;
         listCheckLaneShow[1] = false;
         listCheckLaneShow[2] = false;
     }
     else if (type == TYPE_GV_SEGMENT.LANE12)
     {
         listCheckLaneShow[0] = true;
         listCheckLaneShow[1] = true;
         listCheckLaneShow[2] = false;
     }
     else if (type == TYPE_GV_SEGMENT.LANE23)
     {
         listCheckLaneShow[0] = false;
         listCheckLaneShow[1] = true;
         listCheckLaneShow[2] = true;
     }
     else if (type == TYPE_GV_SEGMENT.LANE13)
     {
         listCheckLaneShow[0] = true;
         listCheckLaneShow[1] = false;
         listCheckLaneShow[2] = true;
     }
     else if (type == TYPE_GV_SEGMENT.LANE123)
     {
         listCheckLaneShow[0] = true;
         listCheckLaneShow[1] = true;
         listCheckLaneShow[2] = true;
     }
     else if (type == TYPE_GV_SEGMENT.LANE2)
     {
         listCheckLaneShow[0] = false;
         listCheckLaneShow[1] = true;
         listCheckLaneShow[2] = false;
     }
     else if (type == TYPE_GV_SEGMENT.LANE3)
     {
         listCheckLaneShow[0] = false;
         listCheckLaneShow[1] = false;
         listCheckLaneShow[2] = true;
     }
     Apply(listCheckLaneShow, colorShow, colorHide);
 }
Beispiel #2
0
    public void AddLane(TYPE_GV_SEGMENT[] listTypeGVSegment, int posStart, int countSegment)
    {
        List <TYPE_GV_SEGMENT> listAddLine = new List <TYPE_GV_SEGMENT>();
        TYPE_GV_SEGMENT        lastLine    = listTypeGVSegment[posStart - 1];
        bool found = false;

        for (int i = posStart; i >= 0; i--)
        {
            if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE1 || listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE12)
            {
                lastLine = TYPE_GV_SEGMENT.LANE3;
                found    = true;
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE3 || listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE23)
            {
                lastLine = TYPE_GV_SEGMENT.LANE1;
                found    = true;
            }
        }
        if (!found)
        {
            if (lastLine == TYPE_GV_SEGMENT.LANE12)
            {
                lastLine = TYPE_GV_SEGMENT.LANE1;
            }
            else if (lastLine == TYPE_GV_SEGMENT.LANE23)
            {
                lastLine = TYPE_GV_SEGMENT.LANE3;
            }
            else if (lastLine == TYPE_GV_SEGMENT.LANE13)
            {
                lastLine = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE1 : TYPE_GV_SEGMENT.LANE3;
            }
        }

        while (listAddLine.Count < countSegment - posStart)
        {
            int r = Random.Range(0, 4) / 3;
            if (r == 0)
            {
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listAddLine.Add(Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123);
                    listAddLine.Add(Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE123 : TYPE_GV_SEGMENT.LANE12);
                    listAddLine.Add(Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123);
                    listAddLine.Add(Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE1 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE13 : TYPE_GV_SEGMENT.LANE123);
                }
                else
                {
                    listAddLine.Add(Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123);
                    listAddLine.Add(Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE123 : TYPE_GV_SEGMENT.LANE23);
                    listAddLine.Add(Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123);
                    listAddLine.Add(Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE3 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE13 : TYPE_GV_SEGMENT.LANE123);
                }
            }
            else
            {
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listAddLine.Add(TYPE_GV_SEGMENT.LANE13);
                    listAddLine.Add(TYPE_GV_SEGMENT.LANE3);
                    lastLine = TYPE_GV_SEGMENT.LANE3;
                }
                else
                {
                    listAddLine.Add(TYPE_GV_SEGMENT.LANE13);
                    listAddLine.Add(TYPE_GV_SEGMENT.LANE1);
                    lastLine = TYPE_GV_SEGMENT.LANE1;
                }
            }
            lastLine = listAddLine[listAddLine.Count - 1];
        }
        for (int i = posStart; i < countSegment; i++)
        {
            listTypeGVSegment[i] = listAddLine[i - posStart];
        }
    }
Beispiel #3
0
 private void RandomAddDoubleSegment(List <TYPE_GV_SEGMENT> listSM, TYPE_GV_SEGMENT typeAdd)
 {
 }
Beispiel #4
0
    public void SetupStage(bool isHasDoor, TYPE_GV_SEGMENT forcelastSegmentBf, TYPE_GV_SEGMENT realForceSegment, bool isNeedAddEnemy)
    {
        bool isAddedEnemy = false;
        int  countSegment = (int)(4 + 4f * MapScreenManager.Instance.levelMap / 7);

        lengthSegment     = 12.8f / countSegment;
        listTypeGVSegment = new TYPE_GV_SEGMENT[countSegment];
        TYPE_GV_SEGMENT lastSegmentBf = realForceSegment;

        listTypeGVSegment[0] = forcelastSegmentBf;
        int posStartAddLane   = 1;
        int posStartTraceLane = 1;

        if (isNeedAddEnemy)
        {
            // xac dinh type enemy add
            int maxTypeEnemy       = MapScreenManager.Instance.levelMap > 3 ? 2 : MapScreenManager.Instance.levelMap - 1;
            int typeEnemy          = Random.Range(0, maxTypeEnemy + 1);
            int lengthSegmentEnemy = 2;
            // rendom vi tri cua enemy
            int posStartSegmentEnemey = Random.Range(1, countSegment - lengthSegmentEnemy + 1);
            posStartTraceLane = posStartSegmentEnemey - 1;
            posStartAddLane   = posStartSegmentEnemey + lengthSegmentEnemy;
            for (int i = posStartSegmentEnemey; i < posStartSegmentEnemey + lengthSegmentEnemy; i++)
            {
                listTypeGVSegment[i] = TYPE_GV_SEGMENT.LANE13;
            }
            // if need traceLane, traceLane
            if (posStartTraceLane != 1)
            {
                TraceLane(listTypeGVSegment, posStartTraceLane, countSegment);
            }
            //  posStartAddLane += 1;
        }



        // addLane.
        if (posStartAddLane < countSegment)
        {
            AddLane(listTypeGVSegment, posStartAddLane, countSegment);
        }

        // phan tich map
        bool[] lane1 = new bool[countSegment];
        bool[] lane2 = new bool[countSegment];
        bool[] lane3 = new bool[countSegment];
        for (int i = 0; i < countSegment; i++)
        {
            if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE1)
            {
                lane1[i] = true;
                lane2[i] = false;
                lane3[i] = false;
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE2)
            {
                lane1[i] = false;
                lane2[i] = true;
                lane3[i] = false;
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE3)
            {
                lane1[i] = false;
                lane2[i] = false;
                lane3[i] = true;
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE12)
            {
                lane1[i] = true;
                lane2[i] = true;
                lane3[i] = false;
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE13)
            {
                lane1[i] = true;
                lane2[i] = false;
                lane3[i] = true;
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE123)
            {
                lane1[i] = true;
                lane2[i] = true;
                lane3[i] = true;
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE23)
            {
                lane1[i] = false;
                lane2[i] = true;
                lane3[i] = true;
            }
        }

        /*
         * for (int i = 1; i < countSegment - 1; i++)
         * {
         *  if (lane1[i] && !lane1[i - 1] && !lane1[i + 1])
         *  {
         *      lane1[i] = false;
         *  }
         *  if (lane2[i] && !lane2[i - 1] && !lane2[i + 1])
         *  {
         *      lane2[i] = false;
         *  }
         *  if (lane3[i] && !lane3[i - 1] && !lane3[i + 1])
         *  {
         *      lane3[i] = false;
         *  }
         * }
         *
         * {
         *  bool isMerge = true;
         *  for (int i = 1; i < countSegment - 1; i++)
         *  {
         *      if (!lane2[i] && lane2[i - 1] && lane2[i + 1])
         *      {
         *          if (isMerge)
         *          {
         *              lane2[i] = true;
         *          }
         *          isMerge = !isMerge;
         *
         *      }
         *  }
         * }
         *
         * {
         *  bool isMerge = true;
         *  for (int i = 1; i < countSegment - 1; i++)
         *  {
         *      if (!lane3[i] && lane3[i - 1] && lane3[i + 1])
         *      {
         *          if (isMerge)
         *          {
         *              lane3[i] = true;
         *          }
         *          isMerge = !isMerge;
         *
         *      }
         *  }
         * }
         *
         * {
         *  bool isMerge = true;
         *  for (int i = 1; i < countSegment - 1; i++)
         *  {
         *      if (!lane1[i] && lane1[i - 1] && lane1[i + 1])
         *      {
         *          if (isMerge)
         *          {
         *              lane1[i] = true;
         *          }
         *          isMerge = !isMerge;
         *
         *      }
         *  }
         * }
         */
        // read map 1 lan nua, nguyen tac la thang nao le loi kieu mot minh thi vut ra sot rac


        for (int i = 0; i < countSegment; i++)
        {
            if (lane1[i])
            {
                if (lane2[i])
                {
                    if (lane3[i])
                    {
                        listTypeGVSegment[i] = TYPE_GV_SEGMENT.LANE123;
                    }
                    else
                    {
                        listTypeGVSegment[i] = TYPE_GV_SEGMENT.LANE12;
                    }
                }
                else
                {
                    if (lane3[i])
                    {
                        listTypeGVSegment[i] = TYPE_GV_SEGMENT.LANE13;
                    }
                    else
                    {
                        listTypeGVSegment[i] = TYPE_GV_SEGMENT.LANE1;
                    }
                }
            }
            else
            {
                if (lane2[i])
                {
                    if (lane3[i])
                    {
                        listTypeGVSegment[i] = TYPE_GV_SEGMENT.LANE23;
                    }
                    else
                    {
                        listTypeGVSegment[i] = TYPE_GV_SEGMENT.LANE2;
                    }
                }
                else
                {
                    if (lane3[i])
                    {
                        listTypeGVSegment[i] = TYPE_GV_SEGMENT.LANE3;
                    }
                }
            }
        }

        // create door
        int[,] dfsMap = new int[countSegment, 4];
        for (int i = 0; i < countSegment; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                dfsMap[i, j] = -1;
            }
        }
        if (forcelastSegmentBf == TYPE_GV_SEGMENT.LANE1)
        {
            dfsMap[0, 0] = 1;
        }
        else if (forcelastSegmentBf == TYPE_GV_SEGMENT.LANE2)
        {
            dfsMap[0, 1] = 1;
            dfsMap[0, 2] = 1;
        }
        else if (forcelastSegmentBf == TYPE_GV_SEGMENT.LANE3)
        {
            dfsMap[0, 3] = 1;
        }
        else if (forcelastSegmentBf == TYPE_GV_SEGMENT.LANE12)
        {
            dfsMap[0, 0] = 1;
            dfsMap[0, 1] = 1;
        }
        else if (forcelastSegmentBf == TYPE_GV_SEGMENT.LANE13)
        {
            dfsMap[0, 0] = 1;
            dfsMap[0, 3] = 1;
        }
        else if (forcelastSegmentBf == TYPE_GV_SEGMENT.LANE123)
        {
            dfsMap[0, 0] = 1;
            dfsMap[0, 3] = 1;
            dfsMap[0, 1] = 1;
            dfsMap[0, 2] = 1;
        }
        else if (forcelastSegmentBf == TYPE_GV_SEGMENT.LANE23)
        {
            dfsMap[0, 3] = 1;
            dfsMap[0, 2] = 1;
        }
        for (int i = 1; i < countSegment; i++)
        {
            if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE1)
            {
                if (dfsMap[i - 1, 0] != -1)
                {
                    dfsMap[i, 0] = 0;
                }
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE2)
            {
                if (dfsMap[i - 1, 1] != -1)
                {
                    dfsMap[i, 1] = 1;
                }
                if (dfsMap[i - 1, 2] != -1)
                {
                    dfsMap[i, 2] = 2;
                }
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE3)
            {
                if (dfsMap[i - 1, 3] != -1)
                {
                    dfsMap[i, 3] = 3;
                }
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE12)
            {
                if (dfsMap[i - 1, 0] != -1)
                {
                    dfsMap[i, 0] = 0;
                    dfsMap[i, 1] = 0;
                }
                else if (dfsMap[i - 1, 1] != -1)
                {
                    dfsMap[i, 0] = 1;
                    dfsMap[i, 1] = 1;
                }
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE13)
            {
                if (dfsMap[i - 1, 0] != -1)
                {
                    dfsMap[i, 0] = 0;
                    dfsMap[i, 3] = 0;
                }
                else if (dfsMap[i - 1, 3] != -1)
                {
                    dfsMap[i, 0] = 3;
                    dfsMap[i, 3] = 3;
                }
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE123)
            {
                if (dfsMap[i - 1, 0] != -1)
                {
                    dfsMap[i, 0] = 0;
                    dfsMap[i, 1] = 0;
                }
                else if (dfsMap[i - 1, 1] != -1)
                {
                    dfsMap[i, 0] = 1;
                    dfsMap[i, 1] = 1;
                }
                if (dfsMap[i - 1, 2] != -1)
                {
                    dfsMap[i, 3] = 2;
                    dfsMap[i, 2] = 2;
                }
                else if (dfsMap[i - 1, 3] != -1)
                {
                    dfsMap[i, 3] = 3;
                    dfsMap[i, 2] = 3;
                }
            }
            else if (listTypeGVSegment[i] == TYPE_GV_SEGMENT.LANE23)
            {
                if (dfsMap[i - 1, 2] != -1)
                {
                    dfsMap[i, 3] = 2;
                    dfsMap[i, 2] = 2;
                }
                else if (dfsMap[i - 1, 3] != -1)
                {
                    dfsMap[i, 3] = 3;
                    dfsMap[i, 2] = 3;
                }
            }
        }


        for (int i = posStartTraceLane; i < posStartTraceLane + 1; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                dfsMap[i, j] = -1;
            }
        }
        int cellXDoor = 0;
        int cellYDoor = 0;

        // remove path

        {
            List <int> listPossibilyYTrace = new List <int>();
            for (int i = 0; i < 4; i++)
            {
                if (dfsMap[countSegment - 1, i] != -1)
                {
                    listPossibilyYTrace.Add(i);
                }
            }
            if (listPossibilyYTrace.Count > 0)
            {
                int xTrace    = countSegment - 1;
                int yTrace    = listPossibilyYTrace[Random.Range(0, listPossibilyYTrace.Count)];
                int oldYTrace = yTrace;
                while (xTrace > 0 && dfsMap[xTrace, yTrace] != -1)
                {
                    oldYTrace = yTrace;
                    yTrace    = dfsMap[xTrace, yTrace];
                    dfsMap[xTrace, oldYTrace] = -1;
                    xTrace -= 1;
                }
                {
                    List <int> listPossibilityXDoor = new List <int>();
                    List <int> listPossibilityYDoor = new List <int>();
                    for (int i = 2; i < countSegment; i++)
                    {
                        for (int j = 0; j < 4; j++)
                        {
                            if (dfsMap[i, j] != -1)
                            {
                                listPossibilityXDoor.Add(i);
                                listPossibilityYDoor.Add(j);
                            }
                        }
                    }
                    int r = Random.Range(0, listPossibilityXDoor.Count);
                    cellXDoor = listPossibilityXDoor[r];
                    cellYDoor = listPossibilityYDoor[r];
                }
            }
        }
        //



        // loop kien tao map.

        for (int i = 0; i < countSegment; i++)
        {
            GameObject go = Instantiate(modelLane) as GameObject;
            go.transform.localScale = new Vector3(lengthSegment, 1, 1);
            go.transform.SetParent(transform);
            listEnemies.Add(go);
            if (idStage == 0)
            {
                go.transform.localPosition = new Vector3(-6.4f + (i + 0.5f) * lengthSegment, 0, 0);
            }
            else
            {
                go.transform.localPosition = new Vector3(6.4f - (i + 0.5f) * lengthSegment, 0, 0);
            }
            GVMapLine lineScript = go.GetComponent <GVMapLine>();
            lineScript.Setup(listTypeGVSegment[i], subColor, mainColor);
        }


        if (isNeedAddEnemy)
        {
            int        maxRdEnemy = 0;
            GameObject modelInit  = null;
            if (MapScreenManager.Instance.levelMap == 1 || MapScreenManager.Instance.levelMap == 4)
            {
            }
            else if (MapScreenManager.Instance.levelMap == 2 || MapScreenManager.Instance.levelMap == 5)
            {
                maxRdEnemy = 1;
            }
            else if (MapScreenManager.Instance.levelMap == 3 || MapScreenManager.Instance.levelMap == 6)
            {
                maxRdEnemy = 2;
            }
            else
            {
                maxRdEnemy = 2;
            }
            int r = Random.Range(0, maxRdEnemy + 1);
            if (r == 0)
            {
                modelInit = modelEnemyHoz;
            }
            else if (r == 1)
            {
                modelInit = modelEnemyVer;
            }
            else if (r == 2)
            {
                modelInit = modelEnemyRot;
            }
            GameObject go = Instantiate(modelInit) as GameObject;
            go.transform.SetParent(transform);
            listEnemies.Add(go);
            if (idStage == 0)
            {
                go.transform.position = new Vector3(-6.4f + (posStartTraceLane + 2f) * lengthSegment, transform.position.y + 1.8f, -0.1f);
            }
            else
            {
                go.transform.position = new Vector3(6.4f - (posStartTraceLane + 2f) * lengthSegment, transform.position.y + 1.8f, -0.1f);
            }
            GVMapEnemy enemyScript = go.GetComponent <GVMapEnemy>();
            if (r == 0)
            {
                enemyScript.InitLR(2 * lengthSegment, subColor);
            }
            else if (r == 1)
            {
                enemyScript.InitBT(subColor);
            }
            else if (r == 2)
            {
                enemyScript.InitRotate(subColor);
            }
        }
    }
Beispiel #5
0
    public void TraceLane(TYPE_GV_SEGMENT[] listTypeGVSegment, int _posEnd, int countSegment)
    {
        int             posEnd   = _posEnd % 2 == 0 ? _posEnd : _posEnd + 1;
        TYPE_GV_SEGMENT lastLine = listTypeGVSegment[0];

        if (lastLine == TYPE_GV_SEGMENT.LANE12)
        {
            lastLine = TYPE_GV_SEGMENT.LANE1;
        }
        else if (lastLine == TYPE_GV_SEGMENT.LANE23)
        {
            lastLine = TYPE_GV_SEGMENT.LANE3;
        }
        else if (lastLine == TYPE_GV_SEGMENT.LANE13)
        {
            lastLine = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE1 : TYPE_GV_SEGMENT.LANE3;
        }
        if (posEnd == 2)
        {
            int r = Random.Range(3, 7) / 4;
            if (r == 0)
            {
                listTypeGVSegment[1] = TYPE_GV_SEGMENT.LANE13;
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listTypeGVSegment[2] = TYPE_GV_SEGMENT.LANE3;
                }
                else
                {
                    listTypeGVSegment[2] = TYPE_GV_SEGMENT.LANE1;
                }
            }
            else
            {
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listTypeGVSegment[1] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[2] = TYPE_GV_SEGMENT.LANE1;
                }
                else
                {
                    listTypeGVSegment[1] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[2] = TYPE_GV_SEGMENT.LANE3;
                }
            }
        }
        else if (posEnd == 4)
        {
            int r = Random.Range(3, 7) / 4;
            if (r == 0)
            {
                listTypeGVSegment[1] = TYPE_GV_SEGMENT.LANE13;
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listTypeGVSegment[2] = TYPE_GV_SEGMENT.LANE3;
                    listTypeGVSegment[3] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[4] = TYPE_GV_SEGMENT.LANE1;
                }
                else
                {
                    listTypeGVSegment[2] = TYPE_GV_SEGMENT.LANE1;
                    listTypeGVSegment[3] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[4] = TYPE_GV_SEGMENT.LANE3;
                }
            }
            else if (r == 1)
            {
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listTypeGVSegment[1] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[2] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE123 : TYPE_GV_SEGMENT.LANE12;
                    listTypeGVSegment[3] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[4] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE1 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE13 : TYPE_GV_SEGMENT.LANE123;
                }
                else
                {
                    listTypeGVSegment[1] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[2] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE123 : TYPE_GV_SEGMENT.LANE23;
                    listTypeGVSegment[3] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[4] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                }
            }
        }
        else if (posEnd == 6)
        {
            int r = Random.Range(2, 8) / 3;
            if (r == 0)
            {
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listTypeGVSegment[1] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[2] = TYPE_GV_SEGMENT.LANE3;
                    listTypeGVSegment[3] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[4] = TYPE_GV_SEGMENT.LANE1;
                    listTypeGVSegment[5] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[6] = TYPE_GV_SEGMENT.LANE3;
                }
                else
                {
                    listTypeGVSegment[1] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[2] = TYPE_GV_SEGMENT.LANE1;
                    listTypeGVSegment[3] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[4] = TYPE_GV_SEGMENT.LANE3;
                    listTypeGVSegment[5] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[6] = TYPE_GV_SEGMENT.LANE1;
                }
            }
            else if (r == 1)
            {
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listTypeGVSegment[1] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[2] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE123 : TYPE_GV_SEGMENT.LANE12;
                    listTypeGVSegment[3] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[4] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE1 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE13 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[5] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[6] = TYPE_GV_SEGMENT.LANE3;
                }
                else
                {
                    listTypeGVSegment[1] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[2] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE123 : TYPE_GV_SEGMENT.LANE23;
                    listTypeGVSegment[3] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[4] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE3 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[5] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[6] = TYPE_GV_SEGMENT.LANE1;
                }
            }
            else if (r == 2)
            {
                if (lastLine == TYPE_GV_SEGMENT.LANE1)
                {
                    listTypeGVSegment[5] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[6] = TYPE_GV_SEGMENT.LANE3;
                    listTypeGVSegment[1] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[2] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE123 : TYPE_GV_SEGMENT.LANE23;

                    listTypeGVSegment[3] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[4] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : TYPE_GV_SEGMENT.LANE123;
                }
                else
                {
                    listTypeGVSegment[5] = TYPE_GV_SEGMENT.LANE13;
                    listTypeGVSegment[6] = TYPE_GV_SEGMENT.LANE1;
                    listTypeGVSegment[1] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[2] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE2 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE23 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE123 : TYPE_GV_SEGMENT.LANE12;
                    listTypeGVSegment[3] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE12 : TYPE_GV_SEGMENT.LANE123;
                    listTypeGVSegment[4] = Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE1 : Random.Range(0, 2) == 0 ? TYPE_GV_SEGMENT.LANE13 : TYPE_GV_SEGMENT.LANE123;
                }
            }
        }
        if (_posEnd % 2 == 1)
        {
            listTypeGVSegment[posEnd] = TYPE_GV_SEGMENT.LANE13;
        }
    }
Beispiel #6
0
    public override void Tap()
    {
        if (playerState == MAP_PLAYER_STATE.MOVING)
        {
            playerState = MAP_PLAYER_STATE.JUMP;
            velocityY   = baseVelocityY;
            float currPosX = transform.position.x;

            int right = 0;
            int left  = 0;
            if (noStage == 1)
            {
                right = (int)(Mathf.Abs(6.4f - currPosX - 0.25f - 0.2f) / currGvStage.lengthSegment);
                left  = (int)(Mathf.Abs(6.4f - currPosX - 0.25f + 0.2f) / currGvStage.lengthSegment);
            }
            else
            {
                right = (int)(Mathf.Abs(currPosX + 6.4f + 0.25f + 0.2f) / currGvStage.lengthSegment);
                left  = (int)(Mathf.Abs(currPosX + 6.4f + 0.25f - 0.2f) / currGvStage.lengthSegment);
            }

            if (right < currGvStage.listTypeGVSegment.Length)
            {
                float destY = 0;
                if (right == left)
                {
                    TYPE_GV_SEGMENT currTypeSegment = currGvStage.listTypeGVSegment[right];

                    if (typePos == TYPE_GV_POS.POS1)
                    {
                        if (currTypeSegment == TYPE_GV_SEGMENT.LANE12 || currTypeSegment == TYPE_GV_SEGMENT.LANE123 || currTypeSegment == TYPE_GV_SEGMENT.LANE2 || currTypeSegment == TYPE_GV_SEGMENT.LANE23)
                        {
                            // move to pos 2
                            typePos = TYPE_GV_POS.POS2;
                        }
                        else
                        {
                            // move to pos 4
                            typePos = TYPE_GV_POS.POS4;
                        }
                    }
                    else if (typePos == TYPE_GV_POS.POS2)
                    {
                        // move to pos 1
                        typePos = TYPE_GV_POS.POS1;
                    }
                    else if (typePos == TYPE_GV_POS.POS3)
                    {
                        // move to pos 4
                        typePos = TYPE_GV_POS.POS4;
                    }
                    else if (typePos == TYPE_GV_POS.POS4)
                    {
                        if (currTypeSegment == TYPE_GV_SEGMENT.LANE23 || currTypeSegment == TYPE_GV_SEGMENT.LANE123 || currTypeSegment == TYPE_GV_SEGMENT.LANE2 || currTypeSegment == TYPE_GV_SEGMENT.LANE12)
                        {
                            // move to pos 3
                            typePos = TYPE_GV_POS.POS3;
                        }
                        else
                        {
                            // move to pos 1
                            typePos = TYPE_GV_POS.POS1;
                        }
                    }
                }
                else
                {
                    TYPE_GV_SEGMENT rightTypeSegment = currGvStage.listTypeGVSegment[right];
                    TYPE_GV_SEGMENT leftTypeSegment  = currGvStage.listTypeGVSegment[left];

                    if (typePos == TYPE_GV_POS.POS2)
                    {
                        // move to pos 1
                        typePos = TYPE_GV_POS.POS1;
                    }
                    else if (typePos == TYPE_GV_POS.POS3)
                    {
                        // move to pos 4
                        typePos = TYPE_GV_POS.POS4;
                    }
                    else
                    {
                        if (rightTypeSegment == TYPE_GV_SEGMENT.LANE12 || rightTypeSegment == TYPE_GV_SEGMENT.LANE123 || rightTypeSegment == TYPE_GV_SEGMENT.LANE2 || rightTypeSegment == TYPE_GV_SEGMENT.LANE23 || leftTypeSegment == TYPE_GV_SEGMENT.LANE12 || leftTypeSegment == TYPE_GV_SEGMENT.LANE123 || leftTypeSegment == TYPE_GV_SEGMENT.LANE2 || leftTypeSegment == TYPE_GV_SEGMENT.LANE23)
                        {
                            if (typePos == TYPE_GV_POS.POS1)
                            {
                                typePos = TYPE_GV_POS.POS2;
                            }
                            else
                            {
                                typePos = TYPE_GV_POS.POS3;
                            }
                        }
                        else
                        {
                            if (typePos == TYPE_GV_POS.POS1)
                            {
                                typePos = TYPE_GV_POS.POS4;
                            }
                            else
                            {
                                typePos = TYPE_GV_POS.POS1;
                            }
                        }
                    }
                }



                if (typePos == TYPE_GV_POS.POS1)
                {
                    destY = baseYStage + 3;
                }
                else if (typePos == TYPE_GV_POS.POS4)
                {
                    destY = baseYStage + 0.6f;
                }
                else if (typePos == TYPE_GV_POS.POS2)
                {
                    destY = baseYStage + 2.2f;
                }
                else if (typePos == TYPE_GV_POS.POS3)
                {
                    destY = baseYStage + 1.4f;
                }

                StartCoroutine(MoveToPos(currPos.y - baseYStage, destY - baseYStage));
            }
            else
            {
                playerState = MAP_PLAYER_STATE.MOVING;
            }
        }
    }