Example #1
0
        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;
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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();
            }
        }
Example #5
0
        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;
                }
            }
        }
Example #6
0
        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;
                }
            }
        }