Exemplo n.º 1
0
 public static PlayerStatsData GetPlayerStatsData(CharacterIdentity characterID)
 {
     foreach (PlayerStatsData playerStatsData in playerStatsList)
     {
         if (playerStatsData.characterID == characterID)
         {
             return playerStatsData;
         }
     }
     throw new Exception("No Player Stats Found for " + characterID.ToString() + ". Please update PlayerStatsList.xml");
 }
        public void LoadContent(int battleOrder, CharacterIdentity enemyID)
        {
            EnemyBattleCharacterData enemyData = GameClass.ContentManager.Load<EnemyBattleCharacterData>("BattleCharacters/" + enemyID.ToString() + "/" + enemyID.ToString() + "Battle");

               name = enemyData.name;
               runSpeed = enemyData.runSpeed;
               this.battleOrder = battleOrder;
               Sprites = new Dictionary<string, AnimatedSprite>();
               Sprites.Add("Idle", AnimatedSprite.CreateFromData(enemyData.idleAnimation));
               Sprites.Add("Run", AnimatedSprite.CreateFromData(enemyData.runAnimation));
               Sprites.Add("Damage", AnimatedSprite.CreateFromData(enemyData.damageAnimation));
               Sprites.Add("Death", AnimatedSprite.CreateFromData(enemyData.deathAnimation));
               Sprites["Death"].AnimationType = SpriteAnimationType.AnimateOnceMaintainLast;
               yDrawOffset = enemyData.drawOffset;

               switch (battleOrder)
               {
               case 3:
                   position = new Vector2(390, 275 - enemyData.drawOffset);
                   battlePortrait = GameClass.LoadTextureData("General/EnemyBattlePortrait1");
                   battlePortraitPosition = new Vector2(330, 338);
                   break;
               case 4:
                   position = new Vector2(440, 295 - enemyData.drawOffset);
                   battlePortrait = GameClass.LoadTextureData("General/EnemyBattlePortrait2");
                   battlePortraitPosition = new Vector2(330, 358);
                   break;
               case 5:
                   position = new Vector2(490, 315 - enemyData.drawOffset);
                   battlePortrait = GameClass.LoadTextureData("General/EnemyBattlePortrait3");
                   battlePortraitPosition = new Vector2(330, 378);
                   break;
               }

               CurrentAction = "Idle";
               CurrentSprite.CurrentFrame = GameClass.Random.Next(0, CurrentSprite.TotalFrames);

               Facing = CharacterFacing.Left;
               maxHP = enemyData.HP;
               currentHP = maxHP;
               displayHP = maxHP;
               maxMP = enemyData.MP;
               currentMP = maxMP;
               displayMP = maxMP;
               baseATK = enemyData.ATK;
               currentATK = baseATK;
               baseDEF = enemyData.DEF;
               currentDEF = baseDEF;
               baseMAG_ATK = enemyData.MAG_ATK;
               currentMAG_ATK= baseMAG_ATK;
               baseMAG_DEF = enemyData.MAG_DEF;
               currentMAG_DEF = baseMAG_DEF;
               baseSPD = enemyData.SPD;
               currentSPD = baseSPD;
               expWorth = enemyData.EXPWorth;

            techniques = new List<BattleTechnique>();
            foreach (BattleTechniqueData techData in enemyData.techniques)
            {
                BattleTechnique newTechnique = new BattleTechnique();
                newTechnique.LoadContent(this, techData);
                techniques.Add(newTechnique);
            }
        }
        public void LoadContent(Vector2 position, CharacterIdentity playerID)
        {
            this.characterID = playerID;
            this.position = position;
            this.CollisionBoxes = new Dictionary<MapCharacterAction, CollisionBox>();

            controls = new GamePadController(PlayerIndex.One);
            debugControls = new KeyboardController();

            MapCharacterData characterData = GameClass.ContentManager.Load<MapCharacterData>(@"MapCharacters/" + playerID.ToString() + "/" + playerID.ToString() + "Map");

            Sprites.Add(MapCharacterAction.Idle, AnimatedSprite.CreateFromData(characterData.idleSpriteData));
            Sprites.Add(MapCharacterAction.Run, AnimatedSprite.CreateFromData(characterData.runSpriteData));
            Sprites.Add(MapCharacterAction.Jump, AnimatedSprite.CreateFromData(characterData.jumpSpriteData));
            Sprites.Add(MapCharacterAction.Fall, AnimatedSprite.CreateFromData(characterData.fallSpriteData));
            Sprites.Add(MapCharacterAction.Land, AnimatedSprite.CreateFromData(characterData.landSpriteData));

            CollisionBoxes = new Dictionary<MapCharacterAction, CollisionBox>();
            CollisionBoxes.Add(MapCharacterAction.Idle, CollisionBox.CreateFromData(characterData.idleSpriteData.collisionBoxData));
            CollisionBoxes.Add(MapCharacterAction.Run, CollisionBox.CreateFromData(characterData.runSpriteData.collisionBoxData));
            CollisionBoxes.Add(MapCharacterAction.Jump, CollisionBox.CreateFromData(characterData.jumpSpriteData.collisionBoxData));
            CollisionBoxes.Add(MapCharacterAction.Fall, CollisionBox.CreateFromData(characterData.fallSpriteData.collisionBoxData));
            CollisionBoxes.Add(MapCharacterAction.Land, CollisionBox.CreateFromData(characterData.landSpriteData.collisionBoxData));

            CollisionSensors.Add(SensorType.Top, new CollisionSensor(CollisionBoxes[MapCharacterAction.Idle], SensorType.Top, 4));
            CollisionSensors.Add(SensorType.Bottom, new CollisionSensor(CollisionBoxes[MapCharacterAction.Idle], SensorType.Bottom, 4));
            CollisionSensors.Add(SensorType.Left, new CollisionSensor(CollisionBoxes[MapCharacterAction.Idle], SensorType.Left, 4));
            CollisionSensors.Add(SensorType.Right, new CollisionSensor(CollisionBoxes[MapCharacterAction.Idle], SensorType.Right, 4));

            portraitTexture = GameClass.ContentManager.Load<Texture2D>(characterData.portraitTextureName);
            walkSpeed = characterData.walkSpeed;
            airInfluence = characterData.airInfluence;
            currentFrictionFactor = characterData.frictionFactor;
            jumpStrength = characterData.jumpStrength;
            mass = characterData.mass;

            CurrentAction = MapCharacterAction.Idle;
            currentCollisionBox = CollisionBoxes[CurrentAction];
        }