Skip to content

benpollarduk/NetAF.Blazor

Repository files navigation

NetAF.Blazor

A library of Blazor components for NetAF.

icon

main-ci GitHub release NuGet NuGet Downloads Quality Gate Status Maintainability Rating Security Rating Vulnerabilities Bugs License

Try Now

Getting Started

Running the Example

Getting started running NetAF in Blazor is easy!

image

How it Works

Simply add the GameComponent to your page and then set up and start a game.

@page "/"
@using NetAF.Assets
@using NetAF.Blazor.Components
@using NetAF.Rendering.FrameBuilders
@using NetAF.Targets.Html
@using NetAF.Targets.Html.Rendering
@using NetAF.Targets.Html.Rendering.FrameBuilders

<PageTitle>NetAF</PageTitle>

<GameComponent @ref="gameComponent" />

@code {
    private GameComponent? gameComponent;

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (!firstRender)
            return;

        if (GameExecutor.IsExecuting)
            GameExecutor.CancelExecution();

        HtmlAdapter htmlAdapter = new(gameComponent);
        gameComponent?.SetAdapter(htmlAdapter);

        var htmlBuilder = new HtmlBuilder();

        FrameBuilderCollection frameBuilderCollection = new(
            new HtmlTitleFrameBuilder(htmlBuilder),
            new HtmlSceneFrameBuilder(htmlBuilder, new HtmlRoomMapBuilder(htmlBuilder) { MaxSize = new(50, 7) }),
            new HtmlRegionMapFrameBuilder(htmlBuilder, new HtmlRegionMapBuilder(htmlBuilder) { MaxSize = new(50, 30) }),
            new HtmlCommandListFrameBuilder(htmlBuilder),
            new HtmlHelpFrameBuilder(htmlBuilder),
            new HtmlCompletionFrameBuilder(htmlBuilder),
            new HtmlGameOverFrameBuilder(htmlBuilder),
            new HtmlAboutFrameBuilder(htmlBuilder),
            new HtmlReactionFrameBuilder(htmlBuilder),
            new HtmlConversationFrameBuilder(htmlBuilder));

        GameConfiguration configuration = new(htmlAdapter, frameBuilderCollection, new(50, 30));
        GameExecutor.Execute(ExampleGame.Create(configuration));

        await InvokeAsync(StateHasChanged);
    }
}

Example Game

The ExampleGame is included in the repo.

Documentation

Please visit https://benpollarduk.github.io/NetAF-docs/ to view the NetAF documentation.

For Open Questions

Visit https://github.com/benpollarduk/NetAF.Blazor/issues