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); } }
//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); }
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(); }
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>(); }
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(); }
//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(); }
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); }
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); })); }