コード例 #1
0
        public void AddLevel(int levelIndex, HighwayBase highwayBase)
        {
            var level = _levelDatas.FirstOrDefault(x => x.LevelIndex == levelIndex);

            if (level == null)
            {
                level = new LevelData(levelIndex);
                _levelDatas.Add(level);
            }
            level.AllLevelHighways.Add(highwayBase);
            _slingManager.Add(highwayBase.GetComponentInChildren <SlingTowerBase>());
        }
コード例 #2
0
        private T GenerateHighway <T>(HighwayDirection cornerDirection, HighwayBase highwayBase, bool rotate = true)
            where T : HighwayBase
        {
            var highway = _poolManager.GetAvailableHighWay <T>();

            highway.SetDirection(cornerDirection);
            if (highwayBase != null)
            {
                highway.transform.position = highwayBase.FinishPosition;
                if (rotate)
                {
                    highway.transform.Rotate(highwayBase.transform.eulerAngles.y * Vector3.up);
                }
            }

            _levelManager.AddLevel(_levelIndex, highway);
            return(highway);
        }
コード例 #3
0
        private void GenerateLevels(int levelCount)
        {
            var highwayDirections = new  List <HighwayDirection>
            {
                HighwayDirection.UP,
                HighwayDirection.LEFT,
                HighwayDirection.RIGHT
            };
            var straightDirection = highwayDirections.GetRandomElementFromList();
            var cornerDirection   = straightDirection;

            HighwayBase straightHighway = null;
            HighwayBase corner          = null;

            for (int j = 0; j < levelCount; j++)
            {
                for (int i = 0; i < GameConfig.LEVEL_LENGTH; i++)
                {
                    if (straightDirection == cornerDirection)
                    {
                        straightDirection = HighwayDirection.UP;
                    }

                    if (_finalHighway == null)
                    {
                        straightHighway = GenerateHighway <StraightHighway>(straightDirection, corner, false);
                    }
                    else
                    {
                        straightHighway = _finalHighway;
                    }

                    if (straightDirection == HighwayDirection.UP)
                    {
                        cornerDirection = highwayDirections.GetRandomElementFromList(HighwayDirection.UP);
                        corner          = GenerateHighway <CornerHighway>(cornerDirection, straightHighway);

                        straightDirection = cornerDirection == HighwayDirection.LEFT
                            ? HighwayDirection.RIGHT
                            : HighwayDirection.LEFT;
                        straightHighway = GenerateHighway <StraightHighway>(straightDirection, corner, false);

                        // Random U Corner Generation
                        int rnd = Random.Range(0, 10);
                        if (rnd > GameConfig.U_CORNER_PROBABILITY)
                        {
                            cornerDirection   = straightDirection;
                            straightDirection = cornerDirection == HighwayDirection.LEFT
                                ? HighwayDirection.RIGHT
                                : HighwayDirection.LEFT;
                            corner        = GenerateHighway <UCornerHighway>(cornerDirection, straightHighway, false);
                            _finalHighway = null;
                            continue;
                        }
                    }

                    _finalHighway   = null;
                    cornerDirection = straightDirection;
                    corner          = GenerateHighway <CornerHighway>(cornerDirection, straightHighway);
                }

                if (straightDirection == cornerDirection)
                {
                    straightDirection = HighwayDirection.UP;
                }

                _finalHighway = GenerateHighway <FinalHighway>(straightDirection, corner, false);
                _levelIndex++;
            }
        }
コード例 #4
0
 public void Initialize(HighwayBase parentHighway)
 {
     _parentHighway = parentHighway;
     _sling         = transform.Find("Sling");
 }