Fix sentinel types
Fix warnings Require admin
This commit is contained in:
parent
c6ee1a6afe
commit
c86e4dfd13
@ -24,7 +24,7 @@ public partial class TaikoDbContext
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
entity.Property(e => e.ClearState).HasConversion<uint>().HasDefaultValue(DanClearState.NotClear);
|
||||
entity.Property(e => e.DanType).HasConversion<int>().HasDefaultValue(DanType.Normal).HasSentinel(0);
|
||||
entity.Property(e => e.DanType).HasConversion<int>().HasDefaultValue(DanType.Normal).HasSentinel((DanType)0);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<DanStageScoreDatum>(entity =>
|
||||
@ -35,7 +35,7 @@ public partial class TaikoDbContext
|
||||
.WithMany(p => p.DanStageScoreData)
|
||||
.HasForeignKey(d => new { d.Baid, d.DanId, d.DanType })
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
entity.Property(e => e.DanType).HasConversion<int>().HasDefaultValue(DanType.Normal).HasSentinel(0);
|
||||
entity.Property(e => e.DanType).HasConversion<int>().HasDefaultValue(DanType.Normal).HasSentinel((DanType)0);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<AiScoreDatum>(entity =>
|
||||
|
95
OldSetup.md
95
OldSetup.md
@ -1,95 +0,0 @@
|
||||
# Old setup
|
||||
|
||||
1. Download the latest release of [TaikoArcadeLoader](https://github.com/BroGamer4256/TaikoArcadeLoader) and install it. Make sure to setup TAL using the config.toml and set the `server` parameter to your local IP address.
|
||||
2. Download the latest release of [TaikoReverseProxy](https://github.com/shiibe/TaikoReverseProxy).
|
||||
3. In the `Data\x64\datatable` folder of the game, find the following files:
|
||||
|
||||
```
|
||||
music_attribute.bin
|
||||
musicinfo.bin
|
||||
music_order.bin
|
||||
wordlist.bin
|
||||
```
|
||||
|
||||
Extract them (you can use [7zip](https://www.7-zip.org)) and rename the extracted file like so:
|
||||
|
||||
```
|
||||
music_attribute -> music_attribute.json
|
||||
musicinfo -> musicinfo.json
|
||||
music_order -> music_order.json
|
||||
wordlist -> wordlist.json
|
||||
```
|
||||
|
||||
Then put these in TaikoLocalServer's `wwwroot/data` folder.
|
||||
|
||||
4. Modify hosts, add the following entries (this step can be done automatically with TaikoReverseProxy, check the config for it):
|
||||
|
||||
```
|
||||
server.ip tenporouter.loc
|
||||
server.ip naominet.jp
|
||||
server.ip v402-front.mucha-prd.nbgi-amnet.jp
|
||||
server.ip vsapi.taiko-p.jp
|
||||
```
|
||||
|
||||
where `server.ip` is your computer's ip (or the server's ip)
|
||||
|
||||
5. Open command prompt as admin, navigate to game root folder (where init.ps1 is). Run `regsvr32 .\AMCUS\iauthdll.dll`. It should prompt about success
|
||||
|
||||
6. Run TaikoReverseProxy and TaikoLocalServer, then run the game. You can access the WebUI by going to `https://naominet.jp:10122/` in your browser.
|
||||
|
||||
|
||||
### Server setup (for TAL<2.00 or other loaders)
|
||||
|
||||
1. Download the server from release page, extract anywhere
|
||||
|
||||
2. From game's `Data\x64\datatable` folder, find `music_attribute.bin`, `musicinfo.bin`, `music_order.bin` and `wordlist.bin`, decompress them, add `.json` prefix to them.
|
||||
The result is `music_attribute.json`, `musicinfo.json`, `music_order.json` and `wordlist.json`. Put the json files under` wwwroot/data` folder in server.
|
||||
|
||||
3. Modify hosts, add the following entries:
|
||||
|
||||
```
|
||||
server.ip tenporouter.loc
|
||||
server.ip naominet.jp
|
||||
server.ip v402-front.mucha-prd.nbgi-amnet.jp
|
||||
server.ip vsapi.taiko-p.jp
|
||||
```
|
||||
|
||||
where `server.ip` is your computers ip (or the server's ip)
|
||||
|
||||
4. Setup [TaikoReverseProxy](https://github.com/shiibe/TaikoReverseProxy) or [Apache](#apache-setup-optional) as reverse proxy.
|
||||
|
||||
5. Now run the server, if everything is setup correctly, visit http://localhost:5000, you should be able to see the web ui up and running without errors. (If you encounter errors in web ui for the first time, try visit https://naominet.jp:10122/)
|
||||
|
||||
6. Go to game folder, copy the config files (AMConfig.ini and WritableConfig.ini) in the AMCUS folder from server release to AMCUS folder and replace the original ones.
|
||||
|
||||
7. Open command prompt as admin, navigate to game root folder (where init.ps1 is). Run `regsvr32 .\AMCUS\iauthdll.dll`. It should prompt about success.
|
||||
|
||||
8. Run AMCUS/AMAuthd.exe, then run AMCUS/AMUpdater.exe. If the updater run and exits without issue, you are ready to run the game and connect to server.
|
||||
|
||||
9. Run the game, it should now connect to the server.
|
||||
|
||||
### Run the server on another computer
|
||||
|
||||
If you want to run the server on another computer, the procedure is almost identical.
|
||||
|
||||
Before you open browser, in `wwwroot/appsettings.json`, change `BaseUrl` to `https://naominet.jp:10122` then instead of visit localhost, visit the server using domain name to test.
|
||||
|
||||
Also note that now the cetificate also need to be imported on client computer, or web ui may not work. If you don't need https, change `BaseUrl` to `http://server.ip:80`, and visit on client. The game does not care about certificate.
|
||||
|
||||
### Apache Setup (Optional)
|
||||
Notice the following assumes a windows install, the server also works on Linux, but the guide only covers windows.
|
||||
|
||||
1. Download [Apache](https://www.apachelounge.com/download/), extract anywhere
|
||||
|
||||
2. Copy the content in release rar's Apache folder to installed Apache root folder (and replace, which includes httpd.conf and httpd-vhosts.conf, if no prompt to replace files, you are extracting to wrong folder)
|
||||
|
||||
3. Open `conf/httpd.conf` (under installed Apache folder), find this line (line 37 by default), modify it to your Apache install (extracted) full path
|
||||
|
||||
```htaccess
|
||||
# For example, if your Apache is extracted to C:\users\username\Apache24, then this should be "c:/users/username/Apache24"
|
||||
Define SRVROOT "d:/Projects/Apache24"
|
||||
```
|
||||
|
||||
4. Open the certs folder Apache root folder, then click on the localhost.crt file and import it to trusted root store.
|
||||
|
||||
If everything is correct, run bin/httpd.exe, a command prompt will open (and stay open, if it shut down, probably something is not setup correctly)
|
@ -7,6 +7,7 @@
|
||||
<Version>1.0.0-beta</Version>
|
||||
<LangVersion>11</LangVersion>
|
||||
<EnableConfigurationBindingGenerator>false</EnableConfigurationBindingGenerator>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
79
TaikoLocalServer/app.manifest
Normal file
79
TaikoLocalServer/app.manifest
Normal file
@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC 清单选项
|
||||
如果想要更改 Windows 用户帐户控制级别,请使用
|
||||
以下节点之一替换 requestedExecutionLevel 节点。
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
|
||||
如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
|
||||
元素。
|
||||
-->
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
|
||||
Windows 版本的列表。取消评论适当的元素,
|
||||
Windows 将自动选择最兼容的环境。 -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
|
||||
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
|
||||
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
|
||||
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
|
||||
|
||||
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
|
||||
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
</assembly>
|
@ -106,10 +106,10 @@
|
||||
Label="Password">
|
||||
</MudTextField>
|
||||
<MudStack Row="true">
|
||||
<MudButton OnClick="OnLogin" FullWidth="true" Class="mt-3" StartIcon="@Icons.Filled.Login" Color="Color.Primary" Variant="Variant.Filled">Login</MudButton>
|
||||
<MudButton OnClick="OnLogin" FullWidth="true" Class="mt-3" StartIcon="@Icons.Material.Filled.Login" Color="Color.Primary" Variant="Variant.Filled">Login</MudButton>
|
||||
@if (!LoginService.OnlyAdmin)
|
||||
{
|
||||
<MudButton Href="@("Cards/Register")" FullWidth="true" Class="mt-3" StartIcon="@Icons.Filled.AddCard" Color="Color.Primary" Variant="Variant.Filled">Register</MudButton>
|
||||
<MudButton Href="@("Cards/Register")" FullWidth="true" Class="mt-3" StartIcon="@Icons.Material.Filled.AddCard" Color="Color.Primary" Variant="Variant.Filled">Register</MudButton>
|
||||
}
|
||||
</MudStack>
|
||||
</MudForm>
|
||||
|
@ -25,7 +25,7 @@ public partial class Cards
|
||||
var dialog = DialogService.Show<CardDeleteConfirmDialog>("Delete Card", parameters);
|
||||
var result = await dialog.Result;
|
||||
|
||||
if (result.Cancelled) return;
|
||||
if (result.Canceled) return;
|
||||
|
||||
response = await Client.GetFromJsonAsync<DashboardResponse>("api/Dashboard");
|
||||
}
|
||||
@ -42,7 +42,7 @@ public partial class Cards
|
||||
"Error",
|
||||
"Only admin can log in.",
|
||||
"Ok");
|
||||
loginForm.Reset();
|
||||
await loginForm.ResetAsync();
|
||||
break;
|
||||
case 1:
|
||||
NavigationManager.NavigateTo("/Cards");
|
||||
|
@ -38,7 +38,7 @@ else
|
||||
RequiredError="Confirm password is required"
|
||||
Label="Confirm New Password">
|
||||
</MudTextField>
|
||||
<MudButton OnClick="OnChangePassword" FullWidth="true" Class="mt-3" StartIcon="@Icons.Filled.Edit" Color="Color.Primary" Variant="Variant.Filled">Change password</MudButton>
|
||||
<MudButton OnClick="OnChangePassword" FullWidth="true" Class="mt-3" StartIcon="@Icons.Material.Filled.Edit" Color="Color.Primary" Variant="Variant.Filled">Change password</MudButton>
|
||||
</MudForm>
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
|
@ -33,7 +33,7 @@ else
|
||||
RequiredError="Confirm password is required"
|
||||
Label="Confirm Password">
|
||||
</MudTextField>
|
||||
<MudButton OnClick="OnRegister" FullWidth="true" Class="mt-3" StartIcon="@Icons.Filled.AddCard" Color="Color.Primary" Variant="Variant.Filled">Register</MudButton>
|
||||
<MudButton OnClick="OnRegister" FullWidth="true" Class="mt-3" StartIcon="@Icons.Material.Filled.AddCard" Color="Color.Primary" Variant="Variant.Filled">Register</MudButton>
|
||||
</MudForm>
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
|
@ -6,15 +6,15 @@ namespace TaikoWebUI.Services;
|
||||
|
||||
public class GameDataService : IGameDataService
|
||||
{
|
||||
private string[] bodyTitles;
|
||||
private string[] bodyTitles = {};
|
||||
private readonly HttpClient client;
|
||||
private string[] faceTitles;
|
||||
private string[] faceTitles = {};
|
||||
|
||||
private string[] headTitles;
|
||||
private string[] kigurumiTitles;
|
||||
private string[] headTitles = {};
|
||||
private string[] kigurumiTitles = {};
|
||||
|
||||
private readonly Dictionary<uint, MusicDetail> musicMap = new();
|
||||
private string[] puchiTitles;
|
||||
private string[] puchiTitles = {};
|
||||
|
||||
private List<int> costumeFlagArraySizes = new();
|
||||
|
||||
@ -281,9 +281,9 @@ public class GameDataService : IGameDataService
|
||||
{
|
||||
var musicOrderEntry = musicOrder.Order[index];
|
||||
var songId = musicOrderEntry.SongId;
|
||||
if (musicMap.ContainsKey(songId))
|
||||
if (musicMap.TryGetValue(songId, out var value))
|
||||
{
|
||||
musicMap[songId].Index = index;
|
||||
value.Index = index;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user