Пример #1
0
        /// <summary>
        /// Creates a new StatisticsScreen object for the given player.
        /// </summary>
        public StatisticsScreen(Player player)
            : base()
        {
            this.IsPopup = true;
            this.player  = player;

            screenAnimation = new AnimatingSprite();
            screenAnimation.FrameDimensions = player.MapSprite.FrameDimensions;
            screenAnimation.FramesPerRow    = player.MapSprite.FramesPerRow;
            screenAnimation.SourceOffset    = player.MapSprite.SourceOffset;
            screenAnimation.Texture         = player.MapSprite.Texture;
            screenAnimation.AddAnimation(new Animation("Idle", 43, 48, 150, true));
            screenAnimation.PlayAnimation(0);
        }
Пример #2
0
        /// <summary>
        /// Create a new CombatMonster object containing the given monster.
        /// </summary>
        /// <param name="monster"></param>
        public CombatantMonster(Monster monster) : base()
        {
            // check the parameter
            if (monster == null)
            {
                throw new ArgumentNullException("monster");
            }

            // assign the parameters
            this.monster      = monster;
            this.statistics  += monster.CharacterStatistics;
            this.combatSprite = monster.CombatSprite.Clone() as AnimatingSprite;
            this.State        = RolePlayingGameData.Character.CharacterState.Idle;
            this.CombatSprite.PlayAnimation("Idle");

            // create the AI data
            this.artificialIntelligence = new ArtificialIntelligence(this);
        }
Пример #3
0
        /// <summary>
        /// Create a new CombatMonster object containing the given monster.
        /// </summary>
        /// <param name="monster"></param>
        public CombatantMonster(Monster monster)
            : base()
        {
            // check the parameter
            if (monster == null)
            {
                throw new ArgumentNullException("monster");
            }

            // assign the parameters
            this.monster = monster;
            this.statistics += monster.CharacterStatistics;
            this.combatSprite = monster.CombatSprite.Clone() as AnimatingSprite;
            this.State = RolePlayingGameData.Character.CharacterState.Idle;
            this.CombatSprite.PlayAnimation("Idle");

            // create the AI data
            this.artificialIntelligence = new ArtificialIntelligence(this);
        }
Пример #4
0
        /// <summary>
        /// Creates a new StatisticsScreen object for the given player.
        /// </summary>
        public StatisticsScreen(Player player)
            : base()
        {
            this.IsPopup = true;
            this.player = player;

            screenAnimation = new AnimatingSprite();
            screenAnimation.FrameDimensions = player.MapSprite.FrameDimensions;
            screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
            screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
            screenAnimation.Texture = player.MapSprite.Texture;
            screenAnimation.AddAnimation(new Animation("Idle", 43, 48, 150, true));
            screenAnimation.PlayAnimation(0);
        }
Пример #5
0
        /// <summary>
        /// Handle user input.
        /// </summary>
        public override void HandleInput()
        {
            bool equClicked = false;
            bool backClicked = false;
            bool spellClicked = false;

            if (InputManager.IsButtonClicked(new Rectangle(
                (int)(backButtonPosition.X),
                (int)(backButtonPosition.Y),
                (int)(backButton.Width * ScaledVector2.DrawFactor ),
                (int)(backButton.Height * ScaledVector2.DrawFactor))))
            {
                backClicked = true;
            }
            if (InputManager.IsButtonClicked(equipmentRecangle))
            {
                equClicked = true;
            }
            if (InputManager.IsButtonClicked(spellRecangle))
            {
                spellClicked = true;
            }
            // exit the screen
            if (InputManager.IsActionTriggered(InputManager.Action.Back) || backClicked)
            {
                ExitScreen();
                return;
            }
            // shows the spells for this player
            else if (spellClicked) //InputManager.IsActionTriggered(InputManager.Action.Ok))
            {
                ScreenManager.AddScreen(new SpellbookScreen(player,
                    player.CharacterStatistics));
                return;
            }
            // show the equipment for this player, allowing the user to unequip
            else if (InputManager.IsActionTriggered(InputManager.Action.TakeView) || equClicked)
            {
                ScreenManager.AddScreen(new EquipmentScreen(player));
                return;
            }
            else if (Session.Party.Players.Contains(player)) // player is in the party
            {
                // move to the previous screen
                if (InputManager.IsActionTriggered(InputManager.Action.PageLeft))
                {
                    ExitScreen();
                    ScreenManager.AddScreen(new QuestLogScreen(null));
                    return;
                }
                // move to the next screen
                else if (InputManager.IsActionTriggered(InputManager.Action.PageRight))
                {
                    ExitScreen();
                    ScreenManager.AddScreen(new InventoryScreen(true));
                    return;
                }
                // move to the previous party member
                else if (InputManager.IsActionTriggered(InputManager.Action.TargetUp))
                {
                    playerIndex--;
                    if (playerIndex < 0)
                    {
                        playerIndex = Session.Party.Players.Count - 1;
                    }
                    Player newPlayer = Session.Party.Players[playerIndex];
                    if (newPlayer != player)
                    {
                        player = newPlayer;
                        screenAnimation = new AnimatingSprite();
                        screenAnimation.FrameDimensions =
                            player.MapSprite.FrameDimensions;
                        screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
                        screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
                        screenAnimation.Texture = player.MapSprite.Texture;
                        screenAnimation.AddAnimation(
                            new Animation("Idle", 43, 48, 150, true));
                        screenAnimation.PlayAnimation(0);
                    }
                }
                // move to the next party member
                else if (InputManager.IsActionTriggered(InputManager.Action.TargetDown))
                {
                    playerIndex++;
                    if (playerIndex >= Session.Party.Players.Count)
                    {
                        playerIndex = 0;
                    }
                    Player newPlayer = Session.Party.Players[playerIndex];
                    if (newPlayer != player)
                    {
                        player = newPlayer;
                        screenAnimation = new AnimatingSprite();
                        screenAnimation.FrameDimensions =
                            player.MapSprite.FrameDimensions;
                        screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
                        screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
                        screenAnimation.Texture = player.MapSprite.Texture;
                        screenAnimation.AddAnimation(
                            new Animation("Idle", 43, 48, 150, true));
                        screenAnimation.PlayAnimation(0);
                    }
                }
            }
        }
Пример #6
0
 /// <summary>
 /// Handle user input.
 /// </summary>
 public override void HandleInput()
 {
     // exit the screen
     if (InputManager.IsActionTriggered(InputManager.Action.Back))
     {
         ExitScreen();
         return;
     }
     // shows the spells for this player
     else if (InputManager.IsActionTriggered(InputManager.Action.Ok))
     {
         ScreenManager.AddScreen(new SpellbookScreen(player,
                                                     player.CharacterStatistics));
         return;
     }
     // show the equipment for this player, allowing the user to unequip
     else if (InputManager.IsActionTriggered(InputManager.Action.TakeView))
     {
         ScreenManager.AddScreen(new EquipmentScreen(player));
         return;
     }
     else if (Session.Party.Players.Contains(player)) // player is in the party
     {
         // move to the previous screen
         if (InputManager.IsActionTriggered(InputManager.Action.PageLeft))
         {
             ExitScreen();
             ScreenManager.AddScreen(new QuestLogScreen(null));
             return;
         }
         // move to the next screen
         else if (InputManager.IsActionTriggered(InputManager.Action.PageRight))
         {
             ExitScreen();
             ScreenManager.AddScreen(new InventoryScreen(true));
             return;
         }
         // move to the previous party member
         else if (InputManager.IsActionTriggered(InputManager.Action.CursorUp))
         {
             playerIndex--;
             if (playerIndex < 0)
             {
                 playerIndex = Session.Party.Players.Count - 1;
             }
             Player newPlayer = Session.Party.Players[playerIndex];
             if (newPlayer != player)
             {
                 player          = newPlayer;
                 screenAnimation = new AnimatingSprite();
                 screenAnimation.FrameDimensions =
                     player.MapSprite.FrameDimensions;
                 screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
                 screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
                 screenAnimation.Texture      = player.MapSprite.Texture;
                 screenAnimation.AddAnimation(
                     new Animation("Idle", 43, 48, 150, true));
                 screenAnimation.PlayAnimation(0);
             }
         }
         // move to the next party member
         else if (InputManager.IsActionTriggered(InputManager.Action.CursorDown))
         {
             playerIndex++;
             if (playerIndex >= Session.Party.Players.Count)
             {
                 playerIndex = 0;
             }
             Player newPlayer = Session.Party.Players[playerIndex];
             if (newPlayer != player)
             {
                 player          = newPlayer;
                 screenAnimation = new AnimatingSprite();
                 screenAnimation.FrameDimensions =
                     player.MapSprite.FrameDimensions;
                 screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
                 screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
                 screenAnimation.Texture      = player.MapSprite.Texture;
                 screenAnimation.AddAnimation(
                     new Animation("Idle", 43, 48, 150, true));
                 screenAnimation.PlayAnimation(0);
             }
         }
     }
 }
Пример #7
0
        /// <summary>
        /// Handle user input.
        /// </summary>
        public override void HandleInput()
        {
            bool equClicked   = false;
            bool backClicked  = false;
            bool spellClicked = false;


            if (InputManager.IsButtonClicked(new Rectangle(
                                                 (int)(backButtonPosition.X),
                                                 (int)(backButtonPosition.Y),
                                                 (int)(backButton.Width * ScaledVector2.DrawFactor),
                                                 (int)(backButton.Height * ScaledVector2.DrawFactor))))
            {
                backClicked = true;
            }
            if (InputManager.IsButtonClicked(equipmentRecangle))
            {
                equClicked = true;
            }
            if (InputManager.IsButtonClicked(spellRecangle))
            {
                spellClicked = true;
            }
            // exit the screen
            if (InputManager.IsActionTriggered(InputManager.Action.Back) || backClicked)
            {
                ExitScreen();
                return;
            }
            // shows the spells for this player
            else if (spellClicked) //InputManager.IsActionTriggered(InputManager.Action.Ok))
            {
                ScreenManager.AddScreen(new SpellbookScreen(player,
                                                            player.CharacterStatistics));
                return;
            }
            // show the equipment for this player, allowing the user to unequip
            else if (InputManager.IsActionTriggered(InputManager.Action.TakeView) || equClicked)
            {
                ScreenManager.AddScreen(new EquipmentScreen(player));
                return;
            }
            else if (Session.Party.Players.Contains(player)) // player is in the party
            {
                // move to the previous screen
                if (InputManager.IsActionTriggered(InputManager.Action.PageLeft))
                {
                    ExitScreen();
                    ScreenManager.AddScreen(new QuestLogScreen(null));
                    return;
                }
                // move to the next screen
                else if (InputManager.IsActionTriggered(InputManager.Action.PageRight))
                {
                    ExitScreen();
                    ScreenManager.AddScreen(new InventoryScreen(true));
                    return;
                }
                // move to the previous party member
                else if (InputManager.IsActionTriggered(InputManager.Action.TargetUp))
                {
                    playerIndex--;
                    if (playerIndex < 0)
                    {
                        playerIndex = Session.Party.Players.Count - 1;
                    }
                    Player newPlayer = Session.Party.Players[playerIndex];
                    if (newPlayer != player)
                    {
                        player          = newPlayer;
                        screenAnimation = new AnimatingSprite();
                        screenAnimation.FrameDimensions =
                            player.MapSprite.FrameDimensions;
                        screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
                        screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
                        screenAnimation.Texture      = player.MapSprite.Texture;
                        screenAnimation.AddAnimation(
                            new Animation("Idle", 43, 48, 150, true));
                        screenAnimation.PlayAnimation(0);
                    }
                }
                // move to the next party member
                else if (InputManager.IsActionTriggered(InputManager.Action.TargetDown))
                {
                    playerIndex++;
                    if (playerIndex >= Session.Party.Players.Count)
                    {
                        playerIndex = 0;
                    }
                    Player newPlayer = Session.Party.Players[playerIndex];
                    if (newPlayer != player)
                    {
                        player          = newPlayer;
                        screenAnimation = new AnimatingSprite();
                        screenAnimation.FrameDimensions =
                            player.MapSprite.FrameDimensions;
                        screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
                        screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
                        screenAnimation.Texture      = player.MapSprite.Texture;
                        screenAnimation.AddAnimation(
                            new Animation("Idle", 43, 48, 150, true));
                        screenAnimation.PlayAnimation(0);
                    }
                }
            }
        }
Пример #8
0
 /// <summary>
 /// Handle user input.
 /// </summary>
 public override void HandleInput()
 {
     // exit the screen
     if (InputManager.IsActionTriggered(InputManager.Action.Back))
     {
         ExitScreen();
         return;
     }
     // shows the spells for this player
     else if (InputManager.IsActionTriggered(InputManager.Action.Ok))
     {
         ScreenManager.AddScreen(new SpellbookScreen(player,
             player.CharacterStatistics));
         return;
     }
     // show the equipment for this player, allowing the user to unequip
     else if (InputManager.IsActionTriggered(InputManager.Action.TakeView))
     {
         ScreenManager.AddScreen(new EquipmentScreen(player));
         return;
     }
     else if (Session.Party.Players.Contains(player)) // player is in the party
     {
         // move to the previous screen
         if (InputManager.IsActionTriggered(InputManager.Action.PageLeft))
         {
             ExitScreen();
             ScreenManager.AddScreen(new QuestLogScreen(null));
             return;
         }
         // move to the next screen
         else if (InputManager.IsActionTriggered(InputManager.Action.PageRight))
         {
             ExitScreen();
             ScreenManager.AddScreen(new InventoryScreen(true));
             return;
         }
         // move to the previous party member
         else if (InputManager.IsActionTriggered(InputManager.Action.CursorUp))
         {
             playerIndex--;
             if (playerIndex < 0)
             {
                 playerIndex = Session.Party.Players.Count - 1;
             }
             Player newPlayer = Session.Party.Players[playerIndex];
             if (newPlayer != player)
             {
                 player = newPlayer;
                 screenAnimation = new AnimatingSprite();
                 screenAnimation.FrameDimensions =
                     player.MapSprite.FrameDimensions;
                 screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
                 screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
                 screenAnimation.Texture = player.MapSprite.Texture;
                 screenAnimation.AddAnimation(
                     new Animation("Idle", 43, 48, 150, true));
                 screenAnimation.PlayAnimation(0);
             }
         }
         // move to the next party member
         else if (InputManager.IsActionTriggered(InputManager.Action.CursorDown))
         {
             playerIndex++;
             if (playerIndex >= Session.Party.Players.Count)
             {
                 playerIndex = 0;
             }
             Player newPlayer = Session.Party.Players[playerIndex];
             if (newPlayer != player)
             {
                 player = newPlayer;
                 screenAnimation = new AnimatingSprite();
                 screenAnimation.FrameDimensions =
                     player.MapSprite.FrameDimensions;
                 screenAnimation.FramesPerRow = player.MapSprite.FramesPerRow;
                 screenAnimation.SourceOffset = player.MapSprite.SourceOffset;
                 screenAnimation.Texture = player.MapSprite.Texture;
                 screenAnimation.AddAnimation(
                     new Animation("Idle", 43, 48, 150, true));
                 screenAnimation.PlayAnimation(0);
             }
         }
     }
 }
Пример #9
0
 /// <summary>
 /// Constructor with provided name and stats
 /// </summary>
 /// <param name="name">Name of the player</param>
 /// <param name="stats">Stats of the player</param>
 /// <param name="playerID">ID used in the party position</param>
 /// <param name="sprite">Textures used to represent the player</param>
 /// <param name="specialID">Special ID for specific players to determine skills and animations</param>
 public PlayerClass(string name, CharacterStats stats, AnimatingSprite sprite, int specialID)
     : base(name, stats, sprite)
 {
     this.specialID = specialID;
 }
Пример #10
0
 /// <summary>
 /// Constructor with provided name, stats, ID, and sprite
 /// </summary>
 /// <param name="name">Name of the player</param>
 /// <param name="stats">Stats of the player</param>
 /// <param name="playerID">ID used in the party position</param>
 public EnemyClass(string name, CharacterStats stats, AnimatingSprite sprite)
     : base(name, stats, sprite)
 {
 }
Пример #11
0
 /// <summary>
 /// Constructor that loads the specific name, character stats, and ID in party
 /// </summary>
 /// <param name="nameArg">Name of the character</param>
 /// <param name="stats">Starting stats for the character</param>
 /// <param name="playerID">ID used for position in party</param>
 /// <param name="sprite">Textures that represent the character</param>
 public CombatCharacter(string nameArg, CharacterStats stats, AnimatingSprite sprite)
     : base(nameArg, sprite)
 {
     this.stats = stats;
 }
Пример #12
0
        /// <summary>
        /// Load graphics content for the screen (in this case, the battle engine and all necessary classes).
        /// </summary>
        public override void LoadContent()
        {
            // Create the menu screen
            menuScreen = new BattleMenuScreen(new Vector2(10, 515));
            menuScreen.ScreenManager = this.ScreenManager;

            // Load the textures
            if (content == null)
                content = new ContentManager(ScreenManager.Game.Services, "Content");

            battleDialog = content.Load<Texture2D>("battledialog");
            battleMenu = content.Load<Texture2D>("battlemenuback");
            battleTimer = content.Load<Texture2D>("battletime");
            redBox = content.Load<Texture2D>("redbox");
            blueBox = content.Load<Texture2D>("bluebox");

            // Load the character sprites
            AnimatingSprite playerSprite = new AnimatingSprite(redBox);
            AnimatingSprite enemySprite = new AnimatingSprite(blueBox);

            // DEBUG:  Create a dummy party
            List<CombatCharacter> testList = new List<CombatCharacter>(ChronoConstants.cMaxPartyMembers);
            CharacterStats testStat = new CharacterStats(1, 10, 10, 10, 10, 10, 10, 10);
            testStat.Speed = 50;
            PlayerClass testPlayer = new PlayerClass("Dummy", testStat, playerSprite, 0);
            testStat.Speed = 25;
            PlayerClass testPlayer2 = new PlayerClass("Dummy2", testStat, playerSprite, 0);
            testPlayer.HP = 25;
            testPlayer2.HP = 25;
            testList.Add(testPlayer);
            testList.Add(testPlayer2);
            PartyClass testParty = new PartyClass(testList);

            EnemyClass testEnemy = new EnemyClass("Enemy1", testStat, enemySprite);
            EnemyClass testEnemy2 = new EnemyClass("Enemy2", testStat, enemySprite);
            List<CombatCharacter> enemyList = new List<CombatCharacter>(ChronoConstants.cMaxPartyMembers);
            enemyList.Add(testEnemy);
            enemyList.Add(testEnemy2);
            PartyClass enemyParty = new PartyClass(enemyList);

            testParty.InBattle = true;
            enemyParty.InBattle = true;

            // Link events from the battle engine
            testParty.Ready += ReadyHandler;
            //enemyPlayer.Ready += EnemyReadyHandler;
            menuScreen.AttackSelected += AttackHandler;
            BattleEngine.Defeat += DefeatHandler;
            BattleEngine.Victory += VictoryHandler;

            // Initialize the engine
            BattleEngine.StartNewBattle(testParty, enemyParty);

            // Create the battle director
            battleDirector = new BattleDirector(ScreenManager.Arrow);
        }