Exemplo n.º 1
0
        // Returns the animation numbers of the given class as it returns after attack
        internal static List <int> return_animation_value(BattlerSpriteData battler, bool crit, int distance, bool hit, bool no_damage)
        {
            bool mweapon = battler.MWeapon(distance);

            return(TactileBattlerImage.return_animation_value(
                       animation_processor(battler, distance), battler.AnimationGroupOffset, crit, hit, no_damage));
        }
        public Animation_Setup_Data_Processor(BattlerSpriteData battler, int distance)
        {
            Key = string.Format("{0}-{1}", battler.ClassNameFull,
                                battler.UsedWeaponType);
            Distance = distance;
            Class_Id = battler.ClassId;
            Gender   = battler.ActualGender;

            TactileLibrary.Data_Weapon weapon = battler.Weapon;
            Equipped = weapon != null;
            if (Equipped)
            {
                Weapon_Main_Type = weapon.Main_Type;
                Weapon_Thrown    = weapon.Thrown(); // Factor out to actor or something to make weapons throwable by skills??? //Debug
                Weapon_Is_Staff  = weapon.is_staff();
                MWeapon          = (distance >= 2 && weapon.is_ranged_magic()) || weapon.is_always_magic();
            }
            Skill = battler.SkillEffect;

            // Skills
            Astra_Activated = battler.Unit.actor.astra_activated;
            Astra_Missed    = battler.Unit.actor.astra_missed;
            Astra_Count     = battler.Unit.actor.astra_count;
            Swoop_Activated = battler.Unit.swoop_activated;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Returns the animation numbers for avoid animations
        /// </summary>
        internal static List <int> avoid_animation_value(BattlerSpriteData battler, int distance)
        {
            bool mweapon = battler.MWeapon(distance);

            // this needs to take forceably unequipped anims for dancers into account //Yeti
            return(TactileBattlerImage.avoid_animation_value(
                       animation_processor(battler, distance), battler.AnimationGroupOffset));
        }
Exemplo n.º 4
0
        protected void create_battler()
        {
            var battlerData = new BattlerSpriteData(Unit); //@Debug: could probably roll this without a unit

            Battler          = new Battler_Sprite(battlerData, true, class_data.Distance);
            Battler.loc      = new Vector2(256, 176);
            Battler.offset.Y = 120;
            Battler.visible  = true;
            Battler.initialize_animation();
            Battler.reset_pose();
            Battler.start_battle();
            Battler.stereoscopic = Config.BATTLE_BATTLERS_DEPTH;
        }
Exemplo n.º 5
0
        protected override void update_phase_1()
        {
            base.update_phase_1();
            switch (Segment)
            {
            case 0:
                Battler_1_Sprite.class_change_start();
                darken();
                Segment = 1;
                break;

            case 1:
                if (Battler_1_Sprite.duration <= 1 && Battler_1_Sprite.spell_effect_duration <= 1)
                {
                    OldClass = Battler_1.actor.class_id;
                    OldLevel = Battler_1.actor.level;
                    Battler_1.actor.promotion_class_id = Global.game_system.Class_Change_To;
                    var battler1Data = new BattlerSpriteData(Battler_1);
                    Battler_1_Sprite = new Battler_Sprite(battler1Data, !Reverse, Distance, Reverse);
                    Battler_1_Sprite.start_battle();
                    Battler_1_Sprite.loc = Battler_1_Loc = new Vector2((!Reverse ? 184 + (Distance == 1 ? 0 : 56) :
                                                                        136 - (Distance == 1 ? 0 : 56)) +
                                                                       (Distance > 2 ? (Reverse ? -270 : 270) : 0), 176);
                    Battler_1_Sprite.reset_pose();
                    Battler_1_Sprite.update_animation_position();
                    Battler_1_Sprite.visible = true;
                    Battler_1_Sprite.class_change_end();
                    Battler_1_Sprite.stereoscopic = Config.BATTLE_BATTLERS_DEPTH;
                    Segment = 2;
                }
                break;

            case 2:
                if (Battler_1_Sprite.duration >= 163)
                {
                    brighten();
                }
                if (Battler_1_Sprite.duration <= 1 && Battler_1_Sprite.spell_effect_duration <= 1)
                {
                    Segment = 3;
                }
                break;

            case 3:
                switch (Timer)
                {
                case 104:
                    Phase   = 2;
                    Segment = 0;
                    Timer   = 0;
                    break;

                default:
                    Timer++;
                    break;
                }
                break;
            }
            // Updates screen flash
            Battler_1_Sprite.update_flash();
            update_spell_flash(Battler_1_Sprite);
        }
Exemplo n.º 6
0
 internal static List <int> dance_return_animation_value(BattlerSpriteData battler)
 {
     return(TactileBattlerImage.dance_return_animation_value(
                animation_processor(battler, 1), battler.AnimationGroupOffset)); // Distance? //Yeti
 }
Exemplo n.º 7
0
        internal static List <int> correct_animation_value(int anim_id, BattlerSpriteData battler)
        {
            int terrain;

            // Pirate Crit Dust
            if (anim_id == Global.animation_group("Pirate-Axe") + 22)
            {
                terrain = Global.scene.scene_type == "Class_Reel" ? ((Scene_Class_Reel)Global.scene).terrain_tag :
                          Global.game_map.terrain_id(battler.Unit.loc);
                if (Global.data_terrains.ContainsKey(terrain) && Global.data_terrains[terrain].Dust_Type == 1)
                {
                    return new List <int> {
                               anim_id + 1
                    }
                }
                ;
                return(new List <int> {
                    anim_id
                });
            }
            // Dust
            if (anim_id == Global.animation_group("Effects") + 1)
            {
                terrain = Global.scene.scene_type == "Class_Reel" ? ((Scene_Class_Reel)Global.scene).terrain_tag :
                          Global.game_map.terrain_id(battler.Unit.loc);
                if (Global.data_terrains.ContainsKey(terrain) && Global.data_terrains[terrain].Dust_Type == 1)
                {
                    return new List <int> {
                               anim_id + 1
                    }
                }
                ;
                return(new List <int> {
                    anim_id
                });
            }
            // Spiral Dive
            if (anim_id == Global.animation_group("Skills") + 4)
            {
                TactileLibrary.Data_Weapon weapon = battler.Weapon;
                if (weapon.main_type().Name == "Sword")
                {
                    return new List <int> {
                               anim_id + 1
                    }
                }
                ;
                return(new List <int> {
                    anim_id
                });
            }
            return(new List <int> {
                anim_id
            });
        }
    }

    /*struct Battler_Sprite_Data
     * {
     *  public string filename;
     *  public int y;
     *  public Texture2D texture;
     * }*/
}
Exemplo n.º 8
0
        internal static List <int> refresh_animation_value(BattlerSpriteData battler, int ring_id)
        {
            int offset = Global.animation_group("Effects");

            return(TactileBattlerImage.refresh_animation_value(animation_processor(battler, 1), offset, ring_id)); // Distance? //Yeti
        }
Exemplo n.º 9
0
 internal static Animation_Setup_Data animation_processor(BattlerSpriteData battler, int distance)
 {
     return(new Animation_Setup_Data_Processor(battler, distance));
 }
Exemplo n.º 10
0
        protected void initialize_battle_sprites()
        {
            //@Debug: should use lerp for battler scale?
            var battler1Data = new BattlerSpriteData(Battler_1);

            Battler_1_Sprite = new Battler_Sprite(battler1Data, Reverse, Distance, Reverse);
            if (Battler_2 != null)
            {
                var battler2Data = new BattlerSpriteData(Battler_2);
                Battler_2_Sprite = new Battler_Sprite(battler2Data, !Reverse, Distance, Reverse);
            }
            // Initial battle sprite positions to match map sprites: battler 1
            Battler_1_Sprite.loc = Battler_1_Map_Loc =
                (Battler_1_Sprite.battler.loc * Constants.Map.TILE_SIZE -
                 Global.game_map.display_loc) +
                new Vector2(1, 2) * (Constants.Map.TILE_SIZE / 2);
            // Target battle sprite locations: battler 1
            Battler_1_Loc = new Vector2((Reverse ? 184 + (Distance == 1 ? 0 : 24) :
                                         136 - (Distance == 1 ? 0 : 24)) +
                                        (Distance > 2 ? (Reverse ? 0 : 0) : 0), 104);
            Battler_1_Sprite.scale        = new Vector2(Global.BattleSceneConfig.BattlerMinScale);
            Battler_1_Sprite.stereoscopic = Config.BATTLE_BATTLERS_DEPTH;

            // Target battle sprite locations: battler 2
            Battler_2_Loc = new Vector2((!Reverse ? 184 + (Distance == 1 ? 0 : 56) :
                                         136 - (Distance == 1 ? 0 : 56)) +
                                        (Distance > 2 ? (Reverse ? -270 : 270) : 0), 104);
            if (Battler_2 != null)
            {
                // Initial battle sprite positions to match map sprites: battler 2
                Battler_2_Sprite.loc = Battler_2_Map_Loc =
                    (Battler_2_Sprite.battler.loc * Constants.Map.TILE_SIZE -
                     Global.game_map.display_loc) +
                    new Vector2(1, 2) * (Constants.Map.TILE_SIZE / 2);
                Battler_2_Sprite.scale        = new Vector2(Global.BattleSceneConfig.BattlerMinScale);
                Battler_2_Sprite.stereoscopic = Config.BATTLE_BATTLERS_DEPTH;

                if (Battler_1_Map_Loc.Y == Battler_2_Map_Loc.Y)
                {
                    Platform_Effect_Angle = (Battler_1_Map_Loc.X < Battler_2_Map_Loc.X ^ Reverse) ? 0 :
                                            (Distance == 2 ? -MathHelper.Pi : MathHelper.Pi);
                }
                else
                {
                    Platform_Effect_Angle = (Battler_1_Map_Loc.Y < Battler_2_Map_Loc.Y ^ Reverse) ?
                                            MathHelper.PiOver2 : -MathHelper.PiOver2;
                }
            }
            else
            {
                Platform_Effect_Angle = -MathHelper.PiOver2;
            }
            if (ranged_defender_first())
            {
                pan(-1);
                while (Pan.Count > 0)
                {
                    update_pan();
                }
                //Battler_1_Loc += new Vector2(32 + (Distance > 2 ? 270 : 0), 0) * (Reverse ? 1 : -1);
                //Battler_2_Loc += new Vector2(32 + (Distance > 2 ? 270 : 0), 0) * (Reverse ? 1 : -1);
            }
        }