]> git.localhorst.tv Git - alttp.git/commitdiff
add basic map
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 13 May 2022 15:01:08 +0000 (17:01 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 13 May 2022 15:01:08 +0000 (17:01 +0200)
18 files changed:
resources/js/components/aos-tracker/Arena.js [new file with mode: 0644]
resources/js/components/aos-tracker/CastleCorridor.js [new file with mode: 0644]
resources/js/components/aos-tracker/Cell.js [new file with mode: 0644]
resources/js/components/aos-tracker/Chapel.js [new file with mode: 0644]
resources/js/components/aos-tracker/ClockTower.js [new file with mode: 0644]
resources/js/components/aos-tracker/DanceHall.js [new file with mode: 0644]
resources/js/components/aos-tracker/FloatingGarden.js [new file with mode: 0644]
resources/js/components/aos-tracker/ForbiddenArea.js [new file with mode: 0644]
resources/js/components/aos-tracker/InnerQuarters.js [new file with mode: 0644]
resources/js/components/aos-tracker/Map.js [new file with mode: 0644]
resources/js/components/aos-tracker/Region.js [new file with mode: 0644]
resources/js/components/aos-tracker/Room.js [new file with mode: 0644]
resources/js/components/aos-tracker/Study.js [new file with mode: 0644]
resources/js/components/aos-tracker/TopFloor.js [new file with mode: 0644]
resources/js/components/aos-tracker/UndergroundCemetery.js [new file with mode: 0644]
resources/js/components/aos-tracker/UndergroundReservoir.js [new file with mode: 0644]
resources/js/components/aos/App.js
resources/js/components/pages/AosTracker.js [new file with mode: 0644]

diff --git a/resources/js/components/aos-tracker/Arena.js b/resources/js/components/aos-tracker/Arena.js
new file mode 100644 (file)
index 0000000..8caa81c
--- /dev/null
@@ -0,0 +1,124 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const Arena = ({ x, y }) =>
+       <Region name="arena" x={x} y={y}>
+               <Room x={2} y={0}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="door" />
+                       <Cell x={0} y={2} bottom="door" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" right="door" />
+               </Room>
+               <Room x={4} y={0}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="solid" top="solid" />
+               </Room>
+               <Room x={4} y={1}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={2}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={8} y={0}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} left="door" right="solid" />
+                       <Cell x={0} y={2} bottom="door" left="solid" right="solid" />
+               </Room>
+               <Room x={9} y={0}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={2} y={3}>
+                       <Cell x={0} y={0} bottom="door" left="solid" top="door" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={7} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="door" />
+                       <Cell x={2} y={0} bottom="door" right="door" top="solid" />
+               </Room>
+               <Room type="teleporter" x={10} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room type="save" x={1} y={4}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={2} y={4}>
+                       <Cell bottom="solid" left="door" right="door" top="door" />
+               </Room>
+               <Room x={3} y={4}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" right="door" />
+                       <Cell x={0} y={2} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={4} y={4}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={8} y={4}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={9} y={4}>
+                       <Cell x={0} y={0} left="solid" top="door" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} bottom="solid" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" right="door" />
+               </Room>
+               <Room x={4} y={5}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={8} y={5}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={0} y={6}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={1} y={6}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={6}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={8} y={6}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={11} y={6}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={12} y={6}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+       </Region>;
+
+Arena.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default Arena;
diff --git a/resources/js/components/aos-tracker/CastleCorridor.js b/resources/js/components/aos-tracker/CastleCorridor.js
new file mode 100644 (file)
index 0000000..762225c
--- /dev/null
@@ -0,0 +1,232 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const CastleCorridor = ({ x, y }) =>
+       <Region name="castle-corridor" x={x} y={y}>
+               <Room x={0} y={6}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} bottom="solid" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" right="door" />
+               </Room>
+               <Room type="teleporter" x={2} y={7}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={4}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} left="solid" />
+                       <Cell x={1} y={2} right="solid" />
+                       <Cell x={0} y={3} bottom="door" left="door" />
+                       <Cell x={1} y={3} bottom="solid" right="solid" />
+               </Room>
+               <Room x={2} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="door" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="door" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={7} y={8}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room type="transition left" x={6} y={9}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="save" x={9} y={9}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={9} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={12} y={3}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="door" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} left="solid" />
+                       <Cell x={1} y={2} right="solid" />
+                       <Cell x={0} y={3} left="solid" />
+                       <Cell x={1} y={3} right="solid" />
+                       <Cell x={0} y={4} left="solid" />
+                       <Cell x={1} y={4} right="solid" />
+                       <Cell x={0} y={5} bottom="solid" left="door" />
+                       <Cell x={1} y={5} bottom="solid" right="door" />
+               </Room>
+               <Room type="transition left" x={12} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={13} y={2}>
+                       <Cell bottom="door" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={14} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="secret" x={15} y={9}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={16} y={8}>
+                       <Cell x={0} y={0} left="door" right="door" top="door" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room type="save" x={17} y={8}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={17} y={9}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="door" />
+                       <Cell x={4} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={22} y={9}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={20} y={7}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="solid" right="solid" />
+               </Room>
+               <Room x={21} y={7}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={22} y={7}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={16} y={3}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" right="solid" />
+                       <Cell x={0} y={2} left="solid" right="solid" />
+                       <Cell x={0} y={3} left="solid" right="solid" />
+                       <Cell x={0} y={4} bottom="door" left="solid" right="solid" />
+               </Room>
+               <Room x={17} y={3}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={18} y={2}>
+                       <Cell x={0} y={0} left="solid" top="door" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" />
+                       <Cell x={2} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={18} y={1}>
+                       <Cell bottom="door" left="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={19} y={1}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={21} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={21} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" top="solid" />
+                       <Cell x={5} y={0} bottom="solid" top="solid" />
+                       <Cell x={6} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={24} y={1}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" />
+                       <Cell x={2} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={27} y={1}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={27} y={2}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={28} y={1}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="door" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} bottom="solid" left="door" />
+                       <Cell x={1} y={2} bottom="solid" right="door" />
+               </Room>
+               <Room type="transition left" x={28} y={0}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={29} y={0}>
+                       <Cell bottom="door" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={30} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={35} y={2}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room type="transition right" x={36} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={36} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={39} y={3}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room type="save" x={40} y={3}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={40} y={4}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={42} y={4}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={37} y={4}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={39} y={5}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={34} y={5}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={33} y={5}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+       </Region>;
+
+CastleCorridor.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default CastleCorridor;
diff --git a/resources/js/components/aos-tracker/Cell.js b/resources/js/components/aos-tracker/Cell.js
new file mode 100644 (file)
index 0000000..7c151ef
--- /dev/null
@@ -0,0 +1,49 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+const hasCorner = (a, b) =>
+       (hasWall(a) && hasWall(b)) || a === 'door' || b == 'door';
+
+const hasWall = side => side && side !== 'open';
+
+const wallType = side => side || 'open';
+
+const Cell = ({ bottom, left, right, top, x, y }) =>
+       <g className="cell" transform={`translate(${x || 0}, ${y || 0})`}>
+               <rect className="background" x="-0.03125" y="-0.03125" width="1.03125" height="1.03125" />
+               {hasWall(top) ?
+                       <line className={`wall ${wallType(top)}`} x1="-0.03125" y1="0" x2="1.03125" y2="0" />
+               : null}
+               {hasWall(right) ?
+                       <line className={`wall ${wallType(right)}`} x1="1" y1="-0.03125" x2="1" y2="1.03125" />
+               : null}
+               {hasWall(bottom) ?
+                       <line className={`wall ${wallType(bottom)}`} x1="-0.03125" y1="1" x2="1.03125" y2="1" />
+               : null}
+               {hasWall(left) ?
+                       <line className={`wall ${wallType(left)}`} x1="0" y1="-0.03125" x2="0" y2="1.03125" />
+               : null}
+               {hasCorner(top, left) ?
+                       <rect className="corner" x="-0.0625" y="-0.0625" width="0.125" height="0.125" />
+               : null}
+               {hasCorner(top, right) ?
+                       <rect className="corner" x="0.9375" y="-0.0625" width="0.125" height="0.125" />
+               : null}
+               {hasCorner(bottom, left) ?
+                       <rect className="corner" x="-0.0625" y="0.9375" width="0.125" height="0.125" />
+               : null}
+               {hasCorner(bottom, right) ?
+                       <rect className="corner" x="0.9375" y="0.9375" width="0.125" height="0.125" />
+               : null}
+       </g>;
+
+Cell.propTypes = {
+       bottom: PropTypes.string,
+       left: PropTypes.string,
+       right: PropTypes.string,
+       top: PropTypes.string,
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default Cell;
diff --git a/resources/js/components/aos-tracker/Chapel.js b/resources/js/components/aos-tracker/Chapel.js
new file mode 100644 (file)
index 0000000..10a6151
--- /dev/null
@@ -0,0 +1,123 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const Chapel = ({ x, y }) =>
+       <Region name="chapel" x={x} y={y}>
+               <Room x={3} y={0}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} top="solid" />
+                       <Cell x={3} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} />
+                       <Cell x={3} y={1} right="solid" />
+                       <Cell x={0} y={2} left="solid" />
+                       <Cell x={1} y={2} />
+                       <Cell x={2} y={2} />
+                       <Cell x={3} y={2} right="solid" />
+                       <Cell x={0} y={3} bottom="solid" left="solid" />
+                       <Cell x={1} y={3} bottom="door" />
+                       <Cell x={2} y={3} bottom="door" />
+                       <Cell x={3} y={3} bottom="solid" right="solid" />
+               </Room>
+               <Room x={3} y={4}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="door" />
+                       <Cell x={2} y={0} bottom="solid" top="door" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition left" x={2} y={4}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={7} y={2}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" />
+                       <Cell x={1} y={1} bottom="door" />
+                       <Cell x={2} y={1} bottom="solid" right="solid" />
+               </Room>
+               <Room x={7} y={4}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} top="door" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} right="solid" />
+                       <Cell x={1} y={2} bottom="solid" left="solid" />
+                       <Cell x={2} y={2} bottom="door" right="solid" />
+               </Room>
+               <Room type="secret" x={7} y={6}>
+                       <Cell bottom="door" left="solid" right="solid" top="solid" />
+               </Room>
+               <Room type="teleporter" x={2} y={5}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={2} y={6}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={5}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="door" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} bottom="solid" left="door" />
+                       <Cell x={1} y={2} bottom="solid" right="door" />
+               </Room>
+               <Room x={5} y={5}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} left="door" />
+                       <Cell x={1} y={2} right="door" />
+                       <Cell x={0} y={3} bottom="solid" left="door" />
+                       <Cell x={1} y={3} bottom="solid" right="door" />
+               </Room>
+               <Room x={7} y={7}>
+                       <Cell bottom="solid" left="door" right="solid" top="door" />
+               </Room>
+               <Room x={7} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={9} y={7}>
+                       <Cell x={0} y={0} left="door" right="solid" top="door" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room type="save" x={8} y={7}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={2} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={1} y={7}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={0} y={7}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room x={1} y={8}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room type="transition right" x={2} y={9}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+       </Region>;
+
+Chapel.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default Chapel;
diff --git a/resources/js/components/aos-tracker/ClockTower.js b/resources/js/components/aos-tracker/ClockTower.js
new file mode 100644 (file)
index 0000000..c53cc2a
--- /dev/null
@@ -0,0 +1,150 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const ClockTower = ({ x, y }) =>
+       <Region name="clock-tower" x={x} y={y}>
+               <Room x={2} y={0}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={0}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={0}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room type="save" x={6} y={0}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={3} y={1}>
+                       <Cell x={0} y={0} bottom="door" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition left" x={0} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={1} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="door" />
+               </Room>
+               <Room x={4} y={2}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room x={5} y={2}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="solid" right="solid" />
+               </Room>
+               <Room x={6} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={8} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={3}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room x={4} y={4}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room x={5} y={4}>
+                       <Cell x={0} y={0} left="solid" right="solid" top="door" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room x={2} y={5}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={3} y={5}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={5}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room type="secret" x={1} y={6}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={6}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={6}>
+                       <Cell bottom="door" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={6}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="save" x={7} y={6}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={1} y={7}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={2} y={7}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={3} y={7}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="door" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={7}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room x={1} y={7}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={1} y={8}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room x={3} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="solid" top="solid" />
+               </Room>
+               <Room x={7} y={8}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room x={2} y={9}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room x={6} y={9}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={1} y={10}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition left" x={4} y={10}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={10}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="teleporter" x={7} y={10}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+       </Region>;
+
+ClockTower.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default ClockTower;
diff --git a/resources/js/components/aos-tracker/DanceHall.js b/resources/js/components/aos-tracker/DanceHall.js
new file mode 100644 (file)
index 0000000..676473c
--- /dev/null
@@ -0,0 +1,140 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const DanceHall = ({ x, y }) =>
+       <Region name="dance-hall" x={x} y={y}>
+               <Room x={3} y={0}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="door" right="door" />
+               </Room>
+               <Room x={2} y={1}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={1}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={2} y={2}>
+                       <Cell x={0} y={0} bottom="door" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="door" />
+                       <Cell x={3} y={0} bottom="solid" right="solid" top="solid" />
+               </Room>
+               <Room type="secret" x={1} y={3}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={2} y={3}>
+                       <Cell bottom="solid" left="door" right="door" top="door" />
+               </Room>
+               <Room x={3} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={3}>
+                       <Cell bottom="door" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="save" x={6} y={3}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room type="secret" x={9} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="door" right="solid" top="solid" />
+               </Room>
+               <Room x={0} y={4}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="solid" right="door" />
+               </Room>
+               <Room x={1} y={4}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="teleporter" x={1} y={5}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={2} y={4}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room x={3} y={4}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={5} y={4}>
+                       <Cell x={0} y={0} left="door" right="door" top="door" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={6} y={4}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" right="door" top="door" />
+               </Room>
+               <Room type="transition right" x={11} y={4}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={5}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={9} y={5}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={6}>
+                       <Cell x={0} y={0} left="solid" right="door" top="door" />
+                       <Cell x={0} y={1} bottom="door" left="solid" right="solid" />
+               </Room>
+               <Room x={4} y={6}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={6}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={7}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={8} y={6}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room x={3} y={8}>
+                       <Cell bottom="solid" left="solid" right="door" top="door" />
+               </Room>
+               <Room x={3} y={9}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={9}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={8}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room type="save" x={7} y={9}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+       </Region>;
+
+DanceHall.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default DanceHall;
diff --git a/resources/js/components/aos-tracker/FloatingGarden.js b/resources/js/components/aos-tracker/FloatingGarden.js
new file mode 100644 (file)
index 0000000..324d6f7
--- /dev/null
@@ -0,0 +1,140 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const FloatingGarden = ({ x, y }) =>
+       <Region name="floating-garden" x={x} y={y}>
+               <Room x={20} y={22}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="solid" />
+                       <Cell x={1} y={1} bottom="door" />
+                       <Cell x={2} y={1} bottom="solid" right="solid" />
+               </Room>
+               <Room x={23} y={22}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="door" />
+                       <Cell x={1} y={1} bottom="door" />
+                       <Cell x={2} y={1} bottom="solid" right="solid" />
+               </Room>
+               <Room x={20} y={24}>
+                       <Cell x={0} y={0} left="solid" top="door" />
+                       <Cell x={1} y={0} top="door" />
+                       <Cell x={2} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" />
+                       <Cell x={2} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={23} y={24}>
+                       <Cell x={0} y={0} left="door" top="door" />
+                       <Cell x={1} y={0} top="door" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" />
+                       <Cell x={2} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room type="transition left" x={19} y={25}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="save" x={26} y={25}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={0} y={4}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} top="solid" />
+                       <Cell x={3} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} />
+                       <Cell x={3} y={1} right="solid" />
+                       <Cell x={0} y={2} left="door" />
+                       <Cell x={1} y={2} />
+                       <Cell x={2} y={2} />
+                       <Cell x={3} y={2} right="door" />
+                       <Cell x={0} y={3} bottom="solid" left="solid" />
+                       <Cell x={1} y={3} bottom="solid" />
+                       <Cell x={2} y={3} bottom="solid" />
+                       <Cell x={3} y={3} bottom="solid" right="solid" />
+               </Room>
+               <Room x={7} y={2}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="door" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} right="door" />
+                       <Cell x={0} y={2} bottom="solid" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" />
+                       <Cell x={2} y={2} bottom="solid" right="solid" />
+               </Room>
+               <Room x={14} y={0}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="door" top="solid" />
+                       <Cell x={1} y={1} bottom="solid" left="door" />
+                       <Cell x={2} y={1} bottom="door" right="solid" />
+               </Room>
+               <Room type="save" x={14} y={1}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={14} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={16} y={2}>
+                       <Cell bottom="solid" left="door" right="solid" top="door" />
+               </Room>
+               <Room x={23} y={0}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={30} y={0}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="door" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} right="door" />
+                       <Cell x={0} y={2} bottom="solid" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" />
+                       <Cell x={2} y={2} bottom="solid" right="solid" />
+               </Room>
+               <Room type="transition left" x={37} y={4}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={38} y={3}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="door" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} right="door" />
+                       <Cell x={0} y={2} bottom="solid" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" />
+                       <Cell x={2} y={2} bottom="solid" right="solid" />
+               </Room>
+               <Room x={43} y={7}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="door" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} right="door" />
+                       <Cell x={0} y={2} bottom="solid" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" />
+                       <Cell x={2} y={2} bottom="solid" right="solid" />
+               </Room>
+       </Region>;
+
+FloatingGarden.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default FloatingGarden;
diff --git a/resources/js/components/aos-tracker/ForbiddenArea.js b/resources/js/components/aos-tracker/ForbiddenArea.js
new file mode 100644 (file)
index 0000000..b223b7a
--- /dev/null
@@ -0,0 +1,78 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const ForbiddenArea = ({ x, y }) =>
+       <Region name="forbidden-area" x={x} y={y}>
+               <Room type="transition left" x={0} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={1} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={1}>
+                       <Cell x={0} y={0} left="solid" right="solid" top="door" />
+                       <Cell x={0} y={1} left="door" right="door" bottom="solid" />
+               </Room>
+               <Room x={5} y={0}>
+                       <Cell bottom="door" left="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={6} y={0}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="door" right="solid" top="solid" />
+               </Room>
+               <Room x={10} y={3}>
+                       <Cell x={0} y={0} left="solid" top="door" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" />
+                       <Cell x={2} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room type="secret" x={9} y={4}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={13} y={4}>
+                       <Cell bottom="door" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={13} y={5}>
+                       <Cell x={0} y={0} left="solid" right="solid" top="door" />
+                       <Cell x={0} y={1} left="door" right="solid" bottom="solid" />
+               </Room>
+               <Room x={5} y={6}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" top="solid" />
+                       <Cell x={5} y={0} bottom="solid" top="solid" />
+                       <Cell x={6} y={0} bottom="solid" top="solid" />
+                       <Cell x={7} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={5}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" right="door" bottom="solid" />
+               </Room>
+               <Room x={5} y={5}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+       </Region>;
+
+ForbiddenArea.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default ForbiddenArea;
diff --git a/resources/js/components/aos-tracker/InnerQuarters.js b/resources/js/components/aos-tracker/InnerQuarters.js
new file mode 100644 (file)
index 0000000..e460660
--- /dev/null
@@ -0,0 +1,131 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const InnerQuarters = ({ x, y }) =>
+       <Region name="inner-quarters" x={x} y={y}>
+               <Room x={6} y={0}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} right="solid" />
+                       <Cell x={0} y={2} left="solid" />
+                       <Cell x={1} y={2} />
+                       <Cell x={2} y={2} right="solid" />
+                       <Cell x={0} y={3} left="solid" />
+                       <Cell x={1} y={3} />
+                       <Cell x={2} y={3} right="solid" />
+                       <Cell x={0} y={4} bottom="solid" left="solid" />
+                       <Cell x={1} y={4} bottom="solid" />
+                       <Cell x={2} y={4} bottom="door" right="solid" />
+               </Room>
+               <Room x={0} y={4}>
+                       <Cell x={0} y={0} bottom="door" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="solid" top="solid" />
+               </Room>
+               <Room x={0} y={5}>
+                       <Cell x={0} y={0} left="solid" top="door" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="door" />
+                       <Cell x={0} y={2} bottom="solid" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" right="solid" />
+               </Room>
+               <Room x={2} y={6}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="save" x={3} y={5}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={5}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} left="door" right="door" />
+                       <Cell x={0} y={2} left="solid" right="solid" />
+                       <Cell x={0} y={3} bottom="door" left="door" right="solid" />
+               </Room>
+               <Room x={5} y={5}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={5}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={6}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={6} y={6}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={8} y={5}>
+                       <Cell x={0} y={0} left="door" top="door" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="solid" />
+               </Room>
+               <Room x={10} y={5}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" right="solid" />
+                       <Cell x={0} y={2} bottom="door" left="door" right="solid" />
+               </Room>
+               <Room type="teleporter" x={5} y={7}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={7}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="door" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" top="solid" />
+                       <Cell x={5} y={0} bottom="door" right="door" top="door" />
+               </Room>
+               <Room x={11} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={13} y={8}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="transition left" x={2} y={9}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={8}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room type="secret" x={4} y={9}>
+                       <Cell bottom="solid" left="solid" right="door" top="door" />
+               </Room>
+               <Room type="secret" x={5} y={9}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room type="transition left" x={7} y={9}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={8} y={9}>
+                       <Cell bottom="solid" left="door" right="solid" top="door" />
+               </Room>
+               <Room x={9} y={9}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="solid" top="door" />
+               </Room>
+       </Region>;
+
+InnerQuarters.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default InnerQuarters;
diff --git a/resources/js/components/aos-tracker/Map.js b/resources/js/components/aos-tracker/Map.js
new file mode 100644 (file)
index 0000000..488ee34
--- /dev/null
@@ -0,0 +1,67 @@
+import React from 'react';
+
+import Arena from './Arena';
+import CastleCorridor from './CastleCorridor';
+import Chapel from './Chapel';
+import ClockTower from './ClockTower';
+import DanceHall from './DanceHall';
+import FloatingGarden from './FloatingGarden';
+import ForbiddenArea from './ForbiddenArea';
+import InnerQuarters from './InnerQuarters';
+import Study from './Study';
+import TopFloor from './TopFloor';
+import UndergroundCemetery from './UndergroundCemetery';
+import UndergroundReservoir from './UndergroundReservoir';
+
+const Map = () =>
+       <svg
+               viewBox="0 0 55 43"
+               xmlns="http://www.w3.org/2000/svg"
+       >
+               <style>{`
+                       .background {
+                               fill: #0000a0;
+                       }
+                       .region:hover .default .background {
+                               fill: #0000e0;
+                       }
+                       .save .background {
+                               fill: #f80000;
+                       }
+                       .secret .background {
+                               fill: #ff8040;
+                       }
+                       .teleporter .background {
+                               fill: #f8f800;
+                       }
+                       .transition .background {
+                               fill: #800080;
+                       }
+                       .corner {
+                               fill: #f8f8f8;
+                       }
+                       .wall {
+                               stroke: #f8f8f8;
+                               stroke-linecap: butt;
+                               stroke-width: 0.125;
+                       }
+                       .wall.door {
+                               stroke: #008888;
+                       }
+               `}</style>
+               <rect width="100%" height="100%" fill="#280078" />
+               <CastleCorridor x={1} y={18} />
+               <Chapel x={43} y={18} />
+               <Study x={44} y={29} />
+               <DanceHall x={2} y={11} />
+               <InnerQuarters x={14} y={6} />
+               <FloatingGarden x={6} y={1} />
+               <ClockTower x={37} y={8} />
+               <UndergroundReservoir x={6} y={27} />
+               <UndergroundCemetery x={21} y={40} />
+               <Arena x={1} y={34} />
+               <ForbiddenArea x={36} y={34} />
+               <TopFloor x={28} y={4} />
+       </svg>;
+
+export default Map;
diff --git a/resources/js/components/aos-tracker/Region.js b/resources/js/components/aos-tracker/Region.js
new file mode 100644 (file)
index 0000000..b122f17
--- /dev/null
@@ -0,0 +1,19 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+const Region = ({ children, name, x, y }) =>
+       <g
+               className={`region ${name || ''}`}
+               transform={x || y ? `translate(${x || 0}, ${y || 0})` : undefined}
+       >
+               {children}
+       </g>;
+
+Region.propTypes = {
+       children: PropTypes.node,
+       name: PropTypes.string,
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default Region;
diff --git a/resources/js/components/aos-tracker/Room.js b/resources/js/components/aos-tracker/Room.js
new file mode 100644 (file)
index 0000000..4642379
--- /dev/null
@@ -0,0 +1,19 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+const Room = ({ children, type, x, y }) =>
+       <g
+               className={`room ${type || 'default'}`}
+               transform={x || y ? `translate(${x || 0}, ${y || 0})` : undefined}
+       >
+               {children}
+       </g>;
+
+Room.propTypes = {
+       children: PropTypes.node,
+       type: PropTypes.string,
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default Room;
diff --git a/resources/js/components/aos-tracker/Study.js b/resources/js/components/aos-tracker/Study.js
new file mode 100644 (file)
index 0000000..160602a
--- /dev/null
@@ -0,0 +1,114 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const Study = ({ x, y }) =>
+       <Region name="study" x={x} y={y}>
+               <Room type="transition left" x={3} y={0}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={0}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="solid" right="solid" />
+               </Room>
+               <Room x={5} y={0}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="door" right="door" top="solid" />
+               </Room>
+               <Room x={5} y={1}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={7} y={0}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="solid" />
+               </Room>
+               <Room x={8} y={0}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={8} y={1}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="door" right="solid" top="solid" />
+               </Room>
+               <Room x={8} y={2}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="door" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="solid" />
+               </Room>
+               <Room x={3} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="door" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={1} y={2}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" />
+                       <Cell x={1} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room type="secret" x={0} y={2}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={1} y={4}>
+                       <Cell x={0} y={0} left="door" top="door" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="solid" />
+               </Room>
+               <Room type="save" x={0} y={4}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition left" x={0} y={5}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={4}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={3} y={5}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={4}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={5}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={4}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={7} y={4}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={7} y={5}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={8} y={4}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="solid" />
+               </Room>
+       </Region>;
+
+Study.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default Study;
diff --git a/resources/js/components/aos-tracker/TopFloor.js b/resources/js/components/aos-tracker/TopFloor.js
new file mode 100644 (file)
index 0000000..402a9f1
--- /dev/null
@@ -0,0 +1,142 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const TopFloor = ({ x, y }) =>
+       <Region name="top-floor" x={x} y={y}>
+               <Room x={0} y={0}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={1} y={0}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={0} y={0}>
+                       <Cell x={2} y={0} left="door" top="solid" />
+                       <Cell x={3} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={1} bottom="solid" top="solid" />
+                       <Cell x={2} y={1} bottom="door" />
+                       <Cell x={3} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={4} y={1}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="solid" right="door" />
+               </Room>
+               <Room x={5} y={1}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={5} y={2}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={0} y={2}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} top="door" />
+                       <Cell x={3} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} />
+                       <Cell x={3} y={1} right="solid" />
+                       <Cell x={0} y={2} left="solid" />
+                       <Cell x={1} y={2} />
+                       <Cell x={2} y={2} />
+                       <Cell x={3} y={2} right="door" />
+                       <Cell x={0} y={3} bottom="solid" left="solid" />
+                       <Cell x={1} y={3} bottom="door" />
+                       <Cell x={2} y={3} bottom="solid" />
+                       <Cell x={3} y={3} bottom="solid" right="door" />
+               </Room>
+               <Room x={4} y={3}>
+                       <Cell x={0} y={0} left="solid" right="door" top="door" />
+                       <Cell x={0} y={1} bottom="door" left="door" right="door" />
+               </Room>
+               <Room type="save" x={5} y={3}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={5} y={4}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={8} y={4}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={5}>
+                       <Cell x={0} y={0} left="door" top="door" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" />
+                       <Cell x={1} y={1} bottom="door" right="solid" />
+               </Room>
+               <Room type="secret" x={0} y={6}>
+                       <Cell bottom="door" left="solid" right="solid" top="solid" />
+               </Room>
+               <Room x={1} y={6}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="door" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room type="secret" x={3} y={6}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={0} y={7}>
+                       <Cell x={0} y={0} left="solid" top="door" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" />
+                       <Cell x={1} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={2} y={7}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={4} y={7}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="door" />
+               </Room>
+               <Room x={6} y={7}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" right="door" />
+                       <Cell x={0} y={2} bottom="solid" right="door" left="door" />
+               </Room>
+               <Room x={7} y={7}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={2} y={8}>
+                       <Cell x={0} y={0} bottom="door" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="solid" top="solid" />
+               </Room>
+               <Room x={4} y={8}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room type="teleporter" x={7} y={8}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={2} y={9}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="door" />
+                       <Cell x={1} y={0} bottom="door" right="door" top="solid" />
+               </Room>
+               <Room x={7} y={9}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room type="transition left" x={1} y={10}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={2} y={10}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="door" />
+               </Room>
+               <Room type="transition right" x={4} y={10}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+       </Region>;
+
+TopFloor.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default TopFloor;
diff --git a/resources/js/components/aos-tracker/UndergroundCemetery.js b/resources/js/components/aos-tracker/UndergroundCemetery.js
new file mode 100644 (file)
index 0000000..d18d3e8
--- /dev/null
@@ -0,0 +1,74 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const UndergroundCemetery = ({ x, y }) =>
+       <Region name="underground-cemetery" x={x} y={y}>
+               <Room x={2} y={0}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={6} y={0}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room type="save" x={7} y={0}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={8} y={0}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="door" bottom="solid" />
+                       <Cell x={1} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={10} y={0}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={11} y={0}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={12} y={0}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="solid" top="solid" />
+               </Room>
+               <Room type="transition left" x={0} y={1}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={2} y={1}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={7} y={1}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={10} y={1}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={12} y={1}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={16} y={1}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+       </Region>;
+
+UndergroundCemetery.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default UndergroundCemetery;
diff --git a/resources/js/components/aos-tracker/UndergroundReservoir.js b/resources/js/components/aos-tracker/UndergroundReservoir.js
new file mode 100644 (file)
index 0000000..9e6434a
--- /dev/null
@@ -0,0 +1,264 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import Cell from './Cell';
+import Region from './Region';
+import Room from './Room';
+
+const UndergroundReservoir = ({ x, y }) =>
+       <Region name="underground-reservoir" x={x} y={y}>
+               <Room x={0} y={2}>
+                       <Cell x={0} y={0} left="solid" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room type="transition right" x={1} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={1} y={3}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" top="solid" />
+                       <Cell x={5} y={0} bottom="solid" top="solid" />
+                       <Cell x={6} y={0} bottom="solid" top="solid" />
+                       <Cell x={7} y={0} bottom="solid" top="door" />
+                       <Cell x={8} y={0} bottom="solid" top="solid" />
+                       <Cell x={9} y={0} bottom="door" right="solid" top="solid" />
+               </Room>
+               <Room x={7} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="solid" top="solid" />
+                       <Cell x={1} y={0} bottom="door" right="solid" top="solid" />
+               </Room>
+               <Room x={9} y={5}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={10} y={4}>
+                       <Cell x={0} y={0} left="solid" top="door" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="door" />
+                       <Cell x={1} y={1} bottom="solid" right="solid" />
+               </Room>
+               <Room x={12} y={4}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" right="solid" />
+                       <Cell x={0} y={2} left="solid" right="solid" />
+                       <Cell x={0} y={3} left="solid" right="door" />
+                       <Cell x={0} y={4} left="door" right="solid" />
+                       <Cell x={0} y={5} left="solid" right="solid" />
+                       <Cell x={0} y={6} bottom="door" left="solid" right="door" />
+               </Room>
+               <Room type="save" x={13} y={7}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={11} y={8}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={13} y={10}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={12} y={11}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="door" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" top="solid" />
+                       <Cell x={3} y={0} bottom="solid" top="solid" />
+                       <Cell x={4} y={0} bottom="solid" top="solid" />
+                       <Cell x={5} y={0} bottom="solid" top="solid" />
+                       <Cell x={6} y={0} bottom="solid" top="solid" />
+                       <Cell x={7} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={11} y={11}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" right="solid" />
+                       <Cell x={0} y={2} left="solid" right="solid" />
+                       <Cell x={0} y={3} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={10} y={11}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={9} y={11}>
+                       <Cell x={0} y={0} left="door" right="door" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room x={10} y={12}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room type="transition left" x={8} y={11}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="secret" x={10} y={14}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={12} y={14}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={13} y={4}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} top="solid" />
+                       <Cell x={3} y={0} top="solid" />
+                       <Cell x={4} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" />
+                       <Cell x={1} y={1} bottom="solid" />
+                       <Cell x={2} y={1} bottom="solid" />
+                       <Cell x={3} y={1} bottom="solid" />
+                       <Cell x={4} y={1} bottom="solid" right="door" />
+               </Room>
+               <Room x={18} y={5}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="solid" top="door" />
+               </Room>
+               <Room x={18} y={2}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} top="solid" />
+                       <Cell x={2} y={0} top="solid" />
+                       <Cell x={3} y={0} top="solid" />
+                       <Cell x={4} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} />
+                       <Cell x={3} y={1} />
+                       <Cell x={4} y={1} right="solid" />
+                       <Cell x={0} y={2} bottom="solid" left="solid" />
+                       <Cell x={1} y={2} bottom="door" />
+                       <Cell x={2} y={2} bottom="solid" />
+                       <Cell x={3} y={2} bottom="solid" />
+                       <Cell x={4} y={2} bottom="solid" right="solid" />
+               </Room>
+               <Room type="transition left" x={17} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={20} y={5}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={21} y={5}>
+                       <Cell x={0} y={0} left="door" right="solid" top="solid" />
+                       <Cell x={0} y={1} left="solid" right="door" />
+                       <Cell x={0} y={2} left="solid" right="solid" />
+                       <Cell x={0} y={3} bottom="solid" left="door" right="door" />
+               </Room>
+               <Room x={22} y={6}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room type="save" x={22} y={8}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={19} y={8}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={23} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={25} y={1}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="solid" top="solid" />
+                       <Cell x={0} y={1} left="door" />
+                       <Cell x={1} y={1} right="door" />
+                       <Cell x={0} y={2} left="solid" />
+                       <Cell x={1} y={2} right="solid" />
+                       <Cell x={0} y={3} bottom="solid" left="solid" />
+                       <Cell x={1} y={3} bottom="door" right="solid" />
+               </Room>
+               <Room x={27} y={2}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={28} y={2}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} top="door" />
+                       <Cell x={2} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} />
+                       <Cell x={2} y={1} right="solid" />
+                       <Cell x={0} y={2} bottom="door" left="solid" />
+                       <Cell x={1} y={2} bottom="solid" />
+                       <Cell x={2} y={2} bottom="door" right="solid" />
+               </Room>
+               <Room x={29} y={0}>
+                       <Cell x={0} y={0} left="solid" right="solid" top="solid" />
+                       <Cell x={0} y={1} bottom="door" left="solid" right="solid" />
+               </Room>
+               <Room x={31} y={2}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="solid" top="solid" />
+               </Room>
+               <Room x={30} y={5}>
+                       <Cell x={0} y={0} left="solid" right="solid" top="door" />
+                       <Cell x={0} y={1} bottom="solid" left="solid" right="door" />
+               </Room>
+               <Room type="secret" x={31} y={6}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={27} y={5}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" right="solid" top="door" />
+               </Room>
+               <Room x={25} y={5}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} right="door" top="door" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} left="solid" />
+                       <Cell x={1} y={2} right="door" />
+                       <Cell x={0} y={3} left="solid" />
+                       <Cell x={1} y={3} right="solid" />
+                       <Cell x={0} y={4} bottom="solid" left="door" />
+                       <Cell x={1} y={4} bottom="door" right="door" />
+               </Room>
+               <Room x={24} y={5}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={27} y={7}>
+                       <Cell bottom="solid" left="door" right="solid" top="solid" />
+               </Room>
+               <Room x={27} y={9}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room type="transition right" x={28} y={9}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={22} y={9}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="door" top="solid" />
+               </Room>
+               <Room x={20} y={9}>
+                       <Cell x={0} y={0} left="door" top="solid" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} left="door" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} bottom="solid" left="door" />
+                       <Cell x={1} y={2} bottom="solid" right="door" />
+               </Room>
+               <Room x={22} y={11}>
+                       <Cell x={0} y={0} bottom="solid" left="door" top="solid" />
+                       <Cell x={1} y={0} bottom="solid" top="solid" />
+                       <Cell x={2} y={0} bottom="solid" right="solid" top="solid" />
+               </Room>
+               <Room type="teleporter" x={19} y={9}>
+                       <Cell bottom="solid" left="solid" right="door" top="solid" />
+               </Room>
+               <Room x={19} y={10}>
+                       <Cell bottom="solid" left="door" right="door" top="solid" />
+               </Room>
+               <Room x={17} y={8}>
+                       <Cell x={0} y={0} left="solid" top="solid" />
+                       <Cell x={1} y={0} right="door" top="solid" />
+                       <Cell x={0} y={1} left="solid" />
+                       <Cell x={1} y={1} right="solid" />
+                       <Cell x={0} y={2} bottom="solid" left="door" />
+                       <Cell x={1} y={2} bottom="solid" right="door" />
+               </Room>
+       </Region>;
+
+UndergroundReservoir.propTypes = {
+       x: PropTypes.number,
+       y: PropTypes.number,
+};
+
+export default UndergroundReservoir;
index 9c57144c6982b6e0f952a64ba37ac42e958c2cd9..0001f01343e1b8e2f061fe98da82039d180f2c22 100644 (file)
@@ -5,6 +5,7 @@ import { BrowserRouter, Route, Routes } from 'react-router-dom';
 import Header from './Header';
 import AosFront from '../pages/AosFront';
 import AosSeed from '../pages/AosSeed';
+import Tracker from '../pages/AosTracker';
 import User from '../pages/User';
 import AosBaseRomProvider from '../../helpers/AosBaseRomContext';
 import UserContext from '../../helpers/UserContext';
@@ -55,6 +56,7 @@ const App = () => {
                                <Header doLogout={doLogout} />
                                <Routes>
                                        <Route path="h/:hash" element={<AosSeed />} />
+                                       <Route path="tracker" element={<Tracker />} />
                                        <Route path="users/:id" element={<User />} />
                                        <Route path="*" element={<AosFront />} />
                                </Routes>
diff --git a/resources/js/components/pages/AosTracker.js b/resources/js/components/pages/AosTracker.js
new file mode 100644 (file)
index 0000000..8eafd1f
--- /dev/null
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Container } from 'react-bootstrap';
+
+import Map from '../aos-tracker/Map';
+
+const AosTracker = () => {
+       React.useEffect(() => {
+               window.document.title = 'Aos Tracker';
+       }, []);
+
+       return <Container fluid>
+               <Map />
+       </Container>;
+};
+
+export default AosTracker;