internal SupportUINode(
            string helpLabel,
            int actorId,
            int targetActorId,
            string str,
            int width)
            : base(helpLabel)
        {
            Size = new Vector2(width, 16);

            Text             = new TextSprite();
            Text.draw_offset = new Vector2(16, 0);
            Text.SetFont(Tactile.Config.UI_FONT, Global.Content, "White");
            Text.text = str;

            // Map Sprite
            MapSprite = new Character_Sprite();
            MapSprite.facing_count = 3;
            MapSprite.frame_count  = 3;
            MapSprite.draw_offset  = new Vector2(8, 16);
            MapSprite.mirrored     = Constants.Team.flipped_map_sprite(Constants.Team.PLAYER_TEAM);

            Rank             = new RightAdjustedText();
            Rank.draw_offset = new Vector2(104, 0);
            Rank.SetFont(Tactile.Config.UI_FONT + "L", Tactile.Config.UI_FONT);

            if (DisplayedActor(targetActorId))
            {
                set_map_sprite_texture(true, MapSpriteName(targetActorId));

                Text.SetColor(Global.Content,
                              SupportEnabled(actorId, targetActorId) ? "White" : "Grey");

                Rank.SetColor(Global.Content, SupportEnabled(actorId, targetActorId) ? "White" : "Grey");
                Rank.text = RankText(actorId, targetActorId);

                Icon_Sprite icon = new Icon_Sprite();
                icon.texture = Global.Content.Load <Texture2D>(@"Graphics/Icons/Affinity Icons");
                icon.size    = new Vector2(16, 16);
                icon.index   = GetAffinity(targetActorId);
                Affinity     = icon;
            }
            else
            {
                set_map_sprite_texture(false, MapSpriteName(targetActorId));

                Text.SetColor(Global.Content, "Grey");

                Rank.SetColor(Global.Content, "Grey");
                Rank.text = Constants.Support.SUPPORT_LETTERS[0];

                TextSprite affinity = new TextSprite();
                affinity.SetFont(Tactile.Config.UI_FONT, Global.Content, "Grey");
                affinity.text = "--";
                Affinity      = affinity;
            }
            MapSprite.frame = Global.game_system.unit_anim_idle_frame;

            Affinity.draw_offset = new Vector2(64, 0);
        }
 protected void initialize_images()
 {
     // Window
     Window        = new SystemWindowHeadered();
     Window.width  = this.window_width;
     Window.height = 48;
     // Target Sprite
     Target_Sprite              = new Character_Sprite();
     Target_Sprite.draw_offset  = new Vector2(20, 24);
     Target_Sprite.facing_count = 3;
     Target_Sprite.frame_count  = 3;
     // Names
     Name = new TextSprite();
     Name.SetFont(Config.UI_FONT, Global.Content, "White");
     // Stat Labels
     Stat_Labels = new List <TextSprite>();
     for (int i = 0; i < 1; i++)
     {
         Stat_Labels.Add(new TextSprite());
         Stat_Labels[i].offset = new Vector2(-8, -(24 + (i * 16)));
         Stat_Labels[i].SetFont(Config.UI_FONT, Global.Content, "Yellow");
     }
     Stat_Labels[0].SetFont(Config.UI_FONT + "L", Config.UI_FONT);
     Stat_Labels[0].text = "HP";
     set_images();
 }
 public Worldmap_Unit(int team, string filename)
 {
     Team                    = team;
     Filename                = filename;
     Unit_Sprite             = new Character_Sprite();
     Unit_Sprite.draw_offset = WORLDMAP_UNIT_OFFSET;
     Scene_Map.refresh_map_sprite(Unit_Sprite, Team, Filename, false);
 }
        protected void initialize_images()
        {
            // Windows
            Window                    = new SystemWindowHeadered();
            Window.width              = this.window_width;
            Window.height             = 48;
            Window.draw_offset        = new Vector2(0, (!this.target_position_reversed ? 0 : 48));
            Target_Window             = new SystemWindowHeadered();
            Target_Window.width       = this.window_width;
            Target_Window.height      = 48;
            Target_Window.draw_offset = new Vector2(0, (this.target_position_reversed ? 0 : 48));
            // Map Sprites
            Unit_Sprite                = new Character_Sprite();
            Unit_Sprite.draw_offset    = new Vector2(20, 24 + (!this.target_position_reversed ? 0 : 48));
            Unit_Sprite.facing_count   = 3;
            Unit_Sprite.frame_count    = 3;
            Target_Sprite              = new Character_Sprite();
            Target_Sprite.draw_offset  = new Vector2(20, 24 + (this.target_position_reversed ? 0 : 48));
            Target_Sprite.facing_count = 3;
            Target_Sprite.frame_count  = 3;
            // Names
            Name1             = new TextSprite();
            Name1.draw_offset = new Vector2(32, 8 + (!this.target_position_reversed ? 0 : 48));
            Name1.SetFont(Config.UI_FONT, Global.Content, "White");
            Name2             = new TextSprite();
            Name2.draw_offset = new Vector2(32, 8 + (this.target_position_reversed ? 0 : 48));
            Name2.SetFont(Config.UI_FONT, Global.Content, "White");
            //Name1, , Aid_Value;
            //Name2, Con_Label, Con_Value;
            // Labels
            Aid_Label             = new TextSprite();
            Aid_Label.draw_offset = new Vector2(8, 24 + (!this.target_position_reversed ? 0 : 48));
            Aid_Label.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            Aid_Label.text        = "Aid";
            Con_Label             = new TextSprite();
            Con_Label.draw_offset = new Vector2(8, 24 + (this.target_position_reversed ? 0 : 48));
            Con_Label.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            Con_Label.text = "Con";
            // Stats
            Aid_Value             = new RightAdjustedText();
            Aid_Value.draw_offset = new Vector2(72, 24 + (!this.target_position_reversed ? 0 : 48));
            Aid_Value.SetFont(Config.UI_FONT, Global.Content, "Blue");
            Con_Value             = new RightAdjustedText();
            Con_Value.draw_offset = new Vector2(72, 24 + (this.target_position_reversed ? 0 : 48));
            Con_Value.SetFont(Config.UI_FONT, Global.Content, "Blue");
            // Hand
            Hand             = new Hand_Cursor();
            Hand.offset      = new Vector2(8, 0);
            Hand.draw_offset = new Vector2(48, 47);
            Hand.mirrored    = !this.target_position_reversed;
            Hand.angle       = MathHelper.PiOver2;
            // Rescue Icon
            Rescue_Icon         = new Sprite();
            Rescue_Icon.texture = Global.Content.Load <Texture2D>(@"Graphics/Characters/RescueIcon");

            set_images();
        }
        internal MapSpriteUINode(string helpLabel, TextSprite text, int width) :
            base(helpLabel, text, width)
        {
            MapSprite              = new Character_Sprite();
            MapSprite.draw_offset  = new Vector2(8, 16);
            MapSprite.facing_count = 3;
            MapSprite.frame_count  = 3;

            Text.draw_offset += new Vector2(16, 0);
        }
        protected void initialize_images()
        {
            // Lord
            Lord_Sprite              = new Character_Sprite();
            Lord_Sprite.draw_offset  = new Vector2(0, 4); // (0, 8); //Debug
            Lord_Sprite.facing_count = 3;
            Lord_Sprite.frame_count  = 3;
            Lord_Sprite.stereoscopic = Config.MAP_UNITS_DEPTH;
            Lord_Sprite.mirrored     = Constants.Team.flipped_map_sprite(
                Constants.Team.PLAYER_TEAM);
            // Map
            Map = new Sprite(Global.Content.Load <Texture2D>(@"Graphics/Panoramas/Worldmap"));
            Map.stereoscopic      = Config.MAP_MAP_DEPTH;
            Zoomed_Out_Map        = new Sprite(Global.Content.Load <Texture2D>(@"Graphics/Panoramas/Worldmap"));
            Zoomed_Out_Map.loc    = new Vector2(Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT) / 2;
            Zoomed_Out_Map.offset = new Vector2(Zoomed_Out_Map.texture.Width, Zoomed_Out_Map.texture.Height) / 2;
            Zoomed_Out_Map.scale  = new Vector2(
                Math.Max((float)(Config.WINDOW_WIDTH + Config.WMAP_ZOOMED_DEPTH * 4) / Zoomed_Out_Map.texture.Width,
                         (float)(Config.WINDOW_HEIGHT) / Zoomed_Out_Map.texture.Height));//Debug
            Zoomed_Out_Map.opacity      = 0;
            Zoomed_Out_Map.stereoscopic = Config.WMAP_ZOOMED_DEPTH;

            Minimap       = new Sprite(Global.Content.Load <Texture2D>(@"Graphics/Panoramas/Worldmap"));
            Minimap.scale = Constants.WorldMap.WORLDMAP_MINIMAP_SCALE;
            Minimap.loc   = new Vector2(Config.WINDOW_WIDTH - 1, Config.WINDOW_HEIGHT - 1) +
                            Constants.WorldMap.WORLDMAP_MINIMAP_OFFSET;
            Minimap.offset       = new Vector2(Minimap.texture.Width, Minimap.texture.Height);
            Minimap.stereoscopic = Config.WMAP_MINIMAP_DEPTH;

            Minimap_Backing       = new Sprite(Global.Content.Load <Texture2D>(@"Graphics/White_Square"));
            Minimap_Backing.scale = new Vector2((((int)Math.Round(Minimap.scale.X * Minimap.texture.Width) + 2) / (float)Minimap_Backing.texture.Width),
                                                (((int)Math.Round(Minimap.scale.Y * Minimap.texture.Height) + 2) / (float)Minimap_Backing.texture.Height));
            Minimap_Backing.loc = new Vector2(Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT) +
                                  Constants.WorldMap.WORLDMAP_MINIMAP_OFFSET;
            Minimap_Backing.offset       = new Vector2(Minimap_Backing.texture.Width, Minimap_Backing.texture.Height);
            Minimap_Backing.tint         = new Color(0, 0, 0, 255);
            Minimap_Backing.stereoscopic = Config.WMAP_MINIMAP_DEPTH;

            ViewArea = new World_Minimap_ViewArea(new Vector2((int)Math.Round(Config.WINDOW_WIDTH * Minimap.scale.X) + 2,
                                                              (int)Math.Round(Config.WINDOW_HEIGHT * Minimap.scale.Y) + 2));
            ViewArea.loc = Minimap.loc - new Vector2((int)Math.Round(Minimap.scale.X * Minimap.texture.Width),
                                                     (int)Math.Round(Minimap.scale.Y * Minimap.texture.Height)) - new Vector2(1, 1) -
                           new Vector2((int)Math.Round(Config.WINDOW_WIDTH * Minimap.scale.X) + 2,
                                       (int)Math.Round(Config.WINDOW_HEIGHT * Minimap.scale.Y) + 2) / 2;
            ViewArea.stereoscopic = Config.WMAP_MINIMAP_DEPTH;

            MenuManager = new WorldmapMenuManager(this, MenuData);
        }
Beispiel #7
0
        protected override void initialize_images()
        {
            // Window
            Unit_Window       = new SystemWindowHeadered();
            Unit_Window.width = this.window_width;
            // Target Sprite
            Unit_Sprite              = new Character_Sprite();
            Unit_Sprite.draw_offset  = new Vector2(20, 24 + 48);
            Unit_Sprite.facing_count = 3;
            Unit_Sprite.frame_count  = 3;
            // Names
            Unit_Name = new TextSprite();
            Unit_Name.SetFont(Config.UI_FONT, Global.Content, "White");

            base.initialize_images();
        }
        internal PrepItemsUnitUINode(string name)
        {
            Name             = new TextSprite();
            Name.draw_offset = new Vector2(16, 0);
            Name.SetFont(Config.UI_FONT, Global.Content, "White");
            Name.text = name;
            // Map Sprite
            MapSprite = new Character_Sprite();
            MapSprite.facing_count = 3;
            MapSprite.frame_count  = 3;
            MapSprite.draw_offset  = new Vector2(8, 16);
            MapSprite.mirrored     = Constants.Team.flipped_map_sprite(Constants.Team.PLAYER_TEAM);

            GlowingLine             = new Unit_Line_Cursor(64);
            GlowingLine.draw_offset = new Vector2(0, 8);
            GlowingLine.visible     = false;
        }
        protected virtual void initialize_images()
        {
            // Window
            Window       = new SystemWindowHeadered();
            Window.width = this.window_width;
            // Target Sprite
            Target_Sprite              = new Character_Sprite();
            Target_Sprite.draw_offset  = new Vector2(20, 24);
            Target_Sprite.facing_count = 3;
            Target_Sprite.frame_count  = 3;
            // Names
            Name = new TextSprite();
            Name.SetFont(Config.UI_FONT, Global.Content, "White");
            // Stat Labels
            initialize_stat_labels();

            set_images();
        }
 protected void initialize_images()
 {
     // Windows
     Window = new Trade_Target_Window_Img();
     // Names
     Name = new TextSprite();
     Name.SetFont(Config.UI_FONT, Global.Content, "White");
     Name.draw_offset = new Vector2(32, 8);
     // Target Sprite
     Target_Sprite              = new Character_Sprite();
     Target_Sprite.draw_offset  = new Vector2(20, 24);
     Target_Sprite.facing_count = 3;
     Target_Sprite.frame_count  = 3;
     // Rescue Icon
     Rescue_Icon             = new Sprite();
     Rescue_Icon.texture     = Global.Content.Load <Texture2D>(@"Graphics/Characters/RescueIcon");
     Rescue_Icon.draw_offset = new Vector2(4, 0);
     set_images();
 }
 public Window_WorldMap_Data()
 {
     Window          = new Sprite(Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Worldmap_Window"));
     Window.src_rect = new Rectangle(0, 0, 136, 64);
     Window.tint     = new Color(224, 224, 224, 224);
     Labels          = new Sprite(Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Worldmap_Window"));
     Labels.src_rect = new Rectangle(0, 64, 136, 64);
     // Chapter
     Chapter     = new TextSprite();
     Chapter.loc = new Vector2(8, 8);
     Chapter.SetFont(Config.UI_FONT, Global.Content, "White");
     // Lord_Lvl
     Lord_Lvl     = new RightAdjustedText();
     Lord_Lvl.loc = new Vector2(128, 8);
     Lord_Lvl.SetFont(Config.UI_FONT, Global.Content, "Blue");
     // Mode
     Mode     = new TextSprite();
     Mode.loc = new Vector2(12, 24);
     Mode.SetFont(Config.UI_FONT, Global.Content, "Blue");
     // Unit_Count
     Unit_Count     = new RightAdjustedText();
     Unit_Count.loc = new Vector2(40, 40);
     Unit_Count.SetFont(Config.UI_FONT, Global.Content, "Blue");
     // Gold
     Gold     = new RightAdjustedText();
     Gold.loc = new Vector2(120, 40);
     Gold.SetFont(Config.UI_FONT, Global.Content, "Blue");
     // Lord
     Lord_Sprite              = new Character_Sprite();
     Lord_Sprite.loc          = new Vector2(88, 24);
     Lord_Sprite.facing_count = 3;
     Lord_Sprite.frame_count  = 3;
     Lord_Sprite.mirrored     = Constants.Team.flipped_map_sprite(
         Constants.Team.PLAYER_TEAM);
     // Arrows
     Left_Arrow           = new Page_Arrow();
     Left_Arrow.loc       = new Vector2(0, 24);
     Right_Arrow          = new Page_Arrow();
     Right_Arrow.loc      = new Vector2(WIDTH, 24);
     Right_Arrow.mirrored = true;
 }
        public WindowCommandSupportViewerActor(int actorId, Vector2 loc)
        {
            Rows = LINES;

            ActorId = actorId;
            Header  = new Support_Command_Components(LINES, this.SupportsRemaining, true);
            Header.color_override = 0;

            List <string> strs = GetNames();

            initialize(loc, 8 + 16, strs);
            Window_Img.color_override = 0;
            Window_Img.set_lines(LINES, (int)Size_Offset.Y + 8);

            int width = WIDTH - 16;

            this.text_offset = new Vector2(width - (this.ColumnCount + 1) * 8, 0);
            set_columns(this.ColumnCount);
            this.size_offset = new Vector2(width - this.text_area_width, Size_Offset.Y);
            Window_Img.set_lines(LINES, (int)Size_Offset.Y + 8);

            initialize_scrollbar();
            if (Scrollbar != null)
            {
                Scrollbar.loc += new Vector2(4, 0);
            }

            // Bar
            Glow            = true;
            this.glow_width = 16;
            this.bar_offset = new Vector2(-4, 0);

            // Cursor
            UICursor.UpdateTargetLoc(ScrollOffset);
            UICursor.move_to_target_loc();
            PlayerCursor        = new Character_Sprite(Global.Content.Load <Texture2D>(@"Graphics/Characters/Cursor"));
            PlayerCursor.offset = new Vector2(4, 0 - 2);

            SetUnits();
        }
Beispiel #13
0
        protected void initialize_images()
        {
            // Windows
            Window             = new SystemWindowHeadered();
            Window.width       = this.window_width;
            Window.height      = 48;
            Window.draw_offset = new Vector2(0, 0);
            // Map Sprites
            Unit_Sprite              = new Character_Sprite();
            Unit_Sprite.draw_offset  = new Vector2(20, 24);
            Unit_Sprite.facing_count = 3;
            Unit_Sprite.frame_count  = 3;
            // Names
            Name             = new TextSprite();
            Name.draw_offset = new Vector2(32, 8);
            Name.SetFont(Config.UI_FONT, Global.Content, "White");
            //Name1, , Aid_Value;
            //Name2, Con_Label, Con_Value;
            // Labels
            Hp_Label             = new TextSprite();
            Hp_Label.draw_offset = new Vector2(8, 24);
            Hp_Label.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            Hp_Label.text     = "HP";
            Slash             = new TextSprite();
            Slash.draw_offset = new Vector2(48, 24);
            Slash.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            Slash.text = "/";
            // Stats
            Hp             = new RightAdjustedText();
            Hp.draw_offset = new Vector2(48, 24);
            Hp.SetFont(Config.UI_FONT, Global.Content, "Blue");
            MaxHp             = new RightAdjustedText();
            MaxHp.draw_offset = new Vector2(72, 24);
            MaxHp.SetFont(Config.UI_FONT, Global.Content, "Blue");

            set_images();
        }
Beispiel #14
0
        protected void initialize_sprites()
        {
            // Black Screen
            Black_Screen           = new Sprite();
            Black_Screen.texture   = Global.Content.Load <Texture2D>(@"Graphics/White_Square");
            Black_Screen.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT);
            Black_Screen.tint      = new Color(0, 0, 0, 255);
            // Background
            Background              = new Menu_Background();
            Background.texture      = Global.Content.Load <Texture2D>(@"Graphics/Pictures/Status_Background");
            Background.vel          = new Vector2(-0.25f, 0);
            Background.tile         = new Vector2(3, 2);
            Background.stereoscopic = Config.MAPMENU_BG_DEPTH;

            // UI Nodes
            TopPanelNodes = new List <StatusUINode>();
            // Top Panel //
            // Top Panel
            Top_Panel = new Status_Top_Panel_Bg(new List <Texture2D> {
                Global.Content.Load <Texture2D>(@"Graphics/Pictures/Portrait_bg"),
                Global.Content.Load <Texture2D>(@"Graphics/Windowskins/WindowPanel")
            });
            Top_Panel.stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            // Face Bg
            Face_Bg              = new Menu_Background();// Sprite(); //Debug
            Face_Bg.texture      = Global.Content.Load <Texture2D>(@"Graphics/Pictures/Portrait_bg");
            Face_Bg.loc          = new Vector2(4, 4);
            Face_Bg.src_rect     = new Rectangle(12, 4, 8, 8);
            Face_Bg.tile         = new Vector2(11, 9);
            Face_Bg.stereoscopic = Config.STATUS_FACE_BG_DEPTH;
            // Map Sprite
            Map_Sprite              = new Character_Sprite();
            Map_Sprite.draw_offset  = MAP_SPRITE_LOC + new Vector2(16, 16);
            Map_Sprite.facing_count = 3;
            Map_Sprite.frame_count  = 3;
            Map_Sprite.stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            // Map Sprite Platform
            Platform              = new Sprite();
            Platform.texture      = Global.Content.Load <Texture2D>(@"Graphics/Characters/StatusPlatform");
            Platform.loc          = MAP_SPRITE_LOC;
            Platform.stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            // Name
            TopPanelNodes.Add(new StatusTextUINode(
                                  "Name",
                                  (Game_Unit unit) => unit.name, true));
            TopPanelNodes.Last().loc          = new Vector2(112, 4);
            TopPanelNodes.Last().draw_offset  = new Vector2(34, 0);
            TopPanelNodes.Last().Size         = new Vector2(68, 16);
            TopPanelNodes.Last().stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;

            // Class Name
            TopPanelNodes.Add(new StatusTextUINode(
                                  "Class",
                                  (Game_Unit unit) => unit.actor.class_name));
            TopPanelNodes.Last().loc          = new Vector2(104, 24);
            TopPanelNodes.Last().Size         = new Vector2(72, 16);
            TopPanelNodes.Last().stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;

            // Lives
            TopPanelNodes.Add(new StatusLivesUINode("Lives"));
            TopPanelNodes.Last().loc          = new Vector2(180, 60);
            TopPanelNodes.Last().stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            // LV/HP/etc

            TopPanelNodes.Add(new StatusStatLargeLabelUINode(
                                  "Lvl", "LV", (Game_Unit unit) => unit.actor.level.ToString(), 32));
            TopPanelNodes.Last().loc          = new Vector2(104, 40);
            TopPanelNodes.Last().stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            Func <Game_Unit, DirectionFlags, bool> lvl_cheat = (unit, dir) =>
            {
                int lvl_gain = 0;
                if (dir.HasFlag(DirectionFlags.Right))
                {
                    lvl_gain = 1;
                }
                else if (dir.HasFlag(DirectionFlags.Left))
                {
                    lvl_gain = -1;
                }
                unit.actor.level += lvl_gain;
                unit.queue_move_range_update();
                return(lvl_gain != 0);
            };

#if DEBUG
            TopPanelNodes.Last().set_cheat(lvl_cheat);
#endif

            TopPanelNodes.Add(new StatusStatUINode(
                                  "Exp", "$", (Game_Unit unit) =>
                                  unit.actor.can_level() ? unit.actor.exp.ToString() : "--", 24));
            TopPanelNodes.Last().loc          = new Vector2(136, 40);
            TopPanelNodes.Last().stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            Func <Game_Unit, DirectionFlags, bool> exp_cheat = (unit, dir) =>
            {
                int exp_gain = 0;
                if (dir.HasFlag(DirectionFlags.Right))
                {
                    exp_gain = 1;
                }
                else if (dir.HasFlag(DirectionFlags.Left))
                {
                    exp_gain = -1;
                }
                unit.actor.exp = (int)MathHelper.Clamp(
                    unit.actor.exp + exp_gain,
                    0, Global.ActorConfig.ExpToLvl - 1);
                return(exp_gain != 0);
            };
#if DEBUG
            TopPanelNodes.Last().set_cheat(exp_cheat);
#endif

            Func <Game_Unit, Color> label_color = null;
            if (show_stat_colors(Stat_Labels.Hp))
            {
                label_color = (Game_Unit unit) =>
                {
                    if (unit.average_stat_hue_shown)
                    {
                        return(unit.actor.stat_color(Stat_Labels.Hp));
                    }

                    return(Color.White);
                };
            }
            TopPanelNodes.Add(new StatusHpUINode(
                                  "Hp",
                                  "HP",
                                  (Game_Unit unit) =>
            {
                if (unit.actor.hp >=
                    Math.Pow(10, Global.BattleSceneConfig.StatusHpCounterValues))
                {
                    return("--");
                }
                else
                {
                    return(unit.actor.hp.ToString());
                }
            },
                                  (Game_Unit unit) =>
            {
                if (unit.actor.maxhp >=
                    Math.Pow(10, Global.BattleSceneConfig.StatusHpCounterValues))
                {
                    return("--");
                }
                else
                {
                    return(unit.actor.maxhp.ToString());
                }
            },
                                  label_color));
            TopPanelNodes.Last().loc          = new Vector2(104, 56);
            TopPanelNodes.Last().stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
#if DEBUG
            TopPanelNodes.Last().set_cheat(
                Status_Page_1.stat_cheat(Stat_Labels.Hp));
#endif

            // Battle Stat Labels
            Battle_Stat_Labels = new List <TextSprite>();
            for (int i = 0; i < 1; i++)
            {
                Battle_Stat_Labels.Add(new TextSprite());
                Battle_Stat_Labels[i].loc = new Vector2(204 + (i / 4) * 56, 8 + (i % 4) * 16);
                Battle_Stat_Labels[i].SetFont(Config.UI_FONT, Global.Content, "Yellow");
                Battle_Stat_Labels[i].text         = "doop";
                Battle_Stat_Labels[i].stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            }
            Battle_Stat_Labels[0].SetColor(Global.Content, "White");
            Battle_Stat_Labels[0].text = "Battle Stats";
            // Battle Stats
            for (int i = 1; i < 8; i++)
            {
                string help_label;
                string label;
                Func <Game_Unit, string> stat_formula;
                switch (i)
                {
                // Atk
                case 1:
                default:
                    help_label   = "Atk";
                    label        = "Atk";
                    stat_formula = (Game_Unit unit) =>
                    {
                        var stats = new BattlerStats(unit.id);
                        if (!stats.has_non_staff_weapon)
                        {
                            return("--");
                        }
                        return(stats.dmg().ToString());
                    };
                    break;

                // Hit
                case 2:
                    help_label   = "Hit";
                    label        = "Hit";
                    stat_formula = (Game_Unit unit) =>
                    {
                        var stats = new BattlerStats(unit.id);
                        if (!stats.has_non_staff_weapon)
                        {
                            return("--");
                        }
                        return(stats.hit().ToString());
                    };
                    break;

                // Dodge
                case 7:
                    help_label   = "Dodge";
                    label        = "Dodge";
                    stat_formula = (Game_Unit unit) =>
                    {
                        var stats = new BattlerStats(unit.id);
                        return(stats.dodge().ToString());
                    };
                    break;

                // Range
                case 4:
                    help_label   = "Range";
                    label        = "Rng";
                    stat_formula = (Game_Unit unit) =>
                    {
                        if (unit.actor.weapon == null ||
                            unit.actor.weapon.is_staff())
                        {
                            return("--");
                        }

                        Data_Weapon weapon    = unit.actor.weapon;
                        int         min_range = unit.min_range();
                        int         max_range = unit.max_range();
                        if (min_range == max_range)
                        {
                            return(min_range.ToString());
                        }
                        else
                        {
                            return(string.Format("{0}-{1}", min_range, max_range));
                        }
                    };
                    break;

                // Crit
                case 3:
                    help_label   = "Crit";
                    label        = "Crit";
                    stat_formula = (Game_Unit unit) =>
                    {
                        var stats = new BattlerStats(unit.id);
                        if (!stats.has_non_staff_weapon || !stats.can_crit())
                        {
                            return("--");
                        }
                        return(stats.crt().ToString());
                    };
                    break;

                // Avoid
                case 6:
                    help_label   = "Avoid";
                    label        = "Avoid";
                    stat_formula = (Game_Unit unit) =>
                    {
                        var stats = new BattlerStats(unit.id);
                        return(stats.avo().ToString());
                    };
                    break;

                // AS
                case 5:
                    help_label   = "AS";
                    label        = "AS";
                    stat_formula = (Game_Unit unit) => unit.atk_spd().ToString();
                    break;
                }

                Vector2 loc = new Vector2(204 + (i / 4) * 56, 8 + (i % 4) * 16);

                TopPanelNodes.Add(new StatusStatUINode(help_label, label, stat_formula));
                TopPanelNodes.Last().loc          = loc;
                TopPanelNodes.Last().stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            }
            // Rescue Icon
            Rescue_Icon              = new Sprite();
            Rescue_Icon.texture      = Global.Content.Load <Texture2D>(@"Graphics/Characters/RescueIcon");
            Rescue_Icon.loc          = new Vector2(103, -5);
            Rescue_Icon.stereoscopic = Config.STATUS_TOP_PANEL_DEPTH;
            // Pages //
            Pages.Add(new Status_Page_1());
            Pages.Add(new Status_Page_2());
            Pages.Add(new Status_Page_3());
            // Page Arrows
            Left_Page_Arrow                = new Page_Arrow();
            Left_Page_Arrow.loc            = new Vector2(4, 84);
            Left_Page_Arrow.stereoscopic   = Config.STATUS_ARROW_DEPTH;
            Left_Page_Arrow.ArrowClicked  += Left_Page_Arrow_ArrowClicked;
            Right_Page_Arrow               = new Page_Arrow();
            Right_Page_Arrow.loc           = new Vector2(Config.WINDOW_WIDTH - 4, 84);
            Right_Page_Arrow.mirrored      = true;
            Right_Page_Arrow.stereoscopic  = Config.STATUS_ARROW_DEPTH;
            Right_Page_Arrow.ArrowClicked += Right_Page_Arrow_ArrowClicked;

            create_cancel_button();

            set_images();
        }
Beispiel #15
0
        private void initialize_sprites()
        {
            // Black Screen
            Black_Screen           = new Sprite();
            Black_Screen.texture   = Global.Content.Load <Texture2D>(@"Graphics/White_Square");
            Black_Screen.dest_rect = new Rectangle(0, 0, Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT);
            Black_Screen.tint      = new Color(0, 0, 0, 255);
            // Banner
            Banner = new TextSprite();
            string str = Global.data_chapters[Global.game_state.chapter_id].FullName;

            Banner.loc = new Vector2(Config.WINDOW_WIDTH, 32) / 2 - new Vector2(Font_Data.text_width(str, Config.CHAPTER_FONT) / 2, 8);
            Banner.SetFont(Config.CHAPTER_FONT, Global.Content, "Data");
            Banner.text         = str;
            Banner.stereoscopic = Config.DATA_BANNER_DEPTH;

            int alpha = 7 * 16;

            BannerBg              = new Sprite();
            BannerBg.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            BannerBg.loc          = new Vector2(64, 0);
            BannerBg.src_rect     = new Rectangle(0, 176, 192, 32);
            BannerBg.tint         = new Color(alpha, alpha, alpha, 256 - alpha);
            BannerBg.stereoscopic = Config.DATA_BANNER_DEPTH;
            // Unit Bg
            UnitBg              = new Sprite();
            UnitBg.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            UnitBg.loc          = new Vector2(132, 120);
            UnitBg.src_rect     = new Rectangle(0, 272, 128, 72);
            UnitBg.tint         = new Color(alpha, alpha, alpha, 256 - alpha);
            UnitBg.stereoscopic = Config.DATA_LEADER_DEPTH;
            // File Bg
            FileBg              = new Sprite();
            FileBg.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            FileBg.loc          = new Vector2(260, 128);
            FileBg.src_rect     = new Rectangle(0, 208, 56, 64);
            FileBg.tint         = new Color(alpha, alpha, alpha, 256 - alpha);
            FileBg.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Background
            Background         = new Menu_Background();
            Background.texture = Global.Content.Load <Texture2D>(@"Graphics/Pictures/Status_Background");
            (Background as Menu_Background).vel  = new Vector2(-0.25f, 0);
            (Background as Menu_Background).tile = new Vector2(3, 2);
            Background.stereoscopic = Config.MAPMENU_BG_DEPTH;
            // Cursor
            Cursor = new Data_Team_Cursor();
            Cursor.stereoscopic = Config.DATA_TEAMS_DEPTH;
            // Objective Window
            Objective_Window              = new Sprite();
            Objective_Window.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Objective_Window.loc          = new Vector2(132, 32);
            Objective_Window.src_rect     = new Rectangle(32, 0, 184, 96);
            Objective_Window.stereoscopic = Config.DATA_WINDOW_DEPTH;
            // Game Data Window
            Game_Data_Window              = new Sprite();
            Game_Data_Window.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Game_Data_Window.loc          = new Vector2(324, 120);
            Game_Data_Window.src_rect     = new Rectangle(104, 96, 112, 72);
            Game_Data_Window.stereoscopic = Config.DATA_DATA_DEPTH;
            // Team Windows/Text
            int y = 0;

            for (int i = 1; i <= Constants.Team.NUM_TEAMS; i++)
            {
                if (Global.game_map.teams[i].Count > 0)
                {
                    List <int>            groups      = new List <int>();
                    Dictionary <int, int> group_sizes = new Dictionary <int, int>();
                    foreach (int id in Global.game_map.teams[i])
                    {
                        if (!groups.Contains(Global.game_map.units[id].group))
                        {
                            groups.Add(Global.game_map.units[id].group);
                            group_sizes.Add(Global.game_map.units[id].group, 0);
                        }
                        group_sizes[Global.game_map.units[id].group]++;
                    }
                    Groups.Add(new KeyValuePair <int, int>(i, groups.Count));
                    Team_Windows.Add(new Data_Team_Window(i, group_sizes.Count));
                    Team_Windows[Team_Windows.Count - 1].loc          = TEAM_WINDOW_LOC + new Vector2(0, 0 + y);
                    Team_Windows[Team_Windows.Count - 1].stereoscopic = Config.DATA_TEAMS_DEPTH;
                    groups.Sort();
                    for (int j = 0; j < groups.Count; j++)
                    {
                        Group_Names.Add(new TextSprite());
                        Group_Names[Group_Names.Count - 1].loc = TEAM_WINDOW_LOC + new Vector2(4, y + 12 + j * 16);
                        Group_Names[Group_Names.Count - 1].SetFont(Config.UI_FONT, Global.Content, "White");
                        Group_Names[Group_Names.Count - 1].text         = Global.game_map.group_name(i, groups[j]);
                        Group_Names[Group_Names.Count - 1].stereoscopic = Config.DATA_TEAMS_DEPTH;
                        Group_Counts.Add(new RightAdjustedText());
                        Group_Counts[Group_Names.Count - 1].loc = TEAM_WINDOW_LOC + new Vector2(112, y + 12 + j * 16);
                        Group_Counts[Group_Names.Count - 1].SetFont(Config.UI_FONT, Global.Content, "Blue");
                        Group_Counts[Group_Names.Count - 1].text         = group_sizes[groups[j]].ToString();
                        Group_Counts[Group_Names.Count - 1].stereoscopic = Config.DATA_TEAMS_DEPTH;
                    }
                    y += (group_sizes.Count + 1) * 16;
                }
            }
            // Game Data Window
            RankingWindow              = new Data_Ranking_Window();
            RankingWindow.loc          = new Vector2(320, 32);
            RankingWindow.width        = 120;
            RankingWindow.height       = 80;
            RankingWindow.stereoscopic = Config.DATA_TEAMS_DEPTH;
            // Counter
            Counter              = new Play_Time_Counter();
            Counter.loc          = Game_Data_Window.loc + new Vector2(12, 48);
            Counter.stereoscopic = Config.DATA_DATA_DEPTH;
            // Labels
            Objective_Label              = new Sprite();
            Objective_Label.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Objective_Label.loc          = Objective_Window.loc + new Vector2(16 - 2, 12 - 2);
            Objective_Label.src_rect     = new Rectangle(0, 96, 56, 16);
            Objective_Label.stereoscopic = Config.DATA_WINDOW_DEPTH;
            Defeat_Label              = new Sprite();
            Defeat_Label.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Defeat_Label.loc          = Objective_Window.loc + new Vector2(16 - 2, 44 - 2);
            Defeat_Label.src_rect     = new Rectangle(56, 96, 40, 16);
            Defeat_Label.stereoscopic = Config.DATA_WINDOW_DEPTH;

            Turn_Label               = new Sprite();
            Turn_Label.texture       = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Turn_Label.loc           = Game_Data_Window.loc + new Vector2(8, 8);
            Turn_Label.src_rect      = new Rectangle(0, 112, 32, 16);
            Turn_Label.stereoscopic  = Config.DATA_DATA_DEPTH;
            Funds_Label              = new Sprite();
            Funds_Label.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Funds_Label.loc          = Game_Data_Window.loc + new Vector2(8, 24);
            Funds_Label.src_rect     = new Rectangle(0, 128, 32, 16);
            Funds_Label.stereoscopic = Config.DATA_DATA_DEPTH;
            Gold_G              = new Sprite();
            Gold_G.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Gold_G.loc          = Game_Data_Window.loc + new Vector2(88 + 5, 24);
            Gold_G.src_rect     = new Rectangle(0, 160, 16, 16);
            Gold_G.stereoscopic = Config.DATA_DATA_DEPTH;

            Lv_Label              = new Sprite();
            Lv_Label.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Lv_Label.loc          = UnitBg.loc + new Vector2(8, 40 + 0 - 2);
            Lv_Label.src_rect     = new Rectangle(32, 112, 16, 16);
            Lv_Label.stereoscopic = Config.DATA_LEADER_DEPTH;
            Hp_Label              = new Sprite();
            Hp_Label.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            Hp_Label.loc          = UnitBg.loc + new Vector2(8, 40 + 12 - 2);
            Hp_Label.src_rect     = new Rectangle(48, 112, 24, 16);
            Hp_Label.stereoscopic = Config.DATA_LEADER_DEPTH;
            TextSprite hp_slash = new TextSprite(); // why is this done so //@Yeti

            hp_slash.loc = UnitBg.loc + new Vector2(44, 40 + 12);
            hp_slash.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            hp_slash.text            = "/";
            Hp_Slash                 = hp_slash;
            Hp_Slash.stereoscopic    = Config.DATA_LEADER_DEPTH;
            RatingLabel              = new Sprite();
            RatingLabel.texture      = Global.Content.Load <Texture2D>(@"Graphics/Windowskins/Data_Screen");
            RatingLabel.loc          = UnitBg.loc + new Vector2(72, 40 + 12 - 2);
            RatingLabel.src_rect     = new Rectangle(72, 112, 24, 16);
            RatingLabel.stereoscopic = Config.DATA_LEADER_DEPTH;

            RankingLabel     = new TextSprite();
            RankingLabel.loc = RankingWindow.loc + new Vector2(24, 8);
            RankingLabel.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            RankingLabel.text         = "Progress";
            RankingLabel.stereoscopic = Config.DATA_TEAMS_DEPTH;
            TurnsRankLabel            = new TextSprite();
            TurnsRankLabel.loc        = RankingWindow.loc + new Vector2(8, 24);
            TurnsRankLabel.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            TurnsRankLabel.text         = "Turns";
            TurnsRankLabel.stereoscopic = Config.DATA_TEAMS_DEPTH;
            CombatRankLabel             = new TextSprite();
            CombatRankLabel.loc         = RankingWindow.loc + new Vector2(8, 40);
            CombatRankLabel.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            CombatRankLabel.text         = "Combat";
            CombatRankLabel.stereoscopic = Config.DATA_TEAMS_DEPTH;
            ExpRankLabel     = new TextSprite();
            ExpRankLabel.loc = RankingWindow.loc + new Vector2(8, 56);
            ExpRankLabel.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            ExpRankLabel.text         = "Exp";
            ExpRankLabel.stereoscopic = Config.DATA_TEAMS_DEPTH;

            FileLabel     = new TextSprite();
            FileLabel.loc = FileBg.loc + new Vector2(8, 40);
            FileLabel.SetFont(Config.UI_FONT, Global.Content, "Yellow");
            FileLabel.text         = "File";
            FileLabel.stereoscopic = Config.DATA_LEADER_DEPTH;

            // Victory Text
            Victory_Text     = new TextSprite();
            Victory_Text.loc = Objective_Window.loc + new Vector2(68, 12);
            Victory_Text.SetFont(Config.UI_FONT, Global.Content, "White");
            Victory_Text.text         = Global.game_system.Victory_Text;
            Victory_Text.stereoscopic = Config.DATA_WINDOW_DEPTH;
            // Loss Text
            Loss_Text     = new TextSprite();
            Loss_Text.loc = Objective_Window.loc + new Vector2(68, 44);
            Loss_Text.SetFont(Config.UI_FONT, Global.Content, "White");
            Loss_Text.text         = Global.game_system.Loss_Text;
            Loss_Text.stereoscopic = Config.DATA_WINDOW_DEPTH;

            // Turn Text
            Turn     = new RightAdjustedText();
            Turn.loc = Game_Data_Window.loc + new Vector2(100, 8);
            Turn.SetFont(Config.UI_FONT, Global.Content, "Blue");
            Turn.text         = Global.game_system.chapter_turn.ToString();
            Turn.stereoscopic = Config.DATA_DATA_DEPTH;
            // Funds Text
            Funds     = new RightAdjustedText();
            Funds.loc = Game_Data_Window.loc + new Vector2(92, 24);
            Funds.SetFont(Config.UI_FONT, Global.Content, "Blue");
            Funds.text         = Global.battalion.gold.ToString();
            Funds.stereoscopic = Config.DATA_DATA_DEPTH;

            // Leader Name
            Leader_Name     = new TextSprite();
            Leader_Name.loc = UnitBg.loc + new Vector2(32 + 24, 12);
            Leader_Name.SetFont(Config.UI_FONT, Global.Content, "White");
            Leader_Name.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Level
            Lvl     = new RightAdjustedText();
            Lvl.loc = UnitBg.loc + new Vector2(68, 40 + 0);
            Lvl.SetFont(Config.UI_FONT, Global.Content, "Blue");
            Lvl.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Hp
            Hp     = new RightAdjustedText();
            Hp.loc = UnitBg.loc + new Vector2(44, 40 + 12);
            Hp.SetFont(Config.UI_FONT, Global.Content, "Blue");
            Hp.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Hp Max
            Hp_Max     = new RightAdjustedText();
            Hp_Max.loc = UnitBg.loc + new Vector2(68, 40 + 12);
            Hp_Max.SetFont(Config.UI_FONT, Global.Content, "Blue");
            Hp_Max.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Rating
            Rating     = new RightAdjustedText();
            Rating.loc = UnitBg.loc + new Vector2(120, 40 + 12);
            Rating.SetFont(Config.UI_FONT, Global.Content, "Blue");
            Rating.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Map Sprite
            Map_Sprite = new Character_Sprite();
            Map_Sprite.facing_count = 3;
            Map_Sprite.frame_count  = 3;
            Map_Sprite.loc          = UnitBg.loc + new Vector2(20, 24);
            Map_Sprite.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Miniface
            Face              = new Miniface();
            Face.loc          = UnitBg.loc + new Vector2(104, 8);
            Face.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Weapon
            LeaderWeapon              = new Item_Display();
            LeaderWeapon.loc          = UnitBg.loc + new Vector2(8, 28);
            LeaderWeapon.stereoscopic = Config.DATA_LEADER_DEPTH;

            // File number
            FileNumber     = new RightAdjustedText();
            FileNumber.loc = FileBg.loc + new Vector2(40, 40);
            FileNumber.SetFont(Config.UI_FONT, Global.Content, "Blue");
            FileNumber.text         = Global.current_save_id.ToString();
            FileNumber.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Style
            StyleText     = new TextSprite();
            StyleText.loc = FileBg.loc + new Vector2(8, 8);
            StyleText.SetFont(Config.UI_FONT, Global.Content, "Blue");
            StyleText.text         = Global.game_system.Style.ToString();
            StyleText.stereoscopic = Config.DATA_LEADER_DEPTH;
            // Difficulty
            DifficultyText     = new TextSprite();
            DifficultyText.loc = FileBg.loc + new Vector2(8, 24);
            DifficultyText.SetFont(Config.UI_FONT, Global.Content, "Blue");
            DifficultyText.text         = Global.game_system.Difficulty_Mode.ToString();
            DifficultyText.stereoscopic = Config.DATA_LEADER_DEPTH;

            // Rank Letters
            TotalRankLetter     = new TextSprite();
            TotalRankLetter.loc = RankingWindow.loc + new Vector2(88, 8);
            TotalRankLetter.SetFont(Config.UI_FONT + "L", Global.Content, "Blue", Config.UI_FONT);
            TotalRankLetter.stereoscopic = Config.DATA_TEAMS_DEPTH;
            TurnsRankLetter     = new TextSprite();
            TurnsRankLetter.loc = RankingWindow.loc + new Vector2(104, 24);
            TurnsRankLetter.SetFont(Config.UI_FONT + "L", Global.Content, "Blue", Config.UI_FONT);
            TurnsRankLetter.stereoscopic = Config.DATA_TEAMS_DEPTH;
            CombatRankLetter             = new TextSprite();
            CombatRankLetter.loc         = RankingWindow.loc + new Vector2(104, 40);
            CombatRankLetter.SetFont(Config.UI_FONT + "L", Global.Content, "Blue", Config.UI_FONT);
            CombatRankLetter.stereoscopic = Config.DATA_TEAMS_DEPTH;
            ExpRankLetter     = new TextSprite();
            ExpRankLetter.loc = RankingWindow.loc + new Vector2(104, 56);
            ExpRankLetter.SetFont(Config.UI_FONT + "L", Global.Content, "Blue", Config.UI_FONT);
            ExpRankLetter.stereoscopic = Config.DATA_TEAMS_DEPTH;
            // Rank Gauges
            TurnsBar               = new Stat_Bar();
            TurnsBar.loc           = RankingWindow.loc + new Vector2(40, 32);
            TurnsBar.offset        = new Vector2(-2, 0);
            TurnsBar.bar_width     = RANKING_BAR_LENGTH;
            TurnsBar.stereoscopic  = Config.DATA_TEAMS_DEPTH;
            CombatBar              = new Stat_Bar();
            CombatBar.loc          = RankingWindow.loc + new Vector2(40, 48);
            CombatBar.offset       = new Vector2(-2, 0);
            CombatBar.bar_width    = RANKING_BAR_LENGTH;
            CombatBar.stereoscopic = Config.DATA_TEAMS_DEPTH;
            ExpBar              = new Stat_Bar();
            ExpBar.loc          = RankingWindow.loc + new Vector2(40, 64);
            ExpBar.offset       = new Vector2(-2, 0);
            ExpBar.bar_width    = RANKING_BAR_LENGTH;
            ExpBar.stereoscopic = Config.DATA_TEAMS_DEPTH;

            // Page Arrows
            Left_Page_Arrow               = new Page_Arrow();
            Left_Page_Arrow.loc           = new Vector2(4, 72);
            Left_Page_Arrow.stereoscopic  = Config.DATA_BANNER_DEPTH;
            Right_Page_Arrow              = new Page_Arrow();
            Right_Page_Arrow.loc          = new Vector2(Config.WINDOW_WIDTH - 4, 72);
            Right_Page_Arrow.mirrored     = true;
            Right_Page_Arrow.stereoscopic = Config.DATA_BANNER_DEPTH;

            refresh_rank();
            set_images();
        }