/// <summary> /// Copies data from level of previouse Scene(used for copying level for testing/exporting) /// </summary> /// <param name="oldLevel"></param> public void CopyLevel(Level_Data oldLevel) { levelData = oldLevel; this.width = levelData.BlockMap.GetLength(0); this.height = levelData.BlockMap.GetLength(1); CreateLevel(); }
private void SetCurrentLevel(string levelName) { bool found = false; //Gets current level index from level data for (int i = 0; i < levelMaster.level_Datas.Count; i++) { if (levelMaster.level_Datas[i].sceneName == levelName) { //When found break currentLevelIndex = i; found = true; break; } } if (!found) { //Level not found in index Debug.Log("Level not found in level data"); } else { //Set current level currentLevel = levelMaster.level_Datas[currentLevelIndex]; } }
/// <summary> /// Create a new Level from scratch /// </summary> /// <param name="width"></param> /// <param name="height"></param> /// <param name="name"></param> public void CreateNewLevel(int width, int height, string name) { this.width = width; this.height = height; levelData = new Level_Data(width, height, name); CreateLevel(); LevelSaveLoad.Save(this.levelData, FilePaths.CustomEditLevelFolder); }
// Start is called before the first frame update void Start() { player = GameObject.FindWithTag("Player"); level_Data = GameObject.FindWithTag("Level Data").GetComponent <Level_Data>(); myVelocity = 8; transform.position = new Vector3(transform.position.x, transform.position.y, player.transform.position.z); }
/// <summary> /// Initializes Camera and sets correct levelData + name /// </summary> /// <param name="name"></param> public void BeginEditLevel(string name) { if (name != "") { Gamemaster.Instance.GetLevel().LoadLevelFromFile(name, FilePaths.CustomEditLevelFolder); } Camera.main.GetComponent <LevelEditorCamera>().InitializeCamera(); data = Gamemaster.Instance.GetLevel().GetLevelData(); levelNameInputField.text = data.Name; }
private void DecrementLevel() { if (currentLevelIndex - 1 >= 0) { currentLevelIndex--; currentLevel = levelMaster.level_Datas[currentLevelIndex]; } else { Debug.Log("Level Out of Bounds (Too Low)"); } }
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////// LEVEL LOADING //////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// private void IncrementLevel() { if (currentLevelIndex + 1 < levelMaster.level_Datas.Count) { currentLevelIndex++; currentLevel = levelMaster.level_Datas[currentLevelIndex]; } else { Debug.Log("Level Out of Bounds (Too High)"); } }
private void LoadLevelMasterInformation() { //If no previous current level, then set current level to first level if (levelMaster.currentLevel == null) { currentLevel = levelMaster.level_Datas[0]; } //Load previous current level else { currentLevelIndex = levelMaster.level_Datas.IndexOf(levelMaster.currentLevel); } }
// Use this for initialization void Start() { if(Level_Info == null) { Level_Info = this; } else if(Level_Info != this) { Destroy(gameObject); } HeroScript = Hero_Data.Hero.GetComponent<Hero_Data>(); Game_Info.GameInfo.LoadLevel(); }
/// <summary> /// Load levelData from fileSystem and create the level /// </summary> /// <param name="levelName">Name of Level</param> /// <param name="subFolder">FolderName e.g. Custom</param> public void LoadLevelFromFile(string levelName, string directoryPath) { Level_Data loadResult = LevelSaveLoad.Load(levelName, directoryPath); if (loadResult != null) { levelData = loadResult; } else { return; } this.width = levelData.BlockMap.GetLength(0); this.height = levelData.BlockMap.GetLength(1); CreateLevel(); }
public static Level_Data Load(string levelName, string directoryPath) { Level_Data level = null; try { string filePath = directoryPath + levelName + ".dat"; BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(filePath, FileMode.Open); level = (Level_Data)bf.Deserialize(file); file.Close(); } catch (FileNotFoundException) { } return(level); }
public static void Save(Level_Data level, string directoryPath) { BinaryFormatter bf = new BinaryFormatter(); string filePath = directoryPath + level.Name + ".dat"; if (!Directory.Exists(directoryPath)) { Directory.CreateDirectory(directoryPath); } if (File.Exists(filePath)) { File.Delete(filePath); } FileStream file = File.Create(filePath); bf.Serialize(file, level); file.Close(); Debug.Log("Saved at " + filePath); }
private void Start() { levelReference = GameObject.FindWithTag("Level Data").GetComponent <Level_Data>(); playerReference = GameObject.FindWithTag("Player").GetComponent <player_Controller>(); }
public void Level_Data_Load(TextAsset levelDesign) { // 텍스트파일 가져오기 string level_design_txt = levelDesign.text; // 개행 할때마다 문자열 배열에 넣기 string[] line = level_design_txt.Split('\n'); for (int i = 0; i < line.Length; i++) { // 행을 워드단위로 나눈다 string[] word = line[i].Split(); // 레벨데이터에 저장할 인덱스 생성 int sel = 0; // 현재 레벨데이터 변수 추가 Level_Data level_data_cur = new Level_Data(); // 만약에 행이 비었다면 다시 처음으로 if (line[i] == "") { continue; } Debug.Log(line[i]); for (int j = 0; j < word.Length; j++) { // 메모장안에 @로 시작하는 구절은 주석으로 처리 if (word[j].StartsWith("@")) { break; } // 워드가 비어있으면 처음으로 if (word[i] == " ") { continue; } switch (sel) { case 0: level_data_cur.enemy_count = int.Parse(word[i]); break; } sel++; } // sel이 정상적으로 처리가 되면(sel이 3이상이 되면) // 레벨데이터에 현재 데이터 추가 if (sel >= 1) { this.level_data.Add(level_data_cur); } else { if (sel == 0) { // 0일 경우는 첫행이 주석일 경우이므로 정상 } else { Debug.LogError("Level_Convert.cs : 데이터 개수가 맞지 않음"); } } } // 레벨데이터가 비어있을 시 if (this.level_data.Count == 0) { Debug.LogError("Level_Convert.cs : 데이터가 비어있음"); this.level_data.Add(new Level_Data()); } }
/// <summary> /// Load from database unless the local cache has the data /// </summary> public override void Load() { Get_Modified_Date(); DateTime DB_Date = getDatabaseValue <DateTime>("MAX(DT_Stamp)", "SELECT MAX(DT_Stamp) FROM tbl_Save_Data WHERE Unique_Identifier = '" + d.DUI + "';"); d.Log(true, "Loading Game State : Local Cache > " + Modified + ", Database > " + DB_Date + ((Modified >= DB_Date) ? " | Attempting to restore Game State from local cache." : " | Attempting to restore Game State from database."), false); if (Modified >= DB_Date) { #region Use Local cache data try { BinaryFormatter bf = new BinaryFormatter(); file = new FileStream(d.path + "/" + File_Name, FileMode.OpenOrCreate); BinaryReader br = new BinaryReader(file); Modified = Convert.ToDateTime(br.ReadString()); Current_Medals = br.ReadByte(); Total_Medals_Earned = br.ReadByte(); Current_Gems = br.ReadInt32(); Total_Gems_Earned = br.ReadInt32(); Level_Data.Clear(); int Level_Count = br.ReadInt32(); for (int i = 0; i < Level_Count; i++) { Level_Data.Add((Level_Info)bf.Deserialize(br.BaseStream)); } br.Close(); file.Close(); } catch (Exception e) { d.Log(false, "Loading from local cache failed: " + e.Message + " Attempting to load from database instead.", true); try { reader = queryDatabase("SELECT * FROM tbl_Save_Data WHERE Unique_Identifier = '" + d.DUI + "';"); if (reader == null) { d.Log(false, "Loading from database failed: The MySqlDataReader returned null, please check the SQL Syntax is correct and ensure there is data to pull! " + "| UNABLE TO LOAD GAME STATE!", true); return; } if (reader.Read()) { Current_Medals = reader.GetByte("Current_Medals"); Total_Medals_Earned = reader.GetByte("Total_Medals_Earned"); Current_Gems = reader.GetInt32("Current_Gems"); Total_Gems_Earned = reader.GetInt32("Total_Gems_Earned"); int Save_ID = reader.GetInt32("Save_ID"); Level_Data.Clear(); reader = queryDatabase("SELECT " + "tbl_Level_Save_Data.Medals_Earned AS ME, " + "tbl_Map_Data.Level_Name AS LN, " + "tbl_Map_Data.Level_Number AS MI " + "FROM tbl_Level_Save_Data " + "LEFT JOIN tbl_Map_Data " + "ON tbl_Level_Save_Data.Map_ID = tbl_Map_Data.Level_Number " + "WHERE tbl_Level_Save_Data.Save_ID = " + Save_ID + ";"); if (reader.HasRows) { while (reader.Read()) { Level_Data.Add(new Level_Info(reader["LN"].ToString(), reader.GetByte("MI"), reader.GetByte("ME"))); } } } else { d.Log(false, "Loading from database failed: The MySqlDataReader returned no records | UNABLE TO LOAD GAME STATE!", true); return; } Modified = DB_Date; d.Log(true, "Loading from database successful.", false); return; } catch (Exception ex) { d.Log(false, "Loading from database failed: " + ex.Message + " | UNABLE TO LOAD GAME STATE!", true); } } finally { if (file != null) { file.Close(); } } d.Log(true, "Loading from local cache successful: " + Path.Combine(d.path, File_Name), false); #endregion } else { #region Use Database data try { reader = queryDatabase("SELECT * FROM tbl_Save_Data WHERE Unique_Identifier = '" + d.DUI + "';"); if (reader == null) { d.Log(false, "Loading from database failed: The MySqlDataReader returned null, please check the SQL Syntax is correct and ensure there is data to pull! " + "Attempting to load from local cache instead.", true); try { // Use local cache data instead BinaryFormatter bf = new BinaryFormatter(); file = new FileStream(d.path + "/" + File_Name, FileMode.OpenOrCreate); BinaryReader br = new BinaryReader(file); Modified = Convert.ToDateTime(br.ReadString()); Current_Medals = br.ReadByte(); Total_Medals_Earned = br.ReadByte(); Current_Gems = br.ReadInt32(); Total_Gems_Earned = br.ReadInt32(); Level_Data.Clear(); int Level_Count = br.ReadInt32(); for (int i = 0; i < Level_Count; i++) { Level_Data.Add((Level_Info)bf.Deserialize(br.BaseStream)); } d.Log(true, "Loading from local cache successful.", false); br.Close(); file.Close(); } catch (Exception e) { d.Log(false, "Loading from local cache failed: " + e.Message + " | UNABLE TO LOAD GAME STATE!", true); } finally { if (file != null) { file.Close(); } } return; } if (reader.Read()) { Current_Medals = reader.GetByte("Current_Medals"); Total_Medals_Earned = reader.GetByte("Total_Medals_Earned"); Current_Gems = reader.GetInt32("Current_Gems"); Total_Gems_Earned = reader.GetInt32("Total_Gems_Earned"); int Save_ID = reader.GetInt32("Save_ID"); Level_Data.Clear(); reader = queryDatabase("SELECT " + "tbl_Level_Save_Data.Medals_Earned AS ME, " + "tbl_Map_Data.Level_Name AS LN, " + "tbl_Map_Data.Level_Number AS MI " + "FROM tbl_Level_Save_Data " + "LEFT JOIN tbl_Map_Data " + "ON tbl_Level_Save_Data.Map_ID = tbl_Map_Data.Level_Number " + "WHERE tbl_Level_Save_Data.Save_ID = " + Save_ID + ";"); if (reader.HasRows) { while (reader.Read()) { Level_Data.Add(new Level_Info(reader["LN"].ToString(), reader.GetByte("MI"), reader.GetByte("ME"))); } } } else { d.Log(false, "Loading from database failed: The MySqlDataReader returned no records | UNABLE TO LOAD GAME STATE!", true); return; } Modified = DB_Date; d.Log(true, "Loading from database successful.", false); return; } catch (Exception ex) { d.Log(false, "Loading from database failed: " + ex.Message + " | UNABLE TO LOAD GAME STATE!", true); } #endregion } // For testing purposes: d.Log(true, "Game State Contents: ", false); d.Log(true, "Current Medals: " + Current_Medals + ", Total Medals Earned: " + total_Medals_Earned + ", Current Gems: " + Current_Gems + ", Total Gems Earned: " + Total_Gems_Earned + ", Modified DateTime: " + Modified, false); foreach (Level_Info level in Level_Data) { d.Log(true, "Level #" + level.Number + ", '" + level.Name + "', Medals: " + level.Medals, false); } }
public void Lvl_Data_Load(TextAsset Level_Edit) { string lv = Level_Edit.text; string[] line = lv.Split('\n'); for (int i = 0; i < line.Length; i++) { if (line[i] == "") { continue; } Debug.Log(line[i]); string[] words = line[i].Split(); int num = 0; Level_Data Lvl_Data = new Level_Data(); for (int t = 0; t < words.Length; t++) { if (words[t].StartsWith("#")) { break; } if (words[t] == "") { continue; } if (num == 0) { Lvl_Data.EndTime = float.Parse(words[t]); } else if (num == 1) { Lvl_Data.PlayerSpeed = float.Parse(words[t]); } else if (num == 2) { Lvl_Data.Floor_Cnt.Max = int.Parse(words[t]); } else if (num == 3) { Lvl_Data.Floor_Cnt.Min = int.Parse(words[t]); } else if (num == 4) { Lvl_Data.Hole_Cnt.Max = int.Parse(words[t]); } else if (num == 5) { Lvl_Data.Hole_Cnt.Min = int.Parse(words[t]); } else if (num == 6) { Lvl_Data.Height_UD.Max = int.Parse(words[t]); } else if (num == 7) { Lvl_Data.Height_UD.Min = int.Parse(words[t]); } num++; Debug.Log(words[t]); } if (num >= 8) { this.Lvl_Data_List.Add(Lvl_Data); } else { if (num == 0) { Debug.Log("정상 작동"); } else { Debug.LogError("Lvl_Data 파라미터 벗어남"); } } } if (this.Lvl_Data_List.Count == 0) { Debug.LogError("Lvl_Data_List에 값이 하나도 없음"); this.Lvl_Data_List.Add(new Level_Data()); } }
// Update is called once per frame void Update() { if(!m_goHero) { m_goHero = GameObject.FindGameObjectWithTag("Hero"); HeroScript = m_goHero.GetComponent<Hero_Data>(); } if(!m_goLevelSpawner) { m_goLevelSpawner = GameObject.FindGameObjectWithTag("Spawner"); m_LevelScript = m_goLevelSpawner.GetComponent<Level_Data>(); } UpdateHUD(); }
// Use this for initialization void Start() { m_goHero = GameObject.FindGameObjectWithTag("Hero"); HeroScript = m_goHero.GetComponent<Hero_Data>(); m_goLevelSpawner = GameObject.FindGameObjectWithTag("Spawner"); m_LevelScript = m_goLevelSpawner.GetComponent<Level_Data>(); }
void Start() { Instance = this; }