static void Example1() { const string fileName = "EGTUYgwUC9rpHmm4kJwZQXq4"; var converters = Resources.GetConverters() .Union(FigmaSharp.AppContext.Current.GetFigmaConverters()) .ToArray(); fileProvider = new FigmaRemoteFileProvider(); fileProvider.Load(fileName); var rendererService = new FigmaViewRendererService(fileProvider, converters); var rendererOptions = new FigmaViewRendererServiceOptions() { ScanChildrenFromFigmaInstances = false }; rendererService.RenderInWindow(mainWindow, rendererOptions, "1.0. Bundle Figma Document"); mainWindow.Resizable = false; mainWindow.Center(); var urlTextField = rendererService.FindViewByName <TextBox>("FigmaUrlTextField"); var bundleButton = rendererService.FindViewByName <Button>("BundleButton"); var cancelButton = rendererService.FindViewByName <Button>("CancelButton"); if (cancelButton != null) { cancelButton.Clicked += (s, e) => { if (urlTextField != null) { urlTextField.Text = "You pressed cancel"; } }; } if (bundleButton != null) { bundleButton.Clicked += (s, e) => { if (urlTextField != null) { urlTextField.Text = "You pressed bundle"; } }; } //We want know the background color of the figma camvas and apply to our scrollview var canvas = fileProvider.Nodes.OfType <FigmaCanvas>().FirstOrDefault(); if (canvas != null) { mainWindow.BackgroundColor = canvas.backgroundColor; } }
static async void LoadLoadingDialog(FigmaViewRendererService rendererService, FigmaViewRendererServiceOptions options) { mainWindow.Size = new Size(720, 467); var loadingSpinnerConverter = new LoadingSpinnerConverter(); rendererService.CustomConverters.Add(loadingSpinnerConverter); var loadingDialogFigmaNode = rendererService.FindNodeByName(LoadingDialog); var loadingDialog = rendererService.RenderByName <IView>(LoadingDialog, options); loadingDialog.BackgroundColor = new Color(0.27f, 0.15f, 0.41f); loadingDialog.CornerRadius = 5; SetContentDialog(loadingDialog); rendererService.CustomConverters.Remove(loadingSpinnerConverter); //finds view and process animation var spinnerView = rendererService.FindViewByName <ISpinner>(LoadingSpinnerConverter.LoadingSpinnerName); spinnerView.Start(); //we wait for 5 seconds and we show next screen await Task.Run(() => { if (loadingDialogFigmaNode is FigmaFrameEntity figmaFrameEntity) { Thread.Sleep((int)figmaFrameEntity.transitionDuration); FigmaSharp.AppContext.Current.BeginInvoke(() => ProcessTransitionNodeID(figmaFrameEntity.transitionNodeID, rendererService, options)); } }); }
static void LoadLoginDialog(FigmaViewRendererService rendererService, FigmaViewRendererServiceOptions options) { mainWindow.Size = new Size(720, 467); var customConverters = new FigmaViewConverter[] { new DoThisLaterButtonConverter(), new SignInMicrosoftButtonConverter(), //new CreateAccountLinkConverter (), //new WhySignInLinkConverter (), }; rendererService.CustomConverters.AddRange(customConverters); var signInDialog = rendererService.RenderByName <IView>(LoginDialog, options); signInDialog.CornerRadius = 5; signInDialog.BackgroundColor = new Color(0.27f, 0.15f, 0.41f); SetContentDialog(signInDialog); foreach (var viewConverter in customConverters) { rendererService.CustomConverters.Remove(viewConverter); } //logic var signInButton = rendererService.FindViewByName <IButton>(SignInMicrosoftButtonConverter.SignInMicrosoftButtonName); signInButton.Focus(); signInButton.Clicked += (s, e) => { if (signInButton is IViewTransitable figmaTransition) { ProcessTransitionNodeID(figmaTransition.TransitionNodeID, rendererService, options); } }; var doThisLaterButton = rendererService.FindViewByName <IButton>(DoThisLaterButtonConverter.DoThisLaterButtonName); doThisLaterButton.Clicked += (s, e) => { if (doThisLaterButton is IViewTransitable figmaTransition) { ProcessTransitionNodeID(figmaTransition.TransitionNodeID, rendererService, options); } }; }
public GameWindow(Rectangle rect) : base(rect) { Resizable = false; //we get the default basic view converters from the current loaded toolkit var converters = FigmaSharp.AppContext.Current.GetFigmaConverters(); //in this case we want use a remote file provider (figma url from our document) var fileProvider = new FigmaRemoteFileProvider(); fileProvider.Load("Jv8kwhoRsrmtJDsSHcTgWGYu"); //we initialize our renderer service, this uses all the converters passed //and generate a collection of NodesProcessed which is basically contains <FigmaModel, IView, FigmaParentModel> var rendererService = new FigmaViewRendererService(fileProvider, converters); //play background music backgroundMusic = new MusicPlayer("Background", "mp3"); backgroundMusic.Play(-1); coinSound = new MusicPlayer("Coin", "mp3"); gameOverSound = new MusicPlayer("GameOver", "mp3"); //we want load the entire level 1 IView view = rendererService.RenderByName <IView>("Level1"); Content = view; playerTile = rendererService.FindViewStartsWith <IImageView>("Player"); startingPoint = playerTile.Allocation.Origin; pointsLabel = rendererService.FindViewByName <ILabel>("Points"); gemsTiles = rendererService.FindViewsStartsWith <IImageView>("Gem") .ToList(); wallTiles = rendererService.FindViewsStartsWith <IImageView>("Tile") .ToArray(); spikesTiles = rendererService.FindViewsStartsWith <IImageView>("Spikes") .ToArray(); heartTiles = rendererService.FindViewsStartsWith <IImageView>("Heart") .OrderBy(s => s.Allocation.X) .ToList(); WorldUpdate(); }