Example #1
0
        private static void DrawFace()
        {
            if (pointer >= 0)
            {
                Viewport vp = Memory.graphics.GraphicsDevice.Viewport;

                int      rows       = 2;
                int      cols       = 8;
                int      totalitems = rows * cols;
                Faces.ID id         = FaceValue[pointer];
                int      pos        = (int)id;
                int      i          = Memory.Faces.GetEntry(id).File;
                int      col        = (pos % cols);
                int      row        = (pos / cols) % rows;

                float     scale = vp.Height / Memory.Faces.GetEntry(id).Height;
                Rectangle dst   = new Rectangle(new Point(0), (Memory.Faces.GetEntry(id).Size *scale).ToPoint());
                dst.Offset(vp.Width / 2 - dst.Center.X, 0);
                Memory.SpriteBatchStartAlpha();
                Memory.spriteBatch.GraphicsDevice.Clear(Color.Black);
                Memory.Faces.Draw(id, dst);
                Memory.font.RenderBasicText($"{FaceValue[pointer].ToString().Replace('_', ' ')}\n" +
                                            $"pos: {pos}\n" +
                                            $"file: {i}\n" +
                                            $"col: {col}\n" +
                                            $"row: {row}\n" +
                                            $"x: {Memory.Faces.GetEntry(id).X}\n" +
                                            $"y: {Memory.Faces.GetEntry(id).Y}\n" +
                                            $"width: {Memory.Faces.GetEntry(id).Width}\n" +
                                            $"height: {Memory.Faces.GetEntry(id).Height}",
                                            (int)(vp.Width * 0.10f), (int)(vp.Height * 0.05f), lineSpacing: 1);
                Memory.SpriteBatchEnd();
            }
        }
Example #2
0
        public FF8String GetName(Faces.ID id, Saves.Data d = null)
        {
            if (d == null)
            {
                d = Memory.State;
            }
            switch (id)
            {
            case Faces.ID.Squall_Leonhart:
                return(d.Squallsname ?? Read(FileID.MNGRP, 2, 92));

            case Faces.ID.Rinoa_Heartilly:
                return(d.Rinoasname ?? Read(FileID.MNGRP, 2, 93));

            case Faces.ID.Angelo:
                return(d.Angelosname ?? Read(FileID.MNGRP, 2, 94));

            case Faces.ID.Boko:
                return(d.Bokosname ?? Read(FileID.MNGRP, 2, 135));

            case Faces.ID.Zell_Dincht:
            case Faces.ID.Irvine_Kinneas:
            case Faces.ID.Quistis_Trepe:
            case Faces.ID.Selphie_Tilmitt:
            case Faces.ID.Seifer_Almasy:
            case Faces.ID.Edea_Kramer:
            case Faces.ID.Laguna_Loire:
            case Faces.ID.Kiros_Seagill:
            case Faces.ID.Ward_Zabac:
                return(Read(FileID.KERNEL, 6, (int)id));

            case Faces.ID.Quezacotl:
            case Faces.ID.Shiva:
            case Faces.ID.Ifrit:
            case Faces.ID.Siren:
            case Faces.ID.Brothers:
            case Faces.ID.Diablos:
            case Faces.ID.Carbuncle:
            case Faces.ID.Leviathan:
            case Faces.ID.Pandemona:
            case Faces.ID.Cerberus:
            case Faces.ID.Alexander:
            case Faces.ID.Doomtrain:
            case Faces.ID.Bahamut:
            case Faces.ID.Cactuar:
            case Faces.ID.Tonberry:
            case Faces.ID.Eden:
                return(d.GFs[id.ToGFs()].Name ?? Read(FileID.MNGRP, 2, 95 + (int)(id.ToGFs())));

            case Faces.ID.Griever:
                return(d.Grieversname ?? Read(FileID.MNGRP, 2, 135));

            case Faces.ID.MiniMog:
                return(Read(FileID.KERNEL, 0, 72));    // also in KERNEL, 12, 36

            default:
                return(new FF8String());
            }
        }
Example #3
0
 protected override void Init()
 {
     _misc = new Dictionary <Items, FF8String> {
         { Items.HP, Memory.Strings.Read(Strings.FileID.MenuGroup, 0, 26) },
         { Items.LV, Memory.Strings.Read(Strings.FileID.MenuGroup, 0, 27) },
         { Items.ForwardSlash, Memory.Strings.Read(Strings.FileID.MenuGroup, 0, 25) },
     };
     base.Init();
     _target = Faces.ID.Blank;
 }
Example #4
0
            private Damageable GetDamagable(Faces.ID id)
            {
                GFs        gf = id.ToGFs();
                Characters c  = id.ToCharacters();

                if (c == OpenVIII.Characters.Blank)
                {
                    return(GetDamagable(gf));
                }
                else
                {
                    return(GetDamagable(c));
                }
            }
Example #5
0
            //public Damageable this[Damageable damageable]
            /// <summary>
            /// return -1 on error
            /// </summary>
            /// <param name="id"></param>
            /// <param name="character"></param>
            /// <param name="gf"></param>
            /// <returns></returns>
            public int CurrentHP(Faces.ID id = Faces.ID.Blank, Characters character = OpenVIII.Characters.Blank, GFs gf = OpenVIII.GFs.Blank)
            {
                if (character == OpenVIII.Characters.Blank)
                {
                    character = id.ToCharacters();
                }
                if (gf == OpenVIII.GFs.Blank)
                {
                    gf = id.ToGFs();
                }
                int hp = (Characters.ContainsKey(character) ? Characters[character].CurrentHP() : -1);

                hp = (hp < 0 && GFs.ContainsKey(gf) ? GFs[gf].CurrentHP() : hp);
                return(hp);
            }
Example #6
0
                private void Fill()
                {
                    Faces.ID id   = 0;
                    int      skip = Page * rows;

                    for (int i = 0; i < rows; i++)
                    {
                        bool       gftest    = false;
                        bool       ctest     = false;
                        Characters character = Characters.Blank;
                        GFs        gf        = GFs.Blank;
                        while (!Enum.IsDefined(typeof(Faces.ID), id) ||
                               !((ctest = Item.TestCharacter(ref id, out character)) || (gftest = Item.TestGF(ref id, out gf))) ||
                               skip-- > 0)
                        {
                            if ((byte)++id > 32)
                            {
                                for (; i < rows; i++)
                                {
                                    ITEM[i, 0]  = null;
                                    ITEM[i, 1]  = null;
                                    ITEM[i, 2]  = null;
                                    BLANKS[i]   = true;
                                    Contents[i] = Faces.ID.Blank;
                                }
                                Pages = Page + 1;
                                return;
                            }
                        }
                        ITEM[i, 0] = new IGMDataItem_String(Memory.Strings.GetName(id), pos: SIZE[i]);
                        int hp = (ctest || gftest) ? Memory.State[id].CurrentHP() : -1;
                        BLANKS[i]   = false;
                        Contents[i] = id;
                        if (hp > -1)
                        {
                            ITEM[i, 1] = new IGMDataItem_Icon(Icons.ID.HP2, new Rectangle(SIZE[i].X + SIZE[i].Width - (20 * 7), SIZE[i].Y, 0, 0), 13);
                            ITEM[i, 2] = new IGMDataItem_Int(hp, pos: new Rectangle(SIZE[i].X + SIZE[i].Width - (20 * 4), SIZE[i].Y, 0, 0), spaces: 4);
                        }
                        else
                        {
                            ITEM[i, 1] = null;
                            ITEM[i, 2] = null;
                        }

                        id++;
                    }
                    Pages = Page + 2;
                }
Example #7
0
 private void Fill(Faces.ID e)
 {
     if ((e == Faces.ID.Blank && Target != Faces.ID.Blank) || All)
     {
         Target = e;
         foreach (IGMDataItem i in ITEM)
         {
             i?.Hide();
         }
     }
     else
     {
         if (Target == Faces.ID.Blank)
         {
             foreach (IGMDataItem i in ITEM)
             {
                 i?.Show();
             }
         }
         Target = e;
         Characters character = e.ToCharacters();
         GFs        gf        = e.ToGFs();
         if (character != Characters.Blank || (gf != GFs.Blank && gf != GFs.All))
         {
             ITEM[0, 0] = new IGMDataItem_String(Misc[Items.LV], new Rectangle(SIZE[0].X, SIZE[0].Y, 0, 0));
             ITEM[1, 0] = new IGMDataItem_String(Misc[Items.HP], new Rectangle(SIZE[1].X, SIZE[1].Y, 0, 0));
             ITEM[1, 2] = new IGMDataItem_String(Misc[Items.ForwardSlash], new Rectangle(SIZE[1].X + 155, SIZE[1].Y, 0, 0));
         }
         if (Memory.State.Characters != null && character != Characters.Blank)
         {
             ITEM[0, 1] = new IGMDataItem_Int(Memory.State.Characters[character].Level, new Rectangle(SIZE[0].X + 35, SIZE[0].Y, 0, 0), 13, numtype: Icons.NumType.sysFntBig, padding: 1, spaces: 6);
             ITEM[0, 2] = Memory.State.Party != null && Memory.State.Party.Contains(character)
                 ? new IGMDataItem_Icon(Icons.ID.InParty, new Rectangle(SIZE[0].X + 155, SIZE[0].Y, 0, 0), 6)
                 : null;
             ITEM[1, 1] = new IGMDataItem_Int(Memory.State.Characters[character].CurrentHP(character), new Rectangle(SIZE[1].X + 35, SIZE[1].Y, 0, 0), 13, numtype: Icons.NumType.sysFntBig, padding: 1, spaces: 6);
             ITEM[1, 3] = new IGMDataItem_Int(Memory.State.Characters[character].MaxHP(character), new Rectangle(SIZE[1].X + 155, SIZE[1].Y, 0, 0), 13, numtype: Icons.NumType.sysFntBig, padding: 1, spaces: 5);
         }
         if (Memory.State.GFs != null && (gf != GFs.Blank && gf != GFs.All))
         {
             ITEM[0, 1] = new IGMDataItem_Int(Memory.State.GFs[gf].Level, new Rectangle(SIZE[0].X + 35, SIZE[0].Y, 0, 0), 13, numtype: Icons.NumType.sysFntBig, padding: 1, spaces: 6);
             ITEM[0, 2] = null;
             ITEM[1, 1] = new IGMDataItem_Int(Memory.State.GFs[gf].CurrentHP(), new Rectangle(SIZE[1].X + 35, SIZE[1].Y, 0, 0), 13, numtype: Icons.NumType.sysFntBig, padding: 1, spaces: 6);
             ITEM[1, 3] = new IGMDataItem_Int(Memory.State.GFs[gf].MaxHP(), new Rectangle(SIZE[1].X + 155, SIZE[1].Y, 0, 0), 13, numtype: Icons.NumType.sysFntBig, padding: 1, spaces: 5);
         }
     }
 }
Example #8
0
 public Damageable this[Faces.ID id] => GetDamageable(id);
Example #9
0
 private void TargetChangeEvent(object sender, Faces.ID e) => Fill(e);
Example #10
0
            private void Fill(Faces.ID e)
            {
                if ((e == Faces.ID.Blank && _target != Faces.ID.Blank) || All)
                {
                    _target = e;
                    foreach (var i in ITEM)
                    {
                        i?.Hide();
                    }
                }
                else
                {
                    if (_target == Faces.ID.Blank)
                    {
                        foreach (var i in ITEM)
                        {
                            i?.Show();
                        }
                    }
                    _target = e;
                    var character = e.ToCharacters();
                    var gf        = e.ToGFs();
                    if (character != Characters.Blank || (gf != GFs.Blank && gf != GFs.All))
                    {
                        ITEM[0, 0] = new IGMDataItem.Text {
                            Data = Strings.Name.LV, Pos = new Rectangle(SIZE[0].X, SIZE[0].Y, 0, 0)
                        };
                        ITEM[1, 0] = new IGMDataItem.Text {
                            Data = Strings.Name.HP, Pos = new Rectangle(SIZE[1].X, SIZE[1].Y, 0, 0)
                        };
                        ITEM[1, 2] = new IGMDataItem.Text {
                            Data = Strings.Name.ForwardSlash, Pos = new Rectangle(SIZE[1].X + 155, SIZE[1].Y, 0, 0)
                        };
                    }
                    if (Memory.State.Characters && character != Characters.Blank)
                    {
                        ITEM[0, 1] = new IGMDataItem.Integer {
                            Data = Memory.State[character].Level, Pos = new Rectangle(SIZE[0].X + 35, SIZE[0].Y, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 6
                        };
                        ITEM[0, 2] = Memory.State.Party != null && Memory.State.Party.Contains(character)
                            ? new IGMDataItem.Icon {
                            Data = Icons.ID.InParty, Pos = new Rectangle(SIZE[0].X + 155, SIZE[0].Y, 0, 0), Palette = 6
                        }
                            : null;
                        ITEM[1, 1] = new IGMDataItem.Integer {
                            Data = Memory.State[character].CurrentHP(character), Pos = new Rectangle(SIZE[1].X + 35, SIZE[1].Y, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 6
                        };
                        ITEM[1, 3] = new IGMDataItem.Integer {
                            Data = Memory.State[character].MaxHP(character), Pos = new Rectangle(SIZE[1].X + 155, SIZE[1].Y, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 5
                        };
                    }

                    if (Memory.State.GFs == null || (gf == GFs.Blank || gf == GFs.All))
                    {
                        return;
                    }
                    ITEM[0, 1] = new IGMDataItem.Integer {
                        Data = Memory.State.GFs[gf].Level, Pos = new Rectangle(SIZE[0].X + 35, SIZE[0].Y, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 6
                    };
                    ITEM[0, 2] = null;
                    ITEM[1, 1] = new IGMDataItem.Integer {
                        Data = Memory.State.GFs[gf].CurrentHP(), Pos = new Rectangle(SIZE[1].X + 35, SIZE[1].Y, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 6
                    };
                    ITEM[1, 3] = new IGMDataItem.Integer {
                        Data = Memory.State.GFs[gf].MaxHP(), Pos = new Rectangle(SIZE[1].X + 155, SIZE[1].Y, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 5
                    };
                }
            }
Example #11
0
        public FF8String GetName(Faces.ID id, Saves.Data d = null)
        {
            if (d == null)
            {
                d = Memory.State;
            }
            switch (id)
            {
            case Faces.ID.Squall_Leonhart:
                return(d.SquallName ?? Read(FileID.MenuGroup, 2, 92));

            case Faces.ID.Rinoa_Heartilly:
                return(d.RinoaName ?? Read(FileID.MenuGroup, 2, 93));

            case Faces.ID.Angelo:
                return(d.AngeloName ?? Read(FileID.MenuGroup, 2, 94));

            case Faces.ID.Boko:
                return(d.BokoName ?? Read(FileID.MenuGroup, 2, 135));

            case Faces.ID.Zell_Dincht:
            case Faces.ID.Irvine_Kinneas:
            case Faces.ID.Quistis_Trepe:
            case Faces.ID.Selphie_Tilmitt:
            case Faces.ID.Seifer_Almasy:
            case Faces.ID.Edea_Kramer:
            case Faces.ID.Laguna_Loire:
            case Faces.ID.Kiros_Seagill:
            case Faces.ID.Ward_Zabac:
                return(Read(FileID.Kernel, 6, (int)id));

            case Faces.ID.Quezacotl:
            case Faces.ID.Shiva:
            case Faces.ID.Ifrit:
            case Faces.ID.Siren:
            case Faces.ID.Brothers:
            case Faces.ID.Diablos:
            case Faces.ID.Carbuncle:
            case Faces.ID.Leviathan:
            case Faces.ID.Pandemona:
            case Faces.ID.Cerberus:
            case Faces.ID.Alexander:
            case Faces.ID.Doomtrain:
            case Faces.ID.Bahamut:
            case Faces.ID.Cactuar:
            case Faces.ID.Tonberry:
            case Faces.ID.Eden:
                if (d.GFs != null && d.GFs.TryGetValue(id.ToGFs(), out var value) && value.Name != null &&
                    value.Name.Length > 0)
                {
                    return(value.Name);
                }

                return(Read(FileID.MenuGroup, 2, 95 + (int)(id.ToGFs())));

            case Faces.ID.Griever:
                return(d.GrieverName ?? Read(FileID.MenuGroup, 2, 135));

            case Faces.ID.MiniMog:
                return(Read(FileID.Kernel, 0, 72));    // also in KERNEL, 12, 36

            case Faces.ID.Blank:
                return(new FF8String());

            default:
                throw new ArgumentOutOfRangeException(nameof(id), id, null);
            }
        }