private void SetControl(ViewToSelect view, cGameStatus status) { this.Controls.Clear(); switch (view) { case ViewToSelect.Main: startControl.Size = this.ClientSize; startControl.Status = status; startControl.updateUI(); this.Controls.Add(startControl); break; case ViewToSelect.Game: gameControl = new ucGame(viewChanger); gameControl.Dock = DockStyle.Fill; gameControl.Size = this.ClientSize; this.Controls.Add(gameControl); gameControl.StartGame(status); break; default: break; } }
private void LvSaves_DoubleClick(object sender, EventArgs e) { if (lvSaves.SelectedItems == null || lvSaves.SelectedItems.Count != 1) { return; } Status = (cGameStatus)lvSaves.SelectedItems[0].Tag; updateUI(); }
internal void StartGame(cGameStatus status) { this.score = status.Score; this.level = status.Level; this.spaceShip.WeaponFrequency = status.WeaponLevel; this.spaceShip.WeaponStrength = status.WeaponStrength; InitLevel(status.Level); spaceShip.Location = new Point((this.Width - spaceShip.Size.Width) / 2, (this.Height - 150)); GameTimer.Start(); MovementTimer.Start(); InvaderFireTimer.Start(); MoveRowDownTimer.Start(); ShieldTimer.Start(); RegenerationTimer.Start(); FireTimer.Start(); }
private List <cGameStatus> importSavesFromExcel() { List <cGameStatus> saves = new List <cGameStatus>(); XSSFWorkbook wb = null; using (System.IO.FileStream fs = new System.IO.FileStream("data.xlsx", System.IO.FileMode.Open)) { wb = new XSSFWorkbook(fs); } ISheet sheet = null; for (int i = 0; i < wb.NumberOfSheets; i++) { ISheet tmp = wb.GetSheetAt(i); if (tmp.SheetName == "Save") { sheet = tmp; } } if (sheet == null) { return(saves); } if (sheet.PhysicalNumberOfRows <= 1) { return(saves); } for (int i = 1; i < sheet.PhysicalNumberOfRows; i++) { IRow row = sheet.GetRow(i); cGameStatus st = new cGameStatus(); st.Date = row.GetCell(0).StringCellValue; st.Level = Convert.ToInt32(row.GetCell(1).StringCellValue); st.Score = Convert.ToInt32(row.GetCell(2).StringCellValue); st.WeaponLevel = Convert.ToInt32(row.GetCell(3).StringCellValue); st.WeaponStrength = Convert.ToInt32(row.GetCell(4).StringCellValue); saves.Add(st); } return(saves); }
private void LoadGameFromFile() { status = new cGameStatus() { Level = 1, WeaponLevel = 1, WeaponStrength = 1 }; List <cGameStatus> excelImports = null; if (File.Exists("da1ta.ini")) { // Lade 90er Ini Datei string[] content = File.ReadAllLines("data.ini"); foreach (string line in content) { if (line.StartsWith("Level")) { status.Level = Convert.ToInt32(getValueFromLine(line)); } else if (line.StartsWith("Score")) { status.Score = Convert.ToInt32(getValueFromLine(line)); } else if (line.StartsWith("WeaponLevel")) { status.WeaponLevel = Convert.ToInt32(getValueFromLine(line)); } else if (line.StartsWith("WeaponStrength")) { status.WeaponStrength = Convert.ToInt32(getValueFromLine(line)); } } } if (File.Exists("dataReflection2.ini")) { // Lade Reflection Ini string[] content = File.ReadAllLines("dataReflection.ini"); Type gameStatusType = typeof(cGameStatus); BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; foreach (string line in content) { string propertyName = line.Substring(0, line.IndexOf(" =")); foreach (PropertyInfo pInfo in gameStatusType.GetProperties(flags)) { if (propertyName == pInfo.Name) { object valueToWrite = Convert.ChangeType(getValueFromLine(line), pInfo.PropertyType); pInfo.SetValue(status, valueToWrite); } } } } if (File.Exists("dataXml.xml")) { XmlSerializer serializer = new XmlSerializer(typeof(cGameStatus)); using (System.IO.StringReader sr = new System.IO.StringReader(File.ReadAllText("dataXml.xml"))) { status = (cGameStatus)serializer.Deserialize(sr); } } if (File.Exists("data.json")) { status = (cGameStatus) new JavaScriptSerializer().Deserialize(cEncrytionReflection.DecryptString(File.ReadAllText("data.json"), "ABCDEFG"), typeof(cGameStatus)); } if (File.Exists("data.xlsx")) { excelImports = importSavesFromExcel(); startControl.Saves = excelImports; } #region Registry //string userRoot = "HKEY_CURRENT_USER\\Software"; //string subkey = "ATCInvader"; //string keyName = userRoot + "\\" + subkey; // Hier wird erstmal geprüft ob überhaupt was passendes in der Registry steht. Wenn ja, dann // werden die restlichen Werte ebenfalls geladen und in Status gespeichert //int level = (int)Registry.GetValue(keyName, "Level", -1); //if(level != -1) //{ // status.Level = level; // status.Score = (int)Registry.GetValue(keyName, "Score", -1); // status.WeaponLevel = (int)Registry.GetValue(keyName, "WeaponLevel", -1); // status.WeaponStrength = (int)Registry.GetValue(keyName, "WeaponStrength", -1); //} #endregion }
private void saveGameToDisk(SaveType sType) { cGameStatus status = getGameStatus(); string content = null; switch (sType) { case SaveType.Ini: // Möglichkeit 1a : Als .ini Datei wie in den 90ern, manuell, sehr umständlich, nicht zu empfehlen content += "Level = " + status.Level.ToString() + Environment.NewLine; content += "Score = " + status.Score.ToString() + Environment.NewLine; content += "WeaponLevel = " + status.WeaponLevel.ToString() + Environment.NewLine; content += "WeaponStrength = " + status.WeaponStrength.ToString() + Environment.NewLine; System.IO.File.WriteAllText("data.ini", content); break; case SaveType.IniReflection: // Möglichkeit 1b : Als .ini Datei wie 1a, nur nicht statisch, sondern mit Reflection. Schon besser, aber // immer noch umständlicher als XML oder JSON. Würde auch kein Mensch so machen, soll nur zeigen // wie das mit Reflection möglich wäre Type gameStatusType = typeof(cGameStatus); BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; foreach (PropertyInfo pInfo in gameStatusType.GetProperties(flags)) { content += pInfo.Name + " = " + pInfo.GetValue(status).ToString() + Environment.NewLine; } System.IO.File.WriteAllText("dataReflection.ini", content); break; case SaveType.XML: // Möglichkeit 2 : Als XML Format, Dateiendung nach Belieben XmlSerializer serializer = new XmlSerializer(typeof(cGameStatus)); using (System.IO.StringWriter sw = new System.IO.StringWriter()) { using (XmlWriter writer = XmlWriter.Create(sw)) { serializer.Serialize(writer, status); content = sw.ToString(); } } System.IO.File.WriteAllText("dataXml.xml", content); break; case SaveType.JSON: // Möglichkeit 3a : Als JSON //JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); //content = jsonSerializer.Serialize(status); //System.IO.File.WriteAllText("data.json", content); // Möglichkeit 3b : Als JSON - als Einzeiler System.IO.File.WriteAllText("data.json", cEncrytionReflection.EncryptString(new JavaScriptSerializer().Serialize(status), "ABCDEFG")); break; case SaveType.Registry: // Möglichkeit 4 : In der Registry (soll nur zeigen wie man auf die Registry zugreift, ist nicht für Dinge wie Spielstände gedacht) string userRoot = "HKEY_CURRENT_USER\\Software"; string subkey = "ATCInvader"; string keyName = userRoot + "\\" + subkey; Registry.SetValue(keyName, "Level", status.Level, RegistryValueKind.DWord); Registry.SetValue(keyName, "Score", status.Score, RegistryValueKind.DWord); Registry.SetValue(keyName, "WeaponLevel", status.WeaponLevel, RegistryValueKind.DWord); Registry.SetValue(keyName, "WeaponStrength", status.WeaponStrength, RegistryValueKind.DWord); break; case SaveType.Excel: createOrUpdateExcelSaveFile(); break; default: break; } }