// 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 ], }, };