protected void battle_sprite_setup(int timer) { // sure looks like 11 should be a constant here //@Yeti //@Debug: should use lerp for battler scale? timer = Math.Max(timer, 0); Platform_Effect_Ratio = timer / 11f; Battler_1_Sprite.loc = (Battler_1_Map_Loc + Pan_Vector) * ((11 - (timer)) / 11.0f) + Battler_1_Loc * ((timer) / 11.0f); //Battler_1_Sprite.loc = Battler_1_Map_Loc * ((11 - (timer)) / 11.0f) + // Battler_1_Loc * ((timer) / 11.0f); Battler_1_Sprite.scale = new Vector2(Global.BattleSceneConfig.BattlerMinScale) * ((11 - (timer)) / 11.0f) + Vector2.One * ((timer) / 11.0f); Battler_1_Sprite.update_animation_position(); if (Battler_2_Sprite != null) { Battler_2_Sprite.loc = (Battler_2_Map_Loc + Pan_Vector) * ((11 - (timer)) / 11.0f) + Battler_2_Loc * ((timer) / 11.0f); //Battler_2_Sprite.loc = Battler_2_Map_Loc * ((11 - (timer)) / 11.0f) + // Battler_2_Loc * ((timer) / 11.0f); Battler_2_Sprite.scale = new Vector2(Global.BattleSceneConfig.BattlerMinScale) * ((11 - (timer)) / 11.0f) + Vector2.One * ((timer) / 11.0f); Battler_2_Sprite.update_animation_position(); } Platform_Loc_2 = Battler_2 == null ? (Battler_1_Map_Loc + Pan_Vector) * ((11 - (timer)) / 11.0f) + Battler_2_Loc * ((timer) / 11.0f) : Battler_2_Sprite.loc; }
protected void draw_hud(SpriteBatch sprite_batch) { sprite_batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); if (Hit_Spark != null) { Hit_Spark.draw(sprite_batch); } Vector2 number_vector = (Layer_3_Shake + Platform_1_Shake + Platform_2_Shake) * 0.5f + Pan_Vector; foreach (var number in HitNumbers) { number.draw(sprite_batch, new Vector2((int)number_vector.X, (int)number_vector.Y)); } sprite_batch.End(); if (HUD != null) { HUD.draw(sprite_batch, Layer_5_Shake); } sprite_batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null); if (Miss_Spark != null) { Miss_Spark.draw(sprite_batch, Pan_Vector); } if (NoDamage_Spark != null) { NoDamage_Spark.draw(sprite_batch, Pan_Vector); } sprite_batch.End(); if (Exp_Gauge != null) { sprite_batch.GraphicsDevice.ScissorRectangle = fix_rect_to_screen(Exp_Gauge.scissor_rect()); if (sprite_batch.GraphicsDevice.ScissorRectangle.Width > 0 && sprite_batch.GraphicsDevice.ScissorRectangle.Width > 0) { sprite_batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, Exp_Gauge.raster_state); Exp_Gauge.draw(sprite_batch); sprite_batch.End(); } } Effect battle_shader = Global.effect_shader(); if (Battler_1_Sprite != null) { Battler_1_Sprite.draw_fg_effects(sprite_batch, battle_shader, Pan_Vector); } if (Battler_2_Sprite != null) { Battler_2_Sprite.draw_fg_effects(sprite_batch, battle_shader, Pan_Vector); } draw_skill_gain_popup(sprite_batch); draw_wlvl_popup(sprite_batch); draw_wbreak_popup(sprite_batch); }
protected void draw_battler_upper_effects(SpriteBatch sprite_batch) { Effect battle_shader = Global.effect_shader(); if (Battler_1_Sprite != null) { Battler_1_Sprite.draw_upper_effects(sprite_batch, battle_shader, Pan_Vector, Effects_Pan_Vector); } if (Battler_2_Sprite != null) { Battler_2_Sprite.draw_upper_effects(sprite_batch, battle_shader, Pan_Vector, Effects_Pan_Vector); } }
public override void update() { if (update_soft_reset()) { return; } update_skip(); if (!is_message_window_active && Message_Active) { HUD.move_on(); Message_Active = false; } base.update(); update_white_flash(); if (!Skipping) { // Hit/Crit Spark update_hit_spark(); if (Battler_1_Sprite != null) { // Update battler 1's sprite Battler_1_Sprite.update(); // Causes HUD effects when battler 1 activates a skill /*if (Battler_1_Sprite.battler.actor.skill_flash) //Yeti * { * HUD.skill_flash(1); * HUD.add_message(Battler_1_Sprite.battler.actor.skill_name(), Battler_1_Sprite.battler.team, 90, "Yellow"); * Battler_1_Sprite.battler.actor.skill_flash = false; * }*/ int battler_shake = Battler_1_Sprite.shake(); if (battler_shake > 0) { mini_shake(battler_shake); } } if (Battler_2_Sprite != null) { // Update battler 2's sprite Battler_2_Sprite.update(); // Causes HUD effects when battler 2 activates a skill /*if (Battler_2_Sprite.battler.actor.skill_flash) //Yeti * { * HUD.skill_flash(2); * HUD.add_message(Battler_2_Sprite.battler.actor.skill_name(), Battler_2_Sprite.battler.team, 90, "Yellow"); * Battler_2_Sprite.battler.actor.skill_flash = false; * }*/ int battler_shake = Battler_2_Sprite.shake(); if (battler_shake > 0) { mini_shake(battler_shake); } } switch (Phase) { case 0: update_phase_0(); break; case 1: update_phase_1(); break; case 2: update_phase_2(); break; case 3: update_phase_3(); break; } if (Shake_Reset) { Layer_2_Shake = Vector2.Zero; Layer_3_Shake = Vector2.Zero; Layer_5_Shake = Vector2.Zero; Platform_1_Shake = Vector2.Zero; Platform_2_Shake = Vector2.Zero; Shake_Reset = false; } update_shake(); update_pan(); if (Brightness.Count > 0) { Black_Fill.TintA = (byte)Brightness.pop(); } if (Weather_Visible == BattleWeathers.Visible && Phase >= 1 && Phase <= 2) { float minimum = 0.25f; if (Bg_Magic_Darken && Weather_Opacity > minimum) { Weather_Opacity = Math.Max(minimum, Weather_Opacity - 1 / 24f); } else if (!Bg_Magic_Darken && Weather_Opacity < 1) { Weather_Opacity = Math.Min(1, Weather_Opacity + 1 / 24f); } } if (HUD != null) { HUD.update(); } // Miss effect update_miss_text(); // No Damage effect update_nodamage_text(); } }
protected virtual void update_phase_0() { bool cont = false; while (!cont) { cont = true; switch (Timer) { case 0: initialize_battle_sprites(); Timer++; break; case 1: Platform_Effect_1 = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); Platform_Effect_1.offset = new Vector2(8, 8); if (Battler_2 != null && Distance > 1) { Platform_Effect_2 = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); Platform_Effect_2.offset = new Vector2(8, 8); } battle_sprite_setup(0); Timer++; break; case 2: case 3: Battler_1_Sprite.visible = false; if (Battler_2_Sprite != null) { Battler_2_Sprite.visible = false; } battle_sprite_setup(Timer - 3); Timer++; break; case 4: Battler_1_Sprite.visible = true; Battler_1_Sprite.offset.Y = 120; Battler_1_Sprite.update_animation_position(); if (Battler_2_Sprite != null) { Battler_2_Sprite.visible = true; Battler_2_Sprite.offset.Y = 120; Battler_2_Sprite.update_animation_position(); } battle_sprite_setup(Timer - 3); Timer++; break; case 5: battle_sprite_setup(Timer - 3); Timer++; break; case 6: battle_sprite_setup(Timer - 3); // HUD setup_hud(); // Create platforms create_platforms(); // White screen flash White_Screen = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); White_Screen.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT); White_Screen.visible = false; Timer++; break; case 7: case 8: battle_sprite_setup(Timer - 3); // 110 total platform movement Platform.add_y(-(Timer + 3)); Timer++; break; case 9: case 10: case 11: battle_sprite_setup(Timer - 3); Platform.add_y(-(Timer + 6)); Timer++; break; case 12: case 13: battle_sprite_setup(Timer - 3); Platform.add_y(-(Timer + 8)); Timer++; break; case 14: battle_sprite_setup(Timer - 3); Timer++; Platform_Effect_1 = null; Platform_Effect_2 = null; break; case 15: Battler_1_Sprite.loc = new Vector2(Battler_1_Loc.X, 176); Battler_1_Sprite.scale = Vector2.One; Battler_1_Sprite.reset_pose(); Battler_1_Sprite.update_animation_position(); if (Battler_2_Sprite != null) { Battler_2_Sprite.loc = new Vector2(Battler_2_Loc.X, 176); Battler_2_Sprite.scale = Vector2.One; Battler_2_Sprite.reset_pose(); Battler_2_Sprite.update_animation_position(); } Battler_1_Sprite.initialize_animation(); if (Battler_2_Sprite != null) { Battler_2_Sprite.initialize_animation(); } Platform_Effect_1 = null; Platform_Effect_2 = null; Timer++; break; case 16: Black_Fill = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); Black_Fill.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT); if (is_battle_bg_visible) { Black_Fill.tint = new Color(0, 0, 0, 32); } else { Black_Fill.tint = new Color(0, 0, 0, 0); } Timer++; break; case 17: case 18: case 19: case 20: case 21: case 22: case 23: if (is_battle_bg_visible) { Black_Fill.tint = new Color(0, 0, 0, (int)MathHelper.Min((Timer - 15) * 32, 255)); if (Timer > 19) { Weather_Opacity = (Timer - 19) / 16f; } } Timer++; break; case 24: case 25: if (is_battle_bg_visible) { Weather_Opacity = (Timer - 19) / 16f; } Timer++; break; case 26: // Create background if (is_battle_bg_visible) { Background = new Sprite(background(this.background_battler)); Background.stereoscopic = Config.BATTLE_BG_DEPTH; Black_Backing = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); Black_Backing.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT); Black_Backing.tint = new Color(0, 0, 0, 255); Weather_Opacity = (Timer - 19) / 16f; } else { cont = false; } Timer++; break; case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: if (is_battle_bg_visible) { Black_Fill.tint = new Color(0, 0, 0, (int)MathHelper.Min((35 - Timer) * 32, 255)); Weather_Opacity = (Timer - 19) / 16f; //Weather_Opacity = (Timer - 27) / 8f; } else { cont = false; } Timer++; break; case 36: battle_start_text(); if (!Music_Started && (!test_battle_theme() || !Global.game_temp.boss_theme)) { Global.Audio.BgmFadeOut(60); } Global.game_temp.boss_theme = false; Timer++; break; case 72: if (!Music_Started) { play_battle_theme(); Music_Started = true; } Battler_1_Sprite.start_battle(); if (Battler_2_Sprite != null) { Battler_2_Sprite.start_battle(); } Timer++; break; case 73: if (Battler_1_Sprite.duration <= 2 && (Battler_2_Sprite == null || Battler_2_Sprite.duration <= 2)) { check_talk(Battler_1, Battler_2, Reverse); Timer++; } break; case 74: if (!is_message_window_active && HUD.is_ready && !Message_Active) { Timer = 0; Phase = 1; } break; default: Timer++; break; } } }
protected override void update_phase_0() { bool cont = false; while (!cont) { cont = true; switch (Timer) { // Initialize battler sprites case 0: initialize_battle_sprites(); Battler_1_Sprite.loc = new Vector2(Battler_1_Loc.X, 176); Battler_1_Sprite.scale = Vector2.One; Battler_1_Sprite.reset_pose(); Battler_1_Sprite.visible = true; if (Battler_2_Sprite != null) { Battler_2_Sprite.loc = new Vector2(Battler_2_Loc.X, 176); Battler_2_Sprite.scale = Vector2.One; Battler_2_Sprite.reset_pose(); Battler_2_Sprite.visible = true; } Skip_Fill = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); Skip_Fill.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT); Skip_Fill.tint = new Color(0, 0, 0, 255); Timer++; break; case 1: case 2: case 3: Timer++; break; case 4: Timer++; break; case 5: Timer++; break; case 6: // hud setup_hud(); while (!HUD.is_ready) { HUD.update(); } // Create platforms create_platforms(); // White screen flash White_Screen = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); White_Screen.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT); White_Screen.visible = false; // Create background Background = new Arena_Background(background(this.background_battler)); Black_Backing = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); Black_Backing.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT); Black_Backing.tint = new Color(0, 0, 0, 255); Timer++; break; case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: Skip_Fill.tint = new Color(0, 0, 0, (23 - Timer) * 16); Timer++; break; case 24: Skip_Fill = null; Black_Fill = new Sprite(battle_content.Load <Texture2D>(@"Graphics/White_Square")); Black_Fill.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT); Black_Fill.tint = new Color(0, 0, 0, 0); if (Combat_Data != null) { Battler_1_Sprite.initialize_animation(); if (Battler_2_Sprite != null) { Battler_2_Sprite.initialize_animation(); } } Timer++; break; case 36: Global.Audio.BgmFadeOut(60); crowd_cheer(); battle_start_text(); Timer++; break; case 72: play_battle_theme(); Battler_1_Sprite.start_battle(); if (Battler_2_Sprite != null) { Battler_2_Sprite.start_battle(); } Timer++; break; case 73: if (Battler_1_Sprite.duration <= 2 && (Battler_2_Sprite == null || Battler_2_Sprite.duration <= 2)) { check_talk(Battler_1, Battler_2, Reverse); Timer++; } break; case 74: if (!is_message_window_active && HUD.is_ready && !Message_Active) { Timer = 0; Phase = 1; } break; default: Timer++; break; } } }