// Knapp som kräver haxiga parametrar, Export av griden till en json som går att användas i spelet. Ropas på ifrån view. public bool Export(dynamic dynamicObj) { try { var lvlJsonObj = new LevelJsonObj(); lvlJsonObj.Width = int.Parse(dynamicObj.width); lvlJsonObj.Height = int.Parse(dynamicObj.height); var tilesIndexString = (string)dynamicObj.indextileprop; var sArrayTiles = tilesIndexString.Split(';'); lvlJsonObj.TileIndex = Array.ConvertAll(sArrayTiles, int.Parse); var attIndexString = (string)dynamicObj.indexAttprop; var sArrayAtt = attIndexString.Split(';'); lvlJsonObj.AttributeIndex = Array.ConvertAll(sArrayAtt, int.Parse); // TODO: undefined?! // sista blir undefined 1600, tycks inte funka som tänkt var givenName = (string)dynamicObj.indexAttprop; string fileLocation = System.IO.Path.Combine(Environment.CurrentDirectory, @"Content\Export\mapoutput.json"); if (!File.Exists(fileLocation)) { // Log } string json = JsonConvert.SerializeObject(lvlJsonObj); System.IO.File.WriteAllText(fileLocation, json); return(true); } catch (Exception e) { // Log return(false); } }
// Funktion för att importera värden sparad map. Ropas på från vyn public string Import() { try { string fileLocation = System.IO.Path.Combine(Environment.CurrentDirectory, @"Content\Export\mapoutput.json"); if (!File.Exists(fileLocation)) { return("Could not find [map].json file."); } else { LevelJsonObj SavedMap = JsonConvert.DeserializeObject <LevelJsonObj>(File.ReadAllText(fileLocation)); SavedMapValTiles = string.Join(",", SavedMap.TileIndex); SavedMapValAttributes = string.Join(",", SavedMap.AttributeIndex); return("OK"); } } catch (Exception e) { return("Exception Import: " + e.ToString()); } }
//public abstract bool Create(string fileData, olcSprite* sprite, string name); public bool Create(string fileData, Sprite sprite, string name) { sName = name; // namnet sparat lokalt pSprite = sprite; // pekaren till spriten // Ladda filen som innehåller lvl data: bool experimentWithJson = true; if (experimentWithJson) { string json = File.ReadAllText(fileData); LevelJsonObj account = JsonConvert.DeserializeObject <LevelJsonObj>(json);; nHeight = account.Height; nWidth = account.Width; m_indices = account.TileIndex; //m_solids = account.AttributeIndex; // Only use solid not solid for now. m_solids = new bool[nWidth * nHeight]; var length = account.AttributeIndex.Length; for (int i = 0; i < length; i++) { if (account.AttributeIndex[i].Equals(0)) { m_solids[i] = false; } else { m_solids[i] = true; } } } else { //File.ReadAllText("Resources\\Settings.txt") var fileDataString = File.ReadAllText(fileData); if (!string.IsNullOrEmpty(fileDataString)) { // Nollindexerat Första är höjden andra är bredden // sen är det par. Först vilken tile att använda, sen om den är solid eller inte. //t ex: 64 32 9 0 9 0 // crossX har gjort en sprite viewer. //TODO hitta den // ittey ? har gjort en mapp editor // TODO: hitta den //endast de två första värdena var firstTwo = String.Join(" ", fileDataString.Split(' ').Take(2)); string[] firstTwoArray = firstTwo.Split(' '); nHeight = Int32.Parse(firstTwoArray[1]); // testar byta plats på dessa och det händer grejer.. nWidth = Int32.Parse(firstTwoArray[0]); // testar byta plats på dessa och det händer grejer.. // Kan också vara kartan (village1.lvl.txt) inte säker på om den är som den ska liksom // Skapa våra två arrayer, solid och indexar. m_solids = new bool[nWidth * nHeight]; m_indices = new int[nWidth * nHeight]; //utan de två första i strängen var resultNoWH = String.Join(" ", fileDataString.Split(' ').Skip(2)); string[] resultNoWHArray = resultNoWH.Split(' '); var röv1 = new List <string>(); var röv2 = new List <string>(); for (int i = 0; i < resultNoWHArray.Length; i++) { var framröv = resultNoWHArray[i]; if (i % 2 == 0) { röv1.Add(framröv); } else { röv2.Add(framröv); } } for (int i = 0; i < röv1.Count; i++) { m_indices[i] = int.Parse(röv1[i]); } for (int i = 0; i < röv2.Count; i++) { m_solids[i] = röv2[i].Equals("1"); } return(true); } } return(false); }