コード例 #1
0
ファイル: LevelManagement.cs プロジェクト: Stanimir-b/Youkai
        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;
        }
コード例 #2
0
ファイル: GamePlayScreen.cs プロジェクト: Stanimir-b/Youkai
        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();
        }
コード例 #3
0
ファイル: PauseMenuScreen.cs プロジェクト: Stanimir-b/Youkai
        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();
        }
コード例 #4
0
ファイル: PauseMenuScreen.cs プロジェクト: Stanimir-b/Youkai
        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();
        }
コード例 #5
0
ファイル: StartMenuScreen.cs プロジェクト: Stanimir-b/Youkai
        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();
        }