From 5420e87c3ab0ad8bb29bbba41423c8a29ca57b36 Mon Sep 17 00:00:00 2001 From: danvim Date: Thu, 1 Oct 2020 23:54:29 +0800 Subject: [PATCH 1/4] Implemented RevolutionCounter.tsx --- package.json | 7 +- src/Game/getInitialState.ts | 1 + src/Game/types/GameState.ts | 1 + src/components/App.tsx | 4 + src/components/GamePlayer.tsx | 9 +- src/components/NavBar.tsx | 15 +- src/components/RevolutionCounter.tsx | 375 +++++++++++++++++++++++++++ src/theme/buttons.js | 3 + src/theme/{index.js => index.ts} | 10 +- yarn.lock | 52 +++- 10 files changed, 454 insertions(+), 23 deletions(-) create mode 100644 src/components/RevolutionCounter.tsx rename src/theme/{index.js => index.ts} (88%) diff --git a/package.json b/package.json index b603353..126b9ba 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", + "@theme-ui/color": "^0.4.0-rc.5", "@theme-ui/components": "^0.3.1", "@types/hammerjs": "^2.0.36", "@types/peerjs": "^1.1.0", @@ -53,7 +54,7 @@ "peer": "^0.5.3", "peerjs": "^1.3.1", "pnp-webpack-plugin": "1.6.4", - "polished": "^3.6.5", + "polished": "^3.6.7", "postcss-flexbugs-fixes": "4.1.0", "postcss-loader": "3.0.0", "postcss-normalize": "8.0.1", @@ -67,6 +68,7 @@ "react-dom": "^16.13.1", "react-hammerjs": "^1.0.1", "react-modal": "^3.11.2", + "react-move": "^6.4.0", "react-popper": "^2.2.3", "resolve": "1.15.0", "resolve-url-loader": "3.1.1", @@ -108,6 +110,7 @@ }, "devDependencies": { "@testing-library/dom": "^7.23.0", + "@theme-ui/css": "^0.4.0-rc.5", "@types/dat.gui": "^0.7.5", "@types/jest": "^26.0.10", "@types/node": "^12.0.0", @@ -116,7 +119,7 @@ "@types/react-dom": "^16.9.0", "@types/react-hammerjs": "^1.0.1", "@types/react-modal": "^3.10.6", - "@types/theme-ui": "^0.3.6", + "@types/theme-ui": "^0.3.7", "@types/uuid": "^8.3.0", "@typescript-eslint/eslint-plugin": "^3.10.1", "@typescript-eslint/parser": "^3.10.1", diff --git a/src/Game/getInitialState.ts b/src/Game/getInitialState.ts index befd1a7..b5245bc 100644 --- a/src/Game/getInitialState.ts +++ b/src/Game/getInitialState.ts @@ -40,6 +40,7 @@ export const getInitialState = (players: number): GameState => { dirtyTiles: [], turn: 0, rayDirection: 0, + totalRevolutions: 3, revolutionLeft: 3, board: getInitialBoard(), scoreTokens: { diff --git a/src/Game/types/GameState.ts b/src/Game/types/GameState.ts index 8a4675e..c927f01 100644 --- a/src/Game/types/GameState.ts +++ b/src/Game/types/GameState.ts @@ -6,6 +6,7 @@ export interface GameState { dirtyTiles: string[] turn: number rayDirection: number + totalRevolutions: number revolutionLeft: number gameOver?: string board: TileMap diff --git a/src/components/App.tsx b/src/components/App.tsx index c167e56..dd8e9c3 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -9,6 +9,7 @@ import { GamePlayer } from './GamePlayer' import { withAlertQueue } from './common/AlertContext' import GameRenderer from './GameRenderer' import { Box } from '@theme-ui/components' +import RevolutionCounter from './RevolutionCounter' export enum AppState { HOME, @@ -61,6 +62,9 @@ const App: FunctionComponent = () => { // } + + + diff --git a/src/components/GamePlayer.tsx b/src/components/GamePlayer.tsx index db5a5f3..8f4c821 100644 --- a/src/components/GamePlayer.tsx +++ b/src/components/GamePlayer.tsx @@ -90,7 +90,7 @@ export const GamePlayer: FunctionComponent + {hintText} {game.state !== undefined && interactionState.axial !== undefined && interactionState.popperCoord !== undefined && > = ({ state, setState }) => { +const NavBar: FunctionComponent = () => { const [colorMode, setColorMode] = useColorMode() const toggleDarkMode = (): void => setColorMode(colorMode === 'default' ? 'dark' : 'default') return ( - + // eslint-disable-next-line + // @ts-ignore + // eslint-disable-next-line + {/* {state > 0 && } */} @@ -29,5 +26,3 @@ const NavBar: FunctionComponent> = ({ sta ) } export default NavBar - -NavBar.propTypes = propTypes diff --git a/src/components/RevolutionCounter.tsx b/src/components/RevolutionCounter.tsx new file mode 100644 index 0000000..186cfae --- /dev/null +++ b/src/components/RevolutionCounter.tsx @@ -0,0 +1,375 @@ +import React, { FunctionComponent } from 'react' +import { Animate, NodeGroup } from 'react-move' +import { TAU } from '../3d/constants' +import { getColor } from '@theme-ui/color' +import { BoxProps, useThemeUI } from 'theme-ui' +import { Box } from '@theme-ui/components' +import { darken, lighten } from 'polished' +import easeOutQuart from '../Game/easing/1d/easeOutQuart' +import { useGame } from '../Game/GameContext' + +const getRemainingSlices = (elapsedRounds: number, circleIndex: number): number => { + if (elapsedRounds / 6 < circleIndex) { + return 6 + } else if (elapsedRounds / 6 >= circleIndex + 1) { + return 0 + } else { + return 6 - elapsedRounds % 6 + } +} + +const isPieEnlarged = (elapsedRounds: number, circleIndex: number): boolean => { + return elapsedRounds / 6 >= circleIndex +} + +const getCoordinatesOnCircle = (percentageRemaining: number): { x: number, y: number } => { + return { + x: -Math.sin(TAU * percentageRemaining), + y: -Math.cos(TAU * percentageRemaining) + } +} + +const BORDER_WIDTH = 0.08 + +const RevolutionCounter: FunctionComponent = ({ + ...boxProps +}) => { + const [game] = useGame() + const state = game.state + const preparingRounds = state?.preparingRound ?? 0 + const isPreparation = preparingRounds > 0 + const totalRounds = isPreparation ? 6 : (state?.totalRevolutions ?? 0) * 6 + const elapsedRounds = isPreparation ? 6 - preparingRounds : totalRounds - (state?.revolutionLeft ?? 0) * 6 + (6 - (state?.rayDirection ?? 0)) % 6 + // eslint-disable-next-line + // @ts-ignore + window.state = state + console.log('ray direction ' + (state?.rayDirection ?? 0).toString()) + + // eslint-disable-next-line + const circleIndexes = React.useMemo(() => [...Array(Math.ceil(totalRounds / 6)).keys()], [elapsedRounds, totalRounds]) + const { theme } = useThemeUI() + // eslint-disable-next-line + // @ts-ignore + const bg = getColor(theme, 'bgs.2') as string + // eslint-disable-next-line + // @ts-ignore + const accent = getColor(theme, isPreparation ? 'blue.0' : 'yellow.0') as string + const shadow = darken(0.1, bg) + const highlight = lighten(0.1, bg) + const { sx, ...otherBoxProps } = boxProps + return ( + + + + {`${totalRounds - elapsedRounds}${isPreparation ? ' preparation' : ''} turns remaining`} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x.toString()} + start={(_, i) => ({ + remaining: Math.min(0.9999, getRemainingSlices(elapsedRounds, i) / 6), + scale: isPieEnlarged(elapsedRounds, i) ? 1 : 0.3, + x: isPieEnlarged(elapsedRounds, i) ? 0 : i - Math.floor((elapsedRounds) / 6) + 0.85 + })} + update={(_, i) => ({ + remaining: [Math.min(0.9999, getRemainingSlices(elapsedRounds, i) / 6)], + scale: [isPieEnlarged(elapsedRounds, i) ? 1 : 0.3], + x: [isPieEnlarged(elapsedRounds, i) ? 0 : i - Math.floor((elapsedRounds) / 6) + 0.85], + timing: { duration: 800, ease: easeOutQuart } + })}> + {nodes => ( + + {nodes.map(({ key, state: { remaining, scale, x } }: { key: string, state: { remaining: number, scale: number, x: number } }) => { + const isLargeArc = remaining >= 0.5 ? 1 : 0 + const { x: arcX, y: arcY } = getCoordinatesOnCircle(remaining) + const maskId = `mask-${key}` + return ( + + + + + + + + + + + ) + })} + + )} + + + {({ rotation }) => { + return ( + + ) + }} + + + + + + + {totalRounds - elapsedRounds} + + + + + ) +} + +export default RevolutionCounter diff --git a/src/theme/buttons.js b/src/theme/buttons.js index e3d97b6..f6b41e0 100644 --- a/src/theme/buttons.js +++ b/src/theme/buttons.js @@ -99,6 +99,9 @@ const buttonColors = { } } +/** + * @type {Record} + */ const buttons = {} for (const styleName in buttonStyles) { diff --git a/src/theme/index.js b/src/theme/index.ts similarity index 88% rename from src/theme/index.js rename to src/theme/index.ts index 0b85ba0..3147b6d 100644 --- a/src/theme/index.js +++ b/src/theme/index.ts @@ -10,8 +10,9 @@ import text from './text' import wells from './wells' import messages from './messages' import badges from './badges' +import { Theme } from '@theme-ui/css' -export default { +const theme: Theme = { useColorSchemeMediaQuery: true, colors: { ...light, @@ -24,6 +25,8 @@ export default { danger: colors.red[0], warning: colors.yellow[0] }, + // eslint-disable-next-line + // @ts-ignore text, breakpoints: ['40em', '52em', '64em', '110em'], space: [ @@ -65,7 +68,7 @@ export default { }, radii: [0, 4, 8, 16, 32], shadows: [ - null, + 'none', '0 2px 4px rgba(0, 0, 0, 0.2)', '0 4px 8px rgba(0, 0, 0, 0.3)' ], @@ -87,5 +90,8 @@ export default { links, dropdown, wells, + // eslint-disable-next-line + // @ts-ignore styles } +export default theme diff --git a/yarn.lock b/yarn.lock index 5039e71..92d9897 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1774,6 +1774,14 @@ "@theme-ui/css" "^0.3.1" deepmerge "^4.2.2" +"@theme-ui/color@^0.4.0-rc.5": + version "0.4.0-rc.5" + resolved "https://registry.yarnpkg.com/@theme-ui/color/-/color-0.4.0-rc.5.tgz#d638f089d2030e17438810b2b760fc9704850cc4" + integrity sha512-cmKnIXKC/br+qDbzmjaHg0YDgDuGdN7slKwUc2j3aSLmvx7aKdiSFBkVUMGeFhgBy32y9SIH6jmT6g3UqhogmQ== + dependencies: + "@theme-ui/css" "^0.4.0-rc.5" + polished "^3.4.1" + "@theme-ui/components@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@theme-ui/components/-/components-0.3.1.tgz#fe023e156c1e1c076d5f2258466426e94adc2765" @@ -1800,6 +1808,13 @@ resolved "https://registry.yarnpkg.com/@theme-ui/css/-/css-0.3.1.tgz#b85c7e8fae948dc0de65aa30b853368993e25cb3" integrity sha512-QB2/fZBpo4inaLHL3OrB8NOBgNfwnj8GtHzXWHb9iQSRjmtNX8zPXBe32jLT7qQP0+y8JxPT4YChZIkm5ZyIdg== +"@theme-ui/css@^0.4.0-rc.5": + version "0.4.0-rc.5" + resolved "https://registry.yarnpkg.com/@theme-ui/css/-/css-0.4.0-rc.5.tgz#0fa254f90eecf6d8df28b1e3b4677d7fc3338d82" + integrity sha512-KJly9bIbfcMFwHiDB6WZ5bTMgjJSQssBFkyqETA1GpfK/M7AwpupPeyLzc65K8tYatMFXlUQmYo9JNPtLYawwg== + dependencies: + csstype "^2.5.7" + "@theme-ui/mdx@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@theme-ui/mdx/-/mdx-0.3.0.tgz#8bb1342204acfaa69914d6b6567c5c49d9a8c1e6" @@ -2120,7 +2135,7 @@ "@types/testing-library__dom" "*" pretty-format "^25.1.0" -"@types/theme-ui@*", "@types/theme-ui@^0.3.6": +"@types/theme-ui@*": version "0.3.6" resolved "https://registry.yarnpkg.com/@types/theme-ui/-/theme-ui-0.3.6.tgz#e7d25ef4fdaf6d3e69ef483858210df99c35c1fa" integrity sha512-VAw3NA1Ye0dMfWM4/nfDPGTL5dFuPC1FHpDnLleEh6jRmqp2OliaJIeZnffmDVnGmb9iIvCwdaLDYAmltrnypA== @@ -2132,6 +2147,18 @@ "@types/theme-ui__components" "*" csstype "^3.0.2" +"@types/theme-ui@^0.3.7": + version "0.3.7" + resolved "https://registry.yarnpkg.com/@types/theme-ui/-/theme-ui-0.3.7.tgz#67346df27d02045c7f06f9684c88e3a5622a456d" + integrity sha512-4hzDlDhlFYmOdXBLZTbO4N2hWfuGo1N77AcIMaSyDGEyFbdZSpelMLTkEtNzYT8yQWIl3x0WITiBzjqkfc6dUg== + dependencies: + "@emotion/serialize" "^0.11.15" + "@types/react" "*" + "@types/styled-system" "*" + "@types/styled-system__css" "*" + "@types/theme-ui__components" "*" + csstype "^3.0.2" + "@types/theme-ui__components@*": version "0.2.5" resolved "https://registry.yarnpkg.com/@types/theme-ui__components/-/theme-ui__components-0.2.5.tgz#65ef4e160e2e0cf7c52ae220f6579a707d33667d" @@ -4143,6 +4170,11 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +d3-timer@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -7095,6 +7127,13 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.4.1: array-includes "^3.1.1" object.assign "^4.1.0" +kapellmeister@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/kapellmeister/-/kapellmeister-3.0.1.tgz#419b715cd221acda3db79892caedf63e1c9f7d25" + integrity sha512-S7+gYcziMREv8RxG46138mb1O4Xf9II/bCxEJPYkhlZ7PgGWTlicgsyNad/DGc5oEAlWGLXE5ExLbTDVvJmgDA== + dependencies: + d3-timer "^1.0.9" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -8399,7 +8438,7 @@ pnp-webpack-plugin@1.6.4: dependencies: ts-pnp "^1.1.6" -polished@^3.6.5: +polished@^3.4.1, polished@^3.6.7: version "3.6.7" resolved "https://registry.yarnpkg.com/polished/-/polished-3.6.7.tgz#44cbd0047f3187d83db0c479ef0c7d5583af5fb6" integrity sha512-b4OViUOihwV0icb9PHmWbR+vPqaSzSAEbgLskvb7ANPATVXGiYv/TQFHQo65S53WU9i5EQ1I03YDOJW7K0bmYg== @@ -9418,6 +9457,15 @@ react-modal@^3.11.2: react-lifecycles-compat "^3.0.0" warning "^4.0.3" +react-move@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/react-move/-/react-move-6.4.0.tgz#9163a87c62fff94bf6e6980685c713739192650e" + integrity sha512-TNyDQESDZ0xsejnxFTQ9CKarJQN6NbgpImrvIEzOVe7+jt8y7uTjJwWxqFTfmvwskIs+RmUbCWdN7PAbGyhrdA== + dependencies: + "@babel/runtime" "^7.10.3" + kapellmeister "^3.0.1" + prop-types "^15.7.2" + react-popper@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.2.3.tgz#33d425fa6975d4bd54d9acd64897a89d904b9d97" From ec13f006fdbe34acaa12b342b87c5ec49a01a5e0 Mon Sep 17 00:00:00 2001 From: danvim Date: Fri, 2 Oct 2020 00:01:41 +0800 Subject: [PATCH 2/4] Implemented RevolutionCounter.tsx --- src/components/NavBar.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/NavBar.tsx b/src/components/NavBar.tsx index b2ae4a4..bfe697d 100644 --- a/src/components/NavBar.tsx +++ b/src/components/NavBar.tsx @@ -6,8 +6,14 @@ import theme from '../theme' import Button from './common/Button' import Icon from './common/Icon' import { FunctionComponent } from 'react' +import PropTypes from 'prop-types' -const NavBar: FunctionComponent = () => { +const propTypes = { + setState: PropTypes.func.isRequired, + state: PropTypes.number.isRequired +} + +const NavBar: FunctionComponent> = () => { const [colorMode, setColorMode] = useColorMode() const toggleDarkMode = (): void => setColorMode(colorMode === 'default' ? 'dark' : 'default') @@ -26,3 +32,5 @@ const NavBar: FunctionComponent = () => { ) } export default NavBar + +NavBar.propTypes = propTypes From 7546d6a82ca6227b5f9031a76f2dfa33f85dfe27 Mon Sep 17 00:00:00 2001 From: danvim Date: Fri, 2 Oct 2020 02:12:14 +0800 Subject: [PATCH 3/4] Added sun object to scene --- public/images/sun_segment.png | Bin 0 -> 72647 bytes public/images/sun_segment.svg | 291 +++++++++++++++++++++++++++ src/3d/constants.ts | 7 +- src/3d/extraObjects.ts | 11 +- src/Game/GameWorld.ts | 17 +- src/components/RevolutionCounter.tsx | 4 - 6 files changed, 319 insertions(+), 11 deletions(-) create mode 100644 public/images/sun_segment.png create mode 100644 public/images/sun_segment.svg diff --git a/public/images/sun_segment.png b/public/images/sun_segment.png new file mode 100644 index 0000000000000000000000000000000000000000..b9986bb5e6c4d4f547f37fa95e4a95170381ae0f GIT binary patch literal 72647 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%0D2WO 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�avkZv95HRPpB@Xr3!~teNy4NtE z#Ch^{1Im0pBVb^QoyRmFI@W7V;*r*Kv*yDe_T?Mm>proVz8#Du>G;8RF{dwXzfq4Kd{ljfV+DUsli)J}s_>no550z(E& zRwqNf7el3~rws%;Nc8cWU6m6ZW%H2Ai57mn`U%mJm{j39^+QnX{$}?fr-)h@fXypw zZ~~CQXD2DBeirqduXoq8xq01q0-Qao01)R%L;4|;z%y+-r>(_qil-HWH~6Fkp$v~R zq7H~jsm=10%&Y}jP2Y4r39%M zfPulu+wP%)wE=BXbMqVZ0Ot#@d$lsJ=|R)CAt=y+w_yz!{Tc>`_O%(?%Vlm);dE=O zYPG;=`DvhI>mRhsQSF$+PWoXo&8@e<3VbfQuYk_x`gNd{))23v`V#|EV3`OtAwkI0 z4hN7_%oR&tL|TP*cF$n|83p6qD!g3#vRueYrUCb?Qonvv2RhyOsM0-7_h@4(yGc+p zfzXVS_%s`|A_MH2>Y2fIkEH%$DBzmv`m4+~j-SQ8=QBu3Q%Ih!6=gIu<7WvnSmt}S z;b*7}UNsG*g4%k+nAgkkqs4kR@C1t5$sjrgVE0IHd!IiWRyreUaedplij`61&oGbC z-WXC$V@%ta?jx|1sJxv7+z58YW zq!>+}w^+m04d@@E(=RS26{rfNgHIo8>Fx8j3{rkRU+&1R4Q@vxps1&y&yL6Q+C>e- zI-q(8HTWFgs|X`%Vfd)&XLz>Qp_Ds-m4e2<~7VLxEYR+mW$)f}@KfwZ+H zKVt*Q4j$L~a{rM2`X~701fsDSTU9^?MoRK&3beC=nSr(Nm4iVQ#W2!5n`2|?+`zT` z0(XjK7yddnIjf(eAIEc}EyOuH)%UM~ zVU}ADg5>OeR+9>7AKB~|V5@xPStdV@)-I?1x~Z1bKLHp`yY8Z+pKS+r*7d zORF87d9z9rGT>uEoAOIeNo9L~0h*+I4s(TJUc;<*R!TW`)Kt?(Jw*e!vp@!z0;)3P zzVghC>e+%QvbrHM7?1*1zf&Mi@dPBu9Du>rvf7@=DynU_X~$(u22+F00kwXofom?s zgiTgS&tDYWIm_!5cyvmqE3?!npg1sw5|$Vsh3*kmFii>e_mg0^t3W!>f_>fqplqoL zG`4(G7nIab(H)}vBl%k|9(N*o1MRWF)0+MY-isN37mA;T=1rj*7$b;Us-FaX1gxe) zTJlhWvkHo3joeqp*u7=h$CkUPje#J})~m@&6&RDUS)V^RSS@O12E#_#lq*zD-ygJ9 z7#qL^y|)%L+hXq(5<>yt`q?00r8JVk4c{Mij(F8@Yy5831@8A;7e2zOS6K+DZ^P*|W@O zEp(dGBo?{&(3!>-waw-kB<5^to6{sCnd%9&mb_0&vf~V?k$(4FYi;Lkb`3#n^Kqg4hG<%&uw%YIcHQ$3{L3y{MY{`d`wB)kkLl9it2kw+G z5C+5iS(tigVCv#L#e=FFv#{||GvUi`GOv_c9B2mIIi`&H{gmKzQeeLm%u|Xjou_nc zMdV|A1#|qL8G@ z#$41Luu@Dw`Z3TbnnU{89tuo4m9*?bPWF2GDc`;ydd~xZIfxD*$Q)3=PD35r*z1dZ z(Kl|q1IJ+iCdnQ`$1WcnKsG>Ww!43x(TzoCt~GT#A@$(#x^bI4-$Ch+uQe)S9y8_V z@CxUc|CiJ`ibs93s^(Smxvj)_PHSLT1{}D?DrRS#si|Xc$imu|%CRd@T3W{%=Q-l9 zGkAuiEb{Yp=Kx8?_3@+=x*7Vyp#ub=(^S6~M3+DE3yPG? z#e36t=aA~zj3Hay)X*mD9Tg^LU>21D5pz-U27*nC#ms#}sPHrjx)yaO@#0YfY%Y_A>w?Ffb`#^i$@qv z&v8GT#AYhrk1h0GtY)y-QU0t_zr`XpcDh$7S=A&} zvYVOCpxN9LT?plQ!CfoQV=!j0>FoMAD9%2Z#>5C{)Ka?>NQp&NiO}S)XEo7&(fj+_ zb%wukUj|N7F-zi+7E4o2U36+ELul?xGej$sNjnGBUqF_@PAJJKEXSvX2t;|!(1AgQ zB?8PLDyESx^ExAHyz3f_B9$28IRLsg_M&_d#gI00={_Ew#$jcAS#t#%Sv@^8-_N-! zIp__xJ%Ek9PVISjP_G?;PN1W%W<~VS{Gxu^WpCAY<}}uM2WmdgGj9 zJS)m*dMJ1#yeQT}H5HgGot+L4$yqMBCAVS3Ie}-Ws zI1NY{?Hl0XOM+)cG^(VPS!%W+b?T*-siBc9(vxRKuDes=>K9k3ftA-aLiH!%zY z=6DMu0z__O))A^V5of^|zVMcTXL-Q?9e1(Ce~E~n0dR_+9{At_F;Lyus+8{XN+8HH)R}f+z^a1_kZ_WBI-j?Y zSQ3y1I5^_?O;S`bkjiP-61WZ+k|VC7$yKL045xgoo3?)@HL?em1C4LW9&whrv(H(r z905$h#e)K?aM=UP1(5dQC3}#XKi`RM@!07D4nw4N?nkX#qqA8Y6)Ky+&nwzv#CR^+ z6(YtWCiF3YbM4w50A|TSO~kOhwY_?|uS3iHLkg!`d-7mu%@T#Yt#0A*d;&8D3=(8Eb=3Zdm5`2OhRx(8WGEU4MB!9Wn`badN~x`3)i{v*vg#>b1w}~3 z$Kh*YLZJr)z2!GiW&jEQMV1v_p#srMp*Gd2U7_>P znszNnzu$FjrsZYv>gLK^iIf%IdnON@43R4^Dp4A!Ezjc>*a-{E-vcBjU>alrs;s!0 z{ch*zK`B9JfkU*AX%NaPX!$#IU*WXLoL^BrO9>~A8+D0FB_7n)Lsdv~eCL1xa|~ie z3gSR29jTxLUo(Kr@L9&&wE?9BlZR02E0(*RQ&JHpBn<<^;4^2v$3e1+nyvSo0gneS z2%bJkPt#<$+h=F7n_1nI9+2ia25n6SyuHsJw7R&?X0B698^|@_b9TM09|^Jw_!{u~ zL?;4Ad(RT30<;0F@-wA*YD%n9%ql&%Z2{^5wW(Q}A+%HzK)Qcj8yPk;KoS^hUcZ4# zhE2W?J$oAe5CQ)T^YBmQleNa_cMUwP=`Z351pEwup9KRb+wZ>SW>F=bYU#@zsX<(% zgrVRd&#RB9HgyA$Y^k$4>H*TO8OV7np6+Ag+U#?J%N5XUVlhkHCp}XJzDBjoebOn5 zRK`bbGuiWJRMgAf9_wpkD2}r^HyFLCIK5Y)bB>yRL{Ewt7!Y+fg_1Je5n?VT?``y= zNNTaT7W;v^!*@7QQF;vkS zuPB{tbfDPhBd-HgD78eP{5@pQ$j{E}0KljYF0TN|RVei8X9v!@iY6x>Sz`zsbR7&2 z0qDj(cW-UK)^!!owe~m`{Q;mX5SqsnAT_{Tn|mEdMT)(AETG*lFE#O+Yis#T_I;k_ zRnr4%=>ksoS*3G*MIp_Nv*OFzUKynrP;uiq6W+&rib`Mgq%}?T-|h6jr0e?jQU4FE~_*|$c!QX$a2sLpe7Lw?Q6M~;WYg*ElocIr^RF)LC#>x?-xj)x0}bA;iHF3Qv?0;(0V==Q-dzK&copbEojn&^0o4dyjg{_2cX*n z>-EO3tqr^}rIXt==kNCEv90tpAEyE9b6MHk=l`vSl3qgv#Vq}~do1HPsZG5kDe9X* z6#;s&qHb+dHTS-6U#GFs*{tDWNsFSXQl5iV&qf7ZJ4S^|Ry~`nduOjV+44=|67}cb zU~Juo43=}cHjltC4=&~t9q3#GQm2fTajbUIIt-n~dLQaIQ!u;9M?)&xWc5J@peag! z{{`Ubvn3pIEaq%|Ahi&ripmlSSvh4Jz0A8Ru9FngrbLq|rKETk711Rg@m$^siJw!P zN?Pub;f)nhM1nv~04S!8mgDxhh2}IWC=#TqJ*QVLIYgjQQ`56)2JNC|#unUdY}zQ{ z1q|WmasSm{l>Z!;SZUug@U*7?0#9R$Pebw701S1fA`n=HR`ru&VP|jzDWc+w!KeAx zRWujzpPbbWIwmC+f(B$m2G=Iulhngr+@@Dv7oh1Za8@~+ta}DUTba~Ii`(?@=;77_ z<|2lZR8tISLjj5+nBj4&IDHn?LXV|R=WMEG3!4O#*#@8Is-iY_d#ukh+vfsjVLLG9 z_|3)&M+=oI1-u43w()j6BdeVWRNMP*>v37jE2FGThUGJ}oo;O;VC})1@MpYOnOgF z001BWNklE zDduq%FuR%TC`xcyuk<;EvuCyEwTJfr;Y>M>bG9P!8gs&sgUkXL?zK@nXH)Yu?R}lC zY*R29@EYqM4ODssRfiS~$KJT&YUg#P;Ih(z1bj1D>I|7uO9&0r->8m(VAWk)sGtC_ z$?O;0mX~xLK>bYl+@8zM*J35t&Vf}`ay2370Ay|k?Xu4XzgX4jA-t+ zU#@F#n!d);#-wUpd!lm-17PS}So8V3D5!a&PlB519s+5gwEOz5=;dOcybmtY(^m$|@*UmmOuM6p>~<;|E-@8dzV zv90s94S@ZSEpU#arvb_I19Z4i(P=c%4WBA05aFWbPHgY=NTjwSjy12 zy$TWyF5S3YXUJ6yryIoyPz|G1=jbuo%1vcj|5Pka%TKM zHvQ}as1d!`~rjksf;QqIPr$z^YJ(Y8ARZjFQ^Ho)}g;S0x?E>jaTxVmG zy9{{gjEQp#g3Y+-z!Xxx=OgMGW~&!`5}ftSph_@l zkY#YysFq}vH?=k`R?`EcyI$7ziB7VNGX+rML=7|#KMe2ZaHehtw?2Y<4WgESgHY)4ST!Yi8oCJotcqUd3 zP5C4U97Hiq7>AA4#M=a-UAVNQAzQmi;^D+1o5ujzgU^k#-PevcIc{^)xdtqta1*ix zok^=G!@W3321r&0XLpY+)~$Cp&i8Lu`T=0KrQ2R3esk4=xAg#Qt(>rb57%rxM)dKR zm)B5B4?*Q)!|Wx2=pc^;#a*DJc{_s2Yt6N>LDH1{f$^r|9s*Gt)5)gyb~|X!9t0ts z@r`Oawdb;{uv!$%eLV-zs-Sxs2eh_3CmFHrp4Vu=HA82BgVwQL#|T77`I#hx*lQgF zRM;G@2GVh;O5!*O&#j6lpVM_{g-nLhA*67Ck!*P&$9oQF;4=c)ye283iQfZ3WC3sj z(^AXR0FvzXMS>84W`R(v#X0xw^pX$+g2}maoz>4grl@}%TfRxyDUe$CfCpV~?0Bpw zn2=)88yq$&D2*|NvWYo`H1VHi=O?mp@ao1wff;`c)qjS+`qFPp6$l@@y=}nLntt*0 zFW@qM2GAdAA(AZf632;J3aR#0IBaTiuBn}@TKY`$&UID*efE2agY*zPuu|!4a|fTG zbsAWOHn7)jm6`iMH7qR_vvZvjlf3ob1Is3cb7SuvaT9coP`qbO;2ki6)1Wgqk>({zgfD~OSoSYPtA!ej_&hl)Vs-|v$r9Hl> z>y^;Ro}IoyQA&XXkle~28NH+)51&Jge@t(FWi4y7E-mTU>2u=@$TVh^kgqulyjhE% z{{(I80iz%DI5zpoV~z)KkzY^gxSYQg3h2evL%8)I_7cF!AHaCa?~q9wIN1 zKH{RN?$*cdfCe6W;|hej`+A$+gX*4?QE%Ui*7dHVf&v-TdSmkM&&kH;gs9L_NqJ|a zMlJP#3P8pNq$Z3QMP=e^43`l(0SHMYod+o)I~iuh$Ax+o6oXmuC^r2ZBqdCm>S^G~ zDrr_Xvm!e9n9yRo=cFSEf(PFMo<5Q8E=GV;K1tn7k%I)42B`#{;$CMB^>) z(UeSs$E;8;l99;zZq!(cDfK%Rg`utuILm!#p|eRM@^v^Fj2T*2;x*yMH8Gr&jMTN> zJ=~or&fb@xlaq&(ODD0_KDV$riQ1q3`zcx{G2 zgUU-gp$uzYy9c8SmGd$Klz}bMx8>deq|6l(3w!dIT??V&uI<&WmowvgHa)L15oi|3 zakjgtl#Kxdv@VS=2}JvgU+Z0KtCDN+{h6BOs=Jj+mk*xRg;=)zT≷T6j znv^7*cw}nmKnY2s1Jt6DQZ{^(bd&*f3{q@(-aTm;fJgTQ_Y4wqJ=EyHv730*0m)uc zQLV?CVbS1LTbOGSmRPaOARC>n-m~XtRxbTo97E|;)3q{7O(Ic-(ufG#Iqh|>is!xs%qc(X2w)lvItljtS`3bh*iM_fsn-qglr8n3?JGL)$rd<) zXrpl2_ltq39s7Avi>2Povu9h>+H~g(Z711AroNMt%n7qDM8_^rt^nNvX#F#+!6(pH zD|_SLptWx84FT+9wnqTY9;H`qMbWZBkJ01`khCSc;|PGuGjyPsfsrpS06C8_b?ov0 zoB}A;=We&W4^Tm|fUk|o<3nsgJ2<7ZQ9<)OyBtUbWmpXvRChKe&+jRt1v)c~&X9#l zYFY1lcWhw8usN#$n^t)ZV+soh6)dX_pTA~JViLh8P>)4hWmJY{Yy+dFaP~?sjV){f zLyGUDB&FGsj(kk${G#A&iv(z9e><48BJy7OET0dSeT{X`pqin!sHtATWNW?$kgR?l zf>Ba6OA=GQ=HoI89L@&9?R}dajqLuE`QFq8ZJ;srRVA~XSHLt@WtJ6A08srVqWp9G z#Ph%NRw$gly{*C1nkoW*NfpVWRhM;j^cx7b zsjQ#RX8>m(YL(6@s{In5t)x;0Nrfn;nSRMwA{h(cLmis0FTsI>fXe{$BLFEDxdvlN!C>_a4U+kgo;L}6j zc*S)9r=33S0pjGw+4VJu+phEj&DNvcwzlTkV~l-+?X7@PE9qnH9Ka3tx)`vw)?U*4 zz7C{1;PguEmEh{(GT-xZvjkNcr4O!i3y2M{Ue+;m+JdSnpw#EBc8NLWbho@-0F;2$ z&i9)Npe0dhSHY$LsExsL4A91MHtK1HQO>kyRkZYt1Rww~rg0m(2GlBxX{%-<(N5Ip!c@RWVu5OB6- zl<3vqiGr%CbQhZsjI(PVnH)B`pk4zL;(WA5_{=j zl0h|(3$el}Cna4=;WRb0QBnciQEcz2shcw;3#n$PM9d|H*kT7T**QZet=(j!qXOeX z`J6hcCom#ssps|fqiE3=d$xM{Y=ToW^R-Pcb3D{JTcl)}&7{@;cJNrTwtG-%>Lw|e zcJ0JIzmw%PTy+g7N@THxGccZXot+!Rk`fyHwT)DTbp=3e&W?Z-=-cu89l;`inf|~K73}v;Ii;}%gi}^Jxz94( zdvTz)ULG?|8;qiY4KQU$9XBcy##TiwN~f(ys^V70g-XR99S{;BZlPX-@H}m@D`J&bIF7;`4ea2@q44QJ8mC9+> z6w*Xi`-}_$HjXTL6~&ZaH~BdxdM+Q!*(j4qWmKKiRL4|KFoWhu$A{uLH=RDa&vttl zII+zDmXATl_O;m3Jix)>(CIHz{)@YQ^3xZI8?J~pVpw+ArNXRxJ6;3W%j| z*T#cRAdt<+tI)}Po2qo~L9pq76u^E~*<`3pJD83+13oF9V^En4XxVZ{UUy-++c}Er zxrEQW&Zb)JLdV0{+VG76ItIb{^Mczaq!#mQqc|Su!+~)QD1jQk*@e`^Of;Zr8lvBE<{GQ4@s1KOyY_I{#3!pl(om-x$n_OC_0 z`@m`K`w~2@>2Ex75BvFV0O3awAvH6d6;QL~4=JE4mN`Q#ib9HXOaKbB_I$9iMSk}o zhEX5?$u{>u@JJxZd$KF3mYg`$v+Y?GRJ*s8N{U)6*Y0?6eXNF>@+gXv55nMb+Ou*w z5sX^@oW2&*gb|`s0Z`BwpJYVWEUUf1skg#`jf(E`oJ|JUJ%CLCO@hL%txjNQAgV!Y ze5EDy^b(AKCN{G`(aDO!$>Whg@ubtA9ZFO5 zdhH5$)a!ua{*A+=p1lPi`udw+0s!RV4gPGVdB(rDuw>ywzFdOQ$KtCVUmUL z+9;jp1hyGgFSgQvtB1}@KEG%oHAHDtRaQxNQCbz2;BWt^h0aSlUV!PYs*g<{WD!fs z&}jhD?5<>eHjZLF11ZxM>zUWvhYFwjJZ}@yu@uXll~P)_flO4W_5F+UtaA1&_zamM zL56{@4SCL^mjzEp_x>I5vC3IsZ*Iqz1frbmV=;?%y(tjivDw+87u2gX`(B(exEnI??%e-cc^}Z#BlMBg5fy!$@{1yDiKlxiCpSyCW zp|`qyUxTML{rtV>AoJgZ=nnuwRyV7i28W@|C|{_g*Z`$ z8A3N6LY>-a5Xk`9yN(kisLC{{bj+}Lve%+8>Qs*lOtI3L0aEwvIm6qTkKyzn*@MWv zRvGOkx*(@L1#+*6aC+Ao0aift0TB3EA1>ej`FZXmG7Zjtzwk<@x8G-}jQXer%@FIg z(x1VT6;dvVw2Kuqxqr|7ta|3Y1~Bty#ED9rOf>cS(86XDM{0dGCIRIhz{ZaAwaq-r zJ{A5DY$|NZA|c6QOZ~Y)CDjpaAT+e+qba9R#=#U(yOzJ+MG1XLa5^~nw6B9#FS(Cm zJ$+(Q6ZdI-1gG}>GOsC{3ni64|GDkI3P!8FUgtG%YVg>+PXoxbGPK=QXt6K5fpISb zp8C=~A7P%qi1B^DE}!_)xkmP*VpBXgWwl3!r9c zHvr03xlQZ08#3$;MD*?U$!S?FP2g6hE85#I4aOX=MFgv1A}+HBtwyVUY}$rw+h)jsr+OzmeYg>evF3 zS#|6}o&(DQaJM__@VFJ2Tm!&E0I560T{wojoBn0L@=88lS@-4qdXLWI<(r4lw^Iub zum7`K&aWQpfsCK+HmeZ6s}0vAXn^^*W}pXYD3 z8|=$iixbUCr_I^ecA7{k=Z1jP1L(FCqZa@eWe{xAaVcuQ2{PK;(Z(8lhT3N_p%1?W zJayKBBY-w;)Ae~p)9QP!#e{M(`9@Y9 ziYY}0Y{^0gD0806BH5e_oCdF|6A=FuCVWwT;v0`yF5|6l?LYKH*{##b3MYY~&^3d~1!OigK2cRkY3~Uv0hHBEQy$qm4+T!N z6nSThoMEz?NaW)tS^4Z-8v*P$iqrR{bB&s6+huEg&&uTlfM9b1G{;~j8=S3mhR+UU zHnEud(yzIHJBpTi<+*RCqA3KkS2J_3zzIPZ!RIz;RVO=hb#wf#hfZv1w=b)wthRa( z_2&;AbPgU$N%?G`^}GV8wTl%9EsCf?YyKTQXkRI9z*K9$hsjI6&T*ln_zp;5YkjPK z22GYd$JQ3e%>X(fXTGQNy=3bh$%b#nvYH7L#kBS(2sQXjS?#8lj=(m*mUz)Y#!WuX zU}-QqQru^;D=H_$Zj(sF@u3G`v_22b zGwa*>wYAtmFxgn}mXt)XnaU8_*`kxnFs0w`U&if|Uz7jv_uXH9e}3&92cFjS^Ek!k z$-e@~Cx9@tcKQlT9LuIPMOp1x;iy)40lZ?_1Ad30#%3qLTmYo? zS!Q@%OF@Z5n|4mKJ)|7CcBUBbq9zZq(g^@_QaV94y3SddoU#fU6#EL06*MPp$`z3f zuHG6SC*2|eCID=0PL!%XmO1W~lYI)bod8<{(vFpGeW%oy9%KoerfNPyTb`(a%oRmb zciO~6-Y_7%g$1xR7PyB^2bUfiuLR4xweKF1idbHIcJvwy-d^dy3I^|90~Q~?L7=?< z)`RF<(ryd>__|}iUJu77uKu|`TmiA+X1@MH=i061+?Q8W)u98Zhd>laYU|)^{lP=& zRKfKLETNQ@&mjZp19y%GEp)EI=q0J4VNDHHsg}L#zqn`>(gK|hEW3Rt2`EqC5}gcA zmq5A;DqC!Upt1u1QP~368+10-{ifbq9DMfTKpU%mkg-_oo2(S)>zj~{H!%UGgVF?_ zLn?lM`pOdc%4_VXlq#49LC!i&b5o36D(7d`dr2U&EO)w(jU`p`Dkxox8|6Bo!eyO$ zswF|Jpg*=KniRv?JO^s5XrqjpwVz8Th4}wszVU1Fm;c>Mc$>9%EO=VeFF*Mt9t@v^ z$VZU=R>;3(ItfH(mtR-mWQ)F(9dhug&StlDhPC)iP%I{m;aZ*zq>feHEW7wTuDW>$ zEa{l{IJax#`%$4S!{y%Wbt#a!DL~p<>HDs=zEm*_5HfIX2rz*JnXr3oGdS{`UVLUp z#XJ7%?@i0pv(;-TQRDwOT;~U%l zJdHW;jenF>(gr%|c$a_w^7W#Wl45#^w1Ia*XT5Kn{W~L}c9yeX8P+Y><>3av0463g0 zq?2*3p~hhL;F6EeM#Vz_H`XBY5OChk%t=b29s*2)NOiEtv6IooQTnmZ+*G^(;Jw`W zP?KlO=f3seaSa;RVDS(fe(MVO`{-kUkQwRtwn63-fHH8N ztQ?!t_*7ntlt-^##s^wxGG=hJ_`_$tI{A7BrtZ1Empfyg?ewhy;~FR)g2JmIPeiU9 z^KNchw$(e-4#DtOSFU}m-~Xj=F8j}3S@vz;cQvq%8BG7w<~Ru5I0zldo`1yy=@U}2 z&PE5M_X#vd51mMMey<+@9z_8jv;cWQ$0Na@m7W?qP-@UQ(6t@SE#o1;Y3jS6@x9p3 zJp|ZRkR3Fi8yGQsZm}~JSG*;k`o+#q5@2p5ruAf~5W2Osv;Dr!_B*0rJ4zBTVuD#@ zK%JuC%tAk6h0k7nPoe98Q#n=IezM~&0f`||R4~o?S*JR0Cad1p0_E~oO&q6FKWDb) zO9GRFM^;#Ad}FcG7$5s-5G(NlbNEes{NI21ySdxYTiM=KO9V7f000{FNkle0PQK9P4V_?D4e}a_HsO!s;H$%yAn_iZ0~#P`~Y+=0J3A7 z_qLzxCKCC+pcvnmUQ7IDQ0#X_;Y_coeh78|bW)DrOglY#$V}HSRTS9a#3vMOgI)qS zDS$~yFbk`EMbUf&;B@Ceb*RZY(LpFsK{DpPThzyp8CNpOV^%NkpsJ3C6irqt^+7&< zPX^HJY;q8KL4@Sr4Tns)>YJBI$ zB_TLbxi&ZZYyQ*}nre}nDmZ_CHNYWcL^7wugMp4RlsAAS;- z7e4{Wa|Pm>V()Ih^ioJ3srdSJ6iywM@tRF0dtSTUf>MDI7-pKYS=QtPvSP_|g%XBn zeclNO?)sI9M4X*&S>_vH^PEz__XL-lY_l_9W&kaa$qJ{bm6t%Z*js!2GVb&QSb}79 zK&cKU`S{eqB#$|}T!LmKTb&^jaLT6vX$LX^;7&ePva2Jjm}HqpQZ1uXA!kb9nFuI9 z{E~yYr|8_nII3)dQ=8)h~RzJui@&;{eWna2-;=L4bPV6w)n0 z=t~5kTT(YS1f#EWKSO6eei)^cmKwEQKhMXTj)i`~eYpz3r7p)AkS?yB)iI5If4YQG zfB-WJP8d*qY-l~-VTG<^*fTxBEk_E;F z2a-S94>4L)glHf~dF9Dx9eHx`RfG2^|bRN#XQa>;*dWwv$R_k9?iZp#zs3 z|LNg&P4T=kQK)0DH~W!WA1Rz=y`b1_fSdOcY{Ds=mqD?es>%s|O-d#@Nkf;oTq>Ca znHK;~b*D`xd33LOslXX<0A!b12@mLW`O5owzds4891LL z;54|@`&!BYMT&uBMYDlQihKMpXMi(M0>C%v{Qd6QSLys??%EL~kL~-XEkV^m>gOD! zK0}at+gbN#q=bH*AoT3HeEi42iN(48DX@L7q|#X50=7>}$?)G2biPg?XfV2=z6X5W zATqzcPR9(Trkaink^peCg69HAPu*B_z|^4fq#f&3&wPFvHgeMRoAtgCuoAijmgSf- zXr8Dv^*~t(-HdcC3dYySB1a3FK9Pv~;Ng>!lP0al4U}F-6*X|AWFrH}*=5L=#G%f- zRUkFs?Ce;S#sX%+m)Otw&oIev$|wHdJNQ0sNAS!|6$5_z13wDL$Dr+9_g524vktxY z4pLNl@4ZBNks>Hn1Jb1nyhtEGD1vkZq=eo<1O!6wuOfy3p(7ooMyiC~a^rW;{S)qQ z-=6(-&z_xmW@gXq&NHx5g*;`L$k~-Gb7(yJq*Ym1KWJTY=u@@%FVwR?uzTAb>{W={ zETDFAO>3>GrHoXK>4AaD@grL_ zernblI68$*GLkZ*4a$*e&9Izf$EnlYzeymr8Iv#*MiVR@&AYfEC6YsBP5;=0GM6xm z8?4S9LAh&&0FuGYE^SCMSGgP2hl0F(pLyOtZN`VR7KR^8oi4EF*GCD}6bc01(Blc# zmJ?Tcnt9A$5|>hbtW0Tg^f0r9!krdbct$_g)O_ZPo&I~>!*hrCh3FW7iO3&_|Q?W34^*?zdUIR#{Eqe7`ScJ##VxGch*4z)VBPg+=yZqNwh zSVsu(q)&$Au@^iw3V1IIuk;%;_zC}-U*gm#@!K1pYD3;;7rg&Wr9gTz?`|x(e=tzm z-T(a=q;9&MGGRYX*v!$ee>6x*neBJby|CF%D}{OKLttf3p_Fy0=0@@(B)^b?T8!(d z|Jdv~C#`#s7eE+~#C)-nbN;IaB! z{lS>6-WQDd_iIX%@k7XC1aa0@2VwZKL$<)nYpD}Sm_?*H8lD>E9o|C7%SP1DOWG|E zEmSJ|+m&IxgG6%n0!4g}&BW@d@v20$0}Mb(m=(%$`0DLC$v`*iw-d-I2w|WzKZ5$% zc72lI8c$GhY%B)~{8uuZ$^Q2D;jr70+N#BE*G$S<$K;7Z;WZ%kXgw|8zv=ThiE%}= zXxEaXG8s9z8_(5%m0iTz7Mn8$d#xTD5D0wbr0RZlg{*xc@GN7IDM+>S#taI2y#{QdrG71Zu1wWx2Qh+o&jub?n~9Sj*s zj?AD1ySsYJi#Vii3nX$)THso>v-YC>pF6zBUov{1Ra>1x^V*0_uy~vinJGnxp|+Ys z&p^oTLv%Yyg&SwZiQI1)!BZf)=(EWHrZuvry;oj%<`(*##h`pLpHk-UG$5uHY2)$) z;s&VCqEwT?5g6Yb=!RoBNVfRd;O!8*|B`K-ke~P-U2}5nJ^Ia+2H7~uoaq(mTWb#1 zTt6`&D*WUZPl1o@nN_#l#eX&++W3J@+>}JDF(=vhu9zT)O|T~&;Y2CDeVx$t#?#9M zEua%H4843zJc26(5IZ+^&Xaj=d)+>;NhkUjmgqW)N;N?u;T(B0SSm`ro4O+I>7+4Z zcam)X7i*bczg0pxGE%5 zN_{tFEcHOy;w(dB%bLwHq5qA*P#pa`6VC6?d6{0kL}s^-*WZGM#tH&bFdODZlK@XH znVu-*MMOm3&}%Lay`yg3sRs1`ifuOy;+U$gEM?yS8_|noeu|JO;liHwk@BE3yh%HZ zXX~YH1OZGbd@AT{qGxtet0@V+L~O22_P|tq3Eu@}VpSE$tb;LMv>pjy@x64YaU5fl z_f;Zw=_iD$lnA>k`dxEg7zp9|MYsaKnIL~*u667s-OYplZ zFV*+SDg~RNuQE^ATjYJ{8kqx?@e(d(cZkioAE@P*`(d19m3gVPS5OXFz|$O$i@I=_a+LX#eOUdHdUwFxGZm3~ZvZ0&3*UT*dZ~aV z)o!hoDx@%4&bC=_&+Bh4apsQx(kPsp9EE#It4RL#imVuDF2Tkd7IgKibEdysacpH} zi=DCR5IKH9+Mkmi5m=?j$(X8~;CioxQ9rc|pQa$)V0g>8%B%j-Rwk+_FiolFQ~z~6 zSx!Vco{Zhjxe!05ic&Jw5A5|fIP`MHm|Gf98LpD1u_xh|r@7LGtpNiWh}ta}-g^yI zQrTcyYp2$DrX96#o~W5oPIiR)@iuvpTd(3RKi^6|pkFZfsB{g@;4s7tkK7Wh5f5zL zi+oNk9Q5s@L(%#p9n6JV)@CkbPoRLi3D>sA0%#-jfr$vm1#StXV;a}^ns|5_cDcdA z-%YVVr^?-oK7>FB!cODpj-JQ=QFX4708H297k3!r1#@kG7^QZXR`m%f?(nTUR@Z8eWQ=wo&W zH?d&en_$*xby8_P^cFD-;lw2i%DM4CIak1iuW7wiuA9EDBxR=XTjDZ4^}sCWsnw5m zNz~0M+pOc11q$2bWsx6HQ?m(e&gIKm1Dv%zu(<^~cX>ayUBy~GThXg9;u-6o?@Oiu zuZy;2KUR;2B+!#DZ>2fSLL8Pe z(s;qCi&O8Y2aTUw)eRKb12qj^C=tN%n;sdm||N}^!sW>>*gurz^@N!&3kqb$DE!5q zwHBKrO6VMwt{5or0c%*3kA(6_6ow;eQQz{`8?fybWp}wyHpM8x&X4EA-|m%(YW5f` zx-V4J0HJ6%I_n;ptj+_PKVnm4(`Hjo9PW7K1pN8vB&}}6$l5j@n?F%l<@`YQOl52P zbuUf?U$f6d>{s4ERHC-+#!o~Jd*XkN=}E4~lV_{PyYs!Tw%Q3Z{^OM%9zzdS)C~{| z3K-OFTemn67=PMUu#tRjCD+`)rHi~L*M| z`;S2%js@|hfym0h+m+4T1v^0!gY^-&1_Ks6f(3-_c|34vwGAdHT#G(1>X)XQkZ^T= zdDPp1Oj7_0jdYB(ANxBHoED527T{#rEi92Gs2cdSVzbArrJP)6Xfus6xe>SrCdS}95w6{F^_RPr2aaNaV?_gsqeT!-KO zaRsQAIPFSY=Wu_XV7bn=PpeShdGJ$DPiMp>Ca|o3mrQWoGSZ4nxsAL#|LMp)&vDB? z-@ApGG1ZR$(PCpyNh@_(hyES+5)0%W^4EnL>++V`e%rY;WD6rT^e!cI;MU-X7fPZ) z^ah}slP-rPgvMp8oz;~?6C$gb>@^U6VCp4EkLJc(nx3T6UlQD3m3^2$RAb`dfUd9wrwOg{ zLC{AdQI9j-wg>3aADtT|r6HZpCHg}Gp2c8;bD74 z^wUTdbMFyf{NM&A5LR9&x88YzP8t`&Q}%!Kx*0Pyk(agFP2uZedd~#1qp}|}g$ef^ z2q#Iu!|(SqlKk-}nLOXJ6ajJ>_Si}67mKo3WZQW#tN0|B$p1l2r(x_Qg=pP5ekq$F z?mtOseMI2LN-Mn{xxQJ2-WZarmN(6HE1r5sH{x=)$*Id<_R&fsS|5*JeMXA~S;|py zwVB|(Xr6RZ_W@$eBV}YyrBSm$nZuX$sc@n1Ao^%s{E;WG&q?q`$sYaDE@6{L-fc8^ zEHB6LFzB~PS>4At!OowlYi{9e4mXP|Jf|m8w{G{neXogms-pw}UPWU^V4+~J zKrju|id3^MR#0o_v#CdQ{xj0Biz*?LrzT{wRUtQm1XcNpw0tcX|3wnqe}p&Se6RFD zACDTB?|EVW*JLDUMI+L<1Py&&4AA%Yw=Jd$#>o!*oV~ zN`2{gn98jEhk46ky_ty(*PS^-upC^t{2MXPXNAi|BtwGkUtGl+eM&x~c!`B8JXzEZ{j$q9*W5HFB87Nuqpdao9T3G;F;IesX^rD!arO!(x%Yvl|+P zlA|3>1CMRO94U&L{sAl~t+=pyJ8H`~9{>~hS!%X(CNJr;yL`W=-fGaSj%;81xZ|+J zB{ySAb1}@_O;g%tySB7zei~?l_NvfR@2$4HVt4-*AZBM=A6e;=yBbjZ>N?9*fE>b_ z<0BG;%7Ddpn_ilas{S8@y2@r=Zw@DM_1`+0x<-fQ*LUVOHXLOl1c6PG6J8B=ojdlc({@qZeDka~0)5w8-?vv1=?ZAQ)EFYtM z<~GV;ODKpt%oSf!hNaZtcr#j>V#0KxW+&A}Tsy-#*jBn-?e=b`E1hN$xrYQBOnr0f z5LD`DRMze?+C^ICf*?g_h2tygG4^;9(MCG1h@_Wr5}DZV!*&l(=@^nU@Gj z;{|`%sw&+-zA=9n#4r(5v}69RHST>UZP@f8L&!f4HEjZLHdBETD}f!Bs*;Q|PV{{G#dZ7s~pp3dSI?)ZLGpC~8peJEG^d@{E>7PsRU(W(bWQ}ZVq4v((z!nsR( zSjDoDMt??UZ)D*bc>8DZ{Mgguaja=Dh~d=!O&jJAVG?BdSZ>JFBZ%e9YwYdT>(RRf zh&w;h)FkNKZG`~_cy5oPn)veAbWGyyjz-1+C^s*b%RZCRNBoe?yR+hA|FYs@l4cTd za#e|`V!3oaefUmpJXH~&!vryaOp4cW`cl@K2T$N9mBreKS#+I==pS$4U zzOACzFYZ?!lf`+^gRELo<8+vrJ_7NxkFMYne2H~eN$Zd*}T*ZH= z`>&mtODU$tod=t4z=+}(3BCuJf0qupAP}1_2VCkHrK=E9l;@|}%zG=GTeAik6S%wr zH2~GtEsA|GH7>8+x6GOA-wXN|!%`gno!^;^d0d z+K)QO0sSIRJPogBrb8sF?Uy-bB__M~S1ADh9siZU|Ca>9XR!cqx_=VmN>u3IJq&bA KwCgn;qW%ZRmQ|bp literal 0 HcmV?d00001 diff --git a/public/images/sun_segment.svg b/public/images/sun_segment.svg new file mode 100644 index 0000000..0a21963 --- /dev/null +++ b/public/images/sun_segment.svg @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/src/3d/constants.ts b/src/3d/constants.ts index 89b01ca..2742f6c 100644 --- a/src/3d/constants.ts +++ b/src/3d/constants.ts @@ -3,6 +3,7 @@ import { Vector3 } from 'three' export const TAU = Math.PI * 2 export const MODELS_LOCATION = process.env.PUBLIC_URL + '/models' +export const IMAGES_LOCATION = process.env.PUBLIC_URL + '/images' export const MODELS = { BLUE_TOP: 'blueTop', @@ -63,16 +64,12 @@ export const COLOR_VALUES: { [k in Color]: number } = { } export const SHADE_Y: { [k in GrowthStage]: number } = [-18, -10.7, -5.63, 0] - export const SUN_ANGLE = 52.725 - export const TREE_TOP_Y = 10 - export const TILE_SIZE = 5 - export const INITIAL_SUN_ORIENTATION = 1.50 * Math.PI - export const GROUND_SHADE_HIDDEN_ROTATION = -0.8 +export const SUN_SEGMENT_SIZE = 56 export interface TreeGrowthProp { tree: { scale: Vector3 } diff --git a/src/3d/extraObjects.ts b/src/3d/extraObjects.ts index f195d88..945b09d 100644 --- a/src/3d/extraObjects.ts +++ b/src/3d/extraObjects.ts @@ -1,4 +1,5 @@ -import { CylinderBufferGeometry, Mesh, MeshBasicMaterial, Object3D } from 'three' +import { CylinderBufferGeometry, Mesh, MeshBasicMaterial, Object3D, PlaneBufferGeometry, TextureLoader } from 'three' +import { IMAGES_LOCATION, SUN_SEGMENT_SIZE } from './constants' const cylinderGeometry = new CylinderBufferGeometry(4, 4, 1, 12) const cylinderMaterial = new MeshBasicMaterial() @@ -12,3 +13,11 @@ CYLINDER_OBJ.add(cylinderMesh) export const basicGray = new MeshBasicMaterial({ color: 0xcccccc }) + +const sunSegmentTexture = new TextureLoader().load( + IMAGES_LOCATION + '/sun_segment.png', undefined, undefined, console.error +) +const sunSegmentMaterial = new MeshBasicMaterial({ transparent: true, map: sunSegmentTexture }) +const sunSegmentGeometry = new PlaneBufferGeometry(SUN_SEGMENT_SIZE, SUN_SEGMENT_SIZE) +export const sunSegmentMesh = new Mesh(sunSegmentGeometry, sunSegmentMaterial) +sunSegmentMesh.rotation.x = -Math.PI / 2 diff --git a/src/Game/GameWorld.ts b/src/Game/GameWorld.ts index 374be0d..b46dc07 100644 --- a/src/Game/GameWorld.ts +++ b/src/Game/GameWorld.ts @@ -38,7 +38,7 @@ import SunOrientationTagComponent from './components/SunOrientationTagComponent' import SunOrientationSystem from './systems/SunOrientationSystem' import dat from 'dat.gui' import { Axial } from '../3d/Coordinates/Axial' -import { CYLINDER_OBJ } from '../3d/extraObjects' +import { CYLINDER_OBJ, sunSegmentMesh } from '../3d/extraObjects' import Stats from 'stats.js' import GameWorldMessages from './types/GameWorldMessages' import { TileInfo } from './types/TileInfo' @@ -265,6 +265,21 @@ export default class GameWorld { .addObject3DComponent(game, this.sceneEntity) this.generateGrid() + + const sunSegmentWrapperObj = new Object3D() + sunSegmentWrapperObj.name = 'sunSegmentWrapper' + const sunSegmentObj = new Object3D() + sunSegmentObj.name = 'sugSegment' + sunSegmentObj.position.y = 2.2 + sunSegmentObj.rotation.y = Math.PI + sunSegmentObj.add(sunSegmentMesh) + sunSegmentObj.position.z = 28 + sunSegmentWrapperObj.add(sunSegmentObj) + + this.world + .createEntity('sunSegment') + .addObject3DComponent(sunSegmentWrapperObj, this.gameEntity) + .addComponent(SunOrientationTagComponent) } private generateGrid (): void { diff --git a/src/components/RevolutionCounter.tsx b/src/components/RevolutionCounter.tsx index 186cfae..54a675b 100644 --- a/src/components/RevolutionCounter.tsx +++ b/src/components/RevolutionCounter.tsx @@ -40,10 +40,6 @@ const RevolutionCounter: FunctionComponent = ({ const isPreparation = preparingRounds > 0 const totalRounds = isPreparation ? 6 : (state?.totalRevolutions ?? 0) * 6 const elapsedRounds = isPreparation ? 6 - preparingRounds : totalRounds - (state?.revolutionLeft ?? 0) * 6 + (6 - (state?.rayDirection ?? 0)) % 6 - // eslint-disable-next-line - // @ts-ignore - window.state = state - console.log('ray direction ' + (state?.rayDirection ?? 0).toString()) // eslint-disable-next-line const circleIndexes = React.useMemo(() => [...Array(Math.ceil(totalRounds / 6)).keys()], [elapsedRounds, totalRounds]) From b27cb666a8ad2079366b196e50b25b31ceed3a9d Mon Sep 17 00:00:00 2001 From: danvim Date: Fri, 2 Oct 2020 02:15:01 +0800 Subject: [PATCH 4/4] Extracted constants --- src/3d/constants.ts | 2 ++ src/Game/GameWorld.ts | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/3d/constants.ts b/src/3d/constants.ts index 2742f6c..092fdc9 100644 --- a/src/3d/constants.ts +++ b/src/3d/constants.ts @@ -70,6 +70,8 @@ export const TILE_SIZE = 5 export const INITIAL_SUN_ORIENTATION = 1.50 * Math.PI export const GROUND_SHADE_HIDDEN_ROTATION = -0.8 export const SUN_SEGMENT_SIZE = 56 +export const SUN_SEGMENT_POSITION_Y = 2.2 +export const SUN_SEGMENT_POSITION_Z = SUN_SEGMENT_SIZE / 2 export interface TreeGrowthProp { tree: { scale: Vector3 } diff --git a/src/Game/GameWorld.ts b/src/Game/GameWorld.ts index b46dc07..9af953e 100644 --- a/src/Game/GameWorld.ts +++ b/src/Game/GameWorld.ts @@ -26,7 +26,7 @@ import { MODELS, SKY_COLOR, SUN_ANGLE, - SUN_COLOR, + SUN_COLOR, SUN_SEGMENT_POSITION_Y, SUN_SEGMENT_POSITION_Z, TAU, TREE_GROWTH_DURATION } from '../3d/constants' @@ -270,10 +270,10 @@ export default class GameWorld { sunSegmentWrapperObj.name = 'sunSegmentWrapper' const sunSegmentObj = new Object3D() sunSegmentObj.name = 'sugSegment' - sunSegmentObj.position.y = 2.2 + sunSegmentObj.position.y = SUN_SEGMENT_POSITION_Y + sunSegmentObj.position.z = SUN_SEGMENT_POSITION_Z sunSegmentObj.rotation.y = Math.PI sunSegmentObj.add(sunSegmentMesh) - sunSegmentObj.position.z = 28 sunSegmentWrapperObj.add(sunSegmentObj) this.world