Merge pull request #24 from AkaiiKitsune/profile-visualizer
Added scoreboard visualizer
@ -73,8 +73,7 @@
|
|||||||
}
|
}
|
||||||
</MudGrid>
|
</MudGrid>
|
||||||
|
|
||||||
<MudSelect @bind-Value="@response.AchievementDisplayDifficulty"
|
<MudSelect T="Difficulty" ValueChanged=@UpdateScoreboard Value=@response.AchievementDisplayDifficulty Label="Achievement Panel Difficulty">
|
||||||
Label="Achievement Panel Difficulty">
|
|
||||||
@foreach (var item in Enum.GetValues<Difficulty>())
|
@foreach (var item in Enum.GetValues<Difficulty>())
|
||||||
{
|
{
|
||||||
<MudSelectItem Value="@item" />
|
<MudSelectItem Value="@item" />
|
||||||
@ -310,25 +309,27 @@
|
|||||||
|
|
||||||
<MudItem md="4" xs="12" Class="py-3 px-3">
|
<MudItem md="4" xs="12" Class="py-3 px-3">
|
||||||
<MudStack Spacing="4" Class="sticky" Style="top:100px">
|
<MudStack Spacing="4" Class="sticky" Style="top:100px">
|
||||||
<MudCard style="height: auto" Outlined="true">
|
<MudPaper Elevation="0" Outlined="true">
|
||||||
<MudCardContent>
|
<MudTabs Rounded="true" Border="true" PanelClass="pa-8">
|
||||||
|
<MudTabPanel Text="Player">
|
||||||
|
<MudItem style="height: auto">
|
||||||
@* Player Visualizer *@
|
@* Player Visualizer *@
|
||||||
<MudItem style="text-align: center;">
|
<MudItem style="text-align: center;">
|
||||||
<MudItem style="position:relative">
|
<MudItem style="position:relative">
|
||||||
@if (response.Kigurumi == 0)
|
@if (response.Kigurumi == 0)
|
||||||
{
|
{
|
||||||
<MudImage Fluid="true" style=@($"position: relative; top: 0; left: 0; filter: {CostumeColorFilters[response.BodyColor]}") Src=@ImageOrDefault("masks/body-bodymask", response.Body, "masks/body-bodymask-0000") />
|
<MudImage Fluid="true" style=@($"position: relative; top: 0; left: 0; filter: {CostumeColorFilters[response.BodyColor]}") Src=@CostumeOrDefault("masks/body-bodymask", response.Body, "masks/body-bodymask-0000") />
|
||||||
<MudImage Fluid="true" style=@($"position:absolute; top: 0; left: 0; right: 0; margin: 0 auto; filter: {CostumeColorFilters[response.FaceColor]}") Src=@ImageOrDefault("masks/body-facemask", response.Body, "masks/body-facemask-0000") />
|
<MudImage Fluid="true" style=@($"position:absolute; top: 0; left: 0; right: 0; margin: 0 auto; filter: {CostumeColorFilters[response.FaceColor]}") Src=@CostumeOrDefault("masks/body-facemask", response.Body, "masks/body-facemask-0000") />
|
||||||
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/body/body-0000.png'" Src=@($"images/Costumes/body/body-{response.Body.ToString().PadLeft(4, '0')}.png") />
|
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/body/body-0000.png'" Src=@($"images/Costumes/body/body-{response.Body.ToString().PadLeft(4, '0')}.png") />
|
||||||
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/face/face-0000.png'" Src=@($"images/Costumes/face/face-{response.Face.ToString().PadLeft(4, '0')}.png") />
|
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/face/face-0000.png'" Src=@($"images/Costumes/face/face-{response.Face.ToString().PadLeft(4, '0')}.png") />
|
||||||
<MudImage Fluid="true" style=@($"position:absolute; top: 0; left: 0; right: 0; margin: 0 auto; filter: {CostumeColorFilters[response.BodyColor]}") Src=@ImageOrDefault("masks/head-bodymask", response.Head, "head/head-0000") />
|
<MudImage Fluid="true" style=@($"position:absolute; top: 0; left: 0; right: 0; margin: 0 auto; filter: {CostumeColorFilters[response.BodyColor]}") Src=@CostumeOrDefault("masks/head-bodymask", response.Head, "head/head-0000") />
|
||||||
<MudImage Fluid="true" style=@($"position:absolute; top: 0; left: 0; right: 0; margin: 0 auto; filter: {CostumeColorFilters[response.FaceColor]}") Src=@ImageOrDefault("masks/head-facemask", response.Head, "head/head-0000") />
|
<MudImage Fluid="true" style=@($"position:absolute; top: 0; left: 0; right: 0; margin: 0 auto; filter: {CostumeColorFilters[response.FaceColor]}") Src=@CostumeOrDefault("masks/head-facemask", response.Head, "head/head-0000") />
|
||||||
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/head/head-0000.png'" Src=@($"images/Costumes/head/head-{response.Head.ToString().PadLeft(4, '0')}.png") />
|
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/head/head-0000.png'" Src=@($"images/Costumes/head/head-{response.Head.ToString().PadLeft(4, '0')}.png") />
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<MudImage Fluid="true" style=@($"position: relative; top: 0; left: 0; filter: {CostumeColorFilters[response.BodyColor]}") Src=@ImageOrDefault("masks/kigurumi-bodymask", response.Kigurumi, "masks/body-bodymask-0000") />
|
<MudImage Fluid="true" style=@($"position: relative; top: 0; left: 0; filter: {CostumeColorFilters[response.BodyColor]}") Src=@CostumeOrDefault("masks/kigurumi-bodymask", response.Kigurumi, "masks/body-bodymask-0000") />
|
||||||
<MudImage Fluid="true" style=@($"position:absolute; top: 0; left: 0; right: 0; margin: 0 auto; filter: {CostumeColorFilters[response.FaceColor]}") Src=@ImageOrDefault("masks/kigurumi-facemask", response.Kigurumi, "masks/body-facemask-0000") />
|
<MudImage Fluid="true" style=@($"position:absolute; top: 0; left: 0; right: 0; margin: 0 auto; filter: {CostumeColorFilters[response.FaceColor]}") Src=@CostumeOrDefault("masks/kigurumi-facemask", response.Kigurumi, "masks/body-facemask-0000") />
|
||||||
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/kigurumi/kigurumi-0000.png'" Src=@($"images/Costumes/kigurumi/kigurumi-{response.Kigurumi.ToString().PadLeft(4, '0')}.png") />
|
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/kigurumi/kigurumi-0000.png'" Src=@($"images/Costumes/kigurumi/kigurumi-{response.Kigurumi.ToString().PadLeft(4, '0')}.png") />
|
||||||
}
|
}
|
||||||
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/puchi/puchi-0000.png'" Src=@($"images/Costumes/puchi/puchi-{response.Puchi.ToString().PadLeft(4, '0')}.png") />
|
<MudImage Fluid="true" style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" onerror="this.src='images/Costumes/puchi/puchi-0000.png'" Src=@($"images/Costumes/puchi/puchi-{response.Puchi.ToString().PadLeft(4, '0')}.png") />
|
||||||
@ -359,8 +360,76 @@
|
|||||||
<MudImage Fluid="true" Style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" Src="images/Nameplates/nameplate_dan.png" />
|
<MudImage Fluid="true" Style="position:absolute; top: 0; left: 0; right: 0; margin: 0 auto;" Src="images/Nameplates/nameplate_dan.png" />
|
||||||
}
|
}
|
||||||
</MudItem>
|
</MudItem>
|
||||||
</MudCardContent>
|
</MudItem>
|
||||||
</MudCard>
|
</MudTabPanel>
|
||||||
|
|
||||||
|
@if (response.IsDisplayAchievement)
|
||||||
|
{
|
||||||
|
<MudTabPanel Text="Achievement Panel">
|
||||||
|
<MudItem style="text-align: center; position:relative;">
|
||||||
|
@* Achievement panel Text *@
|
||||||
|
<MudItem Id="scoreboard" Style="position:absolute; top: 0; left:0; right:0; height:100%; width:min(96%, 320px); margin: 0 auto; z-index:2; vertical-align: middle;">
|
||||||
|
@* First row *@
|
||||||
|
<MudItem Style="position:absolute; height:18%; width:100%; top:11%">
|
||||||
|
<MudItem Class="nameplateTextRight">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[0]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[0]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
</MudItem>
|
||||||
|
@* Second row *@
|
||||||
|
<MudItem Style="position:absolute; height:18%; width:100%; top:30%">
|
||||||
|
<MudItem Class="nameplateTextLeft">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[1]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[1]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem Class="nameplateTextCenter">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[2]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[2]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem Class="nameplateTextRight">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[3]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[3]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
</MudItem>
|
||||||
|
@* Third row *@
|
||||||
|
<MudItem Style="position:absolute; height:18%; width:100%; top:49%">
|
||||||
|
<MudItem Class="nameplateTextLeft">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[4]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[4]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem Class="nameplateTextCenter">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[5]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[5]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem Class="nameplateTextRight">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[6]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[6]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
</MudItem>
|
||||||
|
@* Fourth row (Crowns) *@
|
||||||
|
<MudItem Style="position:absolute; height:18%; width:100%; top:69%">
|
||||||
|
<MudItem Class="nameplateTextLeft">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[7]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[7]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem Class="nameplateTextCenter">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[8]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[8]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem Class="nameplateTextRight">
|
||||||
|
<MudText Class="nameplateText nameplateTextOutline">@scoresArray[9]</MudText>
|
||||||
|
<MudText Class="nameplateText">@scoresArray[9]</MudText>
|
||||||
|
</MudItem>
|
||||||
|
</MudItem>
|
||||||
|
</MudItem>
|
||||||
|
@* Forbidden one-liner : Changes the AchievementDisplayDifficulty image asset. When "Difficulty.None" is selected, Defaults to highest difficulty the player currently has crowns / Ranks for. *@
|
||||||
|
<MudImage Fluid="true" style="position: relative; top: 0;" Src=@($"images/rank_panel_{DifficultySettingCourseStrings[response.AchievementDisplayDifficulty != Difficulty.None ? (int)response.AchievementDisplayDifficulty + 1 : (int)highestDifficulty + 1].Replace(' ', '_')}.png") />
|
||||||
|
</MudItem>
|
||||||
|
</MudTabPanel>
|
||||||
|
}
|
||||||
|
</MudTabs>
|
||||||
|
|
||||||
|
</MudPaper>
|
||||||
<MudButton Disabled="@isSavingOptions"
|
<MudButton Disabled="@isSavingOptions"
|
||||||
OnClick="SaveOptions"
|
OnClick="SaveOptions"
|
||||||
Variant="Variant.Filled"
|
Variant="Variant.Filled"
|
||||||
@ -377,7 +446,6 @@
|
|||||||
}
|
}
|
||||||
</MudButton>
|
</MudButton>
|
||||||
</MudStack>
|
</MudStack>
|
||||||
|
|
||||||
</MudItem>
|
</MudItem>
|
||||||
</MudGrid>
|
</MudGrid>
|
||||||
}
|
}
|
||||||
@ -386,11 +454,18 @@
|
|||||||
@code {
|
@code {
|
||||||
private async Task UpdateMyDonName()
|
private async Task UpdateMyDonName()
|
||||||
{
|
{
|
||||||
@if (response is not null) await Js.InvokeVoidAsync("updateMyDonName", response.MyDonName);
|
@if (response is not null) await Js.InvokeVoidAsync("updateMyDonNameText", response.MyDonName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task UpdateTitle()
|
private async Task UpdateTitle()
|
||||||
{
|
{
|
||||||
@if (response is not null) await Js.InvokeVoidAsync("updateTitle", response.Title);
|
@if (response is not null) await
|
||||||
|
Js.InvokeVoidAsync("updateTitleText", response.Title);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task UpdateScoreboard(Difficulty difficulty)
|
||||||
|
{
|
||||||
|
UpdateScores(difficulty);
|
||||||
|
await Js.InvokeVoidAsync("updateScoreboardText", scoresArray);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,8 @@
|
|||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using SharedProject.Enums;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using TaikoWebUI.Pages.Dialogs;
|
using TaikoWebUI.Pages.Dialogs;
|
||||||
|
using static MudBlazor.CategoryTypes;
|
||||||
|
|
||||||
namespace TaikoWebUI.Pages;
|
namespace TaikoWebUI.Pages;
|
||||||
|
|
||||||
@ -9,6 +11,8 @@ public partial class Profile
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public int Baid { get; set; }
|
public int Baid { get; set; }
|
||||||
|
|
||||||
|
private SongBestResponse? songresponse;
|
||||||
|
|
||||||
private UserSetting? response;
|
private UserSetting? response;
|
||||||
|
|
||||||
private bool isSavingOptions;
|
private bool isSavingOptions;
|
||||||
@ -169,6 +173,10 @@ public partial class Profile
|
|||||||
new BreadcrumbItem("Users", href: "/Users"),
|
new BreadcrumbItem("Users", href: "/Users"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private Dictionary<Difficulty, List<SongBestData>> songBestDataMap = new();
|
||||||
|
|
||||||
|
private Difficulty highestDifficulty = Difficulty.Easy;
|
||||||
|
|
||||||
private List<int> costumeFlagArraySizes = new();
|
private List<int> costumeFlagArraySizes = new();
|
||||||
|
|
||||||
private List<uint> unlockedHeadCostumes = new();
|
private List<uint> unlockedHeadCostumes = new();
|
||||||
@ -177,11 +185,14 @@ public partial class Profile
|
|||||||
private List<uint> unlockedKigurumiCostumes = new();
|
private List<uint> unlockedKigurumiCostumes = new();
|
||||||
private List<uint> unlockedPuchiCostumes = new();
|
private List<uint> unlockedPuchiCostumes = new();
|
||||||
|
|
||||||
|
private int[] scoresArray = new int[10];
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
await base.OnInitializedAsync();
|
await base.OnInitializedAsync();
|
||||||
isSavingOptions = false;
|
isSavingOptions = false;
|
||||||
response = await Client.GetFromJsonAsync<UserSetting>($"api/UserSettings/{Baid}");
|
response = await Client.GetFromJsonAsync<UserSetting>($"api/UserSettings/{Baid}");
|
||||||
|
response.ThrowIfNull();
|
||||||
|
|
||||||
breadcrumbs.Add(new BreadcrumbItem($"User: {Baid}", href: null, disabled: true));
|
breadcrumbs.Add(new BreadcrumbItem($"User: {Baid}", href: null, disabled: true));
|
||||||
breadcrumbs.Add(new BreadcrumbItem("Profile", href: $"/Users/{Baid}/Profile", disabled: false));
|
breadcrumbs.Add(new BreadcrumbItem("Profile", href: $"/Users/{Baid}/Profile", disabled: false));
|
||||||
@ -196,6 +207,35 @@ public partial class Profile
|
|||||||
}
|
}
|
||||||
|
|
||||||
costumeFlagArraySizes = GameDataService.GetCostumeFlagArraySizes();
|
costumeFlagArraySizes = GameDataService.GetCostumeFlagArraySizes();
|
||||||
|
|
||||||
|
songresponse = await Client.GetFromJsonAsync<SongBestResponse>($"api/PlayData/{Baid}");
|
||||||
|
songresponse.ThrowIfNull();
|
||||||
|
|
||||||
|
songresponse.SongBestData.ForEach(data =>
|
||||||
|
{
|
||||||
|
var songId = data.SongId;
|
||||||
|
data.Genre = GameDataService.GetMusicGenreBySongId(songId);
|
||||||
|
data.MusicName = GameDataService.GetMusicNameBySongId(songId);
|
||||||
|
data.MusicArtist = GameDataService.GetMusicArtistBySongId(songId);
|
||||||
|
});
|
||||||
|
|
||||||
|
songBestDataMap = songresponse.SongBestData.GroupBy(data => data.Difficulty)
|
||||||
|
.ToDictionary(data => data.Key,
|
||||||
|
data => data.ToList());
|
||||||
|
foreach (var songBestDataList in songBestDataMap.Values)
|
||||||
|
{
|
||||||
|
songBestDataList.Sort((data1, data2) => GameDataService.GetMusicIndexBySongId(data1.SongId)
|
||||||
|
.CompareTo(GameDataService.GetMusicIndexBySongId(data2.SongId)));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < (int)Difficulty.UraOni; i++)
|
||||||
|
if (songBestDataMap.TryGetValue((Difficulty)i, out var values))
|
||||||
|
{
|
||||||
|
highestDifficulty = (Difficulty)i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
UpdateScores(response.AchievementDisplayDifficulty);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SaveOptions()
|
private async Task SaveOptions()
|
||||||
@ -205,7 +245,63 @@ public partial class Profile
|
|||||||
isSavingOptions = false;
|
isSavingOptions = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ImageOrDefault(string file, uint id, string defaultfile)
|
private void UpdateScores(Difficulty difficulty)
|
||||||
|
{
|
||||||
|
//Console.WriteLine("Updating difficulty : " + (int)difficulty);
|
||||||
|
response.ThrowIfNull();
|
||||||
|
response.AchievementDisplayDifficulty = difficulty;
|
||||||
|
scoresArray = new int[10];
|
||||||
|
|
||||||
|
if (difficulty is Difficulty.None) difficulty = highestDifficulty;
|
||||||
|
|
||||||
|
if (songBestDataMap.TryGetValue(difficulty, out var values))
|
||||||
|
{
|
||||||
|
foreach (var value in values)
|
||||||
|
{
|
||||||
|
//Console.WriteLine("Updating for songId : " + value.SongId);
|
||||||
|
switch (value.BestScoreRank)
|
||||||
|
{
|
||||||
|
case ScoreRank.Dondaful:
|
||||||
|
scoresArray[0]++;
|
||||||
|
break;
|
||||||
|
case ScoreRank.Gold:
|
||||||
|
scoresArray[1]++;
|
||||||
|
break;
|
||||||
|
case ScoreRank.Sakura:
|
||||||
|
scoresArray[2]++;
|
||||||
|
break;
|
||||||
|
case ScoreRank.Purple:
|
||||||
|
scoresArray[3]++;
|
||||||
|
break;
|
||||||
|
case ScoreRank.White:
|
||||||
|
scoresArray[4]++;
|
||||||
|
break;
|
||||||
|
case ScoreRank.Bronze:
|
||||||
|
scoresArray[5]++;
|
||||||
|
break;
|
||||||
|
case ScoreRank.Silver:
|
||||||
|
scoresArray[6]++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (value.BestCrown)
|
||||||
|
{
|
||||||
|
case CrownType.Clear:
|
||||||
|
scoresArray[7]++;
|
||||||
|
break;
|
||||||
|
case CrownType.Gold:
|
||||||
|
scoresArray[8]++;
|
||||||
|
break;
|
||||||
|
case CrownType.Dondaful:
|
||||||
|
scoresArray[9]++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string CostumeOrDefault(string file, uint id, string defaultfile)
|
||||||
{
|
{
|
||||||
var path = "/images/Costumes/";
|
var path = "/images/Costumes/";
|
||||||
var filename = file + "-" + id.ToString().PadLeft(4, '0');
|
var filename = file + "-" + id.ToString().PadLeft(4, '0');
|
||||||
|
@ -104,4 +104,42 @@ a, .btn-link {
|
|||||||
.loading-progress-text:after {
|
.loading-progress-text:after {
|
||||||
content: var(--blazor-load-percentage-text, "Loading");
|
content: var(--blazor-load-percentage-text, "Loading");
|
||||||
}
|
}
|
||||||
/* Change text to "Ok" when loading is complete */
|
|
||||||
|
.nameplateTextOutline {
|
||||||
|
-webkit-text-stroke: 5px;
|
||||||
|
-webkit-text-stroke-color: black
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.nameplateText {
|
||||||
|
font-family: 'Nijiiro', sans-serif !important;
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: white;
|
||||||
|
margin: auto auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nameplateTextLeft {
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 15%;
|
||||||
|
left: 19%
|
||||||
|
}
|
||||||
|
|
||||||
|
.nameplateTextCenter {
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 15%;
|
||||||
|
left: 48%
|
||||||
|
}
|
||||||
|
|
||||||
|
.nameplateTextRight {
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 15%;
|
||||||
|
left: 78%
|
||||||
|
}
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |