import { round } from 'common/math';
import { Fragment } from 'inferno';
import { useBackend } from '../backend';
import { Box, Button, Flex, Icon, LabeledList, ProgressBar, Section } from '../components';
import { Window } from '../layouts';
const stats = [
['good', 'Alive'],
['average', 'Unconscious'],
['bad', 'DEAD'],
];
const damages = [
['Resp', 'oxyLoss'],
['Toxin', 'toxLoss'],
['Brute', 'bruteLoss'],
['Burn', 'fireLoss'],
];
const damageRange = {
average: [0.25, 0.5],
bad: [0.5, Infinity],
};
const tempColors = ['bad', 'average', 'average', 'good', 'average', 'average', 'bad'];
export const Sleeper = (props, context) => {
const { act, data } = useBackend(context);
const { hasOccupant } = data;
const body = hasOccupant ? : ;
return (
{body}
);
};
const SleeperMain = (props, context) => {
const { act, data } = useBackend(context);
const { occupant, dialysis, stomachpumping } = data;
return (
);
};
const SleeperOccupant = (props, context) => {
const { act, data } = useBackend(context);
const { occupant, auto_eject_dead, stasis } = data;
return (
Auto-eject if dead:
);
};
const SleeperDamage = (props, context) => {
const { data } = useBackend(context);
const { occupant } = data;
return (
{damages.map((d, i) => (
{round(occupant[d[1]], 0)}
))}
);
};
const SleeperDialysisPump = (props, context) => {
const { act, data } = useBackend(context);
const { isBeakerLoaded, beakerMaxSpace, beakerFreeSpace } = data;
const { active, actToDo, title } = props;
const canDialysis = active && beakerFreeSpace > 0;
return (
act(actToDo)}
/>
act('removebeaker')} />
}>
{isBeakerLoaded ? (
{beakerFreeSpace}u
) : (
No beaker loaded.
)}
);
};
const SleeperChemicals = (props, context) => {
const { act, data } = useBackend(context);
const { occupant, chemicals, maxchem, amounts } = data;
return (
{chemicals.map((chem, i) => {
let barColor = '';
let odWarning;
if (chem.overdosing) {
barColor = 'bad';
odWarning = (
Overdosing!
);
} else if (chem.od_warning) {
barColor = 'average';
odWarning = (
Close to overdosing
);
}
return (
{chem.pretty_amount}/{maxchem}u
{amounts.map((a, i) => (
maxchem || occupant.stat === 2}
icon="syringe"
content={a}
mb="0"
height="19px"
onClick={() =>
act('chemical', {
chemid: chem.id,
amount: a,
})
}
/>
))}
);
})}
);
};
const SleeperEmpty = (props, context) => {
const { act, data } = useBackend(context);
const { isBeakerLoaded } = data;
return (
No occupant detected.
{(isBeakerLoaded && (
act('removebeaker')} />
)) ||
null}
);
};