FANDOM


<!--
	dynamic mint maps
	@author Penguin-Pal (http://toontown.wikia.com/wiki/User:Penguin-Pal)
-->

<!--
	To-do List:
	* get locomotive room tiling
	* fix the locomotive room's proportions
	* add cogs to rooms. add "mint-svg-cog-supervisor" class (or something like that) to allow customizing the cog on the supervisor's position
	* add animated goons
	* add important objects to rooms (go though rooms by the order of the room ids)
	* once all rooms are completed, add custom floor patterns and go through the rooms and see what needs to be done (go though rooms by the order of the room ids)
-->


<style type="text/css">
body {
	margin: 0;
}
svg {
	border: 1px solid orange;
	zoom: 3;
}
.mint-svg-obj-floor {
	fill: url(#mint-svg-ptn-0);
}
.mint-svg-obj-floor2 {
	fill: url(#mint-svg-ptn-1);
}
.mint-svg-obj-stone {
	fill: #ccc;
}
.mint-svg-obj-rmborder {
	stroke: #ccc;
	stroke-width: 0.1;
}
.mint-svg-obj-minborder {
	fill: none;
	stroke: #999;
	stroke-width: 0.1;
}
.mint-svg-bhv-nonzero {
	fill-rule: evenodd;
}
</style>

<svg width="400" height="300" id="mint-svg">
	<defs>
		<!--
			==========================================
			# patterns
			==========================================
		-->

		<!-- ordinary floor -->
		<pattern id="mint-svg-ptn-0" width="1" height="1" x="0" y="0" patternUnits="userSpaceOnUse">
			<rect width="1" height="1" x="0" y="0" fill="#ccc" />
			<image xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDrNG8JaPD4Xtra10y2EotIvnEIGSAPap9J8P6XYSlJLC3YSvk4hHBq5ossUWjWzPKCotkOfwqwLd3MgM24MwKADG2gfQZJpOixJmTS7f5h18hT/SsS8Gj6dK1ndrZt5gUhBbAEKW6nj6V0LCY9FBAU9e/Fcp40tpYYhf3EO12fYGyOQAD/AEpMFuavlfZtIs7mBcFbdRjHU7RWhozTy2a3M4+Zzu2g8AVmXUrjwxDcC1kkxao6qpPykKOTj61paHBLBpccU0vmNjJOMdaYdC4wBABz6/WsbxraNfaSttGgb96CxI6LyDWjqWqW2lRo84JMj4VVHNVbC7j1yedEjkRYmUZYfe47UAkz/9k=" width="1px" height="1px" x="0" y="0" opacity="0.5" />
		</pattern>

		<!-- brown stone floor floor -->
		<pattern id="mint-svg-ptn-1" width="1" height="1" x="0" y="0" patternUnits="userSpaceOnUse">
			<rect width="1" height="1" x="0" y="0" fill="wheat" />
			<image xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwvQ7OHT7gJMEZVG1wpByQPSpr94rmffEu0DgcUmn2620El5KwZkzhD2Hr+ZqHzlMKRwJ8yk7j61z3Z6qityKQpCA0gPPQmr+mob95HlkDRk5RAMGs8iWRwWT5R1rS8NPuuponUAbx5Z9sYoCeiuZ6vcJOWRCyyAxtkVZiiUsQp4UDPFPka0trUlblJGRSwUcc1VEjuSUkJH8RFARd2Kz8LGCRj071sWenLalLrftPlZ29NxzWbDZmcjbxzycVfupSt3BHE+7cdqq5xjkD8KEEtdEf/9k=" width="1px" height="1px" x="0" y="0" opacity="0.5" />
		</pattern>

		<!-- metal crate small -->
		<pattern id="mint-svg-ptn-2" width="1" height="1" x="0" y="0" patternUnits="userSpaceOnUse">
			<rect fill="lime" width="0.6" height="0.75" x="0" y="0" opacity="1" />
			<image xlink:href="data:image/jpeg;base64,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" width="1px" height="1px" x="0" y="0" />
		</pattern>

		<!-- conveyor -->
		<pattern id="mint-svg-ptn-3" width="1" height="1" x="0" y="0" patternUnits="userSpaceOnUse">
			<image xlink:href="data:image/png;base64,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" width="1px" height="1px" x="0" y="0" />
			<animate attributeType="XML" attributeName="x" from="0" to="1" dur="2s" repeatCount="indefinite" />
		</pattern>

		<!--
			==========================================
			# grdients
			==========================================
		-->

		<!-- a gradient for stairs -->
		<linearGradient id="mint-svg-grad-0" x1="0" y1="0" x2="0" y2="1">
			<!-- #555 and #aaa also go well -->
			<stop offset="0%" stop-color="#777" />
			<stop offset="100%" stop-color="#999" />
		</linearGradient>



		<!--
			==========================================
			# clips
			==========================================
		-->

		<!-- shover -->
		<clipPath id="mint-svg-clip-0">
			<rect width="4" height="1" x="12.75" y="0" />
		</clipPath>
		


		<!--
			==========================================
			# objects
			==========================================
		-->

		<!-- a single stair -->
		<g id="mint-svg-obj-0">
			<rect width="2" height="0.3" fill="url(#mint-svg-grad-0)" />
		</g>

		<!-- 5 stairs -->
		<g id="mint-svg-obj-1">
			<use xlink:href="#mint-svg-obj-0" x="0" y="0" />
			<use xlink:href="#mint-svg-obj-0" x="0" y="0.3" />
			<use xlink:href="#mint-svg-obj-0" x="0" y="0.6" />
			<use xlink:href="#mint-svg-obj-0" x="0" y="0.9" />
			<use xlink:href="#mint-svg-obj-0" x="0" y="1.2" />
		</g>

		<!-- 10 stairs -->
		<g id="mint-svg-obj-2">
			<use xlink:href="#mint-svg-obj-1" x="0" y="0" />
			<use xlink:href="#mint-svg-obj-1" x="0" y="1.5" />
		</g>


		<!-- metal box small -->
		<g id="mint-svg-obj-3">
			<rect width="1" height="1" fill="url(#mint-svg-ptn-2)" transform="scale(0.5, 0.75)" />
		</g>


		<!-- gear tower quarter -->
		<g id="mint-svg-obj-4">
		<!--
			should have ended with: "h -2 z"
			but instead used: "l -2.5 0.5 z"
			this way the quarters' gear-center point is streached to the opposite side, which "stacs" the quarters rather than making them overlap
			otherwise, there is a pixel gap between the quarters
		-->
			<path width="2" height="2" d="M0 0 h 0.275 v 0.55 l 0.509 0.2082 l 0.3889 -0.3889 l 0.3889 0.3889 l -0.3889 0.3889 L 1.45  1.725 h 0.55 v 0.275 l -2.5 0.5 z" />
		</g>


		<!-- gear tower gear -->
		<g id="mint-svg-obj-5">
			<use xlink:href="#mint-svg-obj-4" x="2" y="0" />
			<use xlink:href="#mint-svg-obj-4" x="2" y="2" transform="rotate(90 3 3)" />
			<use xlink:href="#mint-svg-obj-4" x="0" y="2" transform="rotate(180 1 3)" />
			<use xlink:href="#mint-svg-obj-4" x="0" y="0" transform="rotate(270 1 1)" />
		</g>

		<!-- spinning gear tower gear -->
		<g id="mint-svg-obj-6">
			<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 2 2" to="360 2 2" dur="16s" repeatCount="indefinite" />
			<use xlink:href="#mint-svg-obj-5" />
		</g>


		<!-- ordinary metal box -->
		<g id="mint-svg-obj-7">
			<rect width="1" height="1" fill="url(#mint-svg-ptn-2)" />
		</g>


		<!-- 4 ordinary metal boxes in a cluster -->
		<g id="mint-svg-obj-8">
			<use xlink:href="#mint-svg-obj-7" x="0" y="0" />
			<use xlink:href="#mint-svg-obj-7" x="0" y="1" />
			<use xlink:href="#mint-svg-obj-7" x="1" y="0" />
			<use xlink:href="#mint-svg-obj-7" x="1" y="1" />
		</g>


		<!-- conveyor animation -->
		<g id="mint-svg-obj-9">
			<rect width="4" height="1" x="0" y="0" fill="url(#mint-svg-ptn-3)" />
		</g>


		<!-- single shover -->
		<g id="mint-svg-obj-10">
			<rect width="1" height="1" x="0" y="0" fill="url(#mint-svg-ptn-4)" />
		</g>


		<!-- shover animation path -->
		<path id="mint-svg-obj-11" d="M0 0 v 1 z" />



		<!--
			==========================================
			# room templates (appear in several rooms)
			==========================================
		-->

		<!-- corner 6x6 room -->
		<g id="mint-svg-rmtemplate-0">
			<rect class="mint-svg-obj-floor" width="6" height="6" x="0" y="0" />
			<line class="mint-svg-obj-rmborder" x1="2" y1="6" x2="4" y2="6" />
		</g>

		<!-- room with goons/battle and stairs on the left -->
		<g id="mint-svg-rmtemplate-1">
			<!--<polygon class="mint-svg-obj-floor2" points="0,6 0,12, 6,12 6,18, 12,18 12,12 18,12 18,6 12,6 12,0 6,0 6,6" x="0" y="0" />-->
			<!--<path class="mint-svg-obj-floor2" d="M0 6 V 12 H 6 V 18 H 12 V 12 H 18 V 6 H 12 V 0 H 6 V 6 Z" x="0" y="0" />-->
			<path class="mint-svg-obj-floor2" d="M0 6 v 6 h 6 v 6 h 6 v -6 h 6 v -6 h -6 v -6 h -6 v 6 z" x="0" y="0" />
			<path class="mint-svg-obj-stone mint-svg-bhv-nonzero" d="M6 5.25 v 2.75 h 4 v -5.75 h -0.75 v 3 z M6.75 6 v 1.25 h 2.5 v -1.25 h -2.5 z" />
			<path class="mint-svg-obj-stone mint-svg-bhv-nonzero" d="M6 10 v 4 h 6 v -4 z M6.75 10.75 v 2.5 h 4.5 v -2.5 z" />
			<!--<path class="mint-svg-obj-minborder" d="M6 6 h 4 v -3.75" x1="6" y1="6" x2="10" y2="6" />-->
			<use xlink:href="#mint-svg-obj-2" x="10" y="2" />
			<polyline class="mint-svg-obj-minborder" points="6,6 10,6 10,2.25" x1="6" y1="6" x2="10" y2="6" />
			<line class="mint-svg-obj-rmborder" x1="0" y1="8" x2="0" y2="10" />
		</g>

		<!-- giant gear obstacle room / 4 battles room / final room with shelves -->
		<g id="mint-svg-rmtemplate-2">
			<path class="mint-svg-obj-floor" d="M0 6, l 6 -6 h 6 l 6 6 v 6 h -18 z" />
			<use xlink:href="#mint-svg-obj-2" x="0" y="6" />
			<line class="mint-svg-obj-minborder" x1="2" y1="6" x2="18" y2="6" />
			<line class="mint-svg-obj-rmborder" x1="18" y1="8" x2="18" y2="10" />
		</g>

		<!-- doom room -->
		<g id="mint-svg-rmtemplate-3">
			<path class="mint-svg-obj-floor mint-svg-bhv-nonzero" d="M0 6, h 6 l 12 -6 l 12 6 h 6 v 6 h -6 l -12 6 l -12 -6 h -6 z M12 9 l 6 -3 l 6 3 l -6 3 z" fill="red" />
			<path class="mint-svg-obj-minborder" d="M12 9 l 6 -3 l 6 3 l -6 3 z" fill="red" />
			<line class="mint-svg-obj-rmborder" x1="0" y1="8" x2="0" y2="12" />
		</g>


		<!--
			==========================================
			# rooms
			==========================================
		-->

		<!-- starting room -->
		<g id="mint-svg-rm-0">
			<rect class="mint-svg-obj-floor" width="6" height="6" x="0" y="2" />
			<rect class="mint-svg-obj-floor" width="2" height="2" x="2" y="0" />
		</g>

		<!-- corridor with stairs L -->
		<g id="mint-svg-rm-1">
			<rect class="mint-svg-obj-floor" width="2" height="6" x="0" y="0" />
			<rect class="mint-svg-obj-floor" width="2" height="2" x="2" y="4" />
			<rect class="mint-svg-obj-floor" width="2" height="6" x="4" y="4" />
			<use xlink:href="#mint-svg-obj-1" x="4" y="8" />
			<line class="mint-svg-obj-rmborder" x1="4" y1="10" x2="6" y2="10" />
		</g>

		<!-- corridor with stairs R -->
		<g id="mint-svg-rm-2">
			<rect class="mint-svg-obj-floor" width="2" height="6" x="4" y="0" />s
			<rect class="mint-svg-obj-floor" width="2" height="2" x="2" y="4" />
			<rect class="mint-svg-obj-floor" width="2" height="6" x="0" y="4" />
			<use xlink:href="#mint-svg-obj-1" x="0" y="8" />
			<line class="mint-svg-obj-rmborder" x1="0" y1="10" x2="2" y2="10" />
		</g>

		<!-- straight room with 4 lvl 11+ -->
		<g id="mint-svg-rm-3">
			<rect class="mint-svg-obj-floor" width="6" height="12" x="0" y="0" />
			<line class="mint-svg-obj-rmborder" x1="2" y1="12" x2="4" y2="12" />
		</g>

		<!-- corner room with 4 lvl 11+ -->
		<g id="mint-svg-rm-4">
			<use xlink:href="#mint-svg-rmtemplate-0" />
		</g>

		<!-- cross-shaped room (goons) -->
		<g id="mint-svg-rm-5">
			<use xlink:href="#mint-svg-rmtemplate-1" />
		</g>

		<!-- cross-shaped room (battle) -->
		<g id="mint-svg-rm-6">
			<use xlink:href="#mint-svg-rmtemplate-1" />
		</g>

		<!-- cross-shaped room (supervisor) -->
		<g id="mint-svg-rm-7">
			<use xlink:href="#mint-svg-rmtemplate-1" />
		</g>


		<!-- gear tower room -->
		<g id="mint-svg-rm-8">
			<!-- room template -->
			<use xlink:href="#mint-svg-rmtemplate-0" />
			<!-- smll boxes - first row -->
			<use xlink:href="#mint-svg-obj-3" x="5" y="0" />
			<use xlink:href="#mint-svg-obj-3" x="5" y="0.75" />
			<use xlink:href="#mint-svg-obj-3" x="5" y="1.5" />
			<use xlink:href="#mint-svg-obj-3" x="5" y="2.25" />
			<use xlink:href="#mint-svg-obj-3" x="5" y="3" />
			<use xlink:href="#mint-svg-obj-3" x="5" y="3.75" />
			<use xlink:href="#mint-svg-obj-3" x="5" y="4.5" />
			<use xlink:href="#mint-svg-obj-3" x="5" y="5.25" />
			<!-- smll boxes - second row -->
			<use xlink:href="#mint-svg-obj-3" x="5.5" y="0" />
			<use xlink:href="#mint-svg-obj-3" x="5.5" y="0.75" />
			<use xlink:href="#mint-svg-obj-3" x="5.5" y="1.5" />
			<use xlink:href="#mint-svg-obj-3" x="5.5" y="2.25" />
			<use xlink:href="#mint-svg-obj-3" x="5.5" y="3" />
			<use xlink:href="#mint-svg-obj-3" x="5.5" y="3.75" />
			<use xlink:href="#mint-svg-obj-3" x="5.5" y="4.5" />
			<use xlink:href="#mint-svg-obj-3" x="5.5" y="5.25" />
			<rect fill="red" width="1.2" height="6" x="4" y="0" opacity="0" /><!--  <-- no longer needed -->
			<!-- spinning gear -->
			<use xlink:href="#mint-svg-obj-6" x="0.5" y="1" transform="scale(-1,1) translate(-5,0)" fill="navy" />
			<use xlink:href="#mint-svg-obj-6" x="0.5" y="1" fill="#888" />
			<!-- entrance border -->
			<line class="mint-svg-obj-rmborder" x1="2" y1="6" x2="4" y2="6" />
		</g>

		<!-- obstacle room with giant gear -->
		<g id="mint-svg-rm-9">
			<use xlink:href="#mint-svg-rmtemplate-2" />
		</g>

		<!-- 4 battle room with stairs -->
		<g id="mint-svg-rm-10">
			<use xlink:href="#mint-svg-rmtemplate-2" />
		</g>

		<!-- supervisor battle in the shelves room -->
		<g id="mint-svg-rm-11">
			<use xlink:href="#mint-svg-rmtemplate-2" />
		</g>

		<!-- doom room (goons) -->
		<g id="mint-svg-rm-12">
			<use xlink:href="#mint-svg-rmtemplate-3" />
		</g>

		<!-- doom room (battle) -->
		<g id="mint-svg-rm-13">
			<use xlink:href="#mint-svg-rmtemplate-3" />
		</g>

		<!-- doom room (supervisor) -->
		<g id="mint-svg-rm-14">
			<use xlink:href="#mint-svg-rmtemplate-3" />
		</g>

		<!-- acid room -->
		<g id="mint-svg-rm-15">
			<path d="M0 4 l 4 -4 h 4 l 4 4 v 4 l -4 4 h -4 l -4 -4 z" fill="#304e36" />
			<rect class="mint-svg-obj-floor" width="2" height="1.5" x="4" y="10.5" />
			<!--<use xlink:href="#mint-svg-obj-1" transform="scale(0.75) rotate(270 9.25 ?)" x="8" y="14.28125" />-->
			<use xlink:href="#mint-svg-obj-1" transform="scale(0.75) rotate(270 9 15.25)" x="8.25" y="14.25" /><!-- units might require a remake - they /just/ work -->
			<line class="mint-svg-obj-rmborder" x1="4" y1="12" x2="6" y2="12" />
		</g>

		<!-- shover room -->
		<g id="mint-svg-rm-16">
			<!-- floor -->
			<path d="M0 0 h 30 v 2 h -2 v 2 h -2 v -2 h -26 z" class="mint-svg-obj-floor" />
			<!-- goons -->
			<!-- metal ramps -->
			<use xlink:href="#mint-svg-obj-8" x="16.75" y="0" />
			<use xlink:href="#mint-svg-obj-8" x="10.75" y="0" />
			<!-- conveyor -->
			<use xlink:href="#mint-svg-obj-9" x="12.75" y="0" />
			<!-- shovers (from front to back) -->
			<!-- [-1, 1, 2.5, 4] <- initial value in svg testing -->
			<g x="12.75" y="0" clip-path="url(#mint-svg-clip-0)">
				<rect width="1" height="1" x="15.75" y="-1" fill="#ddd">
					<animateMotion dur="6s" begin="-5" repeatCount="indefinite">
						<mpath xlink:href="#mint-svg-obj-11" />
					</animateMotion>
				</rect>
				<rect width="1" height="1" x="14.75" y="-1" fill="#ddd">
					<animateMotion dur="6s" begin="-3.5" repeatCount="indefinite">
						<mpath xlink:href="#mint-svg-obj-11" />
					</animateMotion>
				</rect>
				<rect width="1" height="1" x="13.75" y="-1" fill="#ddd">
					<animateMotion dur="6s" begin="-0.5" repeatCount="indefinite">
						<mpath xlink:href="#mint-svg-obj-11" />
					</animateMotion>
				</rect>
				<rect width="1" height="1" x="12.75" y="-1" fill="#ddd">
					<animateMotion dur="6s" begin="-2" repeatCount="indefinite">
						<mpath xlink:href="#mint-svg-obj-11" />
					</animateMotion>
				</rect>
			</g>
			<!-- entrance border -->
			<line class="mint-svg-obj-rmborder" x1="26" y1="4" x2="28" y2="4" />
		</g>


		<!-- box stomper room -->
		<g id="mint-svg-rm-17">
			<rect class="mint-svg-obj-floor" width="6" height="6" x="0" y="0" />
		</g>


		<!-- grated floor room -->
		<g id="mint-svg-rm-18">
			<path d="M0 4 l 4 -4 h 4 l 4 4 v 4 l -4 4 h -4 l -4 -4 z" fill="#000" />
			<!--<path class="mint-svg-obj-floor-locomotive" d="M4 1 v -1 h 2 v 1 h 2 l 3 3 v 4  l -3 3 v 1 h -2 v -1 h -2 l -3 -3 v -4 z" />-->
			<!--<path class="mint-svg-obj-floor-locomotive" d="M 1.1083 4 v -4 l 0.8917 -0.8917 v -0.8917 h 2 v 0.8917 h 2 l 0.8917 0.8917 v 4 L 12 4 v 4 L 8 10.1083 v 0.8917 z" /> -->
			<path class="mint-svg-obj-floor-locomotive" d="M1.7832 8 v -4 L 4 1.7832 L4 0 h 2 v 1.7832 h 2 l 2.2168 2.2168 v 4 l -2.2168 2.2168 L 8 12 h -2 v -1.7832 h -2 z" fill="#ddd" />
			<line class="mint-svg-obj-rmborder" x1="6" y1="12" x2="8" y2="12" />
		</g>



	</defs>
	<g class="mint-svg-canvas" transform="scale(2) translate(0, 0)">
		<use xlink:href="#mint-svg-rm-0" x="4" y="42" />
		<use xlink:href="#mint-svg-rm-2" x="6" y="32" />
		<use xlink:href="#mint-svg-rm-3" x="8" y="20" />
		<use xlink:href="#mint-svg-rm-2" x="10" y="10" />
		<use xlink:href="#mint-svg-rm-4" x="12" y="4" />
		<use xlink:href="#mint-svg-rm-1" x="20" y="0" transform="rotate(90 23 5)" />
	</g>
</svg>




























<script type="text/javascript">
$mint = {
	d: {
		w: 400,
		h: 300
	},
	json: null,
	fn: {}
}

/* ============================== *\
	# functions
\* ============================== */

// clear svg layer
$mint.fn.clear = function() {
	var a = document.querySelector(".mint-svg-canvas");
	while (a.children.length > 0) {
		a.removeChild(a.children[0]);
	}
}

// add room
$mint.fn.addRoom = function(svg, id, x, y, r) {
	var a = svg.querySelector(".mint-svg-canvas"),
		use = document.createElementNS("http://www.w3.org/2000/svg", "use");
	use.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", "#mint-svg-rm-" + id);
	use.setAttributeNS(null, "x", x);
	use.setAttributeNS(null, "y", y);
	if (r) {
		use.setAttributeNS(null, "transform", "rotate(" + r + ")");
	}
	a.appendChild(use);
}

// add room
$mint.fn.drawMap = function(svg, type, id) {
	var a = svg.querySelector(".mint-svg-canvas"),
		map = $mint.json.mints[type][id],
		rm = $mint.json.rooms;
	for (var i in map.rooms) {
		var curr = map.rooms[i];
		console.info("rm[curr.roomid] -> ", rm[curr.roomid]);
		$mint.fn.addRoom(
			svg,
			curr.roomid,
			curr.x,
			curr.y,
			$mint.fn.calcRotateTransform(rm[curr.roomid], curr.x, curr.y, curr.r)
		);
	}
	$mint.fn.resetCanvasTransform(svg);
	$mint.fn.newCanvasTransform(svg, map);
}

// get value for roate() transform
$mint.fn.calcRotateTransform = function(room, x, y, r) {
	console.log("Applying rotation for room " + room.id + " of " + r + " deg");
	console.log(arguments);
	if (r != 0) {
		var newR = r == 180 ? 179.99 : r, // 180 doesnt work
			newX = x + room.d.w / 2,
			newY = y + room.d.h / 2,
			output =  newR + " " + newX + " " + newY;
		console.log("calcRotateTransform returned: (" + output + ")");
		return output;
	} else {
		return null;
	}
}


// reset wrapper transform
$mint.fn.resetCanvasTransform = function(svg) {
	var a = svg.querySelector(".mint-svg-canvas");
	a.setAttributeNS(null, "transform", "");
}

// apply transform on wrapper
$mint.fn.newCanvasTransform = function(svg, floor) {
	var a = svg.querySelector(".mint-svg-canvas"),
		mintD = $mint.d,
		transform = "",
		scale,
		translate = [];
	if (mintD.w != floor.w && mintD.h != floor.h) {
		// the image may be scaled up / down
		if (floor.w / mintD.w >= floor.h / mintD.h) {
			// width is proportionally dominant
			//scale = mintD.w + ", " + (mintD.w * floor.h / mintD.h);
			scale = mintD.w / floor.w;
			translate[0] = 0;
			translate[1] = (mintD.h - floor.h * scale) / 2;
		} else {
			// height is proportionally dominant
			//scale = (mintD.h * floor.w / mintD.w) + ", " + mintD.h;
			scale = mintD.h / floor.h;
			translate[0] = (mintD.w - floor.w * scale) / 2;
			translate[1] = 0;
		}
	} else {
		scale = 1;
		translate[0] = mintD.w - floor.w;
		translate[1] = mintD.h - floor.h;
	}
	transform += " translate(" + translate[0] + ", " + translate[1] + ")";
	transform += " scale(" + scale + ")";
	a.setAttributeNS(null, "transform", transform);
}











/*
function foo() {
var a = document.querySelector('[transform*="rotate"]');
t = a.getAttribute("transform").replace(/rotate\((\d*)\)/, function(m, m0) {
return "rotate(" + (m0 < 360 ? Number(m0) + 1 : 1) + ")";
});
t = a.setAttributeNS(null, "transform", t);
}
*/
</script>






















<script type="text/javascript">
$mint.json = {
	"rooms": [
		{
			"roomid": 0,
			"type": "room",
			"name": "Starting Room",
			"path": "#mint-svg-rm-0",
			"d": {
				"w": 6,
				"h": 10,
				"e": 180
			}
		},
		{
			"roomid": 1,
			"type": "connector",
			"name": "Corridor with stairs L",
			"path": "#mint-svg-rm-1",
			"d": {
				"w": 6,
				"h": 10,
				"e": 180
			}
		},
		{
			"roomid": 2,
			"type": "connector",
			"name": "Corridor with stairs R",
			"path": "#mint-svg-rm-2",
			"d": {
				"w": 6,
				"h": 10,
				"e": 180
			}
		},
		{
			"roomid": 3,
			"type": "room",
			"name": "Straight room with 4 lvl 11+",
			"path": "#mint-svg-rm-2",
			"d": {
				"w": 6,
				"h": 12,
				"e": 180
			}
		},
		{
			"roomid": 4,
			"type": "room",
			"name": "Corner room with 4 lvl 11+",
			"path": "#mint-svg-rm-4",
			"d": {
				"w": 6,
				"h": 6,
				"e": 270
			}
		},
		{
			"roomid": 5,
			"type": "room",
			"name": "Cross-shaped room (goons)",
			"path": "#mint-svg-rm-5",
			"d": {
				"w": 18,
				"h": 18,
				"e": 90
			}
		},
		{
			"roomid": 6,
			"type": "room",
			"name": "Cross-shaped room (battle)",
			"path": "#mint-svg-rm-6",
			"d": {
				"w": 18,
				"h": 18,
				"e": 90
			}
		},
		{
			"roomid": 7,
			"type": "room",
			"name": "Cross-shaped room (supervisor)",
			"path": "#mint-svg-rm-7",
			"d": {
				"w": 18,
				"h": 18,
				"e": 90
			}
		},
		{
			"roomid": 8,
			"type": "room",
			"name": "Spinning gear tower",
			"path": "#mint-svg-rm-8",
			"d": {
				"w": 6,
				"h": 6,
				"e": 0
			}
		},
		{
			"roomid": 9,
			"type": "room",
			"name": "Obstacle room with spinning gear and 6 barrels",
			"path": "#mint-svg-rm-9",
			"d": {
				"w": 18,
				"h": 12,
				"e": 0
			}
		},
		{
			"roomid": 10,
			"type": "room",
			"name": "4 battle room: 1 all 10s, 2 with 2 10s and 2 11s, and one battle with 4 11s",
			"path": "#mint-svg-rm-10",
			"d": {
				"w": 18,
				"h": 12,
				"e": 0
			}
		},
		{
			"roomid": 11,
			"type": "room",
			"name": "Shelves hall with supervisor",
			"path": "#mint-svg-rm-11",
			"d": {
				"w": 18,
				"h": 12,
				"e": 0
			}
		},
		{
			"roomid": 12,
			"type": "room",
			"name": "Doom room (goons)",
			"path": "#mint-svg-rm-12",
			"d": {
				"w": 36,
				"h": 18,
				"e": 0
			}
		},
		{
			"roomid": 13,
			"type": "room",
			"name": "Doom room (battle)",
			"path": "#mint-svg-rm-13",
			"d": {
				"w": 36,
				"h": 18,
				"e": 0
			}
		},
		{
			"roomid": 14,
			"type": "room",
			"name": "Doom room (supervisor)",
			"path": "#mint-svg-rm-14",
			"d": {
				"w": 36,
				"h": 18,
				"e": 0
			}
		},
		{
			"roomid": 15,
			"type": "room",
			"name": "Acid room",
			"path": "#mint-svg-rm-15",
			"d": {
				"w": 12,
				"h": 12,
				"e": 0
			}
		},
		{
			"roomid": 16,
			"type": "room",
			"name": "Shover room",
			"path": "#mint-svg-rm-16",
			"d": {
				"w": 30,
				"h": 4,
				"e": 0
			}
		},
		{
			"roomid": 17,
			"type": "room",
			"name": "Box stomper room",
			"path": "#mint-svg-rm-17",
			"d": {
				"w": 6,
				"h": 6,
				"e": 0
			}
		},
		{
			"roomid": 18,
			"type": "room",
			"name": "Grated floor room",
			"path": "#mint-svg-rm-18",
			"d": {
				"w": 12,
				"h": 12,
				"e": 0
			}
		}
	],
	"mints": {
		"coin": [
			{
				"floor": 1,
				"w": 42,
				"h": 110,
				"scale": 1,
				"cogs": 16,
				"exp": 196,
				"rooms": [
					{
						"roomid": 0,
						"x": 0,
						"y": 102,
						"r": 0
					},
					{
						"roomid": 2,
						"x": 2,
						"y": 92,
						"r": 0
					},
					{
						"roomid": 3,
						"x": 4,
						"y": 80,
						"r": 0
					},
					{
						"roomid": 2,
						"x": 6,
						"y": 70,
						"r": 0
					},
					{
						"roomid": 4,
						"x": 8,
						"y": 64,
						"r": 0
					},
					{
						"roomid": 1,
						"x": 16,
						"y": 60,
						"r": 90
					},
					{
						"roomid": 6,
						"x": 24,
						"y": 54,
						"r": 0
					},
					{
						"roomid": 1,
						"x": 28,
						"y": 44,
						"r": 0
					},
					{
						"roomid": 5,
						"x": 20,
						"y": 26,
						"r": 270
					},
					{
						"roomid": 2,
						"x": 12,
						"y": 28,
						"r": 270
					},
					{
						"roomid": 8,
						"x": 4,
						"y": 28,
						"r": 270
					},
					{
						"roomid": 1,
						"x": 2,
						"y": 18,
						"r": 0
					},
					{
						"roomid": 10,
						"x": -3,
						"y": 3,
						"r": 90
					}
				]
			},
			{
				"floor": 2,
				"w": 82,
				"h": 116,
				"cogs": 24,
				"exp": 272,
				"rooms": [
					{
						"roomid": 0,
						"x": 66,
						"y": 108,
						"r": 0
					},
					{
						"roomid": 2,
						"x": 68,
						"y": 98,
						"r": 0
					},
					{
						"roomid": 12,
						"x": 55,
						"y": 71,
						"r": 270
					},
					{
						"roomid": 1,
						"x": 68,
						"y": 52,
						"r": 0
					},
					{
						"roomid": 15,
						"x": 64,
						"y": 40,
						"r": 0
					},
					{
						"roomid": 2,
						"x": 70,
						"y": 30,
						"r": 0
					},
					{
						"roomid": 16,
						"x": 48,
						"y": 26,
						"r": 0
					},
					{
						"roomid": 1,
						"x": 40,
						"y": 24,
						"r": 270
					},
					{
						"roomid": 17,
						"x": 32,
						"y": 28,
						"r": 270
					},
					{
						"roomid": 1,
						"x": 30,
						"y": 18,
						"r": 0
					},
					{
						"roomid": 6,
						"x": 22,
						"y": 0,
						"r": 270
					},
					{
						"roomid": 2,
						"x": 14,
						"y": 2,
						"r": 270
					},
					{
						"roomid": 18,
						"x": 0,
						"y": 0,
						"r": 270
					}
				]
			}
		],
		"dollar": [
		],
		"bullion": [
		],
		"_comments": [
			"each 'this.mints[mintType]' is an array of the possible floors of the mints",
			"each floor (each one of the array items) is an object, containing the dimensions of the given floor, its number, and its room order as an array",
			"each array item in the room order arrays is an object, whose properties are the room id and its orientation (r = rotation). the room id is the index of the room in 'this.rooms[n]'"
		]
	},
	"comments": [
		"the 'd' property for rooms is info about the rooms' dimensions and orientation. the 'e' resembles the angle at which the exit from the room is found, where 0 is the entrance, and keeps going from 0 to 360 clockwise (e.g left is 90, front is 180, right is 270)",
		"each mint has an array of semi-arrays. each array is for the different arrangements of mints (mint 'n' has the index 'n - 1'). each semi-array consists of the rooms by order, and each one of its items is the index of a room at the 'rooms' array",
		"'this.rooms[n].d.e' is actually irrelevant",
		"new order: each mini array's items are object, containing the room id, its rotation adn x & y",

	]
}

















$mint.fn.clear();
$mint.fn.drawMap(document.querySelector("svg"), "coin", 1);

</script>

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.