-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathHome.razor
More file actions
76 lines (59 loc) · 2.27 KB
/
Home.razor
File metadata and controls
76 lines (59 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
@page "/"
@using NetAF.Assets
@using NetAF.Blazor.Components
@using NetAF.Logic.Modes
@using NetAF.Rendering.FrameBuilders
@using System.Reflection
<PageTitle>NetAF Example</PageTitle>
<div style="@(modeSelected ? "display: none;" : "")">
<h1>NetAF Example</h1>
<div style="font-size: 8px; color: #FFFFFF60">
<p>Version: @version</p>
</div>
<div>
<p>HTML runs using frames created for displaying in HTML. Run this mode for a mode modern, browser based experience. Suits mobile devices better.</p>
<button class="btn btn-primary" @onclick="RunHtml">Run HTML</button>
</div>
<br />
<div>
<p>Console emulation runs using frames created for display in the console. Run in this mode for a retro look and feel. Works well on a desktop but may not scale well on a mobile device.</p>
<button class="btn btn-primary" @onclick="RunConsoleEmu">Run console emulation</button>
</div>
<br />
</div>
<div style="@(!modeSelected ? "display: none;" : "")">
<GameComponent @ref="gameComponent" />
</div>
@code {
private bool modeSelected = false;
private string version = string.Empty;
private GameComponent? gameComponent;
protected override void OnInitialized()
{
var v = Assembly.GetExecutingAssembly()?.GetName()?.Version;
version = v != null ? $"{v.Major}.{v.Minor}.{v.Build}" : "unknown";
}
private void RunConsoleEmu()
{
BeginGame(NetAF.Rendering.FrameBuilders.FrameBuilderCollections.Console, new(80, 48));
}
private void RunHtml()
{
FrameProperties.CommandListType = CommandListType.None;
BeginGame(NetAF.Rendering.FrameBuilders.FrameBuilderCollections.Html, new(45, 35));
}
private void SetupComponents(HtmlAdapter htmlAdapter)
{
gameComponent?.SetAdapter(htmlAdapter);
}
private void BeginGame(FrameBuilderCollection frameBuilders, Size size)
{
if (GameExecutor.IsExecuting)
GameExecutor.CancelExecution();
var htmlAdapter = new HtmlAdapter(gameComponent);
SetupComponents(htmlAdapter);
GameConfiguration configuration = new(htmlAdapter, frameBuilders, size);
GameExecutor.Execute(NetAF.Example.ExampleGame.Create(configuration));
modeSelected = true;
}
}