mnml/client/src/scenes/constants.js
2018-11-27 23:26:34 +11:00

194 lines
5.1 KiB
JavaScript

// POSITIONING FNS
// floors prevent subpixel rendering which looks trash
const menuWidth = () => window.innerWidth;
const menuHeight = () => Math.floor(window.innerHeight * 0.05);
const combatWidth = () => window.innerWidth;
const combatHeight = () => window.innerHeight - menuHeight();
const combatY = () => menuHeight();
const combatX = () => 0;
const crypListWidth = () => Math.floor(window.innerWidth * 0.2);
const crypListHeight = () => window.innerHeight - menuHeight();
const cryplistRowHeight = cryps => crypListHeight() / cryps.length;
const crypListY = () => menuHeight();
const crypListX = () => 0;
const gameListWidth = () => Math.floor(window.innerWidth * 0.2);
const gameListHeight = () => Math.floor(window.innerHeight / 10);
const gameListX = () => crypListWidth();
const gameListY = i => menuHeight() + (gameListHeight() * i);
const gameListRowY = i => menuHeight() + (gameListHeight() * (i + 2));
const statsWidth = () => Math.floor(window.innerWidth - crypListWidth() - gameListWidth());
const statsHeight = () => window.innerHeight - menuHeight();
const statsY = () => menuHeight();
const statsX = () => crypListWidth() + gameListWidth();
const statsKnownX = () => Math.floor(statsX() + statsWidth() / 4);
const statsLearnableX = () => Math.floor(statsX() + statsWidth() / 2);
const statsTextMargin = () => 24;
const logWidth = () => combatWidth();
const logHeight = () => combatHeight() * 0.3;
const logY = () => menuHeight() + (combatHeight() * 0.7);
const logX = () => combatWidth() * 0.6;
module.exports = {
TEXT: {
NORMAL: { fontFamily: 'monospace', fontSize: 16, color: '#ffffff' },
HEADER: { fontFamily: 'monospace', fontSize: 24, color: '#ffffff', fontStyle: 'bold' },
},
POSITIONS: {
MENU: {
width: menuWidth,
height: menuHeight,
},
CRYP_LIST: {
x: crypListX,
y: crypListY,
width: crypListWidth,
height: crypListHeight,
rowHeight: cryplistRowHeight,
rowWidth: crypListWidth,
},
STATS: {
x: statsX,
y: statsY,
width: statsWidth,
height: statsHeight,
knownX: statsKnownX,
learnableX: statsLearnableX,
textMargin: statsTextMargin,
},
COMBAT: {
x: combatX,
y: combatY,
width: combatWidth,
height: combatHeight,
LOG: {
x: logX,
y: logY,
width: logWidth,
height: logHeight,
},
},
GAME_LIST: {
x: gameListX,
y: gameListY,
width: gameListWidth,
height: gameListHeight,
rowY: gameListRowY,
},
},
COLOURS: {
BLUE: 0x004bfe,
CYAN: 0x27e7c0,
PURPLE: 0x61008c,
YELLOW: 0xfdfe02,
ORANGE: 0xff9215,
PINK: 0xe766b6,
GRAY: 0x9d9ea0,
LBLUE: 0x87c6f2,
GREEN: 0x166c4f,
BROWN: 0x583108,
BLACK: 0x000000,
RED: 0xff0000,
WHITE: 0xffffff,
},
DELAYS: {
MOVE_CREEP: 500,
DAMAGE_TICK: 500,
ANIMATION_DURATION: 1000,
// wall: [500],
// spit: [300, 500],
// gravBomb: [300, 500],
// gravBlast: [300, 500],
// chargeBall: [300, 500],
},
SKILLS: {
LEARNABLE: [
'Attack',
// -----------------
// Nature
// -----------------
'Block', // reduce dmg
'Parry', // avoid all dmg
'Snare',
// 'Paralyse',
'Strangle', // physical dot and disable
'Stun',
'Throw',
'Evade', // actively evade
'Evasion', // adds evasion to cryp
// -----------------
// Technology
// -----------------
// 'Replicate',
// 'Swarm',
// 'Orbit',
// 'Repair',
// 'Scan', // track?
// -----------------
// Nonviolence
// -----------------
'Heal',
'Triage', // hot
// 'TriageTick',
'Throw', // no dmg stun', adds vulnerable
'Charm',
'Calm',
'Rez',
// -------------------
// Destruction
// -------------------
'Blast',
'Amplify',
'Decay', // dot
// 'DecayTick', // dot
'Drain',
// 'DrainTick',
'Curse',
'Plague', // aoe dot
'Ruin', // aoe
// -----------------
// Purity
// -----------------
'Empower',
'Slay',
'Shield',
'Silence',
'Inquiry',
'Purify',
'Purge',
// '// Precision',
// -----------------
// Chaos
// -----------------
'Banish',
'Hex',
'Fear',
'Taunt',
'Pause', // speed slow
],
},
};