コード例 #1
0
        public VirtualKeyboardModalWindow(string title = null, string initialText = null)
        {
            DataContext = this;

            InitializeComponent();

            EmptySpace.MouseDown += (s, a) => Keyboard.Cancel();

            Keyboard.DefaultKeySet = KeySets.En();
            Keyboard.Focus();

            Keyboard.Title      = title;
            Keyboard.Accepted  += OnAccepted;
            Keyboard.Cancelled += CloseModal;

            Keyboard.Loaded += (s, e) =>
            {
                Keyboard.Text       = initialText;
                Keyboard.CaretIndex = initialText == null ? 0 : initialText.Length;
            };
        }
コード例 #2
0
        public override void Read(EndianBinaryReader reader, ISection section = null)
        {
            if (section != null)
            {
                if (section.Format == BinaryFormat.F2nd)
                {
                    reader.SeekCurrent(4);
                }

                Id   = reader.ReadUInt32();
                Name = reader.ReadStringOffset(StringBinaryFormat.NullTerminated);
            }

            long keySetCountOffset = reader.ReadOffset();
            long keySetTypesOffset = reader.ReadOffset();
            long keySetsOffset     = reader.ReadOffset();
            long boneInfosOffset   = reader.ReadOffset();

            if (section != null)
            {
                long boneIdsOffset = reader.ReadOffset();
                int  boneInfoCount = reader.ReadInt32();

                BoneInfos.Capacity = boneInfoCount;
                reader.ReadAtOffset(boneInfosOffset, () =>
                {
                    for (int i = 0; i < boneInfoCount; i++)
                    {
                        BoneInfos.Add(new BoneInfo {
                            Name = reader.ReadStringOffset(StringBinaryFormat.NullTerminated)
                        });
                    }
                });

                reader.ReadAtOffset(boneIdsOffset, () =>
                {
                    foreach (var boneInfo in BoneInfos)
                    {
                        boneInfo.Id = ( uint )reader.ReadUInt64();
                    }
                });
            }
            else
            {
                reader.ReadAtOffset(boneInfosOffset, () =>
                {
                    uint index = reader.ReadUInt16();

                    do
                    {
                        BoneInfos.Add(new BoneInfo {
                            Id = index
                        });
                        index = reader.ReadUInt16();
                    } while (index != 0 && reader.Position < reader.Length);
                });
            }

            reader.ReadAtOffset(keySetCountOffset, () =>
            {
                int info        = reader.ReadUInt16();
                int keySetCount = info & 0x3FFF;
                HighBits        = ( byte )(info >> 14);
                FrameCount      = reader.ReadUInt16();

                KeySets.Capacity = keySetCount;

                reader.ReadAtOffset(keySetTypesOffset, () =>
                {
                    for (int i = 0, b = 0; i < keySetCount; i++)
                    {
                        if (i % 8 == 0)
                        {
                            b = reader.ReadUInt16();
                        }

                        KeySets.Add(new KeySet {
                            Type = ( KeySetType )((b >> (i % 8 * 2)) & 3)
                        });
                    }

                    reader.ReadAtOffset(keySetsOffset, () =>
                    {
                        foreach (var keySet in KeySets)
                        {
                            keySet.Read(reader, section != null);
                        }
                    });
                });
            });
        }