//情况1:level<0,开始当前关,即重新开始。 //情况2:level==0,开始下一关。 //情况3:level>0,level只能事levelId,表示开始levelId表示的关。 public void StartLevel(int level = -1) { int lid; if (level < 0) { lid = m_LevelId; } else if (level == 0) { lid = Profile.Instance.Level + 1; } else { lid = level; } m_IsLevelChanged = lid != m_LevelId; m_LevelId = lid; m_LevelData = Resources.Load <ScriptableLevel>("Levels/level-" + lid.ToString()); m_UI.OnData(); m_Car.OnData(); m_Level.OnData(); m_IsLevelChanged = false; }
private void OnEnable() { currentLevel = GameManager.Instance.CurrentLevel; CreateEnemies(); LevelManager.OnRoundBegun += OnRoundBegun; GameOverManager.OnGameOver += OnGameOver; }
private void OnEnable() { currentLevel = GameManager.Instance.CurrentLevel; EnemyManager.OnEnemyDefeated += OnEnemyDefeated; GameOverManager.OnRevive += OnRevive; UpgradeDisplay.OnUpgradeEnd += BeginRound; }
public override void OnJoinedRoom() { _Players.text = PhotonNetwork.CurrentRoom.PlayerCount + " / " + PhotonNetwork.CurrentRoom.MaxPlayers; _roomName.text = PhotonNetwork.CurrentRoom.Name; ScriptableLevel level = gl._levels[(int)PhotonNetwork.CurrentRoom.CustomProperties["level"]]; _levelName.text = level._name; _levelPreview.sprite = level._levelBanner; }
public override void OnRoomPropertiesUpdate(ExitGames.Client.Photon.Hashtable propertiesThatChanged) { GameState state = (GameState)propertiesThatChanged["GameState"]; _state.text = ProcessState(state.ToString()); ScriptableLevel level = gl._levels[(int)PhotonNetwork.CurrentRoom.CustomProperties["level"]]; _levelName.text = level._name; _levelPreview.sprite = level._levelBanner; }
private void SaveLevel(ScriptableLevel levelToSave) { AssetDatabase.Refresh(); EditorUtility.SetDirty(levelToSave); if (LevelManager.Instance.currentLevel) { EditorUtility.SetDirty(LevelManager.Instance.currentLevel); } EditorUtility.SetDirty(LevelManager.Instance); AssetDatabase.SaveAssets(); }
private void UpdateLevelSelectionDisplay(ScriptableLevel level) { var playable = GameManager.Instance.HighestLevel >= level.ID; playButton.interactable = stageImageButton.interactable = playable; stageImage.sprite = level.Sprite; stageNameText.text = playable ? $"World {level.ID}" : $"Complete World {level.ID - 1} to unlock"; previousStageButton.gameObject.SetActive(level.ID != 1); nextStageButton.gameObject.SetActive(level.ID != GameManager.Instance.AvailableLevels.Count); }
private void DrawLevelUnit(ScriptableLevel levelToDraw, int index) { GUILayout.BeginHorizontal(); GUILayout.Label(levelToDraw.name); if (GUILayout.Button("^")) { if (index > 0) { currentCampagne.MoveDownLevel(index); } } if (GUILayout.Button("ˇ")) { if (index < currentLevel.listSections.Count) { currentCampagne.MoveUpLevel(index); } } if (GUILayout.Button("Charger", optionsButton)) { if (currentLevel) { SaveLevel(currentLevel); } LevelManager.Instance.UnfoldLevel(levelToDraw); currentLevel = levelToDraw; } if (GUILayout.Button("Supprimer", optionsButton)) { if (EditorUtility.DisplayDialog("Supprimer Nivo", "T'es sûr de vouloir supprimer ce nivo ?", "Ouai ouai !", "Oups non...")) { if (levelToDraw == currentLevel) { LevelManager.Instance.DeleteCurrentLevel(); } levelsToDelet.Add(levelToDraw); } } GUILayout.EndHorizontal(); }
private void DrawAddLevelInterface() { GUILayout.Label("Ajouter Nivo"); levelName = GUILayout.TextField(levelName); if (GUILayout.Button(" + ", optionsButton)) { ScriptableLevel newLevel = ScriptableLevel.CreateInstance <ScriptableLevel>(); newLevel.name = levelName; newLevel.path = "Assets/Campagne/Levels/" + levelName + ".asset"; while (AssetDatabase.LoadAssetAtPath(newLevel.path, typeof(ScriptableLevel))) { newLevel.name += "Otre"; newLevel.path = "Assets/Campagne/Levels/" + newLevel.name + ".asset"; } AssetDatabase.CreateAsset(newLevel, newLevel.path); AssetDatabase.SaveAssets(); levelName = "NvNivo"; currentCampagne.AddLevel(newLevel); } }
static void CreateRegion(LevelConfig master, LevelConfig level) { var lmin = level.LevelMin; var lmax = level.LevelMax; var assetPathAbsulote = string.Empty; var fileName = string.Empty; var assetPath = string.Empty; for (var lvl = lmin; lvl <= lmax; lvl++) { fileName = "level-" + lvl.ToString() + ".asset"; assetPathAbsulote = RootAssetFullPath + fileName; assetPath = RootAssetPath + fileName; ScriptableLevel data = File.Exists(assetPathAbsulote) ? AssetDatabase.LoadAssetAtPath <ScriptableLevel>(assetPath) : ScriptableObject.CreateInstance <ScriptableLevel>(); data.Id = lvl; data.CarSpeed = UseParent(level.SpeedGrowth) ? master.CalcSpeed(lvl) : level.CalcSpeed(lvl); data.PlayTime = UseParent(level.TimeGrowth) ? master.CalcTime(lvl) : level.CalcTime(lvl); data.Reward = UseParent(level.RewardGrowth) ? master.CalcReward(lvl) : level.CalcReward(lvl); data.ToolClean = UseParent(level.ToolCleanGrowth) ? master.CalcToolClean(lvl) : level.CalcToolClean(lvl); data.ToolDouble = UseParent(level.ToolDoubleGrowth) ? master.CalcToolDouble(lvl) : level.CalcToolDouble(lvl); var items = data.Items; var trashCount = level.CalcTrashCount(lvl); int coinCount = 1; int itemCount = trashCount + coinCount; var index = 0; for (; index < itemCount; index++) { var item = new ScriptableLevelItem(); item.Id = index + 1; item.Type = 0; items.Add(item); } //垃圾出现位置生成 float min = 0.05f; float len = 1f - min; float unit = len / (float)itemCount; for (int i = 0; i < itemCount; i++) { float left = min + i * unit; float right = left + unit; float rand = Random.Range(left, right); items[i].Position = rand; } //垃圾积分生成 int totalScro = level.CalcTrashTotalScore(lvl); float average = 1f / (float)trashCount; float[] points = new float[trashCount]; for (int i = 0; i < trashCount; i++) { float left = average * i; float right = average * (i + 1); points[i] = Random.Range(left, right); } float lastValue = 0; for (int i = 0; i < trashCount; i++) { float c1 = lastValue * (float)totalScro; float c2 = points[i] * (float)totalScro; int score = Mathf.RoundToInt(c2 - c1); items[i].Score = score; items[i].Hurt = score; lastValue = points[i]; } data.HP = Mathf.RoundToInt(totalScro * 0.1f); //金币生成 var coinItem = items[trashCount]; coinItem.Id = index + 1; coinItem.Type = 1; coinItem.Coin = level.CalcCoinTotal(lvl); AssetDatabase.CreateAsset(data, assetPath); } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); }
private void OnCurrentLevelChanged(ScriptableLevel level) { ChangeColor(level.BackgroundColor); }