Exemplo n.º 1
0
        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));
                }
            }
        }
Exemplo n.º 2
0
        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);
        }