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); }
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 + "\""); } } } } }