public static bool SaveDialog(CharSheetView model) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Json file (*.json) [recomended]|*.json"; //|Xml file (*.xml)|*.xml saveFileDialog.InitialDirectory = TheSavePath; if (saveFileDialog.ShowDialog() == false) { return(false); } return(ToJson(model, saveFileDialog.FileName)); }
public static bool LoadPic(CharSheetView model) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png"; if (openFileDialog.ShowDialog() == false) { return(false); } model.CharImage.Source = new BitmapImage(new Uri(openFileDialog.FileName)); return(true); }
public static bool LoadDialog(CharSheetView model) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Json file (*.json)|*.json"; openFileDialog.InitialDirectory = Save.TheSavePath; if (openFileDialog.ShowDialog() == false) { return(false); } JObject json = JObject.Parse(System.IO.File.ReadAllText(openFileDialog.FileName)); return(FromJson(model, json)); }
public static bool ToJson(CharSheetView model, string path) { //json object for storing data JObject json = new JObject(); //Add char info to json json.Add("Player_Name", model.PlayerName.Text); json.Add("Char_Name", model.CharacterName.Text); json.Add("Race", model.CharacterRace.Text); json.Add("Class", model.CharacterClass.Text); json.Add("Level", model.CharacterLevel.Text); //Add health block to json json.Add("HP", model.HP.Text); json.Add("Max_HP", model.MaxHP.Text); //Add stat block to json //STR json.Add("STR", model.STR_Score.Text); json.Add("STR_Mod", model.STR_Mod.Text); json.Add("STR_Temp", model.STR_TempScore.Text); json.Add("STR_Temp_Mod", model.STR_TempMod.Text); //DEX json.Add("DEX", model.DEX_Score.Text); json.Add("DEX_Mod", model.DEX_Mod.Text); json.Add("DEX_Temp", model.DEX_TempScore.Text); json.Add("DEX_Temp_Mod", model.DEX_TempMod.Text); //CON json.Add("CON", model.CON_Score.Text); json.Add("CON_Mod", model.CON_Mod.Text); json.Add("CON_Temp", model.CON_TempScore.Text); json.Add("CON_Temp_Mod", model.CON_TempMod.Text); //INT json.Add("INT", model.INT_Score.Text); json.Add("INT_Mod", model.INT_Mod.Text); json.Add("INT_Temp", model.INT_TempScore.Text); json.Add("INT_Temp_Mod", model.INT_TempMod.Text); //WIS json.Add("WIS", model.WIS_Score.Text); json.Add("WIS_Mod", model.WIS_Mod.Text); json.Add("WIS_Temp", model.WIS_TempScore.Text); json.Add("WIS_Temp_Mod", model.WIS_TempMod.Text); //CHA json.Add("CHA", model.CHA_Score.Text); json.Add("CHA_Mod", model.CHA_Mod.Text); json.Add("CHA_Temp", model.CHA_TempScore.Text); json.Add("CHA_Temp_Mod", model.CHA_TempMod.Text); //AC json.Add("AC", model.AC.Text); json.Add("AC_Armor", model.AC_ArmorBonus.Text); json.Add("AC_Dodge", model.AC_DodgeBonus.Text); json.Add("AC_Size", model.AC_SizeBonus.Text); json.Add("AC_Natural", model.AC_NaturalArmorBonus.Text); json.Add("AC_Deflect", model.AC_DeflectBonus.Text); json.Add("AC_Misc", model.AC_MiscBonus.Text); //Add Saves to json //Fort Save json.Add("FORT_Total", model.FORT_Total.Text); json.Add("FORT_Base", model.FORT_Base.Text); json.Add("FORT_Magic", model.FORT_MagicBonus.Text); json.Add("FORT_Misc", model.FORT_MiscBonus.Text); json.Add("FORT_Temp", model.FORT_TempBonus.Text); //Ref Save json.Add("REF_Total", model.REF_Total.Text); json.Add("REF_Base", model.REF_BaseBonus.Text); json.Add("REF_Magic", model.REF_MagicBonus.Text); json.Add("REF_Misc", model.REF_MiscBonus.Text); json.Add("REF_Temp", model.REF_TempBonus.Text); //Will Save json.Add("WILL_Total", model.WILL_Total.Text); json.Add("WILL_Base", model.WILL_BaseBonus.Text); json.Add("WILL_Magic", model.WILL_MagicBonus.Text); json.Add("WILL_Misc", model.WILL_MiscBonus.Text); json.Add("WILL_Temp", model.WILL_Temp.Text); //Add Attack Bonuses to json //MAB json.Add("MAB_Base", model.MAB_Base.Text); json.Add("MAB_Total", model.MAB_Total.Text); json.Add("MAB_Size", model.MAB_SizeBonus.Text); json.Add("MAB_Misc", model.MAB_MiscBonus.Text); json.Add("MAB_Temp", model.MAB_TempBonus.Text); //CMB json.Add("CMB_Base", model.CMB_Base.Text); json.Add("CMB_Total", model.CMB_Total.Text); json.Add("CMB_Size", model.CMB_SizeBonus.Text); json.Add("CMB_Misc", model.CMB_MiscBonus.Text); json.Add("CMB_Temp", model.CMB_TempBonus.Text); //RAB json.Add("RAB_Base", model.RAB_Base.Text); json.Add("RAB_Total", model.RAB_Total.Text); json.Add("RAB_Size", model.RAB_SizeBonus.Text); json.Add("RAB_Misc", model.RAB_MiscBonus.Text); json.Add("RAB_Temp", model.RAB_TempBonus.Text); //Init json.Add("INIT_Total", model.Init_Total.Text); json.Add("INIT_Misc", model.Init_MiscBonus.Text); //Add more //Add Image BitmapSource src = model.CharImage.Source as BitmapSource; WriteableBitmap bitmap = new WriteableBitmap(src); int width = bitmap.PixelWidth; int height = bitmap.PixelHeight; int stride = width * ((bitmap.Format.BitsPerPixel + 7) / 8); double dpiX = bitmap.DpiX; double dpiY = bitmap.DpiY; string pixelFormat = bitmap.Format.ToString(); byte[] bitmapData = new byte[height * stride]; bitmap.CopyPixels(bitmapData, stride, 0); string byteString = Convert.ToBase64String(bitmapData); json.Add("ImageWidth", width.ToString()); json.Add("ImageHeight", height.ToString()); json.Add("ImageFormat", pixelFormat); json.Add("ImageDpiX", dpiX.ToString()); json.Add("ImageDpiY", dpiY.ToString()); json.Add("Image", byteString); System.IO.File.WriteAllText(path, json.ToString()); return(true); }
public static void ImageProcess(CharSheetView model, JObject json) { JToken temp = ""; bool valid = true; int width = -1, height = -1, bytesPerPixel = -1, stride = -1; double dpiX = -1, dpiY = -1; PixelFormat pixelFormat = PixelFormats.Default; byte[] bitmapData = null; if (valid && json.TryGetValue("ImageWidth", out temp)) { width = Convert.ToInt32(temp.ToString()); } else { valid = false; } if (valid && json.TryGetValue("ImageHeight", out temp)) { height = Convert.ToInt32(temp.ToString()); } else { valid = false; } if (valid && json.TryGetValue("ImageFormat", out temp)) { pixelFormat = PixelFromatFromString(temp.ToString()); } else { valid = false; } if (valid && json.TryGetValue("ImageDpiX", out temp)) { dpiX = Convert.ToDouble(temp.ToString()); } else { valid = false; } if (valid && json.TryGetValue("ImageDpiY", out temp)) { dpiY = Convert.ToDouble(temp.ToString()); } else { valid = false; } if (valid && json.TryGetValue("Image", out temp)) { bitmapData = Convert.FromBase64String(temp.ToString()); } else { valid = false; } if (valid) { bytesPerPixel = (pixelFormat.BitsPerPixel + 7) / 8; stride = bytesPerPixel * width; BitmapSource bitmap = BitmapSource.Create(width, height, dpiX, dpiY, pixelFormat, null, bitmapData, stride); model.CharImage.Source = bitmap; } }
public static bool FromJson(CharSheetView model, JObject json) { JToken temp = ""; //Load info if (json.TryGetValue("Player_Name", out temp)) { model.PlayerName.Text = temp.ToString(); } else { model.PlayerName.Text = ""; } if (json.TryGetValue("Char_Name", out temp)) { model.CharacterName.Text = temp.ToString(); } else { model.CharacterName.Text = ""; } if (json.TryGetValue("Race", out temp)) { model.CharacterRace.Text = temp.ToString(); } else { model.CharacterRace.Text = ""; } if (json.TryGetValue("Class", out temp)) { model.CharacterClass.Text = temp.ToString(); } else { model.CharacterClass.Text = ""; } if (json.TryGetValue("Level", out temp)) { model.CharacterLevel.Text = temp.ToString(); } else { model.CharacterLevel.Text = ""; } //Load health if (json.TryGetValue("HP", out temp)) { model.HP.Text = temp.ToString(); } else { model.HP.Text = ""; } if (json.TryGetValue("Max_HP", out temp)) { model.MaxHP.Text = temp.ToString(); } else { model.MaxHP.Text = ""; } if (json.TryGetValue("AC", out temp)) { model.AC.Text = temp.ToString(); } else { model.AC.Text = ""; } //Load stat block if (json.TryGetValue("STR", out temp)) { model.STR_Score.Text = temp.ToString(); } else { model.STR_Score.Text = ""; } if (json.TryGetValue("DEX", out temp)) { model.DEX_Score.Text = temp.ToString(); } else { model.DEX_Score.Text = ""; } if (json.TryGetValue("CON", out temp)) { model.CON_Score.Text = temp.ToString(); } else { model.CON_Score.Text = ""; } if (json.TryGetValue("INT", out temp)) { model.INT_Score.Text = temp.ToString(); } else { model.INT_Score.Text = ""; } if (json.TryGetValue("WIS", out temp)) { model.WIS_Score.Text = temp.ToString(); } else { model.WIS_Score.Text = ""; } if (json.TryGetValue("CHA", out temp)) { model.CHA_Score.Text = temp.ToString(); } else { model.CHA_Score.Text = ""; } //Load AC Stats if (json.TryGetValue("AC", out temp)) { model.AC.Text = temp.ToString(); } else { model.AC.Text = ""; } if (json.TryGetValue("AC_Armor", out temp)) { model.AC_ArmorBonus.Text = temp.ToString(); } else { model.AC_ArmorBonus.Text = ""; } if (json.TryGetValue("AC_Dodge", out temp)) { model.AC_DodgeBonus.Text = temp.ToString(); } else { model.AC_DodgeBonus.Text = ""; } if (json.TryGetValue("AC_Size", out temp)) { model.AC_SizeBonus.Text = temp.ToString(); } else { model.AC_SizeBonus.Text = ""; } if (json.TryGetValue("AC_Natural", out temp)) { model.AC_NaturalArmorBonus.Text = temp.ToString(); } else { model.AC_NaturalArmorBonus.Text = ""; } if (json.TryGetValue("AC_Deflect", out temp)) { model.AC_DeflectBonus.Text = temp.ToString(); } else { model.AC_DeflectBonus.Text = ""; } if (json.TryGetValue("AC_Misc", out temp)) { model.AC_MiscBonus.Text = temp.ToString(); } else { model.AC_MiscBonus.Text = ""; } //Load Fort Stats if (json.TryGetValue("FORT_Total", out temp)) { model.FORT_Total.Text = temp.ToString(); } else { model.FORT_Total.Text = ""; } if (json.TryGetValue("FORT_Base", out temp)) { model.FORT_Base.Text = temp.ToString(); } else { model.FORT_Base.Text = ""; } if (json.TryGetValue("FORT_Magic", out temp)) { model.FORT_MagicBonus.Text = temp.ToString(); } else { model.FORT_MagicBonus.Text = ""; } if (json.TryGetValue("FORT_Misc", out temp)) { model.FORT_MiscBonus.Text = temp.ToString(); } else { model.FORT_MiscBonus.Text = ""; } if (json.TryGetValue("FORT_Temp", out temp)) { model.FORT_TempBonus.Text = temp.ToString(); } else { model.FORT_TempBonus.Text = ""; } //Load Ref Stats if (json.TryGetValue("REF_Total", out temp)) { model.REF_Total.Text = temp.ToString(); } else { model.REF_Total.Text = ""; } if (json.TryGetValue("REF_Base", out temp)) { model.REF_BaseBonus.Text = temp.ToString(); } else { model.REF_BaseBonus.Text = ""; } if (json.TryGetValue("REF_Magic", out temp)) { model.REF_MagicBonus.Text = temp.ToString(); } else { model.REF_MagicBonus.Text = ""; } if (json.TryGetValue("REF_Misc", out temp)) { model.REF_MiscBonus.Text = temp.ToString(); } else { model.REF_MiscBonus.Text = ""; } if (json.TryGetValue("REF_Temp", out temp)) { model.REF_TempBonus.Text = temp.ToString(); } else { model.REF_TempBonus.Text = ""; } //Load Will Stats if (json.TryGetValue("WILL_Total", out temp)) { model.WILL_Total.Text = temp.ToString(); } else { model.WILL_Total.Text = ""; } if (json.TryGetValue("WILL_Base", out temp)) { model.WILL_BaseBonus.Text = temp.ToString(); } else { model.WILL_BaseBonus.Text = ""; } if (json.TryGetValue("WILL_Magic", out temp)) { model.WILL_MagicBonus.Text = temp.ToString(); } else { model.WILL_MagicBonus.Text = ""; } if (json.TryGetValue("WILL_Misc", out temp)) { model.WILL_MiscBonus.Text = temp.ToString(); } else { model.WILL_MiscBonus.Text = ""; } if (json.TryGetValue("WILL_Temp", out temp)) { model.WILL_Temp.Text = temp.ToString(); } else { model.WILL_Temp.Text = ""; } //Load MAB Stats if (json.TryGetValue("MAB_Base", out temp)) { model.MAB_Base.Text = temp.ToString(); } else { model.MAB_Base.Text = ""; } if (json.TryGetValue("MAB_Total", out temp)) { model.MAB_Total.Text = temp.ToString(); } else { model.MAB_Total.Text = ""; } if (json.TryGetValue("MAB_Size", out temp)) { model.MAB_SizeBonus.Text = temp.ToString(); } else { model.MAB_SizeBonus.Text = ""; } if (json.TryGetValue("MAB_Misc", out temp)) { model.MAB_MiscBonus.Text = temp.ToString(); } else { model.MAB_MiscBonus.Text = ""; } if (json.TryGetValue("MAB_Temp", out temp)) { model.MAB_TempBonus.Text = temp.ToString(); } else { model.MAB_TempBonus.Text = ""; } //Load CMB Stats if (json.TryGetValue("CMB_Base", out temp)) { model.CMB_Base.Text = temp.ToString(); } else { model.CMB_Base.Text = ""; } if (json.TryGetValue("CMB_Total", out temp)) { model.CMB_Total.Text = temp.ToString(); } else { model.CMB_Total.Text = ""; } if (json.TryGetValue("CMB_Size", out temp)) { model.CMB_SizeBonus.Text = temp.ToString(); } else { model.CMB_SizeBonus.Text = ""; } if (json.TryGetValue("CMB_Misc", out temp)) { model.CMB_MiscBonus.Text = temp.ToString(); } else { model.CMB_MiscBonus.Text = ""; } if (json.TryGetValue("CMB_Temp", out temp)) { model.CMB_TempBonus.Text = temp.ToString(); } else { model.CMB_TempBonus.Text = ""; } //Load RAB Stats if (json.TryGetValue("RAB_Base", out temp)) { model.RAB_Base.Text = temp.ToString(); } else { model.RAB_Base.Text = ""; } if (json.TryGetValue("RAB_Total", out temp)) { model.RAB_Total.Text = temp.ToString(); } else { model.RAB_Total.Text = ""; } if (json.TryGetValue("RAB_Size", out temp)) { model.RAB_SizeBonus.Text = temp.ToString(); } else { model.RAB_SizeBonus.Text = ""; } if (json.TryGetValue("RAB_Misc", out temp)) { model.RAB_MiscBonus.Text = temp.ToString(); } else { model.RAB_MiscBonus.Text = ""; } if (json.TryGetValue("RAB_Temp", out temp)) { model.RAB_TempBonus.Text = temp.ToString(); } else { model.RAB_TempBonus.Text = ""; } //Load class tab model.setClassTab(); model.ClassTab.Header = model.CharacterClass.Text; //Load Image Action action = delegate() { ImageProcess(model, json); }; Dispatcher jeff; jeff = Dispatcher.CurrentDispatcher; jeff.Invoke(DispatcherPriority.Normal, action); return(true); }