Browse Source

map update 2

master
gsd 3 weeks ago
parent
commit
77c0f6b99a
  1. 56
      src/app/entities/servers/Player.ts
  2. 80
      src/app/pages/servers-page/livetime-server-map.ts
  3. 2
      src/app/pages/servers-page/servers-page.component.html
  4. 13
      src/app/pages/servers-page/servers-page.component.scss
  5. BIN
      src/assets/images/emblems/blu/Demoman_emblem_BLU.png
  6. BIN
      src/assets/images/emblems/blu/Engineer_emblem_BLU.png
  7. BIN
      src/assets/images/emblems/blu/Heavy_emblem_BLU.png
  8. BIN
      src/assets/images/emblems/blu/Medic_emblem_BLU.png
  9. BIN
      src/assets/images/emblems/blu/Pyro_emblem_BLU.png
  10. BIN
      src/assets/images/emblems/blu/Scout_emblem_BLU.png
  11. BIN
      src/assets/images/emblems/blu/Sniper_emblem_BLU.png
  12. BIN
      src/assets/images/emblems/blu/Soldier_emblem_BLU.png
  13. BIN
      src/assets/images/emblems/blu/Spy_emblem_BLU.png
  14. BIN
      src/assets/images/emblems/red/Demoman_emblem_RED.png
  15. BIN
      src/assets/images/emblems/red/Engineer_emblem_RED.png
  16. BIN
      src/assets/images/emblems/red/Heavy_emblem_RED.png
  17. BIN
      src/assets/images/emblems/red/Medic_emblem_RED.png
  18. BIN
      src/assets/images/emblems/red/Pyro_emblem_RED.png
  19. BIN
      src/assets/images/emblems/red/Scout_emblem_RED.png
  20. BIN
      src/assets/images/emblems/red/Sniper_emblem_RED.png
  21. BIN
      src/assets/images/emblems/red/Soldier_emblem_RED.png
  22. BIN
      src/assets/images/emblems/red/Spy_emblem_RED.png
  23. BIN
      src/assets/images/emblems/unknown/Unk_emblem_UNK.png

56
src/app/entities/servers/Player.ts

@ -1,18 +1,44 @@
import {SteamIDs} from "../profile/SteamIDs"; import {SteamIDs} from "../profile/SteamIDs";
export interface Player { export class Player {
clz: number|null; clz!: number|null;
deads: number; deads!: number;
duration: string; duration!: string;
duration_seconds: number; duration_seconds!: number;
id: number; id!: number;
loss: number; loss!: number;
name: string; name!: string;
ping: number; ping!: number;
pos: number[]; pos!: number[];
score: number; score!: number;
state: string; state!: string;
steam: SteamIDs; steam!: SteamIDs;
steam2: string; steam2!: string;
team: number; team!: number;
static getClassName(clz: number|null) {
switch (clz) {
case 0: return null;
case 1: return "Scout";
case 2: return "Sniper";
case 3: return "Soldier";
case 4: return "Demoman";
case 5: return "Medic";
case 6: return "Heavy";
case 7: return "Pyro";
case 8: return "Spy";
case 9: return "Engineer";
default: return null;
}
}
static getTeamName(team: number|null) {
switch (team) {
case 0: return null;
case 1: return null;
case 2: return "RED";
case 3: return "BLU";
default: return null;
}
}
} }

80
src/app/pages/servers-page/livetime-server-map.ts

@ -15,21 +15,61 @@ interface MapOverlayConfig {
@Component({ @Component({
selector: "app-live-time-server-map", selector: "app-live-time-server-map",
template: ` template: `
<div>
<mat-form-field appearance="fill">
<mat-label>Команда</mat-label>
<mat-select [(ngModel)]="teams_select">
<mat-option *ngFor="let team of teams" [value]="team.id">
{{team.name}}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field appearance="fill">
<mat-label>Класс</mat-label>
<mat-select [(ngModel)]="classes_select">
<mat-option *ngFor="let clz of classes" [value]="clz.id">
{{clz.name}}
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div [id]="server.name+'_map'" style="height: 500px;width: 100%;"> <div [id]="server.name+'_map'" style="height: 500px;width: 100%;">
<p hidden *ngFor="let player of server.players">{{updatePlayerPos(player)}}</p> <p hidden *ngFor="let player of server.players">{{updatePlayerPos(player)}}</p>
</div> </div>
` `,
styleUrls: ["servers-page.component.scss"]
}) })
export class LivetimeServerMap implements AfterViewInit { export class LivetimeServerMap implements AfterViewInit {
@Input("server") @Input("server")
server!: Server; server!: Server;
map!: L.Map; map!: L.Map;
canShow: boolean = false; canShow: boolean = false;
markers: {[player_id: string]: {marker: L.Marker, player: Player}} = {}; markers: {[player_id: string]: {marker: L.Marker, player: Player, hidden: boolean}} = {};
config: MapOverlayConfig = { config: MapOverlayConfig = {
x: 0, y: 0, hu:0 x: 0, y: 0, hu:0
} }
teams:{id:number, name:string}[] = [
{id: 0, name: "Все"},
{id: 1, name: "Наблюдатель"}, {id: 2, name: "Красные"}, {id: 3, name: "Синий"}
];
teams_select: number = 0;
classes:{id:number, name:string}[] = [
{id: 0, name: "Все"},
{id: 1, name: "Все"},
{id: 2, name: "Все"},
{id: 3, name: "Все"},
{id: 4, name: "Все"},
{id: 5, name: "Все"},
{id: 6, name: "Все"},
{id: 7, name: "Все"},
{id: 8, name: "Все"},
{id: 9, name: "Все"}
]
classes_select: number = 0;
constructor(private http: HttpClient) { constructor(private http: HttpClient) {
} }
@ -83,10 +123,44 @@ export class LivetimeServerMap implements AfterViewInit {
if (ids.indexOf(id) != -1) { if (ids.indexOf(id) != -1) {
this.markers[id].marker.setLatLng(this.getRektPos(player)); this.markers[id].marker.setLatLng(this.getRektPos(player));
this.markers[id].marker.setIcon(this.getPlayerEmblem(player))
this.markers[id].player = player; this.markers[id].player = player;
} else { } else {
this.markers[id] = {marker: L.marker(this.getRektPos(player)), player: player} this.markers[id] = {marker: L.marker(this.getRektPos(player)), player: player, hidden: false};
this.markers[id].marker.addTo(this.map); this.markers[id].marker.addTo(this.map);
this.markers[id].marker.setIcon(this.getPlayerEmblem(player));
}
switch (this.teams_select) {
case 0: {
if (this.markers[id].hidden) {
this.markers[id].marker.addTo(this.map);
this.markers[id].hidden = false;
}
break;
}
default: {
if (this.markers[id].player.team == this.teams_select && this.markers[id].hidden) {
this.markers[id].marker.addTo(this.map);
this.markers[id].hidden = false;
}
if (this.markers[id].player.team != this.teams_select && !this.markers[id].hidden) {
this.markers[id].marker.remove();
this.markers[id].hidden = true;
}
break;
}
}
}
private getPlayerEmblem(player: Player): L.Icon {
const c = Player.getClassName(player.clz);
const t = Player.getTeamName(player.team);
if (c == null || t == null) {
return new L.Icon({iconUrl: "assets/images/emblems/unknown/Unk_emblem_UNK.png", className: 'pm_icon'});
} }
return new L.Icon({iconUrl: `assets/images/emblems/${t.toLowerCase()}/${c}_emblem_${t}.png`, className: 'pm_icon'});
} }
} }

2
src/app/pages/servers-page/servers-page.component.html

@ -38,7 +38,7 @@
<mat-card-subtitle>игроков играло за год</mat-card-subtitle> <mat-card-subtitle>игроков играло за год</mat-card-subtitle>
</mat-card> </mat-card>
<mat-card> <mat-card>
<mat-card-title>{{server.value.last_update * 1000 | date: "hh:mm:ss"}}</mat-card-title> <mat-card-title>{{server.value.last_update * 1000 | date: "HH:mm:ss"}}</mat-card-title>
<mat-card-subtitle>обновление информации</mat-card-subtitle> <mat-card-subtitle>обновление информации</mat-card-subtitle>
</mat-card> </mat-card>
<mat-card> <mat-card>

13
src/app/pages/servers-page/servers-page.component.scss

@ -1,3 +1,16 @@
.container { .container {
padding: 24px; padding: 24px;
} }
::ng-deep .leaflet-marker-icon {
width: 24px !important;
height: 24px !important;
margin-left: -12px !important;
margin-top: -12px !important;
border-radius: 1px;
border: 0px solid black;
}
::ng-deep .leaflet-control-attribution {
display: none;
}

BIN
src/assets/images/emblems/blu/Demoman_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
src/assets/images/emblems/blu/Engineer_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
src/assets/images/emblems/blu/Heavy_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
src/assets/images/emblems/blu/Medic_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/assets/images/emblems/blu/Pyro_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
src/assets/images/emblems/blu/Scout_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
src/assets/images/emblems/blu/Sniper_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
src/assets/images/emblems/blu/Soldier_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
src/assets/images/emblems/blu/Spy_emblem_BLU.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
src/assets/images/emblems/red/Demoman_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
src/assets/images/emblems/red/Engineer_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
src/assets/images/emblems/red/Heavy_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
src/assets/images/emblems/red/Medic_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
src/assets/images/emblems/red/Pyro_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
src/assets/images/emblems/red/Scout_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
src/assets/images/emblems/red/Sniper_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
src/assets/images/emblems/red/Soldier_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
src/assets/images/emblems/red/Spy_emblem_RED.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
src/assets/images/emblems/unknown/Unk_emblem_UNK.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Loading…
Cancel
Save