diff --git a/src/app/pages/servers-page/livetime-server-map.ts b/src/app/pages/servers-page/livetime-server-map.ts
index a895989..dd28f78 100644
--- a/src/app/pages/servers-page/livetime-server-map.ts
+++ b/src/app/pages/servers-page/livetime-server-map.ts
@@ -5,6 +5,8 @@ import {LatLng, LatLngBoundsLiteral, Layer, Marker} from "leaflet";
import {HttpClient} from "@angular/common/http";
import {Player} from "../../entities/servers/Player";
import {of} from "rxjs";
+import {Tf2dataService} from "../../services/tf2data.service";
+import {MatExpansionPanel} from "@angular/material/expansion";
interface MapOverlayConfig {
x: number;
@@ -15,7 +17,7 @@ interface MapOverlayConfig {
@Component({
selector: "app-live-time-server-map",
template: `
-
+
Команда
@@ -33,9 +35,18 @@ interface MapOverlayConfig {
+
+
+ Игрок
+
+
+ {{m.value.player.name}}
+
+
+
-
{{updatePlayerPos(player)}}
+
{{updatePlayerPos(player)}}
`,
styleUrls: ["servers-page.component.scss"]
@@ -45,38 +56,39 @@ export class LivetimeServerMap implements AfterViewInit {
server!: Server;
map!: L.Map;
canShow: boolean = false;
- markers: {[player_id: string]: {marker: L.Marker, player: Player, hidden: boolean}} = {};
+ markers: {[player_id: string]: {
+ marker: L.Marker,
+ player: Player,
+ hidden_via_team: boolean,
+ hidden_via_class: boolean,
+ hidden_via_player: boolean
+ }} = {};
config: MapOverlayConfig = {
x: 0, y: 0, hu:0
}
- teams:{id:number, name:string}[] = [
- {id: 0, name: "Все"},
- {id: 1, name: "Наблюдатель"}, {id: 2, name: "Красные"}, {id: 3, name: "Синий"}
- ];
+ teams:{id:number, name:string}[] = [];
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:{id:number, name:string}[] = []
classes_select: number = 0;
-
- constructor(private http: HttpClient) {
+ player_select: string[] = [];
+ allow_processing: boolean = false;
+
+ constructor(private http: HttpClient,
+ private tf2service: Tf2dataService) {
+ this.classes = tf2service.TFClassType.map(clz => {
+ return {id: tf2service.TFClassType.indexOf(clz), name: clz}
+ })
+ this.teams = tf2service.TFTeam.map(t => {
+ return {id: tf2service.TFTeam.indexOf(t), name: t}
+ })
}
ngAfterViewInit(): void {
}
- prepareMap() {
+ prepareMap(serverMap: MatExpansionPanel) {
+ this.allow_processing = serverMap.hideToggle;
if (this.canShow) return;
this.http.head(this.generateUrl()).subscribe(
@@ -115,8 +127,10 @@ export class LivetimeServerMap implements AfterViewInit {
return new LatLng(y, x);
}
+ //это пиздец какой кастыль А ВОТ А ВЬЮЮЮЮЮ А ТАМ....
updatePlayerPos(player:Player) {
if (!this.map) return;
+ if (!this.allow_processing) return;
const ids = Object.keys(this.markers);
const id: string = `${player.id}`;
@@ -127,28 +141,81 @@ export class LivetimeServerMap implements AfterViewInit {
this.markers[id].player = player;
} else {
- this.markers[id] = {marker: L.marker(this.getRektPos(player)), player: player, hidden: false};
+ this.markers[id] = {
+ marker: L.marker(this.getRektPos(player)),
+ player: player,
+ hidden_via_team: false,
+ hidden_via_class: false,
+ hidden_via_player: false
+ };
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) {
+ if (this.markers[id].hidden_via_team && !this.markers[id].hidden_via_class && !this.markers[id].hidden_via_player) {
+ this.markers[id].marker.addTo(this.map);
+ this.markers[id].hidden_via_team = false;
+ }
+ break;
+ }
+ default: {
+ if (this.markers[id].player.team == this.teams_select && this.markers[id].hidden_via_team && !this.markers[id].hidden_via_class && !this.markers[id].hidden_via_player) {
+ this.markers[id].marker.addTo(this.map);
+ this.markers[id].hidden_via_team = false;
+ }
+
+ if (this.markers[id].player.team != this.teams_select && !this.markers[id].hidden_via_team && !this.markers[id].hidden_via_class && !this.markers[id].hidden_via_player) {
+ this.markers[id].marker.remove();
+ this.markers[id].hidden_via_team = true;
+ }
+ break;
+ }
+ }
+
+ //проверяем фильтр класса
+ switch (this.classes_select) {
+ case 0: {
+ if (this.markers[id].hidden_via_class && !this.markers[id].hidden_via_team && !this.markers[id].hidden_via_player) {
+ this.markers[id].marker.addTo(this.map);
+ this.markers[id].hidden_via_class = false;
+ }
+ break;
+ }
+ default: {
+ if (this.markers[id].player.clz == this.classes_select && this.markers[id].hidden_via_class && !this.markers[id].hidden_via_team && !this.markers[id].hidden_via_player) {
+ this.markers[id].marker.addTo(this.map);
+ this.markers[id].hidden_via_class = false;
+ }
+
+ if (this.markers[id].player.clz != this.classes_select && !this.markers[id].hidden_via_class && !this.markers[id].hidden_via_team && !this.markers[id].hidden_via_player) {
+ this.markers[id].marker.remove();
+ this.markers[id].hidden_via_class = true;
+ }
+ break;
+ }
+ }
+
+ //проверяем челикса по имени
+ switch (this.player_select.length) {
+ case 0: {
+ if (this.markers[id].hidden_via_player && !this.markers[id].hidden_via_class && !this.markers[id].hidden_via_team) {
this.markers[id].marker.addTo(this.map);
- this.markers[id].hidden = false;
+ this.markers[id].hidden_via_player = false;
}
break;
}
default: {
- if (this.markers[id].player.team == this.teams_select && this.markers[id].hidden) {
+ if (this.player_select.indexOf(id) != -1 && this.markers[id].hidden_via_player && !this.markers[id].hidden_via_class && !this.markers[id].hidden_via_team) {
this.markers[id].marker.addTo(this.map);
- this.markers[id].hidden = false;
+ this.markers[id].hidden_via_player = false;
}
- if (this.markers[id].player.team != this.teams_select && !this.markers[id].hidden) {
+ if (this.player_select.indexOf(id) == -1 && !this.markers[id].hidden_via_player && !this.markers[id].hidden_via_class && !this.markers[id].hidden_via_team) {
this.markers[id].marker.remove();
- this.markers[id].hidden = true;
+ this.markers[id].hidden_via_player = true;
}
break;
}
diff --git a/src/app/pages/servers-page/servers-page.component.html b/src/app/pages/servers-page/servers-page.component.html
index 6d9c1dc..056f332 100644
--- a/src/app/pages/servers-page/servers-page.component.html
+++ b/src/app/pages/servers-page/servers-page.component.html
@@ -68,7 +68,7 @@
из воркшопа
-