Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        private void LvSaves_DoubleClick(object sender, EventArgs e)
        {
            if (lvSaves.SelectedItems == null || lvSaves.SelectedItems.Count != 1)
            {
                return;
            }

            Status = (cGameStatus)lvSaves.SelectedItems[0].Tag;
            updateUI();
        }
Beispiel #3
0
 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();
 }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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
        }
Beispiel #6
0
        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;
            }
        }