Пример #1
0
        /* The layer recognizes some special properties, like cc_vertez */

        private void ParseInternalProperties()
        {
            // if cc_vertex=automatic, then tiles will be rendered using vertexz

            m_fAlphaFuncValue = 0;

            string vertexz = PropertyNamed("cc_vertexz");

            if (!String.IsNullOrEmpty(vertexz))
            {
                // If "automatic" is on, then parse the "cc_alpha_func" too
                if (vertexz == "automatic")
                {
                    m_bUseAutomaticVertexZ = true;
                    string alphaFuncVal = PropertyNamed("cc_alpha_func");
                    //float alphaFuncValue = 0.0f;
                    if (!String.IsNullOrEmpty(alphaFuncVal))
                    {
                        m_fAlphaFuncValue = CCUtils.CCParseFloat(alphaFuncVal);
                    }
                    //setShaderProgram(CCShaderCache::sharedShaderCache().programForKey(kCCShader_PositionTextureColorAlphaTest));

                    //GLint alphaValueLocation = glGetUniformLocation(getShaderProgram().getProgram(), kCCUniformAlphaTestValue);

                    // NOTE: alpha test shader is hard-coded to use the equivalent of a glAlphaFunc(GL_GREATER) comparison
                    //getShaderProgram().setUniformLocationWith1f(alphaValueLocation, alphaFuncValue);
                }
                else
                {
                    m_nVertexZvalue = CCUtils.CCParseInt(vertexz);
                }
            }
        }
Пример #2
0
        // common
        private void parseCommonArguments(string line)
        {
            //////////////////////////////////////////////////////////////////////////
            // line to parse:
            // common lineHeight=104 base=26 scaleW=1024 scaleH=512 pages=1 packed=0
            //////////////////////////////////////////////////////////////////////////

            // Height
            int    index  = line.IndexOf("lineHeight=");
            int    index2 = line.IndexOf(' ', index);
            string value  = line.Substring(index, index2 - index);

            m_nCommonHeight = CCUtils.CCParseInt(value.Replace("lineHeight=", ""));

            // scaleW. sanity check
            index  = line.IndexOf("scaleW=") + "scaleW=".Length;
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            //CCAssert(atoi(value.c_str()) <= CCConfiguration::sharedConfiguration()->getMaxTextureSize(), "CCLabelBMFont: page can't be larger than supported");
            // scaleH. sanity check
            index  = line.IndexOf("scaleH=") + "scaleH=".Length;
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            //CCAssert(atoi(value.c_str()) <= CCConfiguration::sharedConfiguration()->getMaxTextureSize(), "CCLabelBMFont: page can't be larger than supported");
            // pages. sanity check
            index  = line.IndexOf("pages=") + "pages=".Length;
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            //CCAssert(atoi(value.c_str()) == 1, "CCBitfontAtlas: only supports 1 page");

            // packed (ignore) What does this mean ??
        }
Пример #3
0
        private void parseCharacterDefinition(string line, ccBMFontDef characterDefinition)
        {
            //////////////////////////////////////////////////////////////////////////
            // line to parse:
            // char id=32   x=0     y=0     width=0     height=0     xoffset=0     yoffset=44    xadvance=14     page=0  chnl=0
            //////////////////////////////////////////////////////////////////////////

            // Character ID
            int    index  = line.IndexOf("id=");
            int    index2 = line.IndexOf(' ', index);
            string value  = line.Substring(index, index2 - index);

            characterDefinition.charID = CCUtils.CCParseInt(value.Replace("id=", ""));
            //CCAssert(characterDefinition->charID < kCCBMFontMaxChars, "BitmpaFontAtlas: CharID bigger than supported");

            // Character x
            index  = line.IndexOf("x=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            characterDefinition.rect.Origin.X = CCUtils.CCParseFloat(value.Replace("x=", ""));

            // Character y
            index  = line.IndexOf("y=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            characterDefinition.rect.Origin.Y = CCUtils.CCParseFloat(value.Replace("y=", ""));

            // Character width
            index  = line.IndexOf("width=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            characterDefinition.rect.Size.Width = CCUtils.CCParseFloat(value.Replace("width=", ""));

            // Character height
            index  = line.IndexOf("height=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            characterDefinition.rect.Size.Height = CCUtils.CCParseFloat(value.Replace("height=", ""));

            // Character xoffset
            index  = line.IndexOf("xoffset=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            characterDefinition.xOffset = CCUtils.CCParseInt(value.Replace("xoffset=", ""));

            // Character yoffset
            index  = line.IndexOf("yoffset=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            characterDefinition.yOffset = CCUtils.CCParseInt(value.Replace("yoffset=", ""));

            // Character xadvance
            index  = line.IndexOf("xadvance=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            characterDefinition.xAdvance = CCUtils.CCParseInt(value.Replace("xadvance=", ""));
        }
Пример #4
0
        internal static int DeSerializeInt(StreamReader sr)
        {
            string s = sr.ReadLine();

            if (s == null)
            {
                CCLog.Log("DeSerializeInt: null");
                return(0);
            }
            return(CCUtils.CCParseInt(s));
        }
Пример #5
0
        public int GetIntegerForKey(string pKey, int defaultValue)
        {
            string value = getValueForKey(pKey);
            int    ret   = defaultValue;

            if (value != null)
            {
                ret = CCUtils.CCParseInt(value);
            }

            return(ret);
        }
Пример #6
0
        private void parseKerningEntry(string line)
        {
            //////////////////////////////////////////////////////////////////////////
            // line to parse:
            // kerning first=121  second=44  amount=-7
            //////////////////////////////////////////////////////////////////////////

            // first
            int    first;
            int    index  = line.IndexOf("first=");
            int    index2 = line.IndexOf(' ', index);
            string value  = line.Substring(index, index2 - index);

            first = CCUtils.CCParseInt(value.Replace("first=", ""));

            // second
            int second;

            index  = line.IndexOf("second=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index, index2 - index);
            second = CCUtils.CCParseInt(value.Replace("second=", ""));

            // amount
            int amount;

            index  = line.IndexOf("amount=");
            index2 = line.IndexOf(' ', index);
            value  = line.Substring(index);
            amount = CCUtils.CCParseInt(value.Replace("amount=", ""));

            try
            {
                var element = new tKerningHashElement();
                element.amount = amount;
                element.key    = (first << 16) | (second & 0xffff);
                m_pKerningDictionary.Add(element.key, element);
            }
            catch (Exception ex)
            {
                CCLog.Log("Failed to parse font line: {0}", line);
            }
        }
Пример #7
0
        // info face
        private void parseInfoArguments(string line)
        {
            //////////////////////////////////////////////////////////////////////////
            // possible lines to parse:
            // info face="Script" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,4,3,2 spacing=0,0 outline=0
            // info face="Cracked" size=36 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1
            //////////////////////////////////////////////////////////////////////////

            // padding
            int    index  = line.IndexOf("padding=");
            int    index2 = line.IndexOf(' ', index);
            string value  = line.Substring(index, index2 - index);

            value = value.Replace("padding=", "");
            string[] temp = value.Split(',');
            m_tPadding.top    = CCUtils.CCParseInt(temp[0]);
            m_tPadding.right  = CCUtils.CCParseInt(temp[1]);
            m_tPadding.bottom = CCUtils.CCParseInt(temp[2]);
            m_tPadding.left   = CCUtils.CCParseInt(temp[3]);

            //CCLOG("cocos2d: padding: %d,%d,%d,%d", m_tPadding.left, m_tPadding.top, m_tPadding.right, m_tPadding.bottom);
        }
Пример #8
0
        public bool Parse(string str, int length)
        {
            TextReader textReader = new StringReader(str);
            var        setting    = new XmlReaderSettings();

#if !PSM
            setting.DtdProcessing = DtdProcessing.Ignore;
#endif
            XmlReader xmlReader = XmlReader.Create(textReader, setting);
            int       dataindex = 0;

            int Width  = 0;
            int Height = 0;
            ;

            while (xmlReader.Read())
            {
                string name = xmlReader.Name;

                switch (xmlReader.NodeType)
                {
                case XmlNodeType.Element:

                    string[] attrs = null;

                    if (name == "map")
                    {
                        Width  = CCUtils.CCParseInt(xmlReader.GetAttribute("width"));
                        Height = CCUtils.CCParseInt(xmlReader.GetAttribute("height"));
                    }

                    if (xmlReader.HasAttributes)
                    {
                        attrs = new string[xmlReader.AttributeCount * 2];
                        xmlReader.MoveToFirstAttribute();
                        int i = 0;
                        attrs[0] = xmlReader.Name;
                        attrs[1] = xmlReader.Value;
                        i       += 2;

                        while (xmlReader.MoveToNextAttribute())
                        {
                            attrs[i]     = xmlReader.Name;
                            attrs[i + 1] = xmlReader.Value;
                            i           += 2;
                        }

                        // Move the reader back to the element node.
                        xmlReader.MoveToElement();
                    }
                    StartElement(this, name, attrs);

                    byte[] buffer = null;

                    //read data content of tmx file
                    if (name == "data")
                    {
                        if (attrs != null)
                        {
                            string encoding = "";
                            for (int i = 0; i < attrs.Length; i++)
                            {
                                if (attrs[i] == "encoding")
                                {
                                    encoding = attrs[i + 1];
                                }
                            }

                            if (encoding == "base64")
                            {
                                int dataSize = (Width * Height * 4) + 1024;
                                buffer = new byte[dataSize];
                                xmlReader.ReadElementContentAsBase64(buffer, 0, dataSize);
                            }
                            else
                            {
                                string value = xmlReader.ReadElementContentAsString();
                                buffer = Encoding.UTF8.GetBytes(value);
                            }
                        }

                        TextHandler(this, buffer, buffer.Length);
                        EndElement(this, name);
                    }
                    else if (name == "key" || name == "integer" || name == "real" || name == "string")
                    {
                        string value = xmlReader.ReadElementContentAsString();
                        buffer = Encoding.UTF8.GetBytes(value);
                        TextHandler(this, buffer, buffer.Length);
                        EndElement(this, name);
                    }
                    else if (xmlReader.IsEmptyElement)
                    {
                        EndElement(this, name);
                    }
                    break;

                case XmlNodeType.EndElement:
                    EndElement(this, xmlReader.Name);
                    dataindex++;
                    break;

                default:
                    break;
                }
            }

            return(true);
        }