mirror of
https://github.com/lexogrine/dota2-react-hud.git
synced 2025-12-10 01:52:49 +01:00
added team logo avatar replacement
This commit is contained in:
parent
4137401b00
commit
0c25ee1658
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lexogrine_dota2_hud",
|
||||
"version": "1.3.0",
|
||||
"version": "1.3.1",
|
||||
"homepage": "./",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name":"Lexogrine Dota2 HUD",
|
||||
"version":"1.3.0",
|
||||
"version":"1.3.1",
|
||||
"author":"Lexogrine",
|
||||
"legacy": false,
|
||||
"radar": true,
|
||||
|
||||
@ -8,6 +8,21 @@
|
||||
"name": "info_box",
|
||||
"label": "Top right corner match info"
|
||||
},
|
||||
{
|
||||
"type":"select",
|
||||
"name":"replace_avatars",
|
||||
"label":"Use team logos as player avatars",
|
||||
"values": [
|
||||
{
|
||||
"label": "Only if player has no avatar",
|
||||
"name": "if_missing"
|
||||
},
|
||||
{
|
||||
"label": "Always",
|
||||
"name": "always"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "action",
|
||||
"name": "viewType",
|
||||
|
||||
@ -2,6 +2,7 @@ import React from 'react';
|
||||
import { Draft, Team, Faction, Player, TeamDraft } from 'dotagsi';
|
||||
import { apiUrl, getAssetURL } from '../../api/api';
|
||||
import CameraContainer from '../Camera/Container';
|
||||
import { Avatar } from '../Players/Avatar';
|
||||
|
||||
const ObservedPlayer = ({ players, player, team, show}: { show: boolean, player: Player | null, players: Player[], team: Team | null }) => {
|
||||
const getPlayerById = (id: number) => {
|
||||
@ -32,7 +33,7 @@ const ObservedPlayer = ({ players, player, team, show}: { show: boolean, player:
|
||||
</div>
|
||||
<div className="player_picture">
|
||||
<CameraContainer observedSteamid={player.steamid} />
|
||||
{player.avatar ? <img src={player.avatar} /> : null}
|
||||
<Avatar player={player} teamId={team?.id} />
|
||||
</div>
|
||||
</div> : null}
|
||||
|
||||
|
||||
42
src/HUD/Players/Avatar.tsx
Normal file
42
src/HUD/Players/Avatar.tsx
Normal file
@ -0,0 +1,42 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { configs } from "../../App";
|
||||
import { apiUrl } from "../../api/api";
|
||||
import React from "react";
|
||||
import { Player } from "dotagsi";
|
||||
|
||||
export const Avatar = (
|
||||
{ player, teamId }: { player: Player; teamId?: string | null },
|
||||
) => {
|
||||
|
||||
const [replaceAvatars, setAvatars] = useState<"always" | "never" | "if_missing">("never");
|
||||
|
||||
useEffect(() => {
|
||||
const onData = (data: any) => {
|
||||
if (!data) return;
|
||||
const display = data.view;
|
||||
if (!display) return;
|
||||
setAvatars(display.replace_avatars || "never");
|
||||
};
|
||||
configs.onChange(onData);
|
||||
onData(configs.data);
|
||||
|
||||
return () => {
|
||||
configs.listeners = configs.listeners.filter((l) => l !== onData);
|
||||
};
|
||||
}, []);
|
||||
|
||||
const getUrl = () => {
|
||||
const avatarData = player.avatar;
|
||||
|
||||
if(replaceAvatars === 'always' || (replaceAvatars === 'if_missing' && !avatarData)){
|
||||
return teamId ? `${apiUrl}api/teams/logo/${teamId}` : avatarData || null;
|
||||
}
|
||||
return avatarData || null;
|
||||
}
|
||||
|
||||
const url = getUrl();
|
||||
|
||||
if(!url) return null
|
||||
|
||||
return <img src={url} />
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user