mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-03 18:24:12 +02:00
some basic viewer
This commit is contained in:
parent
2dee28d022
commit
5910b2f35a
45 changed files with 1089 additions and 1436 deletions
42
style/pages/viewer/AnalyseMenu.css
Normal file
42
style/pages/viewer/AnalyseMenu.css
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
.analyse-menu {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
opacity: 0.5;
|
||||
transition: all 0.5s;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
& .share-session {
|
||||
|
||||
background: transparent;
|
||||
color: var(--primary-color);
|
||||
font-size: 200%;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin: 10px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
background-image: url("images/link_white.svg");
|
||||
background-size: contain;
|
||||
|
||||
&:active, &:focus {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
& .share-text {
|
||||
color: var(--primary-color);
|
||||
background-color: var(--text-secondary);
|
||||
padding: 5px;
|
||||
margin-top: 0;
|
||||
border: 1px #888 solid;
|
||||
border-radius: 5px;
|
||||
|
||||
&:active, &:focus {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
75
style/pages/viewer/Analyser.css
Normal file
75
style/pages/viewer/Analyser.css
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
.map-holder {
|
||||
position: fixed;
|
||||
top: 32px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: calc(100% - 32px - 100px);
|
||||
}
|
||||
|
||||
.time-control {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
background-color: var(--primary-color-accent);
|
||||
|
||||
& .timeline {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 64px;
|
||||
width: calc(100% - 64px);
|
||||
}
|
||||
|
||||
& .play-pause-button {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
height: 100px;
|
||||
width: 64px;
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 200%;
|
||||
border: none;
|
||||
|
||||
&:focus, &:active {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.error-holder {
|
||||
.error-image {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
font-size: 250%;
|
||||
|
||||
&::after {
|
||||
display: block;
|
||||
content: '';
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50% 50%;
|
||||
background-image: url('images/teleporter.png');
|
||||
width: 100%;
|
||||
height: 500px;
|
||||
margin: 50px 0;
|
||||
}
|
||||
}
|
||||
|
||||
& .error {
|
||||
background-color: #FF9494;
|
||||
line-height: 32px;
|
||||
margin: 0 -30px;
|
||||
padding: 32px;
|
||||
padding-left: 74px;
|
||||
background-image: url('images/error.png');
|
||||
background-size: 32px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 32px 32px;
|
||||
|
||||
& .error-hint {
|
||||
margin-top: 32px;
|
||||
}
|
||||
}
|
||||
}
|
||||
45
style/pages/viewer/KillFeed.css
Normal file
45
style/pages/viewer/KillFeed.css
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
.killfeed {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 15px;
|
||||
user-select: none;
|
||||
|
||||
& .kill {
|
||||
& .red {
|
||||
color: #a75d50;
|
||||
}
|
||||
& .blue {
|
||||
color: #5b818f;
|
||||
}
|
||||
|
||||
&.active-player {
|
||||
background-color: #ddcfb2;
|
||||
}
|
||||
|
||||
display: inline-block;
|
||||
margin: 3px;
|
||||
white-space: nowrap;
|
||||
background-color: #2d2727cc;
|
||||
border-radius: 5px;
|
||||
padding: 5px 15px;
|
||||
width: auto;
|
||||
text-align: right;
|
||||
color: var(--primary-color);
|
||||
font-weight: bold;
|
||||
float: right;
|
||||
clear: both;
|
||||
|
||||
& .player {
|
||||
padding: 0 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.kill-icon {
|
||||
display: inline-block;
|
||||
height: 22px;
|
||||
width: auto;
|
||||
vertical-align: middle;
|
||||
filter: brightness(600%);
|
||||
}
|
||||
5
style/pages/viewer/MapContainer.css
Normal file
5
style/pages/viewer/MapContainer.css
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
.map-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
9
style/pages/viewer/MapRender.css
Normal file
9
style/pages/viewer/MapRender.css
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
.map-background {
|
||||
/*width: 1000px;*/
|
||||
/*height: 1000px;*/
|
||||
min-height: 500px;
|
||||
min-width: 700px;
|
||||
background: black no-repeat;
|
||||
background-position: bottom left;
|
||||
background-size: contain;
|
||||
}
|
||||
54
style/pages/viewer/Panner.css
Normal file
54
style/pages/viewer/Panner.css
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
.pan-zoom-element {
|
||||
border: 1px solid #ccc;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
cursor: default;
|
||||
|
||||
& .content-container {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
& .noselect {
|
||||
user-select: none;
|
||||
}
|
||||
}
|
||||
|
||||
.zoommenu {
|
||||
position: fixed;
|
||||
color: #888;
|
||||
|
||||
bottom: 100px;
|
||||
right: 0;
|
||||
margin: 10px;
|
||||
font-size: 200%;
|
||||
|
||||
opacity: 0.5;
|
||||
transition: all 0.5s;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
background-color: #f8f8f8;
|
||||
border-radius: 5px;
|
||||
|
||||
& div {
|
||||
transition: all 0.5s;
|
||||
width: 32px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
|
||||
&:hover {
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
|
||||
& div:first-child {
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
4
style/pages/viewer/Player.css
Normal file
4
style/pages/viewer/Player.css
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
.player-icon {
|
||||
mask-size: cover;
|
||||
mask-repeat: no-repeat;
|
||||
}
|
||||
218
style/pages/viewer/PlayerSpec.css
Normal file
218
style/pages/viewer/PlayerSpec.css
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
.blueSpecHolder {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translate(0, -50%);
|
||||
}
|
||||
|
||||
.redSpecHolder {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translate(0, -50%);
|
||||
}
|
||||
|
||||
.playerspec {
|
||||
background-color: black;
|
||||
color: white;
|
||||
height: 42px;
|
||||
width: 200px;
|
||||
position: relative;
|
||||
font-family: sans-serif;
|
||||
margin-bottom: 2px;
|
||||
user-select: none;
|
||||
|
||||
&.uber {
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
& .class-icon, .steam-avatar {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-position: top left;
|
||||
background-size: 100% 100%;
|
||||
|
||||
&.uber {
|
||||
height: 28px;
|
||||
background-size: 28px 28px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50% 50%;
|
||||
}
|
||||
}
|
||||
|
||||
& .player-name {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
padding: 0 5px;
|
||||
white-space: nowrap;
|
||||
width: 120px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
& .health-container {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
left: 42px;
|
||||
top: 0;
|
||||
height: 28px;
|
||||
width: calc(100% - 42px);
|
||||
line-height: 28px;
|
||||
font-weight: bold;
|
||||
& .health {
|
||||
position: relative;
|
||||
float: right;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
& .healthbar {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
&.red {
|
||||
& .health-container {
|
||||
background-color: #a75d50aa;
|
||||
}
|
||||
|
||||
& .healthbar {
|
||||
background-color: #a75d50;
|
||||
}
|
||||
|
||||
& .class-icon.scout {
|
||||
background-image: url('../../images/class_portraits/Icon_scout.jpg');
|
||||
}
|
||||
& .class-icon.soldier {
|
||||
background-image: url('../../images/class_portraits/Icon_soldier.jpg');
|
||||
}
|
||||
& .class-icon.pyro {
|
||||
background-image: url('../../images/class_portraits/Icon_pyro.jpg');
|
||||
}
|
||||
& .class-icon.demoman {
|
||||
background-image: url('../../images/class_portraits/Icon_demoman.jpg');
|
||||
}
|
||||
& .class-icon.engineer {
|
||||
background-image: url('../../images/class_portraits/Icon_engineer.jpg');
|
||||
}
|
||||
& .class-icon.heavy {
|
||||
background-image: url('../../images/class_portraits/Icon_heavy.jpg');
|
||||
}
|
||||
& .class-icon.medic {
|
||||
background-image: url('../../images/class_portraits/Icon_medic.jpg');
|
||||
}
|
||||
& .class-icon.sniper {
|
||||
background-image: url('../../images/class_portraits/Icon_sniper.jpg');
|
||||
}
|
||||
& .class-icon.spy{
|
||||
background-image: url('../../images/class_portraits/Icon_spy.jpg');
|
||||
}
|
||||
& .class-icon.uber {
|
||||
background-image: url('images/charge_red.svg');
|
||||
}
|
||||
|
||||
& .class-icon, & .steam-avatar {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
& .health-container {
|
||||
right: 42px;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
& .health {
|
||||
float: left;
|
||||
}
|
||||
|
||||
& .player-name {
|
||||
float: right;
|
||||
direction: ltr;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
&.blue {
|
||||
& .health-container {
|
||||
background-color: #5b818faa;
|
||||
}
|
||||
|
||||
& .healthbar {
|
||||
background-color: #5b818f;
|
||||
}
|
||||
|
||||
& .class-icon.scout {
|
||||
background-image: url('../../images/class_portraits/Icon_scout_blue.jpg');
|
||||
}
|
||||
& .class-icon.soldier {
|
||||
background-image: url('../../images/class_portraits/Icon_soldier_blue.jpg');
|
||||
}
|
||||
& .class-icon.pyro {
|
||||
background-image: url('../../images/class_portraits/Icon_pyro_blue.jpg');
|
||||
}
|
||||
& .class-icon.demoman {
|
||||
background-image: url('../../images/class_portraits/Icon_demoman_blue.jpg');
|
||||
}
|
||||
& .class-icon.engineer {
|
||||
background-image: url('../../images/class_portraits/Icon_engineer_blue.jpg');
|
||||
}
|
||||
& .class-icon.heavy {
|
||||
background-image: url('../../images/class_portraits/Icon_heavy_blue.jpg');
|
||||
}
|
||||
& .class-icon.medic {
|
||||
background-image: url('../../images/class_portraits/Icon_medic_blue.jpg');
|
||||
}
|
||||
& .class-icon.sniper {
|
||||
background-image: url('../../images/class_portraits/Icon_sniper_blue.jpg');
|
||||
}
|
||||
& .class-icon.spy {
|
||||
background-image: url('../../images/class_portraits/Icon_spy_blue.jpg');
|
||||
}
|
||||
& .class-icon.uber {
|
||||
background-image: url('images/charge_blue.svg');
|
||||
}
|
||||
}
|
||||
|
||||
&.overhealed {
|
||||
& .health {
|
||||
color: #79d297;
|
||||
}
|
||||
|
||||
& .health:after {
|
||||
position: absolute;
|
||||
top: 21px;
|
||||
right: 0;
|
||||
padding: 0 5px;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
content: 'OVERHEALED'
|
||||
}
|
||||
|
||||
&.red .health:after {
|
||||
position: absolute;
|
||||
top: 21px;
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
&.dead {
|
||||
& .healthbar, & .health {
|
||||
display: none;
|
||||
}
|
||||
|
||||
& .health-container {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
& .class-icon {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
21
style/pages/viewer/Timeline.css
Normal file
21
style/pages/viewer/Timeline.css
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
.timeline {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.timeline-progress {
|
||||
position: absolute;
|
||||
bottom: -60px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 160px;
|
||||
}
|
||||
|
||||
.timeline-background {
|
||||
position: absolute;
|
||||
bottom: 22px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 78px;
|
||||
transform: scale(1, -1);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue