Esempio n. 1
0
        public T find <T>(xElement element, string directory)
            where T : bloResource, new()
        {
            bloResourceType type;

            return(find <T>(element, directory, out type));
        }
Esempio n. 2
0
        WaveGroup LoadWaveGroup(xElement xwavegroup)
        {
            var waveGroup = new WaveGroup();

            var xarchive = xwavegroup.Attribute(cWaveArchive);

            if (xarchive == null)
            {
                mareep.WriteWarning("XML: line #{0}: missing archive attribute\n", xwavegroup.LineNumber);
                return(null);
            }

            waveGroup.ArchiveFileName = xarchive.Value;

            foreach (var xwave in xwavegroup.Elements(cWave))
            {
                var wave = LoadWave(xwave);

                if (wave != null)
                {
                    waveGroup.Add(wave);
                }
            }

            return(waveGroup);
        }
Esempio n. 3
0
        WaveBank LoadWaveBank(xElement xwavebank)
        {
            var waveBank = new WaveBank();

            var xname = xwavebank.Attribute("name");

            if (xname == null)
            {
                waveBank.Name = mName;
            }
            else
            {
                waveBank.Name = xname.Value;
            }

            foreach (var xwavegroup in xwavebank.Elements(cWaveGroup))
            {
                var waveGroup = LoadWaveGroup(xwavegroup);

                if (waveGroup != null)
                {
                    waveBank.Add(waveGroup);
                }
            }

            return(waveBank);
        }
Esempio n. 4
0
 static string readStringField(xElement element)
 {
     if (element == null)
     {
         return(null);
     }
     return(element.Value);
 }
Esempio n. 5
0
 public static ushort[] loadTextBuffer(xElement element, bloFont font)
 {
     if (element == null || font == null)
     {
         return(new ushort[0]);
     }
     return(font.encode(element.Value));
 }
Esempio n. 6
0
 static void loadCornerXml(TextureSlot slot, bloResourceFinder finder, xElement element, bloMirror defMirror)
 {
     slot.texture = finder.find <bloTexture>(element.Element("texture"), "timg");
     slot.color   = bloXml.loadColor(element.Element("color"), new bloColor(bloColor.cWhite));
     if (!Enum.TryParse <bloMirror>(element.Element("mirror"), out slot.mirror))
     {
         slot.mirror = 0;
     }
 }
Esempio n. 7
0
 public void load(xElement element)
 {
     if (element == null)
     {
         throw new ArgumentNullException("element");
     }
     loadFields(element.Elements("field"));
     loadEntries(element.Elements("entry"));
 }
Esempio n. 8
0
        static float readFloatField(xElement element)
        {
            if (element == null)
            {
                return(0.0f);
            }
            var match = Regex.Match(element.Value, @"^\s*-?\d+\.\d+\s*$");

            if (!match.Success)
            {
                return(0.0f);
            }
            return(Single.Parse(element.Value));
        }
Esempio n. 9
0
        static int readIntegerField(xElement element)
        {
            if (element == null)
            {
                return(0);
            }
            var match = Regex.Match(element.Value, @"^\s*-?\d+\s*$");

            if (!match.Success)
            {
                return(0);
            }
            return(Int32.Parse(element.Value));
        }
Esempio n. 10
0
 uint loadHash(xElement element)
 {
     if (element != null)
     {
         if (element.Attribute("hash"))
         {
             return(parseU32(element.Attribute("element")));
         }
         else if (element.Attribute("name") != null)
         {
             return(hash.calculate(element.Attribute("name")));
         }
     }
     return(0u);
 }
Esempio n. 11
0
        WaveBank LoadWaveBank(xElement xwavebank)
        {
            var waveBank = new WaveBank();

            foreach (var xwavegroup in xwavebank.Elements(cWaveGroup))
            {
                var waveGroup = LoadWaveGroup(xwavegroup);

                if (waveGroup != null)
                {
                    waveBank.Add(waveGroup);
                }
            }

            return(waveBank);
        }
Esempio n. 12
0
        protected override void loadXml(xElement element)
        {
            base.loadXml(element);

            var finder = bloResourceFinder.getFinder();

            mTextureCount = 1;
            mTextures[0]  = finder.find <bloTexture>(element.Element("texture"), "timg");
            mPalette      = finder.find <bloPalette>(element.Element("palette"), "tlut");

            if (!Enum.TryParse <bloBinding>(element.Element("binding"), true, out mBinding))
            {
                mBinding = (bloBinding.Left | bloBinding.Top | bloBinding.Right | bloBinding.Bottom);
            }

            if (!Enum.TryParse <bloMirror>(element.Element("mirror"), true, out mMirror))
            {
                mMirror = 0;
            }

            mRotate90 = (element.Element("rotate-90") | false);

            if (!Enum.TryParse <bloWrapMode>(element.Element("wrap-s"), true, out mWrapS))
            {
                mWrapS = bloWrapMode.None;
            }

            if (!Enum.TryParse <bloWrapMode>(element.Element("wrap-t"), true, out mWrapT))
            {
                mWrapT = bloWrapMode.None;
            }

            bloXml.loadGradient(element.Element("gradient"), out mFromColor, out mToColor);

            var white  = new bloColor(bloColor.cWhite);
            var colors = element.Element("colors");

            mColors[(int)bloTextureBase.TopLeft]     = bloXml.loadColor(colors.Element("top-left"), white);
            mColors[(int)bloTextureBase.TopRight]    = bloXml.loadColor(colors.Element("top-right"), white);
            mColors[(int)bloTextureBase.BottomLeft]  = bloXml.loadColor(colors.Element("bottom-left"), white);
            mColors[(int)bloTextureBase.BottomRight] = bloXml.loadColor(colors.Element("bottom-right"), white);

            setBlendKonstColor();
            setBlendKonstAlpha();
        }
Esempio n. 13
0
        static void loadXml(bloPane parent, xElement element)
        {
            foreach (var childElement in element)
            {
                bloPane pane;
                switch (childElement.Name.ToLowerInvariant())
                {
                case "pane": pane = new bloPane(); break;

                case "picture": pane = new bloPicture(); break;

                case "window": pane = new bloWindow(); break;

                case "textbox": pane = new bloTextbox(); break;

                default: continue;
                }
                pane.load(parent, childElement, bloFormat.Xml);
                loadXml(pane, childElement);
            }
        }
Esempio n. 14
0
        protected override void loadXml(xElement element)
        {
            base.loadXml(element);

            var finder = bloResourceFinder.getFinder();

            mFont = finder.find <bloResFont>(element.Element("font"), "font");

            mText = bloXml.loadTextBuffer(element.Element("text"), mFont);

            var white  = new bloColor(bloColor.cWhite);
            var colors = element.Element("colors");

            mTopColor    = bloXml.loadColor(colors.Element("top"), white);
            mBottomColor = bloXml.loadColor(colors.Element("bottom"), white);

            var binding = element.Element("binding");

            if (!Enum.TryParse <bloTextboxHBinding>(binding.Element("horizontal"), true, out mHBinding))
            {
                mHBinding = bloTextboxHBinding.Left;
            }

            if (!Enum.TryParse <bloTextboxVBinding>(binding.Element("vertical"), true, out mVBinding))
            {
                mVBinding = bloTextboxVBinding.Top;
            }

            var typesetting = element.Element("typesetting");
            int leading     = (mFont != null ? mFont.getLeading() : 20);
            int width       = (mFont != null ? mFont.getWidth() : 20);
            int height      = (mFont != null ? mFont.getHeight() : 20);

            mFontSpacing = (typesetting.Element("spacing") | 0);
            mFontLeading = (typesetting.Element("leading") | leading);
            mFontWidth   = (typesetting.Element("width") | width);
            mFontHeight  = (typesetting.Element("height") | height);

            bloXml.loadGradient(element.Element("gradient"), out mFromColor, out mToColor);
        }
Esempio n. 15
0
        public T find <T>(xElement element, string directory, out bloResourceType type)
            where T : bloResource, new()
        {
            type = bloResourceType.None;
            if (element == null)
            {
                return(null);
            }
            var attr = element.Attribute("scope");

            if (attr == null || !Enum.TryParse <bloResourceType>(attr, true, out type))
            {
                type = bloResourceType.LocalDirectory;
            }
            string name     = element.Value;
            T      resource = find <T>(type, name, directory);

            if (resource == null && type != bloResourceType.None)
            {
                Console.WriteLine(">>> FAILED: could not find {0} resource '{1}'", type, name);
            }
            return(resource);
        }
Esempio n. 16
0
        protected virtual void loadXml(xElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            mName = convertStringToName(element.Attribute("id") | "");
            setConnectParent(element.Attribute("connect") | false);
            mVisible = (element.Attribute("visible") | true);
            mRect    = bloXml.loadRectangle(element.Element("rectangle"));
            mAngle   = ((element.Element("angle") | 0) % 360);
            if (!Enum.TryParse <bloAnchor>(element.Element("anchor"), true, out mAnchor))
            {
                mAnchor = bloAnchor.TopLeft;
            }
            if (!Enum.TryParse <gxCullMode>(element.Element("cull-mode"), true, out mCullMode))
            {
                mCullMode = gxCullMode.None;
            }
            mAlpha        = (byte)bloMath.clamp((element.Element("alpha") | 255), 0, 255);
            mInheritAlpha = (element.Element("alpha").Attribute("inherit") | true);
        }
Esempio n. 17
0
        public static bloRectangle loadRectangle(xElement element, bloRectangle defRectangle = default(bloRectangle))
        {
            if (element == null)
            {
                return(defRectangle);
            }
            var rectangle = new bloRectangle();

            if (element.Element("x") != null && element.Element("y") != null && element.Element("width") != null && element.Element("height") != null)
            {
                rectangle.move(element.Element("x"), element.Element("y"));
                rectangle.resize(element.Element("width"), element.Element("height"));
            }
            else if (element.Element("left") != null && element.Element("top") != null && element.Element("right") != null && element.Element("bottom") != null)
            {
                rectangle.set(element.Element("left"), element.Element("top"), element.Element("right"), element.Element("bottom"));
            }
            else
            {
                rectangle = defRectangle;
            }
            return(rectangle);
        }
Esempio n. 18
0
        protected override void loadXml(xElement element)
        {
            base.loadXml(element);

            var finder = bloResourceFinder.getFinder();

            var content = element.Element("content");

            mContentRect    = bloXml.loadRectangle(content.Element("rectangle"));
            mContentTexture = finder.find <bloTexture>(content.Element("texture"), "timg");

            mPalette = finder.find <bloPalette>(element.Element("palette"), "tlut");

            var corners = element.Element("corners");

            loadCornerXml(mTextures[cTopLeft], finder, corners.Element("top-left"), 0);
            loadCornerXml(mTextures[cTopRight], finder, corners.Element("top-right"), bloMirror.X);
            loadCornerXml(mTextures[cBottomLeft], finder, corners.Element("bottom-left"), bloMirror.Y);
            loadCornerXml(mTextures[cBottomRight], finder, corners.Element("bottom-right"), (bloMirror.X | bloMirror.Y));

            bloXml.loadGradient(element.Element("gradient"), out mFromColor, out mToColor);

            initializeMinSize();
        }
Esempio n. 19
0
 public XmlWaveBankDeserializer(xElement element)
 {
     mRootElement = element;
 }
Esempio n. 20
0
 public XmlWaveBankDeserializer(xElement element, string name)
 {
     mRootElement = element;
     mName        = name;
 }
Esempio n. 21
0
        public static bloColor loadColor(xElement element, bloColor defColor = default(bloColor))
        {
            if (element == null)
            {
                return(defColor);
            }
            uint rgba;
            var  color = new bloColor();

            if (element.Element("r") != null && element.Element("g") != null && element.Element("b") != null)
            {
                color.r = bloMath.clamp(element.Element("r"), 0, 255);
                color.g = bloMath.clamp(element.Element("g"), 0, 255);
                color.b = bloMath.clamp(element.Element("b"), 0, 255);
                color.a = bloMath.clamp(element.Element("a") | 255, 0, 255);
            }
            else
            {
                var match = Regex.Match(element.Value, @"\s*(?<value>[0-9a-f]{1,8})\s*", (RegexOptions.IgnoreCase | RegexOptions.CultureInvariant));
                if (match.Success)
                {
                    var valueGrp = match.Groups["value"];
                    rgba = UInt32.Parse(valueGrp.Value, NumberStyles.AllowHexSpecifier);
                    switch (valueGrp.Length)
                    {
                    case 1: color = new bloColor(255, 255, 255, (int)(rgba * 17)); break;

                    case 2: color = new bloColor(255, 255, 255, (int)rgba); break;

                    case 3: {
                        color = new bloColor(
                            (int)(((rgba >> 8) & 15) * 17),
                            (int)(((rgba >> 4) & 15) * 17),
                            (int)(((rgba >> 0) & 15) * 17),
                            255
                            );
                        break;
                    }

                    case 4: {
                        color = new bloColor(
                            (int)(((rgba >> 12) & 15) * 17),
                            (int)(((rgba >> 8) & 15) * 17),
                            (int)(((rgba >> 4) & 15) * 17),
                            (int)(((rgba >> 0) & 15) * 17)
                            );
                        break;
                    }

                    case 5: {
                        color = new bloColor(
                            (int)(((rgba >> 16) & 15) * 17),
                            (int)(((rgba >> 12) & 15) * 17),
                            (int)(((rgba >> 7) & 15) * 17),
                            (int)((rgba >> 0) & 255)
                            );
                        break;
                    }

                    case 6: {
                        color = new bloColor(
                            (int)((rgba >> 16) & 255),
                            (int)((rgba >> 8) & 255),
                            (int)((rgba >> 0) & 255),
                            255
                            );
                        break;
                    }

                    case 7: {
                        color = new bloColor(
                            (int)((rgba >> 20) & 255),
                            (int)((rgba >> 12) & 255),
                            (int)((rgba >> 4) & 255),
                            (int)(((rgba >> 0) & 15) * 17)
                            );
                        break;
                    }

                    case 8: color = new bloColor(rgba); break;
                    }
                }
            }
            return(color);
        }
Esempio n. 22
0
 internal xObject(xDocument document, xElement parent)
 {
     mDocument = document;
     mParent = parent;
 }
Esempio n. 23
0
        Wave LoadWave(xElement xwave)
        {
            xAttribute attribute;

            var wave = new Wave();

            attribute = xwave.Attribute(cWaveId);

            if (attribute == null)
            {
                mareep.WriteWarning("XML: line #{0}: missing wave id\n", xwave.LineNumber);
                return(null);
            }

            var waveid = (attribute | -1);

            if (waveid < 0)
            {
                mareep.WriteWarning("XML: line #{0}: bad wave id '{1}'\n", attribute.LineNumber, attribute.Value);
                return(null);
            }

            wave.WaveId = waveid;

            attribute = xwave.Attribute(cWaveFile);

            if (attribute == null)
            {
                mareep.WriteWarning("XML: line #{0}: missing file\n", xwave.LineNumber);
                return(null);
            }

            wave.FileName = attribute.Value;

            attribute = xwave.Attribute(cWaveFormat);

            if (attribute == null)
            {
                mareep.WriteWarning("XML: line #{0}: missing format\n", xwave.LineNumber);
                return(null);
            }

            var format = attribute.AsEnum((WaveFormat)(-1));

            if (!format.IsDefined())
            {
                mareep.WriteWarning("XML: line #{0}: bad wave format '{1}'\n", attribute.LineNumber, attribute.Value);
                return(null);
            }

            wave.Format = format;

            attribute = xwave.Attribute(cWaveRate);

            if (attribute != null)
            {
                var samplerate = (attribute | -1.0f);

                if (samplerate < 0.0f)
                {
                    mareep.WriteWarning("XML: line #{0}: bad sample rate '{1:F1}'.\n", attribute.LineNumber, attribute.Value);
                    return(null);
                }

                wave.SampleRate = samplerate;
            }

            attribute = xwave.Attribute(cWaveKey);

            var keynumber = 60;

            if (attribute != null)
            {
                keynumber = attribute.AsKeyNumber();

                if (keynumber < 0 || keynumber > 127)
                {
                    mareep.WriteWarning("XML: line #{0}: bad root key '{1}'\n", attribute.LineNumber, attribute.Value);
                    return(null);
                }
            }

            wave.RootKey = keynumber;

            var xloopstart = xwave.Attribute(cWaveLoopStart);
            var xloopend   = xwave.Attribute(cWaveLoopEnd);

            if (xloopstart != null && xloopend != null)
            {
                var loopstart = (xloopstart | -1);
                var loopend   = (xloopend | -1);

                if (loopstart < 0)
                {
                    mareep.WriteWarning("XML: line #{0}: bad loop start '{0}'\n", xloopstart.LineNumber, xloopstart.Value);
                    return(null);
                }
                else if (loopend < 0)
                {
                    mareep.WriteWarning("XML: line #{0}: bad loop end '{0}'\n", xloopend.LineNumber, xloopend.Value);
                    return(null);
                }

                wave.Loop      = true;
                wave.LoopStart = loopstart;
                wave.LoopEnd   = loopend;
            }
            else if ((xloopstart == null) != (xloopend == null))
            {
                mareep.WriteWarning("XML: line #{0}: only one loop specified.\n", (xloopstart ?? xloopend).LineNumber);
                return(null);
            }

            return(wave);
        }
Esempio n. 24
0
 public static void loadGradient(xElement element, out bloColor fromColor, out bloColor toColor)
 {
     fromColor = loadColor(element.Element("from"), new bloColor(bloColor.cZero));
     toColor   = loadColor(element.Element("to"), new bloColor(bloColor.cOne));
 }