Beispiel #1
0
    private void LoadLevelListContent(LevelConfig config, LevelConfig nextConfig, int i, int count)
    {
        ////设置星星数量
        //if(!XPlayerPrefs.HasKey(config.LevelId.ToString()+numStar))
        //{
        //    XPlayerPrefs.SetInt(config.LevelId.ToString() + numStar, 0);
        //}

        if (config.LevelType == 2)
        {
            return;
        }
        //新的主题
        if (curTheme != config.LevelTheme)
        {
            curTheme   = config.LevelTheme;
            curHeight += offsetMenu;
            menu       = ResMgr.LoadGameObject(menuPath);
            menu.transform.SetParent(LevelContent.transform);
            menu.transform.localPosition = Vector3.zero - new Vector3(0, curHeight, 0);
            menu.transform.localScale    = LevelContent.localScale;
            LoadMenu(menu, config.LevelTheme);
            themeCnt++;
            levelCnt = 0;
        }
        int cnt = levelCnt % 3;

        if (cnt == 0)
        {
            curHeight += offsetY;
        }
        levelBtn = ResMgr.LoadGameObject(levelBtnPath);
        levelBtn.transform.SetParent(LevelContent.transform);
        levelBtn.transform.localPosition = Vector3.zero - new Vector3((cnt - 1) * offsetX * -1, curHeight, 0);
        levelBtn.transform.localScale    = LevelContent.localScale;

        UILevelBtn UIBtn = levelBtn.GetComponent <UILevelBtn>();

        if (cnt == 1)
        {
            UIBtn.line.SetActive(true);
        }
        LoadLevelBtn(UIBtn, config.LevelId, config.LevelPicture.ToString(), levelCnt, themeCnt);
        UIBtn.setLevelID(config.LevelId);
        UIBtn.setThemeID(config.LevelTheme);
        //if (count > i + 1)
        //{
        //    UIBtn.setNextLevelID(config.LevelId+1);
        //    if (config.LevelTheme != nextConfig.LevelTheme)
        //        UIBtn.setNextThemeID(nextConfig.LevelTheme);
        //    else
        //        UIBtn.setNextThemeID(config.LevelTheme);
        //}
        //else
        //{
        //    UIBtn.setNextLevelID(0);
        //    UIBtn.setNextThemeID("null");
        //}
        levelCnt++;
    }
Beispiel #2
0
 void Start()
 {
     level = GameData.actualLevel.config;
     SetRestPlaces();
     StartCoroutine(SendTouristWave());
     StartCoroutine(SendEnemytWave());
 }
Beispiel #3
0
    private void RefreshLevelList()
    {
        SetScrollValue();
        SetTopText();
        int levelCnt = 0;
        int themeCnt = 0;

        for (int i = 0; i < LevelContent.gameObject.transform.childCount; i++)
        {
            if (LevelContent.gameObject.transform.GetChild(i).name == "menu(Clone)")
            {
                themeCnt++;
                levelCnt = 0;
            }
            if (LevelContent.gameObject.transform.GetChild(i).name == "UILevelBtn(Clone)")
            {
                UILevelBtn uibtn = LevelContent.gameObject.transform.GetChild(i).GetComponent <UILevelBtn>();
                if (levelCnt == 1)
                {
                    uibtn.line.SetActive(true);
                }
                LevelConfig config = LevelMgr.GetInstance().GetLevelConfig(uibtn.levelID).Config;
                LoadLevelBtn(uibtn, config.LevelId, config.LevelPicture.ToString(), levelCnt, themeCnt);
            }
        }
    }
Beispiel #4
0
        public void RenderNumberTest()
        {
            var instance = new LevelConfig
            {
                NumberingFormat = NumberFormatValues.Decimal
            };

            Assert.AreEqual("1", instance.RenderNumber(1));

            instance.NumberingFormat = NumberFormatValues.Ordinal;
            Assert.AreEqual("1st", instance.RenderNumber(1));

            instance.NumberingFormat = NumberFormatValues.OrdinalText;
            Assert.AreEqual("one", instance.RenderNumber(1));

            instance.NumberingFormat = NumberFormatValues.LowerRoman;
            Assert.AreEqual("i", instance.RenderNumber(1));

            instance.NumberingFormat = NumberFormatValues.UpperRoman;
            Assert.AreEqual("I", instance.RenderNumber(1));

            instance.NumberingFormat = NumberFormatValues.LowerLetter;
            Assert.AreEqual("a", instance.RenderNumber(1));

            instance.NumberingFormat = NumberFormatValues.UpperLetter;
            Assert.AreEqual("A", instance.RenderNumber(1));
        }
Beispiel #5
0
 public Level(int _number, LevelConfig _config, int _minPoints, int _totalTime)
 {
     number    = _number;
     config    = _config;
     minPoints = _minPoints;
     totalTime = _totalTime;
 }
Beispiel #6
0
    public void LoadLevel()
    {
        string content = (Resources.Load("levels") as TextAsset).text;

        if (string.IsNullOrEmpty(content))
        {
            Debug.LogError("content == null");
            return;
        }
        LevelConfig config = JsonConvert.DeserializeObject <LevelConfig>(content);

        foreach (var level in config.levels)
        {
            this.AddLevel(level);
        }
        if (!PlayerPrefs.HasKey(CommonDefineBase.LockedLevel))
        {
            PlayerPrefs.SetString(CommonDefineBase.LockedLevel, "1");
        }
        string[] levelsContent = PlayerPrefs.GetString(CommonDefineBase.LockedLevel).Split(',');
        foreach (var id in levelsContent)
        {
            int levelId = int.Parse(id);
            if (this.dicLevels.ContainsKey(levelId))
            {
                this.dicLevels[levelId].valid = true;
            }
        }
    }
Beispiel #7
0
    void OnLevelStarted(int levelIdx, LevelConfig leveConfig, float startDelay)
    {
        MusicToggle?.RefreshMusicToggle();
        if (_endPanel.activeInHierarchy)
        {
            _endPanel.SetActive(false);
        }
        RefreshFatigue(_gameController.FatiguePercent);
        RefreshTime(_gameController.TimeLeft);
        RefreshIncome(_gameController.Earnings);

        if (GameBeaten.activeInHierarchy)
        {
            GameBeaten.SetActive(false);
        }

        StartPanel.SetActive(true);
        StartLevelText.text = $"Level {levelIdx + 1}";
        StartLevelDesc.text = leveConfig.DescriptionStart;
        foreach (var hint in Hints)
        {
            hint.gameObject.SetActive(false);
        }
        bool immediate = Mathf.Approximately(startDelay, 0f);

        InputHint.SetActive(immediate);
        if (!immediate)
        {
            StartCoroutine(DelayedShow(InputHint, startDelay));
        }
    }
Beispiel #8
0
    void GenerateRandomParameters()
    {
        Random.InitState(1);

        Settings settings = Refs.Instance.Settings;

        for (int i = 0; i < settings.Levels.Count; i++)
        {
            LevelConfig levelConfig = settings.Levels[i];

            levelConfig.Seed = Random.Range(int.MinValue, int.MaxValue);                                                        // This is the main part

            /*
             * levelConfig.AsteroidsRate		= Random.Range( .5f, .25f );
             * levelConfig.Time				= Random.Range( 10f, 30f );
             */
            float t = i / (settings.Levels.Count - 1f);
            levelConfig.AsteroidsRate = Mathf.Lerp(.25f, .025f, t);
            levelConfig.Time          = Mathf.Lerp(10, 30, t);
        }

                #if UNITY_EDITOR
        EditorUtility.SetDirty(settings);
                #endif
    }
Beispiel #9
0
    /// <summary>
    /// Generate a new puzzle with some rows. This assumes the puzzle is empty.
    /// </summary>
    public void InitializeNewPuzzle(int initialRows, LevelConfig config)
    {
        int width  = DefaultPuzzleWidth;
        int height = DefaultPuzzleHeight;

        // Create a new puzzle.
        PuzzleGrid = new PuzzleTile[width, 1000];
        ResetPuzzle();

        // Set some of the variables from the config.
        VerticalScrollSpeed = config.ScrollSpeed;
        m_shouldSpawnJunk   = config.SpawnJunkTiles;
        m_shouldSpawnAlarms = config.SpawnAlarmTiles;
        ScoreToWin          = config.ScoreToWin;
        GameManager.Instance.GameCanvas.UpdateTargetScore(ScoreToWin);
        m_junkDropRate = config.JunkDropRateSeconds;

        // Row 0 is the top, the bottom at the start is equal to the height. Generate 1 row past that.
        int bottomRow = height + 1;

        // Iterate through the first few initial rows.
        int rowsToAdd = initialRows;

        for (int row = bottomRow - rowsToAdd; row <= bottomRow; row++)
        {
            bool isLastRow = row >= bottomRow;
            GenerateRow(row, width, isLastRow);
        }
    }
Beispiel #10
0
 //initializes level values
 public void initialize()
 {
     damageTaken = 0;
     damageDealt = 0;
     numDogsDied = 0;
     dead        = new bool[3] {
         false, false, false
     };
     newLevel   = brrrr.myCoolLevel;
     playa      = brrrr.myCoolPlayer;
     NMEs       = new Queue <EnemyStatsConfig>(newLevel.enemies);
     dogs       = playa.yourTeam;
     chews      = playa.yourPack;
     background = newLevel.background;
     backgroundSpriteRenderer        = GetComponent <SpriteRenderer>();
     backgroundSpriteRenderer.sprite = background;
     howManyDogs = 0;
     for (int i = 0; i < dogs.Length; i++)
     {
         if (dogs[i] != null)
         {
             howManyDogs++;
         }
     }
 }
Beispiel #11
0
    public static Config CreateNewConfig()
    {
        Config config = new Config
        {
            Id             = 0,
            Name           = "Nazwa",
            CreationDate   = DateTime.Now,
            DrawStartPoint = true,
            NrOfLevels     = 2,
            WaitingTime    = 3f,
            Levels         = new List <LevelConfig>()
        };
        var level1 = new LevelConfig {
            levelNumber = 1, shape = Shape.HorizontalLine, lineStroke = LineStroke.Medium, shapeColor = PastelColorFactory.RandomColor
        };

        level1.brushColor = PastelColorFactory.RandomColorWithExclude(level1.shapeColor);
        config.Levels.Add(level1);
        var level2 = new LevelConfig {
            levelNumber = 2, shape = Shape.VerticalLine, lineStroke = LineStroke.Medium, shapeColor = PastelColorFactory.RandomColor
        };

        level2.brushColor = PastelColorFactory.RandomColorWithExclude(level2.shapeColor);
        config.Levels.Add(level2);

        return(config);
    }
Beispiel #12
0
    //    0 --     PlayScene
    public void LoadPlayScene(LevelData levelData, string songScript = null)
    {
        if (!_CheckInput(PlaySceneName))
        {
            return;
        }
        if (!LevelConfig.CheckEnergy())
        {
            return;
        }
        m_LoadingPlayScene = true;

        StaticData.LevelID      = levelData.levelID;
        StaticData.NowLevelData = levelData;
        CorePlayData.SongID     = LanguageManager.GetSongIdFromLanguage(levelData.songID);
        if (string.IsNullOrEmpty(songScript))
        {
            CorePlayData.SongScript = SongConfig.Instance.GetsongScriptBySongIDAndLevelDiffculty(LanguageManager.GetSongIdFromLanguage(levelData.songID), levelData.LevelDifficulty);
        }
        else
        {
            CorePlayData.SongScript = songScript;
        }
        CorePlayData.SongOffset  = SongConfig.Instance.GetSongOffsetBySongIDAndLevelDiffculty(LanguageManager.GetSongIdFromLanguage(levelData.songID), levelData.LevelDifficulty);
        CorePlayData.CurrentSong = BeatmapParse.Parse(CorePlayData.SongScript);

        CorePlayData.BossLife      = levelData.bosslife;
        CorePlayData.BossSongName  = LevelConfig.AllLevelDic[levelData.levelID].boss_song_name;
        CorePlayData.EducationText = SongConfig.Instance.m_items[LanguageManager.GetSongIdFromLanguage(levelData.songID)]["educationText"];
        StartCoroutine(_LoadSceneAsyncInternal());
    }
Beispiel #13
0
    public void LoadBaseLevel()
    {
        loading = true;
        MazeRoom         mainRoom    = new MazeRoom(new Rect(5, 5, 11, 11));
        LevelDepthConfig depthConfig = generalLevelConfig.GetLevelDepthConfiguration(-1);
        LevelConfig      levelConfig = Resources.Load <LevelConfig>("LevelConfigs/base");

        levelConfig.Randomize();

        MapGenerator.Initialize(levelConfig, depthConfig, ReadyWithBase);
        //MazeCarver carver = mapGenerator.InitializeCarver(worldRect, mapGenerator, levelConfig, depthConfig);
        MazeCarver carver = MapGenerator.InitializeCarver();

        MapGenerator.PlaceRoom(mainRoom);
        carver.FillWithHallway();
        //carver.RemoveFalseWalls();
        carver.Create3DWalls();
        carver.CreateNavMeshes();
        mapPopulator = MapGenerator.InitializeMapPopulator();
        //mapPopulator.SpawnKeyAt(mapGenerator.GetScaled(new Vector3(10, 10, 0)));

        SpawnWandAt(new Vector3(9, 9, 0), depthConfig.PowerLevel);
        SpawnWandAt(new Vector3(7, 9, 0), depthConfig.PowerLevel);
        SpawnWandAt(new Vector3(9, 7, 0), depthConfig.PowerLevel);
        Dummy dummyPrefab = Resources.Load <Dummy>("Dummy");

        Dummy dummy = Instantiate(dummyPrefab, MapGenerator.transform);

        dummy.transform.position = MapGenerator.GetScaled(new Vector3(13, 13, 0));

        mapPopulator.SpawnEndAt(MapGenerator.GetScaled(new Vector3(10, 10, 0)));
        player = mapPopulator.SpawnPlayerAt(MapGenerator.GetScaled(new Vector3(7, 7, 0)));
        mapPopulator.SetUpCamera(player);
        //fullscreenFade.FadeOut(ReadyWithBase);
    }
    static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
    {
        foreach (string asset in importedAssets)
        {
            if (!filePath.Equals(asset))
            {
                continue;
            }

            LevelConfig data = (LevelConfig)AssetDatabase.LoadAssetAtPath(assetFilePath, typeof(LevelConfig));
            if (data == null)
            {
                data               = ScriptableObject.CreateInstance <LevelConfig> ();
                data.SheetName     = filePath;
                data.WorksheetName = sheetName;
                AssetDatabase.CreateAsset((ScriptableObject)data, assetFilePath);
                //data.hideFlags = HideFlags.NotEditable;
            }

            //data.dataArray = new ExcelQuery(filePath, sheetName).Deserialize<LevelConfigData>().ToArray();

            //ScriptableObject obj = AssetDatabase.LoadAssetAtPath (assetFilePath, typeof(ScriptableObject)) as ScriptableObject;
            //EditorUtility.SetDirty (obj);

            ExcelQuery query = new ExcelQuery(filePath, sheetName);
            if (query != null && query.IsValid())
            {
                data.dataArray = query.Deserialize <LevelConfigData>().ToArray();
                ScriptableObject obj = AssetDatabase.LoadAssetAtPath(assetFilePath, typeof(ScriptableObject)) as ScriptableObject;
                EditorUtility.SetDirty(obj);
            }
        }
    }
        public void SetMapId(int mapId)
        {
            CurrentLevelType   = LevelType.Exception;
            BigMapParameters   = null;
            SmallMapParameters = null;

            foreach (var levelInfo in Data.Items)
            {
                if (levelInfo.Id == mapId)
                {
                    SceneParameters = levelInfo;

                    if (levelInfo is SceneConfig)
                    {
                        CurrentLevelType = LevelType.BigMap;
                        BigMapParameters = levelInfo as SceneConfig;
                    }
                    else
                    {
                        CurrentLevelType   = LevelType.SmallMap;
                        SmallMapParameters = levelInfo as LevelConfig;
                    }

                    break;
                }
            }
        }
Beispiel #16
0
    void Start()
    {
        if (PlayerPrefs.HasKey("FinishedLevels"))
        {
            FinishedLevels = PlayerPrefs.GetInt("FinishedLevels", 0);
        }
        else
        {
            PlayerPrefs.SetInt("FinishedLevels", 0);
            PlayerPrefs.Save();
        }

        TextAsset   levelConfigContent = Resources.Load <TextAsset>("Config/levels");
        LevelConfig levelConfig        = JsonUtility.FromJson <LevelConfig>(levelConfigContent.text);

        for (int i = 0; i < levelConfig.levels.Count; i++)
        {
            GameObject newButton = Instantiate(LevelButtonPrefab);
            newButton.GetComponentInChildren <TextMeshProUGUI>().text = $"{i+1}";
            newButton.transform.SetParent(Panel.transform);
            int index = i;
            newButton.GetComponent <Button>().onClick.AddListener(() => LoadLevel(index));

            if (FinishedLevels < i)
            {
                newButton.GetComponent <Button>().interactable = false;
            }
        }
    }
Beispiel #17
0
 private void StartLevel()
 {
     _currentLevel         = GameSettings.Instance.Levels[_currentLevelIndex % GameSettings.Instance.Levels.Count];
     _currentCylinderCount = _totalCylinderCount = _currentLevel.GetCylinderCount();
     AdjustPlatformSize();
     _towerManager.SpawnTower(_currentLevel);
 }
Beispiel #18
0
    public static void StartLevel(int levelIndex)
    {
        _levelIndex = levelIndex;
        LevelConfig levelConfig = Refs.Instance.Settings.Levels[levelIndex];

        Random.InitState(levelConfig.Seed);


        // Spawn Ship
        SpawnShip();


        // Init Asteroid spawning
        _asteroidSpawner = Observable
                           .Interval(TimeSpan.FromSeconds(Refs.Instance.Settings.AsteroidsSpawnRate))
                           .Subscribe(_ => Spawner.SpawnAsteroid());


        // Init Level Timer
        float time = levelConfig.Time;

        TimerEndTime.Value = Time.time + time;
        _timer             = Observable
                             .Timer(TimeSpan.FromSeconds(time))
                             .Subscribe(_ => OnTimerOut());


        // Change State
        Transition(LevelState.InProcess);
    }
Beispiel #19
0
 /// <summary>
 /// m_config排序
 /// </summary>
 private void SortConfig()
 {
     //第一遍排序按照关卡id
     for (int i = 0; i < m_config.Items.Count; i++)
     {
         for (int j = 0; j < m_config.Items.Count - i - 1; j++)
         {
             if (m_config.Items[j].LevelId > m_config.Items[j + 1].LevelId)
             {
                 LevelConfig temp = m_config.Items[j];
                 m_config.Items[j]     = m_config.Items[j + 1];
                 m_config.Items[j + 1] = temp;
             }
         }
     }
     //第二遍排序按照主题id
     for (int i = 0; i < m_config.Items.Count; i++)
     {
         for (int j = 0; j < m_config.Items.Count - i - 1; j++)
         {
             if (string.Compare(m_config.Items[j].LevelTheme, m_config.Items[j + 1].LevelTheme) == 1)
             {
                 LevelConfig temp = m_config.Items[j];
                 m_config.Items[j]     = m_config.Items[j + 1];
                 m_config.Items[j + 1] = temp;
             }
         }
     }
 }
Beispiel #20
0
    // check and save achievement,返回是否升级
    private void CheckNum(int id, int num, int oldNum, bool checkLevel)
    {
        int needNum = this.GetAchievementNeedNum(id);

        if (needNum == -1)
        {
            return;
        }
        if (num >= needNum)         // passed
        {
            SetAchievement(id, true);
            // 播放通过条件动画
            AniInfo aniInfo = new AniInfo(AniConditionPass);
            string  txt     = LevelConfig.GetAchievement(id).GetNumText(this.GetAchievementNeedNum(id, true));
            this.PlayAni(aniInfo.AddParam("condition", txt));

            if (checkLevel)
            {
                this.CheckLevel();                 // 检查等级
            }
        }
        else if (id != 3003)
        {
            // 播放进度动画
            string  txt     = LevelConfig.GetAchievement(id).GetNumText(this.GetAchievementNeedNum(id, true));
            AniInfo aniInfo = new AniInfo(AniConditionProgress);
            this.PlayAni(aniInfo.AddParam("condition", txt).AddParam("oldNum", oldNum.ToString()).AddParam("newNum", num.ToString()));
        }
    }
Beispiel #21
0
    /**
     * Main scene configuring function
     */
    void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        //loading screen
        if (scene.buildIndex == 3)
        {
            TextMesh levelNum = GameObject.Find("/Number").GetComponent <TextMesh>();
            levelNum.text = "" + Level;
            StartCoroutine(LoadScreen());
            return;
        }

        // level config reading and setting up

        string       path     = "Assets/Levels/level" + Level + ".json"; //todo: encrypt & decrypt file!!!
        StreamReader reader   = new StreamReader(path);
        string       jsonData = reader.ReadToEnd();

        reader.Close();
        LevelConfig conf = JsonUtility.FromJson <LevelConfig>(jsonData);

        //todo: make separate setup functions for enemy and level in Level class
        //todo: add more level config properties

        GameObject levelObj    = GameObject.FindGameObjectWithTag("Level");
        Level      levelScript = levelObj.GetComponent <Level>();

        levelScript.points       = conf.points;
        levelScript.currentLevel = Level;
        levelScript.playerScore  = GameObject.Find("/DeadZone/Back"); // setting score objects for dynamical update
        levelScript.enemyScore   = GameObject.Find("/DeadZone/Front");

        GameObject enemyObj = GameObject.FindGameObjectWithTag("Enemy");

        enemyObj.GetComponent <Enemy>().speed = conf.aispeed;
    }
Beispiel #22
0
    public void Save()
    {
        var levelSettings = FindObjectOfType(typeof(LevelSettingsForSave)) as LevelSettingsForSave;

        if (!levelSettings)
        {
            Debug.LogError("Please, use one active LevelSettingsForSave script on a GameObject in your scene.");
            return;
        }

        Level = ScriptableObject.CreateInstance <LevelConfig>();
        AssetDatabase.CreateAsset(Level, "Assets/Resources/Levels/" + levelName + ".asset");
        EditorUtility.SetDirty(Level);

        var objectsList  = Utils.FindGameObjectsWithTags("WalkableArea", "Obstacle", "Platform", "Spawner", "Base");
        var towerPrefabs = levelSettings.TowerPrefabs;
        var pools        = levelSettings.Pools;

        Level.Objects = new LevelConfig.PrefabData[objectsList.Count];
        for (int i = 0; i < objectsList.Count; ++i)
        {
            var obj = objectsList[i];

            Level.Objects[i] = new LevelConfig.PrefabData
            {
                Prefab   = (GameObject)PrefabUtility.GetPrefabParent(obj.gameObject),
                Position = obj.transform.position,
                Size     = obj.transform.localScale,
                Rotation = obj.transform.rotation
            };
            Level.Settings     = levelSettings.GameSettings;
            Level.TowerPrefabs = towerPrefabs;
            Level.PoolsParts   = pools;
        }
    }
Beispiel #23
0
        static void PrintMapInfo(Player p, LevelConfig cfg)
        {
            p.Message("%TPhysics settings:");
            p.Message("  Finite mode: {0}%S, Random flow: {1}",
                      GetBool(cfg.FiniteLiquids), GetBool(cfg.RandomFlow));
            p.Message("  Animal hunt AI: {0}%S, Edge water: {1}",
                      GetBool(cfg.AnimalHuntAI), GetBool(cfg.EdgeWater));
            p.Message("  Grass growing: {0}%S, {1} tree growing: {2}",
                      GetBool(cfg.GrassGrow), cfg.TreeType.Capitalize(), GetBool(cfg.GrowTrees));
            p.Message("  Leaf decay: {0}%S, Physics overload: {1}",
                      GetBool(cfg.LeafDecay), cfg.PhysicsOverload);
            p.Message("  Physics speed: &b{0} %Smilliseconds between ticks",
                      cfg.PhysicsSpeed);

            p.Message("%TSurvival settings:");
            p.Message("  Survival death: {0} %S(Fall: {1}, Drown: {2})",
                      GetBool(cfg.SurvivalDeath), cfg.FallHeight, cfg.DrownTime);
            p.Message("  Guns: {0}%S, Killer blocks: {1}",
                      GetBool(cfg.Guns), GetBool(cfg.KillerBlocks));

            p.Message("%TGeneral settings:");
            p.Message("  MOTD: &b" + cfg.MOTD);
            p.Message("  Local level only chat: " + GetBool(!cfg.ServerWideChat));
            p.Message("  Load on /goto: {0}%S, Auto unload: {1}",
                      GetBool(cfg.LoadOnGoto), GetBool(cfg.AutoUnload));
            p.Message("  Buildable: {0}%S, Deletable: {1}%S, Drawing: {2}",
                      GetBool(cfg.Buildable), GetBool(cfg.Deletable), GetBool(cfg.Drawing));
        }
    public GameObject CreateEnemy(GameObject playerGM, int enemyNumber, int levelNumber)
    {
        GameObject enemyGM = null;

        if (levelNumber < Levels.Count)
        {
            LevelConfig level = Levels [levelNumber];
            if (enemyNumber < level.ListOfEnemies.Count)
            {
                CharacterConfig           charConfig = level.ListOfEnemies [enemyNumber].CharacterConfig;
                RuntimeAnimatorController rac        = Resources.Load <RuntimeAnimatorController> ("enemyAnimation");

                enemyGM = CreateCharacter(charConfig, rac);
                enemyGM.GetComponent <InGamePosition> ().X = playerGM.GetComponent <InGamePosition> ().X + 5;

                Character playerCh = playerGM.GetComponent <Character> ();
                playerCh.leftHand.GetComponent <InputContr> ().Enemy  = enemyGM;
                playerCh.rightHand.GetComponent <InputContr> ().Enemy = enemyGM;

                AI ai = enemyGM.AddComponent <AI> ();

                ai.Delay = 1f;
                ai.SetChances(60, 20);
                ai.Enemy = playerGM;
            }
        }

        return(enemyGM);
    }
Beispiel #25
0
    void LoadLevel()
    {
        LevelConfig levelConfig = chapterConfig.levels[CurrentLevel];

        List <Enemy> newEnemyList = levelBuilder.BuildLevel(levelConfig);

        enemiesCount = newEnemyList.Count;

        // Init Controllers
        enemyMoveManager.Init(levelConfig.enemyConfig, newEnemyList);
        enemyShootManager.Init(levelConfig, newEnemyList);
        uiGameManager.Init(levelConfig.playerConfig.lives);

        // Callbacks
        levelBuilder.Player.onPlayerHit      += OnPlayerHit;
        levelBuilder.Player.onPlayerHit      += uiGameManager.OnPlayerHit;
        enemyMoveManager.onEnemyReachedLimit += Lose;

        foreach (Enemy enemy in newEnemyList)
        {
            enemy.onEnemyKilled += OnEnemyKilled;
        }

        StartCoroutine(StartLevelCoroutine());
    }
Beispiel #26
0
 private void CreateObstacles(LevelConfig config)
 {
     for (int i = 0; i < config.GetPositions().Count; i++)
     {
         var temp = InstantiatePlatform(config.GetObstacleConfig()[i],
                                        config.GetPositions()[i] + new Vector3(0, 16, 0),
                                        config.GetObstacleScales()[i]);
         temp.GetComponent <SpriteRenderer>().sortingLayerName = "Obstacle";
         temp.transform.rotation = Quaternion.Euler(config.GetObstacleRotations()[i].x,
                                                    config.GetObstacleRotations()[i].y,
                                                    config.GetObstacleRotations()[i].z);
         if (config.GetBreakCount()[i] != 0)
         {
             temp.AddComponent(typeof(Breakable));
             if (!config.DependsOnPrevBallCount())
             {
                 temp.GetComponent <Breakable>().SetBreakCount(config.GetBreakCount()[i]);
             }
             else
             {
                 temp.GetComponent <Breakable>().SetBreakCount((FindObjectOfType <Target>().GetCount() / 3) + 1);
             }
         }
         platforms.Add(temp);
     }
 }
Beispiel #27
0
        public override void Use(Player p, string message)
        {
            string[] urls = message.SplitSpaces(2);
            if (urls.Length < 2)
            {
                Help(p); return;
            }
            int changed = 0;

            string[] maps = LevelInfo.AllMapNames();
            Level    lvl;

            foreach (string map in maps)
            {
                LevelConfig cfg = LevelInfo.GetConfig(map, out lvl);

                if (cfg.Terrain.CaselessEq(urls[0]))
                {
                    p.Message("Changed terrain.png of map " + cfg.Color + map);
                    cfg.Terrain = urls[1];
                    cfg.SaveFor(map);
                    changed++;
                }
                else if (cfg.TexturePack.CaselessEq(urls[0]))
                {
                    p.Message("Changed texture pack of map " + cfg.Color + map);
                    cfg.TexturePack = urls[1];
                    cfg.SaveFor(map);
                    changed++;
                }
            }
            p.Message("Gone through all the maps. {0} were changed. ");
        }
Beispiel #28
0
        public async Task AddRole(IRole role, int level)
        {
            var config = LevelService.TryGetLevelConfig(Context.Guild.Id);

            if (config == null || !config.Enabled)
            {
                await ReplyAsync("You must enable leveling before editing it's settings.");

                return;
            }

            //Remove the role if it already exists in the rewards
            config.RewardRoles = config.RewardRoles.Where(x => x.RoleId != role.Id).ToList();

            if (config.RewardRoles.Any(x => x.LevelRequirement == level))
            {
                await ReplyAsync("There can only be one role per level.");

                return;
            }

            config.RewardRoles.Add(new LevelConfig.LevelReward
            {
                RoleId           = role.Id,
                LevelRequirement = level
            });
            LevelService.Database.Store(config, LevelConfig.DocumentName(Context.Guild.Id));
            await ReplyAsync($"Role Added");
        }
Beispiel #29
0
    private void Initialize()
    {
        _score = 0;

        _levelConfig = new LevelConfig();

        InitializeLocation();

        _floor.Initialize(OnEnemyLeftArea);

        Player = new Player();
        Player.Initialize(_levelConfig.PlayerConfig, _levelConfig.ProjectileConfig);

        CameraController cameraController = _cameraController.GetComponent <CameraController>();

        cameraController.Initialize(this, Player.View.transform, _levelConfig.CameraConfig);

        _enemyPool = new EnemyPool(this, _levelConfig.EnemyConfig, _spawnPoints);
        _enemyPool.Initialize();

        EventManager.OnEnemyDied += OnEnemyDied;

        _gui.Initialize(_levelConfig.PlayerConfig);
        _spawnController = Observable.FromCoroutine(SpawnEnemy).Subscribe();
    }
Beispiel #30
0
 public ChunkGenerator(LevelConfig config, LevelObjectsPool pool, int length, int width)
 {
     levelConfig      = config;
     levelObjectsPool = pool;
     this.length      = Mathf.Max(length, LevelGraph.MinLength);
     this.width       = Mathf.Max(width, LevelGraph.MinWidth);
 }
    public void Init(LevelConfig levelConfig, CameraController cameraController)
    {
        var terrain = Instantiate(levelConfig.terrainToSpawn, Vector2.zero, Quaternion.identity);
        var playerChar = Instantiate (_playerCharacter, levelConfig.diggerSpawnPoint, Quaternion.identity) as Character;
        var playerView = Instantiate (_playerCharacterView, levelConfig.diggerSpawnPoint, Quaternion.identity) as View;
        var cave = Instantiate(_cave, levelConfig.caveSpawnPoint, Quaternion.identity) as CaveBehaviour;

        PlayerVariablesController.Instance.Init (playerChar.unit, PlayerVariablesController.Instance.BeardyStats);
        playerChar.Init (PlayerVariablesController.Instance.BeardyStats, playerView);

        cameraController.Init (playerChar);
        cave.Init(levelConfig.diamondsCountToPassLevel);

        PreviousTilePosition = Vector2.zero;
    }
Beispiel #32
0
        public void Load()
        {
            if (!loaded)
                loaded = true;
            else
                return;


            WarriorXlsData = new WarriorConfig("Hero", "ID");
            WarriorXlsData.Load();

            SkillXlsData = new SkillConfig("Skill", 10001, 19999);
            SkillXlsData.Load();

            ExpSetXlsData = new XlsData("ExpSet", "Lv");
            ExpSetXlsData.Load();

            NatureXlsData = new NatureConfig("Nature", "ID");
            NatureXlsData.Load();

            AvatarXlsData = new XlsData("Avatar", "ID");
            AvatarXlsData.Load();

            GradeSetupXlsData = new GradeSetupConfig("GradeSetup", "ID");
            GradeSetupXlsData.Load();

            BuffXlsData = new XlsData("Buff", "ID");
            BuffXlsData.Load();

            LevelXlsData = new LevelConfig("Level", 1001, 9999);
            LevelXlsData.Load();

            LevelNpcXlsData = new LevelNpcConfig("LevelSet", 1001, 9999);
            LevelNpcXlsData.Load();

            LevelBgXlsData = new LevelBgConfig("LevelScene", 1001, 9999);
            LevelBgXlsData.Load();
        }
 void OnEnable()
 {
     config = (LevelConfig)target;
 }
    void ShowLevelDetails()
    {

        if (curLevel == null)
        {
            //find in scene and set
            curLevel = GameObject.FindObjectOfType(typeof(LevelConfig)) as LevelConfig;

            //set to last data
            if (curLevel)
            {
                select.curChapterIndex = EditorPrefs.GetInt(KEY_LCChapterIndex, select.curChapterIndex);
                select.curDungeonIndex = EditorPrefs.GetInt(KEY_LCDungeonIndex, select.curDungeonIndex);
                select.curConfigIndex = EditorPrefs.GetInt(KEY_LCTableIndex, select.curConfigIndex);
            }

        }

        #region level prefab
        GUILayout.BeginHorizontal();

        string resName = select.prbMapRes ? "Res:" : select.curDungeon.resname;
        GUILayout.Label(resName);
        bool hasRes = EditorGUILayout.ObjectField("", select.prbMapRes, typeof(Object), false);

        if (!hasRes) return;


        bool hasConfig = select.prbLevelConfig;

        if (!hasConfig)
        {
            if (select.prbModelConfig && GUILayout.Button("Create Config"))
            {
                CreateConfigPrefab();
            }
        }
        else
        {
            GUILayout.Label("Config:");
            EditorGUILayout.ObjectField("", select.prbLevelConfig, typeof(Object), false);

            //if (curLevel != null && curLevel.name == select.prbLevelConfig.name)
            //{
            //    if (GUILayout.Button("Edit")) EditLevel();
            //}
            if (GUILayout.Button("Show In Scene"))
            {
                LoadLevelToScene();
            }

            //, GUILayout.MinWidth(200f)
            if (GUILayout.Button("ReLoad Json", GUILayout.MaxWidth(100f)))
            {
                ReLoadJson();
            }
        }

        GUILayout.EndHorizontal();
        #endregion


        if (curLevel == null) return;
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Save"))
        {
            SaveLevel();
        }

        if (GUILayout.Button("Edit", GUILayout.MaxWidth(100f)))
        {
            KMTools.SetActive(curLevel.gameObject, true);
            EditLevel();
        }
        GUILayout.EndHorizontal();
        if (KMInspectorEditor.DrawHeader("Position Edit"))
        {
            ShowPositions();
        }

        EditorGUILayout.Space();

        if (KMInspectorEditor.DrawHeader("Stage Actions"))
        {
            ShowLevelActions();
        }

        EditorGUILayout.Space();

        if (KMInspectorEditor.DrawHeader("External Event"))
        {
            ShowExternalEvent();
        }

        EditorGUILayout.Space();

        if (KMInspectorEditor.DrawHeader("Other------"))
        {
            ShowOther();
        }

    }
    void LoadLevelToScene()
    {
        if (curLevel != null)
        {
            curLevel.gameObject.SetActive(false);
        }

        LevelConfig lc = GetExistLevel(select.prbLevelConfig.name);
        if (lc != null)
        {
            lc.gameObject.SetActive(true);
            curLevel = lc;
        }
        else
        {
            GameObject go = KMPrefabEditor.LoadPrefab(select.prbLevelConfig, null);
            go.transform.parent = goParent.transform;
            curLevel = go.GetComponent<LevelConfig>();
        }

        if (curRes) DestroyImmediate(curRes.gameObject);
        curRes = KMPrefabEditor.LoadPrefab(select.prbMapRes, null);

        targetPrefab = select.prbLevelConfig;

        //save data form last load
        EditorPrefs.SetInt(KEY_LCTableIndex, select.curConfigIndex);
        EditorPrefs.SetInt(KEY_LCDungeonIndex, select.curDungeonIndex);
        EditorPrefs.SetInt(KEY_LCChapterIndex, select.curChapterIndex);
    }
Beispiel #36
0
        /// <summary>
        ///     Retrieves the level of a sample, stream, MOD music, or recording channel.
        /// </summary>
        /// <param name="config">Level configure.</param>
        /// <param name="length">
        ///     The amount of data to inspect to calculate the level, in seconds. The maximum is 1 second. Less
        ///     data than requested may be used if the full amount is not available, eg. if the channel's playback buffer is
        ///     shorter.
        /// </param>
        /// <returns>An array to receive the levels. </returns>
        public float[] GetLevelEx(LevelConfig config, float length)
        {
            CheckAvailable();

            float[] result = null;

            if (config.HasFlag(LevelConfig.Mono))
            {
                result = new float[1];
            }
            else if (config.HasFlag(LevelConfig.Stereo))
            {
                result = new float[2];
            }
            else
            {
                result = new float[Information.Channels];
            }

            GCHandle resultHandle = GCHandle.Alloc(result, GCHandleType.Pinned);

            ChannelModule.ChannelGetLevelExFunction.CheckResult(ChannelModule.ChannelGetLevelExFunction.Delegate(
                Handle, resultHandle.AddrOfPinnedObject(), length, config));

            resultHandle.Free();

            return result;
        }
    public IEnumerator Init()
    {
        #region debug
        if (isDebug)
        {
            // record params of camera
            camParam = new CamParam(new Vector3(50, 0, 0), heroCamera.fieldOfView);
            curConfig = GameObject.FindObjectOfType(typeof(LevelConfig)) as LevelConfig;
            curLevelCamera = GameObject.FindObjectOfType(typeof(LevelCamera)) as LevelCamera;

            InitRes();

            if (isDebugPvp)
            {
                flowType = FlowType.PVP;
                LevelData.levelType = 8;
            }
        }
        #endregion

        curConfig.Init();

        while (!isInit) yield return null;

        //my heros init :
        myPlayer.ExternalInit();

        switch (flowType)
        {
            case FlowType.PVP:
                InitPVP();
                break;
            default:
                InitPVE();
                break;
        }

        //顺计时开始
        StartCoroutine(BeginTimer());
        //默认计时显示
        UIBattleManager.instance.LoginCountUpTimer();
        InvokeRepeating("CountUpTimer", 0f, 1f);

        ExecuteAction();

        //Debug.Log(" wait time----------------------" + curLevelCamera.waitTimeToPlay);
        if (curLevelCamera)
        {
            if (curLevelCamera.waitTimeToPlay > 0)
                yield return new WaitForSeconds(curLevelCamera.waitTimeToPlay);

            if (curLevelCamera.open.Count > 0)
            {
                int endIndex = curLevelCamera.open.Count - 1;
                foreach (CameraPathBezierAnimator cpa in curLevelCamera.open)
                {
                    cpa.animationTarget = heroCamera.transform;
                }

                curLevelCamera.open[endIndex].AnimationFinished += CameraFinish;
                curLevelCamera.open[0].Play();
                Debug.Log("Camera Play --------------");
            }
            else CameraFinish();
        }
        else
        {
            Debug.Log("LevelCamera is Null --------------");
            CameraFinish();
        }
    }
Beispiel #38
0
	public LevelState(LevelConfig config)
	{
		MaxTime = config.Enemy.InitialTime;
		TimeLeft = config.Enemy.InitialTime;
		Enemy = config.Enemy;
	}
    //创建资源
    void CreateRes()
    {
        camParam = new CamParam(new Vector3(50, 0, 0), heroCamera.fieldOfView);

        //level resources
        GameObject go = (GameObject)Instantiate(prbLevelRes);
        go.transform.parent = transform;

        //level config
        go = (GameObject)Instantiate(prbLevelConfig, Vector3.zero, Quaternion.identity);
        curConfig = go.GetComponent<LevelConfig>();
        go.transform.parent = transform;

        if (prbLevelCamera)
        {
            //level camera path animation
            go = (GameObject)Instantiate(prbLevelCamera);

            curLevelCamera = go.GetComponent<LevelCamera>();
            go.transform.parent = transform;
        }

        //开始
        StartCoroutine(Init());
        InitRes();
    }