public SaveGameData CreateSaveGameData(MainGame mGame, GamePlayScreen currentGamePlay) { SaveGameData data = new SaveGameData { PlayerType = mGame.Engine.HeroType, PlayerName = mGame.Engine.Hero.Name, PlayerLevel = mGame.Engine.Hero.Level, PlayerExperiencePoints = mGame.Engine.Hero.ExperiencePoints, MaxHealth = mGame.Engine.Hero.MaxHealth, MaxMana = mGame.Engine.Hero.MaxMana, CurrentHealth = mGame.Engine.Hero.Health, CurrentMana = mGame.Engine.Hero.Mana, AttackPoints = mGame.Engine.Hero.Damage, DefencePoints = mGame.Engine.Hero.Armor, Helmet = mGame.Engine.Hero.Inventory.Helmet, Gloves = mGame.Engine.Hero.Inventory.Gloves, Armor = mGame.Engine.Hero.Inventory.BodyArmor, Boots = mGame.Engine.Hero.Inventory.Boots, LevelNumber = currentGamePlay.LevelNumber, BagItems = new ArrayList(mGame.Engine.Hero.Inventory.Bag) }; if (mGame.Engine.Hero.Inventory.MainHandWeapon != null) { Weapon w = mGame.Engine.Hero.Inventory.MainHandWeapon as Weapon; data.MainHandWeapon = w; } if (mGame.Engine.Hero.Inventory.OffHand != null) { if (mGame.Engine.Hero.Inventory.OffHand is Weapon) { Weapon w = mGame.Engine.Hero.Inventory.OffHand as Weapon; data.OffHandWeapon = w; } else { Shield w = mGame.Engine.Hero.Inventory.OffHand as Shield; data.OffhandShield = w; } } return data; }
public void StartLoadedGame(SaveGameData data) { this.bgmInstance.Dispose(); this.Paused = false; this.LevelNumber = data.LevelNumber; this.MGame.Engine.SetLevel((int)data.LevelNumber+1); this.MGame.Engine.GenerateTreasureChests(); this.CollisionRectangles.Clear(); this.environmentSprites.Clear(); this.enemySprites.Clear(); this.Interactables.Clear(); this.MGame.Engine.Hero.Name = data.PlayerName; MGame.HeroType = data.PlayerType; switch (data.PlayerType) { case CharacterType.Samurai: { this.MGame.Engine.Hero = new Samurai(data.PlayerName); break; } case CharacterType.Monk: { this.MGame.Engine.Hero = new Monk(data.PlayerName); break; } case CharacterType.Ninja: { this.MGame.Engine.Hero = new Ninja(data.PlayerName); break; } } this.MGame.Engine.Hero.MaxHealth = data.MaxHealth; this.MGame.Engine.Hero.MaxMana = data.MaxMana; this.MGame.Engine.Hero.Health = data.CurrentHealth; this.MGame.Engine.Hero.Mana = data.CurrentMana; this.MGame.Engine.Hero.Damage = data.AttackPoints; this.MGame.Engine.Hero.Armor = data.DefencePoints; this.MGame.Engine.Hero.ExperiencePoints = data.PlayerExperiencePoints; this.MGame.Engine.Hero.Level = data.PlayerLevel; this.MGame.Engine.Hero.Inventory.ClearInventory(); if (data.Armor != null) { this.MGame.Engine.Hero.Inventory.EquipArmor(data.Armor); } if (data.MainHandWeapon != null) { this.MGame.Engine.Hero.Inventory.EquipMainHand(data.MainHandWeapon); } if (data.OffhandShield != null) { this.MGame.Engine.Hero.Inventory.EquipOffHand(data.OffhandShield); } if (data.OffHandWeapon != null) { this.MGame.Engine.Hero.Inventory.EquipOffHand((IOffhand)data.OffHandWeapon); } if (data.Gloves != null) { this.MGame.Engine.Hero.Inventory.EquipArmor(data.Gloves); } if (data.Helmet != null) { this.MGame.Engine.Hero.Inventory.EquipArmor(data.Helmet); } if (data.Boots != null) { this.MGame.Engine.Hero.Inventory.EquipArmor(data.Boots); } foreach (Item item in data.BagItems) { this.MGame.Engine.Hero.Inventory.AddItemToBag(item); } MGame.Components.Remove(MGame.InventoryScreen); MGame.InventoryScreen = new InventoryScreen(MGame); MGame.Components.Add(MGame.InventoryScreen); MGame.InventoryScreen.Initialize(); this.LoadContent(); }
private void SavePlayerData(StorageDevice device, SaveGameData data) { result = device.BeginOpenContainer("Storage", null, null); result.AsyncWaitHandle.WaitOne(); StorageContainer container = device.EndOpenContainer(result); // Close the wait handle. result.AsyncWaitHandle.Close(); string filename = "savegame.sav"; if (container.FileExists(filename)) container.DeleteFile(filename); Stream stream = container.CreateFile(filename); XmlSerializer serializer = new XmlSerializer(typeof(SaveGameData)); serializer.Serialize(stream, data); stream.Close(); container.Dispose(); }
private void LoadSaveData(StorageDevice device) { result = device.BeginOpenContainer("Storage", null, null); result.AsyncWaitHandle.WaitOne(); StorageContainer container = device.EndOpenContainer(result); result.AsyncWaitHandle.Close(); string filename = "savegame.sav"; // Check to see whether the save exists. if (!container.FileExists(filename)) { // If not, dispose of the container and return. container.Dispose(); return; } //Open file. Stream stream = container.OpenFile(filename, FileMode.Open); XmlSerializer serializer = new XmlSerializer(typeof(SaveGameData)); loadedData = (SaveGameData)serializer.Deserialize(stream); //close file stream.Close(); container.Dispose(); }
public void StartLoadedGame(SaveGameData data) { MGame.HeroType = data.PlayerType; switch (data.PlayerType) { case CharacterType.Samurai: { this.MGame.Engine = GameEngine.Start(new Samurai(data.PlayerName), (int)data.LevelNumber+1); break; } case CharacterType.Monk: { this.MGame.Engine = GameEngine.Start(new Monk(data.PlayerName), (int)data.LevelNumber + 1); break; } case CharacterType.Ninja: { this.MGame.Engine = GameEngine.Start(new Ninja(data.PlayerName), (int)data.LevelNumber + 1); break; } } this.MGame.Engine.Hero.MaxHealth = data.MaxHealth; this.MGame.Engine.Hero.MaxMana = data.MaxMana; this.MGame.Engine.Hero.Health = data.CurrentHealth; this.MGame.Engine.Hero.Mana = data.CurrentMana; this.MGame.Engine.Hero.Damage = data.AttackPoints; this.MGame.Engine.Hero.Armor = data.DefencePoints; this.MGame.Engine.Hero.ExperiencePoints = data.PlayerExperiencePoints; this.MGame.Engine.Hero.Level = data.PlayerLevel; this.MGame.Engine.Hero.Inventory.ClearInventory(); if (data.Armor != null) { this.MGame.Engine.Hero.Inventory.EquipArmor(data.Armor); } if (data.MainHandWeapon != null) { this.MGame.Engine.Hero.Inventory.EquipMainHand(data.MainHandWeapon); } if (data.OffhandShield != null) { this.MGame.Engine.Hero.Inventory.EquipOffHand(data.OffhandShield); } if (data.OffHandWeapon != null) { this.MGame.Engine.Hero.Inventory.EquipOffHand((IOffhand)data.OffHandWeapon); } if (data.Gloves != null) { this.MGame.Engine.Hero.Inventory.EquipArmor(data.Gloves); } if (data.Helmet != null) { this.MGame.Engine.Hero.Inventory.EquipArmor(data.Helmet); } if (data.Boots != null) { this.MGame.Engine.Hero.Inventory.EquipArmor(data.Boots); } foreach (Item item in data.BagItems) { this.MGame.Engine.Hero.Inventory.AddItemToBag(item); } MGame.GameStateScreen = GameState.GameScreenState; MGame.GamePlayScreen = new GamePlayScreen(MGame); MGame.GamePlayScreen.LevelNumber = data.LevelNumber; MGame.Engine.SetLevel((int)data.LevelNumber + 1); MGame.Components.Add(MGame.GamePlayScreen); MGame.GamePlayScreen.Initialize(); MGame.InventoryScreen = new InventoryScreen(MGame); MGame.Components.Add(MGame.InventoryScreen); MGame.InventoryScreen.Initialize(); }