Пример #1
0
 /// <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();
 }
Пример #2
0
        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];
            }
        }
Пример #3
0
 /// <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);
    }
Пример #5
0
 /// <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;
 }
Пример #6
0
 private void DecrementLevel()
 {
     if (currentLevelIndex - 1 >= 0)
     {
         currentLevelIndex--;
         currentLevel = levelMaster.level_Datas[currentLevelIndex];
     }
     else
     {
         Debug.Log("Level Out of Bounds (Too Low)");
     }
 }
Пример #7
0
        //////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////       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)");
            }
        }
Пример #8
0
 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);
     }
 }
Пример #9
0
    // 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();
    }
Пример #10
0
    /// <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();
    }
Пример #11
0
    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);
    }
Пример #12
0
    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>();
 }
Пример #14
0
    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);
        }
    }
Пример #16
0
    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());
        }
    }
Пример #17
0
    // 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();
    }
Пример #18
0
    // 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>();
    }
Пример #19
0
 void Start()
 {
     Instance = this;
 }