public ProbeDataRenderer(GMFile.InfoBoxAttributes infoAttrs, GMFile.QueryAttributes queryAttrs, Font font) { bool bigText = (infoAttrs & GMFile.InfoBoxAttributes.UseBigFont) != 0; BoxContentsRenderer.AlignToRect bottomAligner = bigText ? new BoxContentsRenderer.AlignToRect(BoxContentsRenderer.AlignYBottomBig) : new BoxContentsRenderer.AlignToRect(BoxContentsRenderer.AlignYBottom); #if DEBUG hasDisposed = false; #endif childRenderers = new List <IBoxContentRenderer>(); if ((infoAttrs & GMFile.InfoBoxAttributes.RaceMode) != 0) { int attr; NullRenderer nullRender = new NullRenderer(); if ((attr = (int)(queryAttrs & GMFile.QueryAttributes.PowerRestriction)) != 0) { string text = BoxContentsRenderer.textsToRender[BoxContentsRenderer.ATTRIBUTE_TEXT_OFFSET + attr]; // bottom left BoxContentsRenderer.AlignToRect left = new BoxContentsRenderer.AlignToRect(BoxContentsRenderer.AlignXLeft); childRenderers.Add(new AlignedTextRenderer(text, nullRender, left, bottomAligner, font)); } if ((attr = (int)(queryAttrs & GMFile.QueryAttributes.PrizeMoney)) != 0) { // bottom right BoxContentsRenderer.AlignToRect right = new BoxContentsRenderer.AlignToRect(BoxContentsRenderer.AlignXRight); string text = BoxContentsRenderer.textsToRender[BoxContentsRenderer.ATTRIBUTE_TEXT_OFFSET + attr]; childRenderers.Add(new AlignedTextRenderer(text, nullRender, right, bottomAligner, font)); } if ((attr = (int)(queryAttrs & GMFile.QueryAttributes.RaceResult)) != 0) { // bottom right BoxContentsRenderer.AlignToRect right = new BoxContentsRenderer.AlignToRect(BoxContentsRenderer.AlignXRight); string text = BoxContentsRenderer.textsToRender[BoxContentsRenderer.ATTRIBUTE_TEXT_OFFSET + attr]; childRenderers.Add(new AlignedTextRenderer(text, nullRender, right, bottomAligner, font)); } } }
public static IBoxContentRenderer Create( GMFile.BoxItem item, GMFile.InfoBoxAttributes infoAttrs, GMFile.QueryAttributes queryAttrs, Color drawColour ) { InitTexts(); IBoxContentRenderer renderer = null; string renderText; if (!textsToRender.TryGetValue((int)item, out renderText)) { renderText = "TextMissing"; } string itemName = Enum.GetName(typeof(GMFile.BoxItem), item); bool bigText = (infoAttrs & GMFile.InfoBoxAttributes.UseBigFont) != 0; Font usedFont = bigText ? Hardcoded.BigFont : Hardcoded.StandardFont; ProbeDataRenderer probeRenderer = new ProbeDataRenderer(infoAttrs, queryAttrs, usedFont); switch (item) { case GMFile.BoxItem.DealershipNewCarBox: { if ((infoAttrs & GMFile.InfoBoxAttributes.DontRenderDealerPrice) != 0) { renderer = new BlankRenderer("Blank - " + itemName, probeRenderer, drawColour); } else { renderer = new DealershipCarPriceRenderer(renderText, probeRenderer, usedFont, bigText); } } break; case GMFile.BoxItem.CarColourName: case GMFile.BoxItem.CreditsBalance: case GMFile.BoxItem.Price: case GMFile.BoxItem.DayCount: case GMFile.BoxItem.ChampionshipBonusPrize: case GMFile.BoxItem.CarSaleValue: { AlignToRect bottom = bigText ? new AlignToRect(AlignYBottomBig) : new AlignToRect(AlignYBottom); AlignToRect right = new AlignToRect(AlignXRight); renderer = new AlignedTextRenderer(renderText, probeRenderer, right, bottom, usedFont); } break; case GMFile.BoxItem.CurrentCarHP: case GMFile.BoxItem.UpgradeCarHP: { AlignToRect bottom = bigText ? new AlignToRect(AlignYBottomBig) : new AlignToRect(AlignYBottom); AlignToRect right = new AlignToRect(AlignXRight); renderer = new AlignedTextRenderer(renderText, probeRenderer, right, bottom, usedFont, Hardcoded.UpgradeHPTextColour); } break; case GMFile.BoxItem.CurrentCarShortName: case GMFile.BoxItem.CarHP: case GMFile.BoxItem.CarWeight: case GMFile.BoxItem.CarYear: { AlignToRect bottom = bigText ? new AlignToRect(AlignYBottomBig) : new AlignToRect(AlignYBottom); AlignToRect left = new AlignToRect(AlignXLeft); renderer = new AlignedTextRenderer(renderText, probeRenderer, left, bottom, usedFont); } break; case GMFile.BoxItem.UpgradeName: { AlignToRect bottom = bigText ? new AlignToRect(AlignYBottomBig) : new AlignToRect(AlignYBottom); AlignToRect centre = new AlignToRect(AlignXCentre); renderer = new AlignedTextRenderer(renderText, probeRenderer, centre, bottom, Hardcoded.PartFont, Hardcoded.PartFontColour); } break; case GMFile.BoxItem.CarColourSwatches: { renderer = new SwatchRenderer(probeRenderer); } break; case GMFile.BoxItem.UsedCarList: case GMFile.BoxItem.GarageCarList: { renderer = new CarListRenderer(item, probeRenderer); } break; case GMFile.BoxItem.CarDisplay: { renderer = new CarDisplayRenderer(probeRenderer); } break; case GMFile.BoxItem.CarLogo: case GMFile.BoxItem.CarDrivetrainGraphic: { renderer = new CentralImageRenderer( probeRenderer, (item == GMFile.BoxItem.CarLogo) ? Hardcoded.CarLogo : Hardcoded.DrivetrainGraphic ); } break; case GMFile.BoxItem.StatusHighestGainedLicense: { renderer = new CentralImageRenderer( probeRenderer, Hardcoded.LargeLicenseGraphic ); } break; case GMFile.BoxItem.CarEquippedPartsList: { renderer = new EquippedCarPartsRenderer(probeRenderer); } break; default: if ((item >= GMFile.BoxItem.InfoScreenCarLength) && (item <= GMFile.BoxItem.InfoScreenCarMaxTorque)) { AlignToRect bottom = bigText ? new AlignToRect(AlignYBottomBig) : new AlignToRect(AlignYBottom); AlignToRect left = new AlignToRect(AlignXLeft); renderer = new AlignedTextRenderer(renderText, probeRenderer, left, bottom, usedFont); } else if ((item >= GMFile.BoxItem.StatusPercentageCompletion) && (item <= GMFile.BoxItem.StatusNumberOfLicenseKidsTrophies)) { AlignToRect bottom = bigText ? new AlignToRect(AlignYBottomBig) : new AlignToRect(AlignYBottom); AlignToRect right = new AlignToRect(AlignXRight); renderer = new AlignedTextRenderer(renderText, probeRenderer, right, bottom, usedFont); } else if ((item >= GMFile.BoxItem.IC1LicenseResult) && (item <= GMFile.BoxItem.S10LicenseResult)) { renderer = new CentralImageRenderer(probeRenderer, Hardcoded.LicenseTrophyGraphic); } else { renderer = new BlankRenderer("Blank - " + itemName, probeRenderer, drawColour); } break; } return(renderer); }