Add a building

This commit is contained in:
Catalin Constantin Mititiuc 2025-06-16 22:41:31 -07:00
parent 9012c88fb3
commit a926b69f04
2 changed files with 161 additions and 48 deletions

View File

@ -1,11 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<head>
<style>
polygon {
fill: inherit;
stroke: black;
stroke-width: 0.5px;
stroke: #999;
stroke-width: 0.25px;
}
svg {
@ -19,34 +20,120 @@
user-select: none;
font-family: sans-serif;
fill: black;
display: none;
}
.buildings .elevation-basement {
.elevation-basement {
fill: lightgray;
/* display: none; */
display: none;
}
.elevation-1 {
/* display: none; */
/* filter: blur(.5px);
opacity: 0.25; */
}
.buildings .elevation-1 {
.buildings .elevation-1,
.building .elevation-1 {
/* display: none; */
fill: lightgreen;
/* display: none; */
}
.buildings .elevation-2 {
fill: lightpink;
.elevation-2 {
fill: rgb(240, 216, 172);
display: none;
}
.elevation-roof {
display: none;
}
.building .doors {
display: inline;
fill: none;
fill-opacity: 1;
stroke: #ff9900;
stroke-width: 2.5;
stroke-linecap: square;
stroke-dasharray: none;
stroke-opacity: 1;
}
.building .floor {
opacity: 1;
fill: #ffffff;
fill-opacity: 0.5;
stroke: none;
}
.building .inner-wall {
fill: none;
stroke: #ffffff;
stroke-width: 1;
stroke-linecap: square;
}
.building .outer-wall {
fill: none;
stroke: #000000;
stroke-width: 2;
stroke-linecap: square;
}
.building.view-elevation-roof .doors,
.building.view-elevation-roof .inner-wall,
.building.view-elevation-roof .outer-wall {
display: none;
}
.building .elevation-1 {
display: none;
}
.building.view-elevation-roof .floor {
fill: darkgray;
}
.building.view-elevation-1 .elevation-1 {
display: inline;
}
.building.view-elevation-2 .elevation-2 {
display: inline;
}
.building.view-elevation-roof .elevation-roof {
display: inline;
}
.building.view-elevation-basement .elevation-basement {
display: inline;
}
.building.view-elevation-basement .doors {
display: none;
}
</style>
</head>
<body>
</head>
<body>
<svg viewBox="-300 -200 600 400" xmlns="http://www.w3.org/2000/svg">
<defs>
<polygon id="hex" points="0,10 8.66,5 8.66,-5 0,-10 -8.66,-5 -8.66,5"/>
<polygon id="hex" points="0,10 8.66,5 8.66,-5 0,-10 -8.66,-5 -8.66,5" />
</defs>
<g id="building2" class="building view-elevation-1" transform="translate(-181.86, 105)">
<!-- <g id="building2" class=".building"> -->
<path class="floor"
d="m 38.786985,67.5 17.32,-30 v -45 l -17.32,-30 v -30 h -77.94 v 30 l -17.32,30 v 45 l 17.32,30 z" />
<path class="outer-wall"
d="m -21.833015,67.5 v -60 m 17.3200004,-75 v 30 M 17.136985,15 4.146985,7.5 m 51.96,30 -12.99,-7.5 m -38.97,-67.5 v 45 h -60.62 m 17.32,-45 h 77.94 m -69.28,105 h 69.28 l 17.32,-30 v -45 l -17.32,-30 v -30 h -77.94 v 30 l -17.32,30 v 45 l 17.32,30 z" />
<path class="inner-wall"
d="m -21.833015,67.5 v -60 m 17.3200004,-75 v 30 M 17.136985,15 4.146985,7.5 m 51.96,30 -12.99,-7.5 m -38.97,-67.5 v 45 h -60.62 m 17.32,-45 h 77.94 m -69.28,105 h 69.28 l 17.32,-30 v -45 l -17.32,-30 v -30 h -77.94 v 30 l -17.32,30 v 45 l 17.32,30 z" />
<path class="doors"
d="m 3.698745,-67.5 h 9.55648 m 7.76351,30 h 9.55648 M -4.9612546,67.5 H 4.595225 m -18.71725,-60 h 9.5564804 m -35.0357204,0 h 9.55648 m 33.74353,-75 h 9.55648 m -35.53648,30 h 9.55648 m 7.7635204,105 H 4.595225 m -18.71725,-60 h 9.5564804 m -35.0357204,0 h 9.55648" />
</g>
</svg>
<script src="radial.js"></script>
</body>
</body>
</html>

View File

@ -168,9 +168,11 @@ const buildingCoords = [
generateRadialCoordsRect({ rows: 8, columns: 4, odd: true }, { q: 4, r: 3, s: -7 }),
generateRadialCoordsRect({ rows: 8, columns: 4, odd: true }, { q: -5, r: 3, s: 2 }),
generateRadialCoordsRect({ rows: 6, columns: 3, equal: false }, { q: -12, r: 3, s: 9 }),
generateRadialCoordsRect({ rows: 8, columns: 4 }, { q: 10, r: 3, s: -13 }),
generateRadialCoordsRect({ rows: 3, columns: 1 }, { q: 9, r: 7, s: -16 }),
generateRadialCoordsRect({ rows: 5, columns: 1, odd: true }, { q: 5, r: 6, s: -11 }),
// hex building
// generateRadialCoordsRect({ rows: 8, columns: 4 }, { q: 10, r: 3, s: -13 }),
// generateRadialCoordsRect({ rows: 3, columns: 1 }, { q: 9, r: 7, s: -16 }),
// generateRadialCoordsRect({ rows: 5, columns: 1, odd: true }, { q: 5, r: 6, s: -11 }),
]
buildingCoords.forEach(building => building.forEach(coords => grid.delete(coords)));
@ -214,5 +216,29 @@ drawHexes(elevation1, grid);
buildings.appendChild(bldElevationBasement);
buildings.appendChild(bldElevation1);
buildings.appendChild(bldElevation2);
svg.appendChild(elevation1);
svg.appendChild(buildings);
const buildingBlah = svg.querySelector('#building2');
const bld2grid = document.createElementNS(xmlns, 'g');
drawHexes(bld2grid, generateRadialCoordsRect({ rows: 9, columns: 4, odd: true, equal: false }, { q: 4, r: -4, s: 0 }));
drawHexes(bld2grid, generateRadialCoordsRect({ rows: 5, columns: 1 }, { q: 3, r: -1, s: -2 }));
drawHexes(bld2grid, generateRadialCoordsRect({ rows: 5, columns: 1, odd: true }, { q: -2, r: -1, s: 3 }));
const bld2elvBasement = bld2grid.cloneNode(true);
bld2elvBasement.classList.add('elevation-basement');
buildingBlah.querySelector('.floor').after(bld2elvBasement);
const bld2elv1 = bld2grid.cloneNode(true);
bld2elv1.classList.add('elevation-1');
bld2elvBasement.after(bld2elv1);
const bld2elv2 = bld2grid.cloneNode(true);
bld2elv2.classList.add('elevation-2');
bld2elv1.after(bld2elv2);
const bld2elvRoof = bld2grid.cloneNode(true);
bld2elvRoof.classList.add('elevation-roof');
bld2elv2.after(bld2elvRoof);
buildingBlah.before(elevation1);
buildingBlah.before(buildings);