Esempio n. 1
0
            public static SideMenu Create(IReadOnlyDictionary <FF8String, FF8String> pairs)
            {
                var r = new SideMenu
                {
                    _helpStr = new FF8String[pairs.Count],
                    _widths  = new int[pairs.Count]
                };
                byte pos = 0;

                foreach (var pair in pairs)
                {
                    r._helpStr[pos] = pair.Value;
                    var rectangle = Memory.Font.RenderBasicText(pair.Key, 0, 0, skipdraw: true);
                    r._widths[pos] = rectangle.Width;
                    if (rectangle.Width > r._largestWidth)
                    {
                        r._largestWidth = rectangle.Width;
                    }
                    if (rectangle.Height > r._largestHeight)
                    {
                        r._largestHeight = rectangle.Height;
                    }
                    r._totalWidth  += rectangle.Width;
                    r._totalHeight += rectangle.Height;
                    r._avgWidth     = r._totalWidth / (pos + 1);
                    r._avgHeight    = r._totalHeight / (pos + 1);
                    pos++;
                }
                r.Init(pairs.Count, 1, new IGMDataItem.Box {
                    Pos = new Rectangle {
                        Width = 226, Height = 492, X = 843 - 226
                    }
                }, 1, pairs.Count);
                pos = 0;
                foreach (var pair in pairs)
                {
                    r.ITEM[pos, 0] = new IGMDataItem.Text {
                        Data = pair.Key, Pos = new Rectangle(r.SIZE[pos].X, r.SIZE[pos].Y, 0, 0)
                    };
                    pos++;
                }

                r.Cursor_Status |= (Cursor_Status.Enabled | Cursor_Status.Vertical | Cursor_Status.Horizontal);
                return(r);
            }