Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import { Conversation, VisualNovelScreen } from '@uniquegood/realworld-web-interface/lib/models/game/Screen/VisualNovel'; export function calculateBackground( screenStyle: VisualNovelScreen['style'], conversationScreenStyle: Conversation['style'] ) { const backgroundColor = conversationScreenStyle?.backgroundColor ?? screenStyle.backgroundColor; if (backgroundColor && screenStyle.backgroundImageUrl) return `url(${screenStyle.backgroundImageUrl}), ${backgroundColor}`; if (backgroundColor) return backgroundColor; return `url(${screenStyle.backgroundImageUrl})`; } export function calculateTextColorFromBackgroundColor(backgroundColor: string | undefined) { if (backgroundColor === undefined) return '#000000'; const [r, g, b] = hexToRgb(backgroundColor); const isCloseToBrightColor = (r + g + b) / 3 > 127; return isCloseToBrightColor ? '#000000' : '#ffffff'; } function hexToRgb(hex: string) { const rgb = hex .replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) => `#${r + r + g + g + b + b}`) .substring(1) .match(/.{2}/g) ?.map((x) => parseInt(x, 16)); if (!rgb) throw Error('입력한 값은 hex 문자열 패턴을 띄지 않습니다.'); return rgb; } |