// 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; }
/// <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)); }
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; }
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); }
internal static List <int> dance_return_animation_value(BattlerSpriteData battler) { return(TactileBattlerImage.dance_return_animation_value( animation_processor(battler, 1), battler.AnimationGroupOffset)); // Distance? //Yeti }
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; * }*/ }
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 }
internal static Animation_Setup_Data animation_processor(BattlerSpriteData battler, int distance) { return(new Animation_Setup_Data_Processor(battler, distance)); }
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); } }