public void Save() { Dictionary <string, string> outputValues = new Dictionary <string, string>(this.values); outputValues["width"] = this.Width.ToString(); outputValues["height"] = this.Height.ToString(); List <string> tiles = new List <string>(); foreach (List <Tile> tileStack in this.Grid) { string value = tileStack.Count == 0 ? "" : string.Join("|", tileStack.Select <Tile, string>(tile => tile == null ? "0" : tile.ID)); while (value.EndsWith("|0")) { value = value.Substring(0, value.Length - 2); } tiles.Add(value); } outputValues["tiles"] = string.Join(",", tiles); List <string> output = new List <string>(); foreach (string key in outputValues.Keys) { output.Add("#" + key + ":" + outputValues[key]); } string finalOutput = string.Join("\r\n", output); FileStuff.WriteFile("data/levels/" + this.Name + ".txt", finalOutput); this.IsDirty = false; }