Basic groundwork for replay viewer
This commit is contained in:
parent
dcdd60c318
commit
5fe4f10041
@ -1,3 +1,31 @@
|
|||||||
<div class="header">
|
<div class="header">
|
||||||
<app-replay-viewer></app-replay-viewer>
|
<div>
|
||||||
|
<a [routerLink]="['/']">
|
||||||
|
<img src="/assets/keisatsu-chan.png" class="header-image" alt="keisatsu-chan~!">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h2>/nise.moe/</h2>
|
||||||
|
<ul style="font-size: 15px; line-height: 19px;">
|
||||||
|
<li><a [routerLink]="['/']">./home</a></li>
|
||||||
|
<li><a [routerLink]="['/sus']">./suspicious-scores</a></li>
|
||||||
|
<li><a [routerLink]="['/stolen']">./stolen-replays</a></li>
|
||||||
|
<li><a [routerLink]="['/search']">./advanced-search</a></li>
|
||||||
|
</ul>
|
||||||
|
<form (ngSubmit)="onSubmit()">
|
||||||
|
<input type="text" [(ngModel)]="term" [ngModelOptions]="{standalone: true}" id="nise-osu-username" required minlength="2" maxlength="50" placeholder="Search for users...">
|
||||||
|
</form>
|
||||||
|
<div style="margin-top: 6px">
|
||||||
|
<ng-container *ngIf="this.userService.isUserLoggedIn()">
|
||||||
|
hi, <span class="user-details" [title]="this.userService.currentUser?.username">{{this.userService.currentUser?.username}}</span> <a [href]="this.userService.getLogoutUrl()">Logout</a>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container *ngIf="!this.userService.isUserLoggedIn()">
|
||||||
|
<a [href]="this.userService.getLoginUrl()">Login</a>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<router-outlet></router-outlet>
|
||||||
|
<div class="text-center version">
|
||||||
|
v20240225
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -11,7 +11,8 @@ import {ReplayViewerComponent} from "../corelib/components/replay-viewer/replay-
|
|||||||
imports: [
|
imports: [
|
||||||
RouterLink,
|
RouterLink,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
NgIf, RouterOutlet, ReplayViewerComponent
|
NgIf,
|
||||||
|
RouterOutlet
|
||||||
],
|
],
|
||||||
templateUrl: './app.component.html',
|
templateUrl: './app.component.html',
|
||||||
styleUrls: ['./app.component.css']
|
styleUrls: ['./app.component.css']
|
||||||
|
|||||||
@ -12,6 +12,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
<div class="main term mb-2">
|
||||||
|
<app-replay-viewer></app-replay-viewer>
|
||||||
|
</div>
|
||||||
<ng-container *ngIf="this.replayData && !this.isLoading && !this.error">
|
<ng-container *ngIf="this.replayData && !this.isLoading && !this.error">
|
||||||
<div class="main term mb-2">
|
<div class="main term mb-2">
|
||||||
<div class="fade-stuff">
|
<div class="fade-stuff">
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import {calculateAccuracy} from "../format";
|
|||||||
import {Title} from "@angular/platform-browser";
|
import {Title} from "@angular/platform-browser";
|
||||||
import {OsuGradeComponent} from "../../corelib/components/osu-grade/osu-grade.component";
|
import {OsuGradeComponent} from "../../corelib/components/osu-grade/osu-grade.component";
|
||||||
import {ChartComponent} from "../../corelib/components/chart/chart.component";
|
import {ChartComponent} from "../../corelib/components/chart/chart.component";
|
||||||
|
import {ReplayViewerComponent} from "../../corelib/components/replay-viewer/replay-viewer.component";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-view-score',
|
selector: 'app-view-score',
|
||||||
@ -24,7 +25,8 @@ import {ChartComponent} from "../../corelib/components/chart/chart.component";
|
|||||||
NgOptimizedImage,
|
NgOptimizedImage,
|
||||||
RouterLink,
|
RouterLink,
|
||||||
OsuGradeComponent,
|
OsuGradeComponent,
|
||||||
ChartComponent
|
ChartComponent,
|
||||||
|
ReplayViewerComponent
|
||||||
],
|
],
|
||||||
templateUrl: './view-score.component.html',
|
templateUrl: './view-score.component.html',
|
||||||
styleUrl: './view-score.component.css'
|
styleUrl: './view-score.component.css'
|
||||||
|
|||||||
@ -54,6 +54,24 @@ export class ReplayViewerComponent implements OnInit, AfterViewInit {
|
|||||||
@ViewChild('replayCanvas') replayCanvas!: ElementRef<HTMLCanvasElement>;
|
@ViewChild('replayCanvas') replayCanvas!: ElementRef<HTMLCanvasElement>;
|
||||||
private ctx!: CanvasRenderingContext2D;
|
private ctx!: CanvasRenderingContext2D;
|
||||||
|
|
||||||
|
// TODO: Calculate AudioLeadIn
|
||||||
|
// TODO: Calculate circle size (CS)
|
||||||
|
// TODO: Hard-Rock, DT, Easy
|
||||||
|
|
||||||
|
// TODO: Cursor trail and where keys are pressed
|
||||||
|
// TODO: Button for -100 ms, +100 ms, etc (precise seeking) (or keyboard shortcuts)
|
||||||
|
|
||||||
|
// TODO: Way to obtain replay+beatmap info from the backend
|
||||||
|
|
||||||
|
// TODO: UR bar
|
||||||
|
// Todo: Customizable speed
|
||||||
|
// TODO: Customizable zoom
|
||||||
|
// TODO: Fullscreen mode
|
||||||
|
|
||||||
|
// TODO: Hit/Miss, Combo, Accuracy
|
||||||
|
|
||||||
|
// TODO: Compare two replays for similarity (different cursor color)
|
||||||
|
|
||||||
constructor(public replayService: ReplayService) { }
|
constructor(public replayService: ReplayService) { }
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user