예제 #1
0
    private IEnumerator _SaveLevelToDb(string p_levelName, int p_uid, SerializedLevelData p_serializedData, System.Action <LevelInfo> levelInfo)
    {
        SerializeLevel();

        WWWForm form = new WWWForm();

        form.AddField("levelName", p_levelName);
        form.AddField("data", SerializeDataAsString(p_serializedData));
        form.AddField("uid", p_uid);

        WWW www = new WWW(Url.WEBSITE + Url.SAVE_LEVEL, form);

        yield return(www);

        if (www.error == null)
        {
            try {
                levelInfo(JsonUtility.FromJson <LevelInfo>(www.text));
            } catch (System.Exception exception) {
                Debug.LogError("Failed to fetch login info from saved level: " + exception);
                levelInfo(null);
            }
        }
        else
        {
            Debug.LogError("Failed to save level to database: " + www.error);
            levelInfo(null);
        }
    }
예제 #2
0
    //Fill the serialized level data.
    public bool LoadSerializedData()
    {
        //If there's no level selected, change selected level to the template.
        if (GameManager.Instance.currentLevel == "" || GameManager.Instance.currentLevel == "Template.sld")
        {
            Debug.Log("No level selected, loading template level.");
            GameManager.Instance.currentLevel = "Template.sld";

            //Checks if we're on android.
            string filePath = Path.Combine(Application.streamingAssetsPath, "Template.sld");
            if (filePath.Contains("://"))
            {
                StartCoroutine(LoadAndroidFile(filePath));
                return(true);
            }
        }
        else
        {
            Debug.Log("Loading selected level.");
        }

        //Load the data inside the specified .sld file.
        if (!FileManager.LoadLevel(GameManager.Instance.currentLevel, out serializedData))
        {
            Debug.Log("Error loading level.");
            serializedData = new SerializedLevelData();
            return(false);
        }

        DeserializeLevelData();

        return(true);
    }
예제 #3
0
    public static void SaveLevel(string tName, SerializedLevelData tLProp)
    {
        CheckDirectory("/Levels");

        BinaryFormatter bf = new BinaryFormatter();
        //Creates a file with given level name.
        FileStream file = File.Create(GetDirectory(tName) + tName);

        //Uses created file to write current level data.
        bf.Serialize(file, tLProp);
        file.Close();
    }
예제 #4
0
    public void InitializeLevel()
    {
        IsPaused       = true;
        player         = GameObject.Find("PlayerTest");
        tileManager    = GameObject.Find("TileManager").GetComponent <TileManager>();
        _tileConnector = GameObject.Find("TileConnector").GetComponent <TileConnector>();
        //Initialize the level data, serialized level data and unique objects list to prevent nullreferences.
        levelData      = new LevelData();
        serializedData = new SerializedLevelData();
        _uniqueObjects = new UniqueObjects();

        //ghostObjects = new List<GameObject>();
    }
예제 #5
0
    public IEnumerator LoadAndroidFile(string filePath)
    {
        WWW www = new WWW(filePath);

        yield return(www);

        MemoryStream    ms    = new MemoryStream(www.bytes);
        BinaryFormatter bForm = new BinaryFormatter();

        serializedData = (SerializedLevelData)bForm.Deserialize(ms);
        ms.Close();
        DeserializeLevelData();
    }
예제 #6
0
 //Reset all the level variables.
 public void ClearLevel()
 {
     IsPaused = true;
     player   = null;
     doorList.Clear();
     doorList = null;
     serializedData.objectList.Clear();
     serializedData = null;
     _uniqueObjects = null;
     levelData.objectList.Clear();
     levelData = null;
     EnemyList.Clear();
 }
예제 #7
0
    public static bool LoadLevel(string tName, out SerializedLevelData tLProp)
    {
        if (tName != "Template.sld")
        {
            CheckDirectory("/Levels");

            //Checks if level exists.
            if (!File.Exists(GetDirectory(tName) + tName))
            {
                Debug.Log("Error loading level. Level cannot be found.");
                tLProp = null;
                return(false);
            }

            BinaryFormatter bf = new BinaryFormatter();
            //Opens level file according to given file name.
            FileStream file = File.Open(GetDirectory(tName) + tName, FileMode.Open);
            //Uses opened file to paste level data in container tLProp.
            tLProp = (SerializedLevelData)bf.Deserialize(file);
            file.Close();
        }
        else
        {
            //Checks if level exists.
            if (!File.Exists(Application.streamingAssetsPath + "/" + tName))
            {
                Debug.Log("Error loading template. Level cannot be found.");
                tLProp = null;
                return(false);
            }

            BinaryFormatter bf = new BinaryFormatter();
            //Opens level file according to given file name.
            FileStream file = File.Open(Application.streamingAssetsPath + "/" + tName, FileMode.Open);
            //Uses opened file to paste level data in container tLProp.
            tLProp = (SerializedLevelData)bf.Deserialize(file);
            file.Close();
        }

        return(true);
    }
예제 #8
0
 public void SaveLevelToDb(string p_levelName, int p_uid, SerializedLevelData p_serializedData, System.Action <LevelInfo> levelInfo)
 {
     StartCoroutine(_SaveLevelToDb(p_levelName, p_uid, p_serializedData, _levelInfo => {
         levelInfo(_levelInfo);
     }));
 }