Tracker made in React for keeping track of HP and MP and so on.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
fabula-ultima-react/src/ui/CharacterStatus.css

373 lines
7.0 KiB

.characterStatus {
height: 150px;
width: 545px;
position: relative;
box-sizing: content-box;
}
.characterHeader {
position: absolute;
left: 205px;
bottom: 55px;
z-index: 4;
}
.characterLevel {
display: inline;
color: white;
-webkit-text-stroke: 1px rgba(0, 0, 0, 0.2);
text-shadow: 0 0 2px black;
margin-right: 0.25em;
user-select: none;
}
.characterLevelLabel {
font-size: smaller;
font-variant: small-caps;
user-select: none;
}
.characterName {
display: inline;
color: white;
font-family: sans-serif;
font-weight: bold;
font-size: 30px;
text-align: left;
-webkit-text-stroke: 1px rgba(0, 0, 0, 0.5);
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
user-select: none;
}
.characterHpBar, .characterMpBar, .characterIpBar {
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.5);
border: 2px solid black;
transform: skewX(-30deg) translateX(15px);
border-radius: 5px;
position: absolute;
width: calc(100% - 30px);
margin: 2px 2px 8px 5px;
bottom: 0;
box-sizing: content-box;
}
.characterHpValue, .characterMpValue, .characterIpValue, .characterHealthText {
color: white;
font-family: sans-serif;
font-weight: bold;
font-style: italic;
text-align: right;
-webkit-text-stroke: 1px black;
text-shadow: 2px 2px rgba(0, 0, 0, 0.5);
position: absolute;
bottom: 0;
pointer-events: none;
user-select: none;
}
.characterHp {
position: absolute;
height: 60px;
left: 157px;
right: 0;
bottom: 28px;
overflow: visible;
z-index: 1;
box-sizing: content-box;
}
.characterHpBar {
height: 25px;
}
.characterHpValue, .characterHealthText {
right: 5px;
transition: color 0.3s ease-in;
}
.characterHpValue {
font-size: 60px;
}
.characterHealthText {
font-size: 30px;
right: 5px;
bottom: 15px;
transition: color 0.3s ease-in;
}
.characterMp, .characterIp {
position: absolute;
bottom: 0;
height: 40px;
box-sizing: content-box;
}
.characterMp {
left: 140px;
right: 155px;
z-index: 3;
}
.characterIp {
width: 150px;
right: 20px;
z-index: 2;
}
.characterMpBar, .characterIpBar {
height: 20px;
}
.characterMpValue, .characterIpValue {
font-size: 40px;
right: 10px;
}
.characterPortrait {
position: absolute;
top: 10px;
bottom: 15px;
left: 90px;
width: 125px;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
background-blend-mode: soft-light;
z-index: 0;
}
.characterZeroGauge {
position: absolute;
top: 5px;
bottom: 10px;
left: 50px;
width: 65px;
}
.characterZeroBar, .characterZeroBarBack, .characterZeroBarPulse{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-repeat: no-repeat;
background-position: left bottom;
background-size: auto 135px;
z-index: 0;
}
.characterZeroBarBack {
background-image: url("./zero-bar-empty.svg");
}
.characterZeroBar {
background-image: url("./zero-bar.svg");
}
@keyframes zeroBarPulse {
from {
opacity: 0;
}
50% {
opacity: 80%;
transform: scaleX(120%) scaleY(110%) translateX(-3%);
}
to {
opacity: 0;
transform: scaleX(150%) scaleY(120%) translateX(-6%);
}
}
.characterZeroBarPulse {
background-image: url("./zero-bar-full-pulse.svg");
transform-origin: 10% 50%;
opacity: 0;
pointer-events: none;
transition: opacity 0.5s;
}
.characterZeroBarPulse.active {
animation: 1s ease-out infinite zeroBarPulse;
pointer-events: none;
}
.characterKOBar {
position: absolute;
top: 43px;
bottom: 68px;
left: 90px;
width: 125px;
background-color: black;
z-index: 0;
transform: rotate(-20deg);
text-align: center;
font-size: 27px;
line-height: 42px;
font-weight: bold;
color: white;
user-select: none;
border-radius: 15px 0;
}
.characterTurns {
position: absolute;
top: 5px;
left: 5px;
width: 40px;
height: 40px;
font-size: 40px;
font-weight: bold;
-webkit-text-stroke: 2px black;
text-shadow: 2px 2px 2px black;
line-height: 40px;
text-align: center;
box-sizing: border-box;
border: 2px solid black;
border-radius: 9px 0;
color: white;
transition: background-color 0.3s;
user-select: none;
}
.characterTurnsNone {
display: none;
}
.characterTurnsReady {
background-color: deepskyblue;
}
.characterTurnsDone {
background-color: mediumblue;
}
.characterTurnsDowned {
background-color: #333;
}
.characterTurnsCantAct {
background-color: #666;
}
.characterTurnsActive {
background-color: mediumspringgreen;
}
.characterTurnsHighTurns {
background-color: paleturquoise;
}
.characterSp {
position: absolute;
color: white;
line-height: 40px;
-webkit-text-stroke: 2px black;
text-shadow: 2px 2px 2px black;
font-size: 30px;
letter-spacing: -3px;
text-align: center;
font-weight: bold;
top: 50px;
left: 5px;
width: 40px;
height: 40px;
user-select: none;
}
.characterSpFabula {
background: url("fabula-points.svg");
}
.characterSpUltima {
background: url("ultima-points.svg");
}
.characterBp {
position: absolute;
color: white;
line-height: 40px;
-webkit-text-stroke: 2px black;
text-shadow: 2px 2px 2px black;
font-size: 30px;
letter-spacing: -3px;
text-align: center;
font-weight: bold;
top: 95px;
left: 5px;
width: 40px;
height: 40px;
user-select: none;
background: url("blood-points.svg")
}
.characterSp, .characterBp {
opacity: 50%;
transition: opacity 0.3s ease-out;
}
.characterSp:hover, .characterBp:hover {
opacity: 100%;
}
.characterStatuses {
position: absolute;
top: 5px;
right: 5px;
left: 225px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
overflow-x: auto;
}
.characterStatusIcon {
position: relative;
flex: 0 0 36px;
width: 36px;
height: 48px;
background-size: contain;
background-repeat: no-repeat;
margin-left: 5px;
overflow: visible;
}
.characterStatusIconCountBadge {
display: block;
color: white;
text-shadow: 2px 2px 0 black;
-webkit-text-stroke: 1px black;
font-size: 25px;
letter-spacing: -3px;
text-align: center;
font-weight: bold;
position: absolute;
top: 0;
right: 0;
user-select: none;
pointer-events: none;
}
.characterStatusName, .characterHelpName {
font-weight: bold;
}
.characterStatusCount, .characterHelpValue {
margin-left: 5px;
font-style: italic;
font-size: smaller;
}
.characterStatusHeader, .characterHelpHeader {
text-align: left;
}
.characterStatusDescription, .characterHelpDescription {
text-align: left;
font-size: smaller;
}
.characterStatusCount::before, .characterHelpValue::before {
content: "("
}
.characterStatusCount::after, .characterHelpValue::after {
content: ")"
}