// Reloads the level and reinitializes Mario to his default state. public void Reset() { Enemies.Clear(); Blocks.Clear(); Pipes.Clear(); Coins.Clear(); Checkpoints.Clear(); Flagpoles.Clear(); levelData.Clear(); InvisibleBarrier = new InvisibleBarrier(Vector2.Zero); CoinRoomPosition = Vector2.Zero; DynamicObjects.Clear(); StaticObjects.Clear(); PowerUpState = false; Mario.Instance.ResetPlayer(); SoundManager.Instance.gameOverPlayOnce = true; levelData = ParseLevelCSV(fileName); BuildLevel(levelData); }
private void CreateCheckPoints() { Checkpoints.Clear(); for (int i = 0; i < centerTrack.Lines.Count * 0.90f; i += 4) { Checkpoints.Add(new Boundary(outsideTrack.Lines[i].X, outsideTrack.Lines[i].Y, insideTrack.Lines[i].X, insideTrack.Lines[i].Y)); } }
public void Read(string path) { SaveEmpty = false; Checkpoints.Clear(); EpisodePlayed.Clear(); // read and decode Data byte[] file = File.ReadAllBytes(path); byte[] decoded = DecodeEncode.Decode(file); // decoded is - dexored content only (since file starts with header) Raw = Encoding.UTF8.GetString(decoded); try { m_Data = Json.Decode(Raw); //this is the save file, NOT initialdata } catch { SaveEmpty = true; return; } // add normal checkpoints foreach (var checkpoint in m_Data.checkpoints) { List <string> flags = new List <string>(); var vars = ReadVarsForCheckpoint(checkpoint); foreach (var fl in checkpoint.flags) { flags.Add(fl); } Checkpoints.Add(new Checkpoint(checkpoint, vars, flags)); } // add currentcheckpoint (seems to be identical to latest checkpoint...) Dictionary <string, VariableState> variables; try { List <string> flags = new List <string>(); foreach (var fl in m_Data.currentCheckpoint.stateCheckPoint.flags) { flags.Add(fl); } variables = ReadVarsForCheckpoint(m_Data.currentCheckpoint.stateCheckPoint); Checkpoints.Add(new Checkpoint(m_Data.currentCheckpoint.stateCheckPoint, variables, flags)); } catch (Microsoft.CSharp.RuntimeBinder.RuntimeBinderException) { SaveEmpty = true; return; } // add global variables as a last checkpoint.. // hack... variables = ReadVarsForCheckpoint(m_Data); Checkpoints.Add(new Checkpoint(new { pointIdentifier = "Global Vars", currentObjective = "" }, variables)); // fill episodeState (?) foreach (var episode in m_Data.episodes) { string name = episode.name; string stateStr = episode.episodeState; bool played = false; if (stateStr == "kFinished" || stateStr == "kInProgress") { played = true; } EpisodePlayed[name] = played; } if (File.Exists(Path.GetDirectoryName(path) + @"\Header.Save")) { ReadHeader(Path.GetDirectoryName(path) + @"\Header.Save"); } else { m_Header = null; } }
public void ReadSaveFromFile(string savePath) { SaveIsEmpty = false; Checkpoints.Clear(); PlayedEpisodes.Clear(); // Read and decode Data var fileContent = File.ReadAllBytes(savePath); try { Data = JsonConverter.DecodeFileContentToJson(fileContent); RawSave = Data.ToString(); } catch { SaveIsEmpty = true; return; } Dictionary <string, VariableState> variables; Dictionary <string, FloatState> floats; // Add regular checkpoints foreach (var checkpoint in Data.checkpoints) { var cpFlags = new List <string>(); variables = GetCheckpointVariables(checkpoint); floats = GetCheckpointFloats(checkpoint); foreach (var flag in checkpoint.flags) { cpFlags.Add(flag.Value); } Checkpoints.Add(new Checkpoint(checkpoint, variables, cpFlags, floats)); } // Add currentcheckpoint (seems to be identical to latest checkpoint...) try { var currentCpFlags = new List <string>(); foreach (var fl in Data.currentCheckpoint.stateCheckpoint.flags) { currentCpFlags.Add(fl.Value); } variables = GetCheckpointVariables(Data.currentCheckpoint.stateCheckpoint); floats = GetCheckpointFloats(Data.currentCheckpoint.stateCheckpoint); Checkpoints.Add(new Checkpoint(Data.currentCheckpoint.stateCheckpoint, variables, currentCpFlags, floats)); } catch (Microsoft.CSharp.RuntimeBinder.RuntimeBinderException) { SaveIsEmpty = true; return; } // Add global variables as a last checkpoint.. // hack... variables = GetCheckpointVariables(Data); floats = GetCheckpointFloats(Data); Checkpoints.Add(new Checkpoint(new { pointIdentifier = "Global Vars", currentObjective = Data.currentObjective }, variables, null, floats)); // Fill episodeState (?) foreach (var episode in Data.episodes) { string episodeName = episode.name; string episodeState = episode.episodeState; var isPlayed = episodeState == Consts.EpisodeStates.Finished || episodeState == Consts.EpisodeStates.InProgress; PlayedEpisodes[episodeName] = isPlayed; } if (File.Exists(Path.GetDirectoryName(savePath) + @"\Header.Save")) { ReadHeaderFromFile(Path.GetDirectoryName(savePath) + @"\Header.Save"); } else { Header = null; } }