private void change_phase(Class_Reel_Phases phase) { Timer = 0; Action = 0; switch (phase) { case Class_Reel_Phases.Animation: White_Screen.opacity = 0; if (Battler == null) { create_battler(); } Burst = null; Title_Back = null; Letters.Clear(); Class_Banner.opacity = 0; Class_Banner.visible = false; break; case Class_Reel_Phases.Class_Name: Battler = null; Battler_Action = Class_Reel_Battler_Actions.Idle; Battler_Timer = 0; Message = null; Black_Screen.visible = true; Black_Bar1.visible = false; Black_Bar2.visible = false; Black_Bar_Timer = -1; if (Phase == Class_Reel_Phases.Force_Close) { increment_index(); Timer = 10; } break; case Class_Reel_Phases.Closing: case Class_Reel_Phases.Force_Close: Action = 0; break; } Phase = phase; }
private void increment_index() { Index++; if (Index >= Data_Order.Count) { Closing = true; } else { Global.dispose_battle_textures(); load_class(class_data); Black_Screen.TintA = 255; Title_Back = new Title_Background(); Title_Back.stereoscopic = Config.TITLE_BG_DEPTH; Title_Black.TintA = 255; Class_Banner_Color = new Color(0, 0, 0, 80); Class_Banner.scale = Vector2.One; Class_Banner.visible = true; Class_Banner.offset = new Vector2(Class_Banner.texture.Width / 2, 92 - 8); } }
protected void update_class_name() { switch (Action) { // Load next class case 0: switch (Timer) { case 0: increment_index(); Timer++; break; case 60: if (Closing) { Global.scene_change("Scene_Title_Load"); } else { Timer = 0; Action++; Class_Name = "" + Unit.actor.class_name; } break; default: if (Timer >= 10 && Timer < 42) { Title_Black.TintA = (byte)(256 - (Timer - 9) * 5); Class_Banner.opacity += 8; Class_Banner.offset.Y += Timer % 4 == 0 ? 1 : 0; } Timer++; break; } break; // Create letters case 1: if (Timer == 0) { if (Class_Name.Length == 0) { Action++; } else { add_letter(); Timer++; if (Timer >= Spiral_Letter.DELAY) { Timer = 0; } } } else { Timer++; if (Timer >= Spiral_Letter.DELAY) { Timer = 0; } } break; // Pause on name case 2: if (Timer >= Spiral_Letter.FLASH_TIME && Timer < Spiral_Letter.FLASH_TIME + 8) { Class_Banner_Color.R = (byte)MathHelper.Clamp(Class_Banner_Color.R + 32, 0, 255); Class_Banner_Color.G = (byte)MathHelper.Clamp(Class_Banner_Color.G + 32, 0, 255); Class_Banner_Color.B = (byte)MathHelper.Clamp(Class_Banner_Color.B + 32, 0, 255); Class_Banner_Color.A = (byte)MathHelper.Clamp(Class_Banner_Color.A + 22, 0, 255); } else if (Timer >= Spiral_Letter.FLASH_TIME + 16 && Timer < Spiral_Letter.FLASH_TIME + 24) { Class_Banner_Color.A = (byte)MathHelper.Clamp(Class_Banner_Color.A - 32, 0, 255); } else if (Timer >= Spiral_Letter.TOTAL_WAIT && Timer < Spiral_Letter.TOTAL_WAIT + 32) { int timer = Timer - Spiral_Letter.TOTAL_WAIT; Class_Banner.scale = new Vector2(1 + 2 * ((1 + timer) / 32f), 1 - (float)Math.Sqrt(timer / 32f)); Class_Banner.opacity -= 8; } else if (Timer == Spiral_Letter.TOTAL_WAIT + 32) { Class_Banner.visible = false; Timer = 0; Action++; return; } Timer++; break; // White flash case 3: switch (Timer) { case 47: White_Screen.opacity = 255; create_battler(); Burst = null; Title_Back = null; Letters.Clear(); Timer = 0; Action++; break; default: if (Timer == 0) { Burst = new Sprite(Global.Content.Load <Texture2D>(@"Graphics/Pictures/burst")); Burst.loc = new Vector2(Config.WINDOW_WIDTH / 2, Config.WINDOW_HEIGHT / 2); Burst.offset = new Vector2(Burst.texture.Width / 2, Burst.texture.Height / 2); Burst.blend_mode = 1; Burst.opacity = 0; Burst.stereoscopic = Config.REEL_BURST_DEPTH; } Burst.opacity += 8; // Resize/rotate if (Timer % 3 == 0) { Burst.scale = Vector2.One * (Timer + 1) / 100f * ((Timer + 1) / 48f + 1); Burst.angle = -(Timer + 1) * 4 / 360f * MathHelper.Pi; } // White screen if (Timer >= 16) { White_Screen.opacity = (Timer - 15) * 8; } Timer++; break; } break; // Fade out for next phase case 4: switch (Timer) { case 47: change_phase(Class_Reel_Phases.Animation); break; default: if (Timer >= 16 && Timer <= 31) { White_Screen.opacity = (31 - Timer) * 16; } Timer++; break; } break; } }