Example #1
0
        public bool MakeSourceInfoAbsolute(SourceInfo sourceInfo, string from)
        {
            if (sourceInfo == null)
            {
                return(true);
            }
            bool ok = true;

            sourceInfo.Assets?.ForEach(a =>
            {
                if (a.RelativeName == null)
                {
                    if (a.Name != null)
                    {
                        ok = false;
                    }

                    return;
                }

                a.Name = ToAbsoluteName(a.RelativeName, from, ref ok);
            });
            sourceInfo.Sprites?.ForEach(s =>
            {
                if (s.RelativeName == null)
                {
                    if (s.Name != null)
                    {
                        ok = false;
                    }

                    return;
                }

                s.Name = ToAbsoluteName(s.RelativeName, from, ref ok);
            });
            return(ok);
        }
Example #2
0
        public void ApplySourceInfo(ISourceReplacer sourceReplacer, SourceInfo sourceInfo, BuildResult buildResult)
        {
            if (sourceInfo == null)
            {
                return;
            }

            if (sourceInfo.Assets != null)
            {
                foreach (var a in sourceInfo.Assets)
                {
                    if (a.Name == null)
                    {
                        continue;
                    }
                    var assetName = a.Name;
                    if (assetName.StartsWith("resource:"))
                    {
                        assetName = assetName.Substring(9);
                    }
                    sourceReplacer.Replace(a.StartLine, a.StartCol, a.EndLine, a.EndCol, "\"" + buildResult.ToOutputUrl(assetName) + "\"");
                }
            }

            if (sourceInfo.Sprites != null)
            {
                if (SpriteGeneration)
                {
                    var spriteHolder  = SpriteGenerator;
                    var outputSprites = spriteHolder.Retrieve(sourceInfo.Sprites);
                    foreach (var os in outputSprites)
                    {
                        var s = os.Me;
                        if (s.Name == null)
                        {
                            continue;
                        }
                        if (s.HasColor == true && s.Color == null)
                        {
                            // Modify method name to b.spritebc and remove first parameter with sprite name
                            sourceReplacer.Replace(s.StartLine, s.StartCol, s.ColorStartLine, s.ColorStartCol, sourceInfo.BobrilImport + ".spritebc(");
                            // Replace parameters after color with sprite size and position
                            sourceReplacer.Replace(s.ColorEndLine, s.ColorEndCol, s.EndLine, s.EndCol, "," + os.owidth + "," + os.oheight + "," + os.ox + "," + os.oy + ")");
                        }
                        else
                        {
                            // Modify method name to b.spriteb and replace parameters with sprite size and position
                            sourceReplacer.Replace(s.StartLine, s.StartCol, s.EndLine, s.EndCol, sourceInfo.BobrilImport + ".spriteb(" + os.owidth + "," + os.oheight + "," + os.ox + "," + os.oy + ")");
                        }
                    }
                }
                else
                {
                    foreach (var s in sourceInfo.Sprites)
                    {
                        if (s.Name == null)
                        {
                            continue;
                        }
                        sourceReplacer.Replace(s.NameStartLine, s.NameStartCol, s.NameEndLine, s.NameEndCol, "\"" + buildResult.ToOutputUrl(s.Name) + "\"");
                    }
                }
            }

            var trdb = TranslationDb;

            if (trdb != null && sourceInfo.Translations != null)
            {
                foreach (var t in sourceInfo.Translations)
                {
                    if (t.Message == null)
                    {
                        continue;
                    }
                    if (t.JustFormat)
                    {
                        continue;
                    }
                    var id      = trdb.AddToDB(t.Message, t.Hint, t.WithParams);
                    var finalId = trdb.MapId(id);
                    sourceReplacer.Replace(t.StartLine, t.StartCol, t.EndLine, t.EndCol, "" + finalId);
                    sourceReplacer.Replace(t.StartHintLine, t.StartHintCol, t.EndHintLine, t.EndHintCol, null);
                }
            }

            var styleDefs = sourceInfo.StyleDefs;

            if (styleDefs != null)
            {
                var styleDefNaming = StyleDefNaming;
                var styleDefPrefix = PrefixStyleNames;
                foreach (var s in styleDefs)
                {
                    var skipEx = s.IsEx ? 1 : 0;
                    if (s.UserNamed)
                    {
                        if (styleDefNaming == StyleDefNamingStyle.AddNames ||
                            styleDefNaming == StyleDefNamingStyle.PreserveNames)
                        {
                            if (styleDefPrefix.Length > 0)
                            {
                                if (s.Name != null)
                                {
                                    sourceReplacer.Replace(s.StartLine, s.StartCol, s.EndLine, s.EndCol, "\"" + styleDefPrefix + s.Name + "\"");
                                }
                                else
                                {
                                    sourceReplacer.Replace(s.StartLine, s.StartCol, s.StartLine, s.StartCol, "\"" + styleDefPrefix + "\"+(");
                                    sourceReplacer.Replace(s.EndLine, s.EndCol, s.EndLine, s.EndCol, ")");
                                }
                            }
                        }
                        else
                        {
                            sourceReplacer.Replace(s.BeforeNameLine, s.BeforeNameCol, s.EndLine, s.EndCol, "");
                        }
                    }
                    else
                    {
                        if (styleDefNaming == StyleDefNamingStyle.AddNames && s.Name != null)
                        {
                            var padArgs = (s.ArgCount == 1 + (s.IsEx ? 1 : 0)) ? ",undefined" : "";
                            sourceReplacer.Replace(s.BeforeNameLine, s.BeforeNameCol, s.BeforeNameLine, s.BeforeNameCol, padArgs + ",\"" + styleDefPrefix + s.Name + "\"");
                        }
                    }
                }
            }
        }